Skip to content

Commit

Permalink
Use quick-xml 0.26.0
Browse files Browse the repository at this point in the history
  • Loading branch information
madig authored and ebarnard committed Nov 20, 2022
1 parent fd1fc26 commit 06ac5b2
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 15 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ base64 = "0.13.0"
time = { version = "0.3.3", features = ["parsing", "formatting"] }
indexmap = "1.0.2"
line-wrap = "0.1.1"
quick_xml = { package = "quick-xml", version = "0.22.0" }
quick_xml = { package = "quick-xml", version = "0.26.0" }
serde = { version = "1.0.2", optional = true }

[dev-dependencies]
Expand Down
14 changes: 7 additions & 7 deletions src/stream/xml_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ impl From<XmlReaderError> for ErrorKind {
}
XmlReaderError::Io(err) => ErrorKind::Io(err),
XmlReaderError::UnexpectedEof(_) => ErrorKind::UnexpectedEof,
XmlReaderError::Utf8(_) => ErrorKind::InvalidXmlUtf8,
XmlReaderError::NonDecodable(_) => ErrorKind::InvalidXmlUtf8,
_ => ErrorKind::InvalidXmlSyntax,
}
}
Expand Down Expand Up @@ -91,7 +91,7 @@ impl<R: Read> ReaderState<R> {
}

fn read_xml_event<'buf>(&mut self, buffer: &'buf mut Vec<u8>) -> Result<XmlEvent<'buf>, Error> {
let event = self.0.read_event(buffer);
let event = self.0.read_event_into(buffer);
let pos = self.xml_reader_pos();
event.map_err(|err| ErrorKind::from(err).with_position(pos))
}
Expand All @@ -100,10 +100,10 @@ impl<R: Read> ReaderState<R> {
loop {
match self.read_xml_event(buffer)? {
XmlEvent::Text(text) => {
let unespcaped = text
.unescaped()
let unescaped = text
.unescape()
.map_err(|err| self.with_pos(ErrorKind::from(err)))?;
return String::from_utf8(unespcaped.to_vec())
return String::from_utf8(unescaped.as_ref().into())
.map_err(|_| self.with_pos(ErrorKind::InvalidUtf8String));
}
XmlEvent::End(_) => {
Expand All @@ -127,7 +127,7 @@ impl<R: Read> ReaderState<R> {
loop {
match self.read_xml_event(buffer)? {
XmlEvent::Start(name) => {
match name.local_name() {
match name.local_name().as_ref() {
b"plist" => {}
b"array" => return Ok(Some(Event::StartArray(None))),
b"dict" => return Ok(Some(Event::StartDictionary(None))),
Expand Down Expand Up @@ -172,7 +172,7 @@ impl<R: Read> ReaderState<R> {
_ => return Err(self.with_pos(ErrorKind::UnknownXmlElement)),
}
}
XmlEvent::End(name) => match name.local_name() {
XmlEvent::End(name) => match name.local_name().as_ref() {
b"array" | b"dict" => return Ok(Some(Event::EndCollection)),
_ => (),
},
Expand Down
14 changes: 7 additions & 7 deletions src/stream/xml_writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,19 +73,19 @@ impl<W: Write> XmlWriter<W> {

fn start_element(&mut self, name: &str) -> Result<(), Error> {
self.xml_writer
.write_event(XmlEvent::Start(BytesStart::borrowed_name(name.as_bytes())))?;
.write_event(XmlEvent::Start(BytesStart::new(name)))?;
Ok(())
}

fn end_element(&mut self, name: &str) -> Result<(), Error> {
self.xml_writer
.write_event(XmlEvent::End(BytesEnd::borrowed(name.as_bytes())))?;
.write_event(XmlEvent::End(BytesEnd::new(name)))?;
Ok(())
}

fn write_value(&mut self, value: &str) -> Result<(), Error> {
self.xml_writer
.write_event(XmlEvent::Text(BytesText::from_plain_str(value)))?;
.write_event(XmlEvent::Text(BytesText::new(value)))?;
Ok(())
}

Expand Down Expand Up @@ -188,13 +188,13 @@ impl<W: Write> Writer for XmlWriter<W> {
match this.pending_collection.take() {
Some(PendingCollection::Array) => {
this.xml_writer
.write_event(XmlEvent::Empty(BytesStart::borrowed_name(b"array")))?;
.write_event(XmlEvent::Empty(BytesStart::new("array")))?;
this.expecting_key = this.stack.last() == Some(&Element::Dictionary);
return Ok(());
}
Some(PendingCollection::Dictionary) => {
this.xml_writer
.write_event(XmlEvent::Empty(BytesStart::borrowed_name(b"dict")))?;
.write_event(XmlEvent::Empty(BytesStart::new("dict")))?;
this.expecting_key = this.stack.last() == Some(&Element::Dictionary);
return Ok(());
}
Expand Down Expand Up @@ -222,10 +222,10 @@ impl<W: Write> Writer for XmlWriter<W> {

fn write_boolean(&mut self, value: bool) -> Result<(), Error> {
self.write_value_event(EventKind::Boolean, |this| {
let value = if value { "true" } else { "false" }.as_bytes();
let value = if value { "true" } else { "false" };
Ok(this
.xml_writer
.write_event(XmlEvent::Empty(BytesStart::borrowed_name(value)))?)
.write_event(XmlEvent::Empty(BytesStart::new(value)))?)
})
}

Expand Down

1 comment on commit 06ac5b2

@gsmstudy
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how to write new plist file?
or how to give permission

this is read file

ActivationInfoXML PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHBs aXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3 dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CjxwbGlzdCB2ZXJz aW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+QWN0aXZhdGlvblJlcXVlc3RJbmZvPC9rZXk+ Cgk8ZGljdD4KCQk8a2V5PkFjdGl2YXRpb25SYW5kb21uZXNzPC9rZXk+CgkJPHN0cmlu Zz5CMDVDQjU4NS02N0Y0LTQ1NTMtQjFENC04MzBCNkMwRkM2QUE8L3N0cmluZz4KCQk8 a2V5PkFjdGl2YXRpb25TdGF0ZTwva2V5PgoJCTxzdHJpbmc+VW5hY3RpdmF0ZWQ8L3N0 cmluZz4KCQk8a2V5PkZNaVBBY2NvdW50RXhpc3RzPC9rZXk+CgkJPGZhbHNlLz4KCTwv ZGljdD4KCTxrZXk+QmFzZWJhbmRSZXF1ZXN0SW5mbzwva2V5PgoJPGRpY3Q+CgkJPGtl eT5BY3RpdmF0aW9uUmVxdWlyZXNBY3RpdmF0aW9uVGlja2V0PC9rZXk+CgkJPHRydWUv PgoJCTxrZXk+QmFzZWJhbmRBY3RpdmF0aW9uVGlja2V0VmVyc2lvbjwva2V5PgoJCTxz dHJpbmc+VjI8L3N0cmluZz4KCQk8a2V5PkJhc2ViYW5kQ2hpcElEPC9rZXk+CgkJPGlu dGVnZXI+ODM0Mzc3NzwvaW50ZWdlcj4KCQk8a2V5PkJhc2ViYW5kTWFzdGVyS2V5SGFz aDwva2V5PgoJCTxzdHJpbmc+OENCMTVFRTRDODAwMjE5OTA3MEQ5NTAwQkI4RkIxODNC MDI3MTNBNUNBMkE2QjkyREI1RTc1Q0UxNTUzNjE4Mjwvc3RyaW5nPgoJCTxrZXk+QmFz ZWJhbmRTZXJpYWxOdW1iZXI8L2tleT4KCQk8ZGF0YT4KCQlCaHBQcGc9PQoJCTwvZGF0 YT4KCQk8a2V5PkludGVybmF0aW9uYWxNb2JpbGVFcXVpcG1lbnRJZGVudGl0eTwva2V5 PgoJCTxzdHJpbmc+MzU0MzgyMDYyNzI3NjY4PC9zdHJpbmc+CgkJPGtleT5Nb2JpbGVF cXVpcG1lbnRJZGVudGlmaWVyPC9rZXk+CgkJPHN0cmluZz4zNTQzODIwNjI3Mjc2Njwv c3RyaW5nPgoJCTxrZXk+U0lNU3RhdHVzPC9rZXk+CgkJPHN0cmluZz5rQ1RTSU1TdXBw b3J0U0lNU3RhdHVzTm90SW5zZXJ0ZWQ8L3N0cmluZz4KCQk8a2V5PlN1cHBvcnRzUG9z dHBvbmVtZW50PC9rZXk+CgkJPHRydWUvPgoJCTxrZXk+a0NUUG9zdHBvbmVtZW50SW5m b1BSTE5hbWU8L2tleT4KCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCTxrZXk+a0NUUG9z dHBvbmVtZW50SW5mb1NlcnZpY2VQcm92aXNpb25pbmdTdGF0ZTwva2V5PgoJCTxmYWxz ZS8+Cgk8L2RpY3Q+Cgk8a2V5PkRldmljZUNlcnRSZXF1ZXN0PC9rZXk+Cgk8ZGF0YT4K CUxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSU0JTUlZGVlJWTlVMUzB0TFMwS1RV bEpRbmhFUTBOQlV6QkRRVkZCCglkMmRaVFhoTVZFRnlRbWRPVmtKQlRWUktSRkV6VW1w S1EwOVZSWHBNVkZGM1RYcFZkRTVFYXpSTlF6RkNUMVJqZVEwSwoJVEZWR1JWRnFRVE5Q VlVaSFQxUmpNVTVVUlV4TlFXdEhRVEZWUlVKb1RVTldWazE0UTNwQlNrSm5UbFpDUVdk VVFXdE8KCVFrMVNTWGRGUVZsRVZsRlJTQTBLUlhkc1JHUllRbXhqYmxKd1ltMDRlRVY2 UVZKQ1owNVdRa0Z2VkVOclJuZGpSM2hzCglTVVZzZFZsNU5IaEVla0ZPUW1kT1ZrSkJj MVJDYld4UllVYzVkUTBLV2xSRFFtNTZRVTVDWjJ0eGFHdHBSemwzTUVKQgoJVVVWR1FV RlBRbXBSUVhkbldXdERaMWxGUVd4bVJ6UjBjVE5tTUdSTGFrWTNWWFpOU1VOWk9UaFRU ZzBLYmtWek9ERkIKCVZtTlNlWGQzU1ZaVGRGSldSa3dyZERKcGVqaHNUM0ExTUZoaGMx UnhjMVphVDNGTVV6aFRZWEE1YzJaVE5tSkROa3RSCglTbFJ4UkdGdlpnMEtabWwzTWtW NFQySTViMXBxYURGT1JubzBiMFJNWVZsRkt6VTFjbE5EZW1jMVJIVkxhRkpGVmpkNgoJ YkdGRlFsaDJOM0YyWkZKUk1WZGpObkpJWWxOcFV3MEtUV3hxYjJRck4wWkpkVkYxY2tG clRtUmhPRU5CZDBWQlFXRkIKCVFVMUJNRWREVTNGSFUwbGlNMFJSUlVKQ1VWVkJRVFJI UWtGSGRqaG1jR2R1Wm1rdmVBMEtXR0ZWY25sTVEwNWpNV0p5CglMMnRvVWtVelprWk5i emhsYjFkUE9EZEdRbkpUVXpSWVpYaG1RMlJSVVRoU1ZtbzRNRXhoVkVwSVNHNXRkRm8y VlZOaAoJTkEwS1NEUkxRbmRGYkVJdlJtcGxNMEZrV1ZJNVlqZG5ZV2RQUkdwRVoxcDNR MmxpUWt4MVpsVndTbWRYVlcxaU9GaDYKCWJua3pOemxIU1VWclJrWkRjUzlHZVEwS1VF UXJURXM1VXpCTldXRlBaM1JTUjI1SVdtVjFOMlJLTTJKdWFqWXpTR3dLCglMUzB0TFMx RlRrUWdRMFZTVkVsR1NVTkJWRVVnVWtWUlZVVlRWQzB0TFMwdAoJPC9kYXRhPgoJPGtl eT5EZXZpY2VJRDwva2V5PgoJPGRpY3Q+CgkJPGtleT5TZXJpYWxOdW1iZXI8L2tleT4K CQk8c3RyaW5nPkZLMU5KSFBMRzVRVDwvc3RyaW5nPgoJCTxrZXk+VW5pcXVlRGV2aWNl SUQ8L2tleT4KCQk8c3RyaW5nPmU0NmU2M2UyZjQzMTVjODljNzc4MDMwMGFiZjMxOTQ4 Y2EwZDRmYmM8L3N0cmluZz4KCTwvZGljdD4KCTxrZXk+RGV2aWNlSW5mbzwva2V5PgoJ PGRpY3Q+CgkJPGtleT5CdWlsZFZlcnNpb248L2tleT4KCQk8c3RyaW5nPjE2SDcxPC9z dHJpbmc+CgkJPGtleT5EZXZpY2VDbGFzczwva2V5PgoJCTxzdHJpbmc+aVBob25lPC9z dHJpbmc+CgkJPGtleT5EZXZpY2VWYXJpYW50PC9rZXk+CgkJPHN0cmluZz5CPC9zdHJp bmc+CgkJPGtleT5Nb2RlbE51bWJlcjwva2V5PgoJCTxzdHJpbmc+M0EwNjI8L3N0cmlu Zz4KCQk8a2V5Pk9TVHlwZTwva2V5PgoJCTxzdHJpbmc+aVBob25lIE9TPC9zdHJpbmc+ CgkJPGtleT5Qcm9kdWN0VHlwZTwva2V5PgoJCTxzdHJpbmc+aVBob25lNywxPC9zdHJp bmc+CgkJPGtleT5Qcm9kdWN0VmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MTIuNS42PC9z dHJpbmc+CgkJPGtleT5SZWdpb25Db2RlPC9rZXk+CgkJPHN0cmluZz5ITjwvc3RyaW5n PgoJCTxrZXk+UmVnaW9uSW5mbzwva2V5PgoJCTxzdHJpbmc+SE4vQTwvc3RyaW5nPgoJ CTxrZXk+UmVndWxhdG9yeU1vZGVsTnVtYmVyPC9rZXk+CgkJPHN0cmluZz5BMTUyNDwv c3RyaW5nPgoJCTxrZXk+VW5pcXVlQ2hpcElEPC9rZXk+CgkJPGludGVnZXI+MTUzMjM0 MjA2ODAyOTExNDwvaW50ZWdlcj4KCTwvZGljdD4KCTxrZXk+UmVndWxhdG9yeUltYWdl czwva2V5PgoJPGRpY3Q+CgkJPGtleT5EZXZpY2VWYXJpYW50PC9rZXk+CgkJPHN0cmlu Zz5CPC9zdHJpbmc+Cgk8L2RpY3Q+Cgk8a2V5PlNvZnR3YXJlVXBkYXRlUmVxdWVzdElu Zm88L2tleT4KCTxkaWN0PgoJCTxrZXk+RW5hYmxlZDwva2V5PgoJCTx0cnVlLz4KCTwv ZGljdD4KCTxrZXk+VUlLQ2VydGlmaWNhdGlvbjwva2V5PgoJPGRpY3Q+CgkJPGtleT5C bHVldG9vdGhBZGRyZXNzPC9rZXk+CgkJPHN0cmluZz45YzpmMzo4NzoxODo5ZjphYjwv c3RyaW5nPgoJCTxrZXk+Qm9hcmRJZDwva2V5PgoJCTxpbnRlZ2VyPjQ8L2ludGVnZXI+ CgkJPGtleT5DaGlwSUQ8L2tleT4KCQk8aW50ZWdlcj4yODY3MjwvaW50ZWdlcj4KCQk8 a2V5PkV0aGVybmV0TWFjQWRkcmVzczwva2V5PgoJCTxzdHJpbmc+OWM6ZjM6ODc6MTg6 OWY6OWI8L3N0cmluZz4KCQk8a2V5PlVJS0NlcnRpZmljYXRpb248L2tleT4KCQk8ZGF0 YT4KCQlNSUlEendJQkFqQ0NBOGdFSVA0QzNzcVF0UDFTMmh3Qlp6Q29IY3NvSDJ4TnU1 YythNFE0NW9KMU1LRjMKCQlCRUVFcG9QMFMrYkFsc3hrcTVZWW54Tjh3azZWbFFobFJj RWZJUGp6N28vSWZUMFl5OWdjekdaaHBtV3kKCQlDMEh4cGd0a2NPZTdPV2JSVFlrWGNY alJVNXJacEFRUVl1dXZOajFHZFQ5K1gzWTJoSStMZHdRUWVoR1YKCQl6WkU1Rkhac2d0 UExrbE9DUmdTQ0F6dE15SS9ET3paSENTNjZVc3BZcHRNTlR6WTdjU1ZSM2N6V3VWWFIK CQl5eVlKUG9Bak5jVUFFUnQ3U1JFNkp0YkEvL3BCYzNrMnZ4c2hHMWRMc1F0WmJmMXNU OTUxNjVIUG5KZzcKCQl6ZlVvQS9MM3p4Zm9Oc1k0NmJvTXFOWjRqVGxvcHNpUE95R0Q3 VFE1OFY1SHRxQml5aktiVlgrVWt2VVIKCQlQZFVuVnJHTU5hMVdrV3hGVG54NlNxaTZ0 R3MxSkNZdDB6RUxtei84MUZVOGVlZWJVMkRQMFdLQVhxaTgKCQlOQWx5OUFkYTBwU3NM N1h2TUdPckxjdWhWNzU1TFExMnVJNWptbG5PclN5cGRlcktLOXg4YUxWRXpTemwKCQk0 YkIwWXZyUWRBd0piSDBEeGExcUw0YjhGNkF3cUdnUS9SVlRhTU45bTVxc2xBTy9GRnY3 UVUwVW8raVoKCQlId2FmbisyRkZ6TU1RMDc3d1F6UlpFaUYrZ1lHWC9VMUtieXVLUEgx TWZZNndJbjk3OEgwazc1bWVHOVcKCQl3RnpaSUxmeGkrdjlOVTZrRlVNZ0FWcnlmb0sx WldKempLTlFtUWU4dTFSakE3M09XMnR0L0RGK0xidXgKCQlvU3N0akozbG5lYmVyb3R6 Q3dsR3h0TXpTckNmbmZxWlordXpacU9GaUdra1VtSUlpdG4vZ00vbENhS0EKCQlsa21Z Vm0wMUZkV0pKRlV1NzBLTVA5VGE2aFNzeExOL2pGYS9RVlBVMWExeiszTFMya1A4TkJD M3VuL2oKCQk3NXBpcFI3SXJya1BJTGlnWHB6bEI1TjZYaStSbnZpVmJ6aDFJNDlXQjVz NzBMbWNydUtLNG9yd2hiRVkKCQlrOWIzRUZFMWJjR2Y4VnlQRGVjeExKbTdxNjJUdFZK N2R1M3JZaVFWUk5QZ3M0RWEwMnpSUm1PKzN5YXcKCQlJZVV4L3poWkNSaldSSFMzM2dz WWNzT29qOSttVFBtclBuYWdvV2hxcExYY1VMSjdCQVdoN2lVYWtkSGYKCQlrWnZyWFVw OFRRbWxqQkJJZm9NK1Y3VFd6cThJZmU2eDRUVW5WUUlzRk9KQ1pidUdnMHVEbmJFUFR3 eVcKCQlURUhMU0xTTHV4OFlYcUxVd3h5bzRuRUxpd3dhYkEzdXlqV2RNS25PNDBKNUhG VUpQZGFwSDNWcDNnRnIKCQlvZk8zb3JtYVJEMlE1U0V1ckJTYVI5WWZpY2RxcElCTE1R SEw3Yld0SkhIYzdHZm5QOTYwbjNCK3o4T3oKCQlWSHl2NmMrY1VnYkRDa3drQnZQRnE0 NlJhQnNJLzM1SFZNS2xlQ2tsSlhTWVUwcGhzY1VjV2pYR1d5Z3UKCQkrcFFBcGdlS2xT YUxGRzhKUlVWanVTME1uOHBtYTB5TEdNZW5pVDNzQ0grR2ZtSHppcjVOWkMrbytySE8K CQl3cFNETm9oMTZEdElMQ1lYLyt1aDNUaVJ1a3Q4bWVkR0phZEhIZ2FNZEp1b2xnPT0K CQk8L2RhdGE+CgkJPGtleT5XaWZpQWRkcmVzczwva2V5PgoJCTxzdHJpbmc+OWM6ZjM6 ODc6MTg6OWY6ODA8L3N0cmluZz4KCTwvZGljdD4KPC9kaWN0Pgo8L3BsaXN0Pgo= FairPlayCertChain MIICxDCCAi2gAwIBAgINMzOvBwQCrwACrwAACDANBgkqhkiG9w0BAQUFADB7MQswCQYD VQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJkFwcGxlIEZhaXJQbGF5IENlcnRpZmlj YXRpb24gQXV0aG9yaXR5MB4XDTA3MDQwMjE1MTczMFoXDTEyMDMzMTE1MTczMFowZzEL MAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xFzAVBgNVBAsTDkFwcGxlIEZh aXJQbGF5MSowKAYDVQQDEyFpUGhvbmUuMzMzM0FGMDcwNDAyQUYwMDAyQUYwMDAwMDgw gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMItpElXR5LEZHl6nampVJ2vK52FNvWV UPzB7fpEA1nlsbZnJbhvYMWy1g9jF4F39irxEDGVTcXWbihhpXSnlclysQdZ4/DcbDJK PsyGdo9aMMPbdy91dpIxTxZs66XJZfTA9jhYRWih22cLAQzWwe/urS6NvDzAjgUUyoBI 7e8tAgMBAAGjYDBeMA4GA1UdDwEB/wQEAwIDuDAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW BBT8e3f9V3tlTvFCvTFB33VOBj2JsjAfBgNVHSMEGDAWgBT6DdQRkRvmsk4eBkmUEd1j YgdZZDANBgkqhkiG9w0BAQUFAAOBgQAu4A+hdIB002KcTdaFvkXSHKk/WsLc/AvEC0hT Ixl2zyC12xx/fJRrL/4LF0Yu47rszTfBtbFDlWeLTN3mED+/3XaiCPFNAZp3oReuljcY 6BmoaHViaJ9Ql0Q0VK3gAfbJyghKY1JE1fzLQIf2CKdF7q2cUMnyoVxixck9RMUBzjCC A3EwggJZoAMCAQICAREwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNV BAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9y aXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTA3MDIxNDE5MjA0MVoXDTEyMDIx NDE5MjA0MVowezELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNV BAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS8wLQYDVQQDEyZBcHBsZSBG YWlyUGxheSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB jQAwgYkCgYEAsmc8XSrnj/J3z+8xvNEE/eqf0IYpkAqj/2RK72n0CrnvxMRjyjotIT1S jCOJKarbF9zLKMRpzXIkwhDB9HgdMRbF5uoZHSozvoCr3BFIBiofDmGBzXmaXRL0hJDI fPZ4m1L4+vGIbhBy+F3LiOy2VRSXpE0LwU8nZ5mmpLPX2q0CAwEAAaOBnDCBmTAOBgNV HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU+g3UEZEb5rJOHgZJ lBHdY2IHWWQwHwYDVR0jBBgwFoAUK9BpR5R2Cf70a40uQKb3R01/CF4wNgYDVR0fBC8w LTAroCmgJ4YlaHR0cDovL3d3dy5hcHBsZS5jb20vYXBwbGVjYS9yb290LmNybDANBgkq hkiG9w0BAQUFAAOCAQEAwKBz+B3qHNHNxYZ1pLvrQMVqLQz+W/xuwVvXSH1AqWEtSzdw OO8GkUuvEcIfle6IM29fcur21Xa1V1hx8D4Qw9Uuuy+mOnPCMmUKVgQWGZhNC3ht0KN0 ZJhU9KfXHaL/KsN5ALKZ5+e71Qai60kzaWdBAZmtaLDTevSV4P0kiCoQ56No/617+tm6 8aV/ypOizgM3A2aFkwUbMfZ1gpMv0/DaOTc9X/66zZpwwAaLIu6pzgRuJGk7FlKlwPLA rkNwhLshkUPLu7fqW7qT4Ld3ie9NVgQzXc5cWTGn1ztFVhHNrsubDqDP3JOoysVYeAAF 2Zmr1l6H6pJzNFSjkxikgzCCBLswggOjoAMCAQICAQIwDQYJKoZIhvcNAQEFBQAwYjEL MAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENl cnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTA2 MDQyNTIxNDAzNloXDTM1MDIwOTIxNDAzNlowYjELMAkGA1UEBhMCVVMxEzARBgNVBAoT CkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEA5JGpCR+R2x5HUOsF7V55hC3rNqJXTFXsixmJ3vlLbPUHqyIwAugYPvhQCdN/ QaiY+dHKZpwkaxHQo7vkGyrDH5WeegykR4tb1BY3M8vED03OFGnRyRly9V0O1X9fm/Il A7pVj01dDfFkNSMVSxVZHbOU9/acns9QusFYUGePCLQg98usLCBvcLY/ATCMt0PPD509 8ytJKBrI/s61uQ7ZXhzWyz21Oq30Dw4AkguxIRYudNU8DdtiFqujcZJHU1XBry9Bs/j7 43DN5qNMRX4fTGtQlkGJxHRiCxCDQYczioGxMFjsWgQyjGizjx3eZXP/Z15lvEnYdp8z FGWhd5TJLQIDAQABo4IBejCCAXYwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB Af8wHQYDVR0OBBYEFCvQaUeUdgn+9GuNLkCm90dNfwheMB8GA1UdIwQYMBaAFCvQaUeU dgn+9GuNLkCm90dNfwheMIIBEQYDVR0gBIIBCDCCAQQwggEABgkqhkiG92NkBQEwgfIw KgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LmFwcGxlLmNvbS9hcHBsZWNhLzCBwwYIKwYB BQUHAgIwgbYagbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0 eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBh bmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjANBgkqhkiG9w0BAQUF AAOCAQEAXDaZTC14t+2Mm9zzd5vydtJ3ME/BH4WDhRuZPUc38qmbQI4s1LGQEti+9HOb 7tJkD8t5TzTYoj75eP9ryAfsfTmDi1Mg0zjEsb+aTwpr/yv8WacFCXwXQFYRHnTTt4sj O0ej1W8k4uvRt3DfD0XhJ8rxbXjt57UXF6jcfiI1yiXV2Q/Wa9SiJCMR96Gsj3OBYMYb WwkvkrL4REjwYDieFfU9JmcgijNq9w2Cz97roy/5U2pbZMBjM3f3OgcsVuvaDyEO2rpz GU+12TZ/wYdV2aeZuTJC+9jVcZ5+oVK3G72TQiQSKscPHbZNnF5jyEuAF1CqitXa5PzQ CQc3sHV1IQ== FairPlaySignature aA7UNavvYcTxm/5wRyYsqUIVs2U/0kyJXm25G25P5nO3NSJymtTDPDJ2/6mrw7xZRliV IFys6ymUrCjwJMkrLy4F37ijkNzL3cm5enuGHNe4LqFEkD++JW4ywFyJlHFqpUHxOwcS 1hS/4yBGMbvMFb1EU0RDNSHd8+KtK422d+w= RKCertification MIIC+wIBAjCCAvQEIP4C3sqQtP1S2hwBZzCoHcsoH2xNu5c+a4Q45oJ1MKF3BEEE47L5 dcpwonCnx5+705TuxeN+EuMkXuyndB3BFOqE1D5xJc4xrXmaE00WzTC++b2BvfAttElD JRrTLXDZxyTa5gQQTDZInPrNEN7+sqcgG7qG3gQQRQgU7tUXbF/dzQtl3l5DswSCAmcO kAoDHGkMSaH54pU0TMqLaxo05tBaHIk6wVpxKQLwzMoE7iD3on3mx7hQGGtI4xAoJz6I fcx2yt+nkgFXKEm6BnxsmGX/yJXeySX3d8LVWLzoN2t7h3SO417GeKAJjFNjYMNB77LM 96iDgv/LmEUUdUjXjRtF5JJI3DHhkyYYZak8yFHnOBrLsIba+hmpRw80dXvch0UCBS6p 74hbiaE4rHVwskMqH9DNpjMdPieYJDYz3s17De5pyV94ruzkglbVFsGvB7nEPEScXqMb bqlPw2Ax9iD14qpbjiRdzG9DkHewjbRQKMbONdxvdZQc3qjXOUTQksdeSmz3iI/h1cyM YItebZn9Yv7kIlkNZVp2LZhQXy58Rq7kQraLoTk65q+UDJxuk1coSCyZ5YfPEB3afrEv lzg+0T92WWRhBw1VlNO08X831iyutoRnIogXfafoTOI94GAoE/cPbDKsqboBSJRrHfsL M4QmiB0z3OfNHU+F/cv7OvnZIStz/K9lqOl1c5TGitGEXPVECzawMpCPWkb3tvzLM7K2 5+f/egCnL13na+Apo2N+MTwTbajNKp7tQ4kWgZIBsxQ2rchGma4gvBHTbxcFE+wMbLR6 T/D0GSeMcDJGPeWFmoP7CILVJHJUlVERaI+tWHcks/YDhC1hZUDHHUt7kh/plFikvSj+ btCJUoTZXKQTR+r0xEyKf6U7ZSNhnvk+S2Q+t/fHQnnsJ8dqtditHYwtBwzVLsCHYJw+ 7Nl1KtdvGx/4bAEjgYfkV92AwvE0GI/KAWRFun9t5EZMqPs7V5bHLKSQJRNLOWvbbY2g 1K0= RKSignature MEUCIQDTR9Gt6cAgMN5TwJqss1QIJVdbhaALQp0I0oC4i+tbcgIgGeVLamJxxjodLy3Y 2sSj07GMZLSrUFjizCsTMaQqePs= serverKP A1No0YEWmcKlGES3yQ6KhYNOoXFk3AVCkW5eU2tMEfE/Ji+1Hs2r9MF7AssP4ZWVq7sI 09o2HvdmZepfiGsuEUHOMPKn signActRequest yskrVHmsNOD+xwf1MTTPsA==

Please sign in to comment.