[prev in list] [next in list] [prev in thread] [next in thread]
List: cifs-protocol
Subject: Re: [cifs-protocol] [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - TrackingID#2210140040005999
From: "Jeff McCashland \(He/him\) via cifs-protocol" <cifs-protocol () lists ! samba ! org>
Date: 2023-01-11 22:59:03
Message-ID: BL1PR21MB3113FF37961A78A2AAEBC9E3A3FC9 () BL1PR21MB3113 ! namprd21 ! prod ! outlook ! com
[Download RAW message or body]
[Attachment #2 (text/plain)]
Hi Douglas,
We have updated [MS-XCA] for the next release to address this issue:
2.2.4 Processing
* Loop until a decompression terminating condition
* If remaining input buffer does not have enough space for a Huffman table
* If we're at the end of the output buffer
* Decompression is complete, return success
* The compressed data is not valid, return error
* Build the decoding table
* CurrentPosition = 256 // start at the end of the Huffman \
table [,,,]
I hope that helps!
Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open \
Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) Pacific \
Time (US and Canada) Local country phone number found here: \
http://support.microsoft.com/globalenglish<https://nam06.safelinks.protection.outlook. \
com/?url=http%3A%2F%2Fsupport.microsoft.com%2Fglobalenglish&data=02%7C01%7Cjeffm%40mic \
rosoft.com%7C92c4c7bb8c6d4412e78108d80d79f45f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7 \
C0%7C637274164726698458&sdata=KtEL7V58Q7rscYvr9cPik%2FmYKZIv0rh3E3kBdGywwwI%3D&reserved=0> \
| Extension 1138300
________________________________
From: Jeff McCashland (He/him)
Sent: Tuesday, November 15, 2022 3:53 PM
To: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>; cifs-protocol@lists.samba.org \
<cifs-protocol@lists.samba.org>; Samuel Cabrero (Samba) \
<scabrero@samba.org>
Cc: Microsoft Support <supportmail@microsoft.com>
Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - \
TrackingID#2210140040005999
Hi Douglas,
Thank you for the response. I will file a request to update the documentation.
Let us know at our DocHelp alias if you find any more issues.
Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open \
Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) Pacific \
Time (US and Canada) Local country phone number found here: \
http://support.microsoft.com/globalenglish | Extension 1138300
-----Original Message-----
From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Sent: Tuesday, November 15, 2022 2:41 PM
To: Jeff McCashland (He/him) <jeffm@microsoft.com>; cifs-protocol@lists.samba.org; \
Samuel Cabrero (Samba) <scabrero@samba.org>
Cc: Microsoft Support <supportmail@microsoft.com>
Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - \
TrackingID#2210140040005999
I think that would be a good addition.
With regard to implementation specificity, my understanding is some implementations \
have stricter checks (involving the EOF symbol etc), but the strategy you describe \
seems best for maximum interoperability. In any case, the loop must break there, and \
the question is only whether we regard it as success.
My implementation currently insists on an EOF symbol followed by 0-32 zero bits, \
which works with all the Windows derived data I have, but I will relax it to match \
this.
Your addition to the pseudocode echoes *some* of the text in the paragraph above it, \
other parts of which are the subject of issue 2210140040006056.
Douglas
On 16/11/22 10:07, Jeff McCashland (He/him) wrote:
> Hi Douglas,
>
> One more pass at this one, with some nuance. If we were to document this, I believe \
> it would look something like this at the beginning of the pseudocode:
> 2.2 LZ77+Huffman Decompression Algorithm Details
> 2.2.4 Processing
>
> Loop until a decompression terminating condition
> Add: If remaining buffer does not have enough space for a Huffman table
> If we're at the end of the output buffer
> Decompression is complete, return with success
> The compressed data is not valid. Return with error.
> Build the decoding table
> CurrentPosition = 256 // start at the end of the Huffman table
> [...]
>
> In your opinion, is this an optimization/implementation detail, or necessary to \
> document as above?
> Best regards,
> Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft
> Protocol Open Specifications Team
> Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:
> (UTC-08:00) Pacific Time (US and Canada) Local country phone number
> found here:
> https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo
> rt.microsoft.com%2Fglobalenglish&data=05%7C01%7Cjeffm%40microsoft.
> com%7C63c3b350100e4d8e19af08dac75a6fb7%7C72f988bf86f141af91ab2d7cd011d
> b47%7C1%7C0%7C638041488484127933%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL
> jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&
> amp;sdata=W68NhydfBEeoxz9Cs%2F8LT%2Bv0wEQ7gZcLUvfWxRm6zIs%3D&reser
> ved=0 | Extension 1138300
>
> -----Original Message-----
> From: Jeff McCashland (He/him)
> Sent: Monday, November 14, 2022 1:04 PM
> To: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>;
> cifs-protocol@lists.samba.org; Samuel Cabrero (Samba)
> <scabrero@samba.org>
> Cc: Microsoft Support <supportmail@microsoft.com>
> Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -
> TrackingID#2210140040005999
>
> Ok, Thanks Douglas. I look forward to hearing what you come up with.
>
> Best regards,
> Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft
> Protocol Open Specifications Team
> Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:
> (UTC-08:00) Pacific Time (US and Canada) Local country phone number
> found here:
> https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo
> rt.microsoft.com%2Fglobalenglish&data=05%7C01%7Cjeffm%40microsoft.
> com%7C63c3b350100e4d8e19af08dac75a6fb7%7C72f988bf86f141af91ab2d7cd011d
> b47%7C1%7C0%7C638041488484127933%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL
> jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&
> amp;sdata=W68NhydfBEeoxz9Cs%2F8LT%2Bv0wEQ7gZcLUvfWxRm6zIs%3D&reser
> ved=0 | Extension 1138300
>
> -----Original Message-----
> From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
> Sent: Friday, November 11, 2022 2:42 PM
> To: Jeff McCashland (He/him) <jeffm@microsoft.com>;
> cifs-protocol@lists.samba.org; Samuel Cabrero (Samba)
> <scabrero@samba.org>
> Cc: Microsoft Support <supportmail@microsoft.com>
> Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -
> TrackingID#2210140040005999
>
> hi Jeff,
>
> It will do an an answer, though I don't think it is entirely correct.
> The encoding of EOF according to the Huffman table are the bits 0100 which is there \
> in the 048d word before the zeroes. 0000 would encode 'w', I think. But, yes, the \
> size tells us we're finished.
> While it's OK to have an arbitrary number of extra bytes at the end of the the \
> message, the situation is a whole lot more precarious at the end of a block inside \
> a larger message, where there is a need to know exactly how many zeroes to step \
> over, or the next Huffman block will be read from the wrong place (I know that's \
> not quite the same question).
> But don't spend any more time on this one. I am closing in on the answer via trial \
> and error and may get back to you with suggestions for MS-XCA.
> thanks,
> Douglas
>
>
> On 12/11/22 11:04, Jeff McCashland (He/him) wrote:
> > Hi Douglas,
> >
> > The 4 zero bytes are the encoding of the EOF. We don't actually decode these \
> > bytes. Once we decode the final literal 'z', we realize we've reached the \
> > original uncompressed size, and stop processing. This is why it's essential to \
> > pass in the correct size of the original uncompressed buffer.
> > Let me know if that doesn't fully answer your question.
> >
> > Best regards,
> > Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft
> > Protocol Open Specifications Team
> > Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:
> > (UTC-08:00) Pacific Time (US and Canada) Local country phone number
> > found here:
> > https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp
> > o
> > rt.microsoft.com%2Fglobalenglish&data=05%7C01%7Cjeffm%40microsoft.
> > com%7C1edd50b3f0b44c8db3fb08dac435e6b4%7C72f988bf86f141af91ab2d7cd011
> > d
> > b47%7C1%7C0%7C638038033063463462%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w
> > L
> > jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C
> > &
> > amp;sdata=%2B8Kg5XhHodVgvSIaHHpkv%2FUDJ479mgOD1dUVI121Ojw%3D&rese
> > r
> > ved=0 | Extension 1138300
> >
> > -----Original Message-----
> > From: Jeff McCashland (He/him)
> > Sent: Thursday, October 27, 2022 1:18 PM
> > To: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>;
> > cifs-protocol@lists.samba.org; Samuel Cabrero (Samba)
> > <scabrero@samba.org>
> > Cc: Microsoft Support <supportmail@microsoft.com>
> > Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -
> > TrackingID#2210140040005999
> >
> > Hi Douglas,
> >
> > Thank you for the update. I'll look into that aspect.
> >
> > Best regards,
> > Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft
> > Protocol Open Specifications Team
> > Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:
> > (UTC-08:00) Pacific Time (US and Canada) Local country phone number
> > found here:
> > https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp
> > o
> > rt.microsoft.com%2Fglobalenglish&data=05%7C01%7Cjeffm%40microsoft.
> > com%7C1edd50b3f0b44c8db3fb08dac435e6b4%7C72f988bf86f141af91ab2d7cd011
> > d
> > b47%7C1%7C0%7C638038033063619689%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w
> > L
> > jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C
> > &
> > amp;sdata=8B5w17A6tXD0cerKgk%2FqbMBvj%2Fw9xKvAxqZRhZK3%2FUc%3D&re
> > s
> > erved=0 | Extension 1138300
> >
> > -----Original Message-----
> > From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
> > Sent: Thursday, October 27, 2022 1:09 PM
> > To: Jeff McCashland (He/him) <jeffm@microsoft.com>;
> > cifs-protocol@lists.samba.org; Samuel Cabrero (Samba)
> > <scabrero@samba.org>
> > Cc: Microsoft Support <supportmail@microsoft.com>
> > Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -
> > TrackingID#2210140040005999
> >
> > hi Jeff,
> >
> > I would like to amend his question slightly if I may.
> >
> > > In the first example in Section 3.2, where
> > > "abcdefghijklmnopqrstuvwxyz" is "compressed" into a ~282 byte
> > > sequence ending with
> > >
> > > d8 52 3e d7 94 11 5b e9 19 5f f9 d6 7c df 8d 04 00 00 00 00
> > >
> > > where do all the trailing zeros come from?
> > >
> > > They do not encode characters, and from the decoding description in
> > > 2.2.4, we don't read 32 bits at a time except at the start of the
> > > first block, so processing should be well finished before we get to
> > > read these. It seems to violate the "input buffer is finished" termination \
> > > rule.
> >
> > I now think I understand how the zeroes are produced, based on the interactions \
> > between OutputPosition1, OutputPosition2, and OutputPosition in the 2.1.4.3 \
> > pseudocode. I can reproduce the result.
> > But I still can't understand how they are consumed, based on the terminating \
> > conditions in the decoding phase (2.2.4). So the "where do they come from" part \
> > of the question is answered, but the implicit "how are they read" part is not.
> > Douglas
>
[Attachment #3 (text/html)]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} \
</style> </head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof"> \
Hi Douglas,</div> <div style="font-family: Calibri, Arial, Helvetica, sans-serif; \
font-size: 11pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" \
class="elementToProof"> <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof"> \
We have updated [MS-XCA] for the next release to address this issue:</div> <div \
style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; color: \
rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof"> <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof \
ContentPasted1"> <b>2.2.4 Processing</b><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof"> \
<div style="mso-element:para-border-div;border:solid white 3.0pt;padding:4.0pt 6.0pt \
5.0pt 6.0pt;background:white;margin-left:.25in;margin-right:0in"> <ul>
<li style="color: black;"><span style="color:black;mso-color-alt:windowtext" \
class="ContentPasted0">Loop until a decompression terminating condition</span><o:p \
class="ContentPasted0"> </o:p></li><li><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" class="ContentPasted0"> </span>If \
remaining input buffer does not have enough space for a Huffman table</span><o:p \
class="ContentPasted0"> </o:p></li><li><span \
style="mso-fareast-font-family:"Courier \
New";mso-bidi-font-family:"Courier New""><span \
style="mso-list:Ignore"><span style="font:7.0pt "Times New Roman""><span \
style="mso-spacerun:yes" \
class="ContentPasted0"> </span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" \
class="ContentPasted0"> </span>If we're at \
the end of the output buffer</span><o:p \
class="ContentPasted0"> </o:p></li><li><span \
style="mso-fareast-font-family:"Courier \
New";mso-bidi-font-family:"Courier New""><span \
style="mso-list:Ignore"><span style="font:7.0pt "Times New Roman""><span \
style="mso-spacerun:yes" \
class="ContentPasted0"> </span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" \
class="ContentPasted0">
</span>Decompression is complete, return success</span><o:p \
class="ContentPasted0"> </o:p></li><li><span \
style="mso-fareast-font-family:"Courier \
New";mso-bidi-font-family:"Courier New""><span \
style="mso-list:Ignore"><span style="font:7.0pt "Times New Roman""><span \
style="mso-spacerun:yes" \
class="ContentPasted0"> </span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" \
class="ContentPasted0"> </span>The \
compressed data is not valid, return error<span style="mso-spacerun:yes" \
class="ContentPasted0"> </span></span><o:p \
class="ContentPasted0"> </o:p></li><li><span \
style="mso-fareast-font-family:"Courier \
New";mso-bidi-font-family:"Courier New""><span \
style="mso-list:Ignore"><span style="font:7.0pt "Times New Roman""><span \
style="mso-spacerun:yes" \
class="ContentPasted0"> </span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" class="ContentPasted0"> </span>Build the \
decoding table</span><o:p class="ContentPasted0"> </o:p></li><li><span \
style="mso-fareast-font-family:"Courier \
New";mso-bidi-font-family:"Courier New""><span \
style="mso-list:Ignore"><span style="font:7.0pt "Times New Roman""><span \
style="mso-spacerun:yes" \
class="ContentPasted0"> </span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" class="ContentPasted0"> \
</span>CurrentPosition = 256<span style="mso-spacerun:yes" \
class="ContentPasted0">
</span>// start at the end of the Huffman table</span><o:p \
class="ContentPasted0"> </o:p> <div style=""><o:p \
class="ContentPasted0">[,,,]</o:p></div> </li></ul>
</div>
I hope that helps!</div>
<div class="elementToProof">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0);"> <br>
</div>
<div id="Signature">
<div>
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 15">
<meta name="Originator" content="Microsoft Word 15">
<link rel="File-List" href="Protocols \
(jeffm@microsoft.com)_files/filelist.xml"><!--[if gte mso 9]><xml> \
<o:OfficeDocumentSettings> <o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><link rel="themeData" href="Protocols \
(jeffm@microsoft.com)_files/themedata.thmx"><link rel="colorSchemeMapping" \
href="Protocols (jeffm@microsoft.com)_files/colorschememapping.xml"><!--[if gte mso \
9]><xml> <w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:DoNotShadeFormData/>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="376">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Smart Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hashtag"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Unresolved Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Smart Link"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
<div class="WordSection1" style="page: WordSection1;">
<div>
<div>
<div>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, \
sans-serif;"> <span style="font-size:10.0pt;font-family:"Arial",sans-serif;
color:blue">Best regards,</span><b><span style="font-size:10.0pt;font-family:
"Arial",sans-serif;color:navy"><br>
<i>Jeff M</i></span></b><b><i><sup><span style="font-size:10.0pt;font-family:
"Arial",sans-serif;color:#002060">c</span></sup></i></b><b><i><span \
style="font-size:10.0pt;font-family:"Arial",sans-serif;color:navy">Cashland \
(He/him) </span></i></b><b><span \
style="font-size:10.0pt;font-family:"Arial",sans-serif; color:navy">| \
Senior Escalation Engineer<i> | Microsoft</i></span></b><b><span \
style="font-family:"Arial",sans-serif;color:navy"> </span></b><b><span \
style="font-size:10.0pt;font-family:"Arial",sans-serif;color:navy">Protocol \
Open Specifications Team <o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, \
sans-serif;"> <span style="font-size:9.0pt;font-family:"Arial",sans-serif;
color:blue">Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) \
Pacific Time (US and Canada)<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"> <span \
style="font-size:8.0pt;font-family:"Arial",sans-serif; color:blue">Local \
country phone number found here: </span><span style="color:#2F5496"><a \
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupport.microso \
ft.com%2Fglobalenglish&data=02%7C01%7Cjeffm%40microsoft.com%7C92c4c7bb8c6d4412e781 \
08d80d79f45f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637274164726698458&sdata=KtEL7V58Q7rscYvr9cPik%2FmYKZIv0rh3E3kBdGywwwI%3D&reserved=0"><span \
style="font-size:8.0pt;font-family:"Arial",sans-serif">http://support.microsoft.com/globalenglish</span></a></span><span \
style="font-size:8.0pt;font-family:"Arial",sans-serif;color:blue"> | \
Extension 1138300<o:p></o:p></span></p> <p class="MsoNormal" style="margin: 0in; \
font-size: 11pt; font-family: Calibri, sans-serif;"> <span \
style="font-size:8.0pt;font-family:"Arial",sans-serif; \
color:blue"><o:p> </o:p></span></p> </div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" \
style="font-size:11pt" color="#000000"><b>From:</b> Jeff McCashland (He/him)<br> \
<b>Sent:</b> Tuesday, November 15, 2022 3:53 PM<br> <b>To:</b> Douglas Bagnall \
<douglas.bagnall@catalyst.net.nz>; cifs-protocol@lists.samba.org \
<cifs-protocol@lists.samba.org>; Samuel Cabrero (Samba) \
<scabrero@samba.org><br> <b>Cc:</b> Microsoft Support \
<supportmail@microsoft.com><br> <b>Subject:</b> RE: [EXTERNAL] [MS-XCA] LZ77+ \
Huffman example 1 - TrackingID#2210140040005999</font> <div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Hi Douglas,<br>
<br>
Thank you for the response. I will file a request to update the documentation. <br>
<br>
Let us know at our DocHelp alias if you find any more issues. <br>
<br>
Best regards,<br>
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open \
Specifications Team <br>
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) Pacific \
Time (US and Canada)<br> Local country phone number found here: <a \
href="http://support.microsoft.com/globalenglish"> \
http://support.microsoft.com/globalenglish</a> | Extension 1138300<br> <br>
-----Original Message-----<br>
From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> <br>
Sent: Tuesday, November 15, 2022 2:41 PM<br>
To: Jeff McCashland (He/him) <jeffm@microsoft.com>; \
cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) \
<scabrero@samba.org><br>
Cc: Microsoft Support <supportmail@microsoft.com><br>
Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - \
TrackingID#2210140040005999<br> <br>
I think that would be a good addition.<br>
<br>
With regard to implementation specificity, my understanding is some implementations \
have stricter checks (involving the EOF symbol etc), but the strategy you describe \
seems best for maximum interoperability. In any case, the loop must break there, and \
the question is only whether we regard it as success.<br>
<br>
My implementation currently insists on an EOF symbol followed by 0-32 zero bits, \
which works with all the Windows derived data I have, but I will relax it to match \
this.<br> <br>
Your addition to the pseudocode echoes *some* of the text in the paragraph above it, \
other parts of which are the subject of issue 2210140040006056.<br> <br>
Douglas<br>
<br>
<br>
<br>
<br>
On 16/11/22 10:07, Jeff McCashland (He/him) wrote:<br>
> Hi Douglas,<br>
> <br>
> One more pass at this one, with some nuance. If we were to document this, I \
believe it would look something like this at the beginning of the pseudocode:<br> \
> <br> > 2.2 LZ77+Huffman Decompression Algorithm Details<br>
> 2.2.4 Processing<br>
> <br>
> Loop until a decompression terminating \
condition<br> > Add: If remaining buffer does not have enough space for a \
Huffman table<br> > \
If we're at the end of the output buffer<br> \
> \
Decompression is complete, return with success<br> \
> \
The compressed data is not valid. Return with error.<br> \
> Build the decoding table<br> \
> CurrentPosition = \
256 // \
start at the end of the Huffman table<br> \
> [...]<br> > <br>
> In your opinion, is this an optimization/implementation detail, or necessary to \
document as above?<br> > <br>
> Best regards,<br>
> Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft <br>
> Protocol Open Specifications Team<br>
> Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: <br>
> (UTC-08:00) Pacific Time (US and Canada) Local country phone number <br>
> found here: <br>
> <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo">
https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo</a><br>
> rt.microsoft.com%2Fglobalenglish&amp;data=05%7C01%7Cjeffm%40microsoft.<br>
> com%7C63c3b350100e4d8e19af08dac75a6fb7%7C72f988bf86f141af91ab2d7cd011d<br>
> b47%7C1%7C0%7C638041488484127933%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL<br>
> jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&<br>
> amp;sdata=W68NhydfBEeoxz9Cs%2F8LT%2Bv0wEQ7gZcLUvfWxRm6zIs%3D&amp;reser<br>
> ved=0 | Extension 1138300<br>
> <br>
> -----Original Message-----<br>
> From: Jeff McCashland (He/him)<br>
> Sent: Monday, November 14, 2022 1:04 PM<br>
> To: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>; <br>
> cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) <br>
> <scabrero@samba.org><br>
> Cc: Microsoft Support <supportmail@microsoft.com><br>
> Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - <br>
> TrackingID#2210140040005999<br>
> <br>
> Ok, Thanks Douglas. I look forward to hearing what you come up with.<br>
> <br>
> Best regards,<br>
> Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft <br>
> Protocol Open Specifications Team<br>
> Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: <br>
> (UTC-08:00) Pacific Time (US and Canada) Local country phone number <br>
> found here: <br>
> <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo">
https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo</a><br>
> rt.microsoft.com%2Fglobalenglish&amp;data=05%7C01%7Cjeffm%40microsoft.<br>
> com%7C63c3b350100e4d8e19af08dac75a6fb7%7C72f988bf86f141af91ab2d7cd011d<br>
> b47%7C1%7C0%7C638041488484127933%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL<br>
> jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&<br>
> amp;sdata=W68NhydfBEeoxz9Cs%2F8LT%2Bv0wEQ7gZcLUvfWxRm6zIs%3D&amp;reser<br>
> ved=0 | Extension 1138300<br>
> <br>
> -----Original Message-----<br>
> From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz><br>
> Sent: Friday, November 11, 2022 2:42 PM<br>
> To: Jeff McCashland (He/him) <jeffm@microsoft.com>; <br>
> cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) <br>
> <scabrero@samba.org><br>
> Cc: Microsoft Support <supportmail@microsoft.com><br>
> Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - <br>
> TrackingID#2210140040005999<br>
> <br>
> hi Jeff,<br>
> <br>
> It will do an an answer, though I don't think it is entirely correct.<br>
> The encoding of EOF according to the Huffman table are the bits 0100 which is \
there in the 048d word before the zeroes. 0000 would encode 'w', I think. But, yes, \
the size tells us we're finished.<br> > <br>
> While it's OK to have an arbitrary number of extra bytes at the end of the the \
message, the situation is a whole lot more precarious at the end of a block inside a \
larger message, where there is a need to know exactly how many zeroes to step over, \
or the next Huffman block will be read from the wrong place (I know that's not quite \
the same question).<br> > <br>
> But don't spend any more time on this one. I am closing in on the answer via \
trial and error and may get back to you with suggestions for MS-XCA.<br> > <br>
> thanks,<br>
> Douglas<br>
> <br>
> <br>
> On 12/11/22 11:04, Jeff McCashland (He/him) wrote:<br>
>> Hi Douglas,<br>
>><br>
>> The 4 zero bytes are the encoding of the EOF. We don't actually decode these \
bytes. Once we decode the final literal 'z', we realize we've reached the original \
uncompressed size, and stop processing. This is why it's essential to pass in the \
correct size of the original uncompressed buffer.<br>
>><br>
>> Let me know if that doesn't fully answer your question.<br>
>><br>
>> Best regards,<br>
>> Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft <br>
>> Protocol Open Specifications Team<br>
>> Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:<br>
>> (UTC-08:00) Pacific Time (US and Canada) Local country phone number <br>
>> found here:<br>
>> <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp">
https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp</a><br>
>> o <br>
>> rt.microsoft.com%2Fglobalenglish&amp;data=05%7C01%7Cjeffm%40microsoft.<br>
>> com%7C1edd50b3f0b44c8db3fb08dac435e6b4%7C72f988bf86f141af91ab2d7cd011<br>
>> d <br>
>> b47%7C1%7C0%7C638038033063463462%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w<br>
>> L <br>
>> jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C<br>
>> & <br>
>> amp;sdata=%2B8Kg5XhHodVgvSIaHHpkv%2FUDJ479mgOD1dUVI121Ojw%3D&amp;rese<br>
>> r<br>
>> ved=0 | Extension 1138300<br>
>><br>
>> -----Original Message-----<br>
>> From: Jeff McCashland (He/him)<br>
>> Sent: Thursday, October 27, 2022 1:18 PM<br>
>> To: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>;<br>
>> cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) <br>
>> <scabrero@samba.org><br>
>> Cc: Microsoft Support <supportmail@microsoft.com><br>
>> Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -<br>
>> TrackingID#2210140040005999<br>
>><br>
>> Hi Douglas,<br>
>><br>
>> Thank you for the update. I'll look into that aspect.<br>
>><br>
>> Best regards,<br>
>> Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft <br>
>> Protocol Open Specifications Team<br>
>> Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:<br>
>> (UTC-08:00) Pacific Time (US and Canada) Local country phone number <br>
>> found here:<br>
>> <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp">
https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp</a><br>
>> o <br>
>> rt.microsoft.com%2Fglobalenglish&amp;data=05%7C01%7Cjeffm%40microsoft.<br>
>> com%7C1edd50b3f0b44c8db3fb08dac435e6b4%7C72f988bf86f141af91ab2d7cd011<br>
>> d <br>
>> b47%7C1%7C0%7C638038033063619689%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w<br>
>> L <br>
>> jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C<br>
>> & <br>
>> amp;sdata=8B5w17A6tXD0cerKgk%2FqbMBvj%2Fw9xKvAxqZRhZK3%2FUc%3D&amp;re<br>
>> s<br>
>> erved=0 | Extension 1138300<br>
>><br>
>> -----Original Message-----<br>
>> From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz><br>
>> Sent: Thursday, October 27, 2022 1:09 PM<br>
>> To: Jeff McCashland (He/him) <jeffm@microsoft.com>; <br>
>> cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) <br>
>> <scabrero@samba.org><br>
>> Cc: Microsoft Support <supportmail@microsoft.com><br>
>> Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -<br>
>> TrackingID#2210140040005999<br>
>><br>
>> hi Jeff,<br>
>><br>
>> I would like to amend his question slightly if I may.<br>
>><br>
>>> In the first example in Section 3.2, where <br>
>>> "abcdefghijklmnopqrstuvwxyz" is "compressed" into a \
~282 byte <br> >>> sequence ending with<br>
>>><br>
>>> d8 52 3e d7 94 11 5b e9 19 5f f9 d6 7c df 8d 04 00 00 00 00<br>
>>><br>
>>> where do all the trailing zeros come from?<br>
>>><br>
>>> They do not encode characters, and from the decoding description in <br>
>>> 2.2.4, we don't read 32 bits at a time except at the start of the <br>
>>> first block, so processing should be well finished before we get to <br>
>>> read these. It seems to violate the "input buffer is finished" \
termination rule.<br> >>><br>
>><br>
>> I now think I understand how the zeroes are produced, based on the \
interactions between OutputPosition1, OutputPosition2, and OutputPosition in \
the 2.1.4.3 pseudocode. I can reproduce the result.<br> >><br>
>> But I still can't understand how they are consumed, based on the terminating \
conditions in the decoding phase (2.2.4). So the "where do they come from" \
part of the question is answered, but the implicit "how are they read" part \
is not.<br> >><br>
>> Douglas<br>
> <br>
<br>
</div>
</span></font></div>
</body>
</html>
_______________________________________________
cifs-protocol mailing list
cifs-protocol@lists.samba.org
https://lists.samba.org/mailman/listinfo/cifs-protocol
--===============3463292478830449355==--
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic