From 021d62672a8b48a55ca233ed0e8b0988ec481324 Mon Sep 17 00:00:00 2001 From: seijiro Date: Mon, 10 Nov 2025 15:20:14 +0900 Subject: [PATCH 1/2] about #1353 --- OpenXmlFormats/Drawing/ShapeEffects.cs | 15 ++- main/HPSF/Section.cs | 2 +- testcases/main/NPOI.TestCases.Core.csproj | 1 + testcases/main/TestIssue1353.cs | 89 ++++++++++++++++++ testcases/test-data/document/issue1353.png | Bin 0 -> 27440 bytes .../test-data/document/issue1353from.docx | Bin 0 -> 41759 bytes 6 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 testcases/main/TestIssue1353.cs create mode 100644 testcases/test-data/document/issue1353.png create mode 100644 testcases/test-data/document/issue1353from.docx diff --git a/OpenXmlFormats/Drawing/ShapeEffects.cs b/OpenXmlFormats/Drawing/ShapeEffects.cs index cdaeb83a8..ba00b3d45 100644 --- a/OpenXmlFormats/Drawing/ShapeEffects.cs +++ b/OpenXmlFormats/Drawing/ShapeEffects.cs @@ -2746,9 +2746,9 @@ public class CT_BlipFillProperties private uint dpiField; private bool dpiFieldSpecified; - private bool rotWithShapeField; + private bool rotWithShapeField = true; // set true - private bool rotWithShapeFieldSpecified; + private bool rotWithShapeFieldSpecified = false; public CT_Blip AddNewBlip() { @@ -2768,7 +2768,11 @@ public static CT_BlipFillProperties Parse(XmlNode node, XmlNamespaceManager name return null; CT_BlipFillProperties ctObj = new CT_BlipFillProperties(); ctObj.dpi = XmlHelper.ReadUInt(node.Attributes["dpi"]); - ctObj.rotWithShape = XmlHelper.ReadBool(node.Attributes["rotWithShape"]); + if (node.Attributes["rotWithShape"] != null) + { + ctObj.rotWithShape = XmlHelper.ReadBool(node.Attributes["rotWithShape"]); + ctObj.rotWithShapeSpecified = true; + } foreach (XmlNode childNode in node.ChildNodes) { if (childNode.LocalName == "blip") @@ -2789,7 +2793,10 @@ internal void Write(StreamWriter sw, string nodeName) { sw.Write(string.Format("<{0}", nodeName)); XmlHelper.WriteAttribute(sw, "dpi", this.dpi); - XmlHelper.WriteAttribute(sw, "rotWithShape", this.rotWithShape); + if (rotWithShapeSpecified && !rotWithShape) + { + XmlHelper.WriteAttribute(sw, "rotWithShape", this.rotWithShape); + } sw.Write(">"); if (this.blip != null) this.blip.Write(sw, "blip"); diff --git a/main/HPSF/Section.cs b/main/HPSF/Section.cs index 755da405c..1d9420318 100644 --- a/main/HPSF/Section.cs +++ b/main/HPSF/Section.cs @@ -67,7 +67,7 @@ public class Section /// /// This section's properties. /// - private IDictionary properties = new Dictionary(); + private Dictionary properties = new Dictionary(); /// /// This member is true if the last call to {@link diff --git a/testcases/main/NPOI.TestCases.Core.csproj b/testcases/main/NPOI.TestCases.Core.csproj index e42390dcc..e7cdff63f 100644 --- a/testcases/main/NPOI.TestCases.Core.csproj +++ b/testcases/main/NPOI.TestCases.Core.csproj @@ -27,6 +27,7 @@ + diff --git a/testcases/main/TestIssue1353.cs b/testcases/main/TestIssue1353.cs new file mode 100644 index 000000000..559ff6f0a --- /dev/null +++ b/testcases/main/TestIssue1353.cs @@ -0,0 +1,89 @@ +using NPOI.XWPF.UserModel; +using NUnit.Framework; +using NUnit.Framework.Legacy; +using System; +using System.IO; +using NPOI.OpenXml4Net.OPC; + + +namespace TestCases +{ + [TestFixture] + public class TestIssue1353 + { + + [Test] + public void TestOutputHasNorotWithShapeAttribute() + { + var samples = POIDataSamples.GetDocumentInstance(); + string inputPath = samples.GetFileInfo("issue1353from.docx").FullName; + string projectDir = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory)); + string outputPath = Path.Combine(projectDir, "issue1353to.docx"); + string imagePath = samples.GetFileInfo("issue1353.png").FullName; + using FileStream fs = new(inputPath, FileMode.Open, FileAccess.Read); + XWPFDocument doc = new(fs); + XWPFTable table = doc.CreateTable(1, 1); + int row = 0; + int col = 0; + using FileStream picStream = new(imagePath, FileMode.Open, FileAccess.Read); + string picName = "image.png"; + int widthEmus = 144 * 9525; + int heightEmus = 144 * 9525; + XWPFParagraph para = table.GetRow(row).GetCell(col).GetParagraphArray(0); + para.Alignment = ParagraphAlignment.LEFT; + para.SpacingAfter = 0; + para.SpacingAfterLines = 0; + para.SpacingBefore = 0; + para.SpacingBeforeLines = 0; + para.SpacingBetween = 1; + XWPFRun r = para.CreateRun(); + using MemoryStream ms = new(); + picStream.Position = 0; + picStream.CopyTo(ms); + ms.Position = 0; + XWPFPicture pic = r.AddPicture(ms, (int) PictureType.PNG, picName, widthEmus, heightEmus); + + + pic.GetCTPicture().spPr.xfrm.rot = -90 * 60000; + using(FileStream outFs = new(outputPath, FileMode.Create, FileAccess.Write)) + { + doc.Write(outFs); + } + // check - Reopen the document and verify the XML content using XWPFDocument + using (FileStream checkFs = new(outputPath, FileMode.Open, FileAccess.Read)) + { + XWPFDocument checkDoc = new(checkFs); + OPCPackage package = checkDoc.Package; + + // Get the document.xml part by iterating through parts + PackagePart documentPart = null; + foreach (PackagePart part in package.GetParts()) + { + if (part.PartName.Name.Equals("/word/document.xml", StringComparison.OrdinalIgnoreCase)) + { + documentPart = part; + break; + } + } + + ClassicAssert.IsNotNull(documentPart, "document.xml not found"); + + using (Stream stream = documentPart.GetInputStream()) + using (StreamReader reader = new StreamReader(stream)) + { + string xmlContent = reader.ReadToEnd(); + ClassicAssert.IsFalse(xmlContent.Contains("rotWithShape"), + "document.xml should not contain 'rotWithShape'"); + } + } + try + { + File.Delete(outputPath); + } + catch(Exception ex) + { + Console.WriteLine(ex.StackTrace); + } + } + } +} \ No newline at end of file diff --git a/testcases/test-data/document/issue1353.png b/testcases/test-data/document/issue1353.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba10f055f6a4d6cd4f2a41e05db2a7a3482ec97 GIT binary patch literal 27440 zcmeHw2~bl@w{AehpeVDTA_)X>KqgT{KoSK36~yTPDhM)(iU=~uoFEQCkbnb3QNg3f z;Q$IMlQKjJ1Z7l22AM}erZ7f^aC`So{O_xJw_d&a|NmCKciB}|Hoe#W`dh2l>R#Qu z_cmhxKGUU(S1!h2FiUrv86U)8uoMht5e6#^O8)HoyAJ$_c$yvY#$cAOLH-HsKBznl z3I)6mn(oBBsF3dke+Zr2VX*^)NvAEDIk6CfIbF2dc*kLXf&Qkw?zZFgj5e~o{$$K8 z=?yzcXV*ObTSRinVd;rmK20(GIsGE_M!gRhhPOi8CYCxknLPh0BjS9(_k_5LnzC-X zlzx6^$M!Gm3&95Y%G%LA;|4V6@}drH@8Z`9iOm;EXA`AC?eO@ras&VLu?j|jcW$;1 zBgi|AxrY(ro#M9%V0ovc^Mc~MQ%a{0o_C7*C_>_&-jJg3PnFmHZ-E;<+hXYn392pR zxsaTYX}>#k`np4h4%LKIiDh~;9i8Z}KQ!Cl^e#(Y*E5L+6~l^~CazCO==5iale+H-qHNoiSL)E{RSJ4_zg7t;n!bx zz{JGlQ&r4TgR!f3?%dg=uYYW?>7BL3vk1@iqGDq4;futq6#1IY?!~-X)?PZQkYDLtUH|v2mj;uK-cQ1KHIJH9?xdBKm#Z;x@B9WfSQ@Y|al$PW9ce~am;DjX{*~`HaFo}4Nd@bq1D$<* zd`=9M-n2A4;-DQt?`?e_Uem?l_-~QmH7A9ui0KW(68kimiGh9VZxZWnDS2G`sMGfI zWx)%p54>utaJLq37q`E1H7{r~E;cq+Frfz6sx*4F{@;3v<}#Le9uf}Bt0VzT^MX!&%4*%K)@{i z$0M!-p1OlPvFTQ6d5uYuulYVhL@8~QK zje%dO{@C;9x73lWg4xvI(ekZJCbv)2Idu)U6?S#S+pCB74`j8dCx%X)^4;DXIoeYh zzhi8?)?VZ7Y?*c?Ke~j&F^?-}J8*OBPFCD|u5NvPr1RrQh5nFeV?0+@-PVRm+?i|X zHO-8Wa@lXp@#_2fd`)6(X}m@xiAO{D66UdG5tBxDmk297dQbnti@W0Ir^b3mz8yPv zyG+U1ZQpB7A&$G>LciBJI5=1I)$5a$abkv?q^VpUf@Zc5KBSMs?&$h-TXpXsP2901 zKcr@S;uDREX$~67>kI70Dy#T!ej3P>j_mr@Xe>VxUohj+mUoS%pzoLB?pJETw~2$M z2x)4+xsMwQm)_o$QG5KD^iJbpi9XBtwW!jBHoCl7bpM`#Rpl+HexY#|o}bK0)%ed553=Sp0$&Gk=TjJwNn+gBwg z#BOF*y3&YBJ`w9R%Bu(!`i2X}o#pt3p#jUju?}R$Pba5(NBmF}jD50W2}$_CObcO| z9+^8sG7sXne1H{W>`wQFc+asPpSR35wH01X&d?Zlre>Ibpt2qSo7%qhd2X8*nDJKQ ziJ82f&oezMgURqK3)xcy!-x)Fz3vF9wR+s9%S&WGolFd|vZK{jORIWtr)mq-8$)~U zUs#^^qT4u1@0yLpB^|Fa|LYwc9W^1~1ZN*IUbCj!N^hHQ-`5Z0{xAEyBb`_|%m8M3 z?Rl=)hU50e#1CRTg+3r1o57ocx!Iwbu9xK5pI?@otbCAq@yb#2Ih(yz!yAaN=vx| zw^gnGrYNgh2i;G$_@?VW-1=eMrbuc>@#&uQxQ-Xf7jI+D^(-!*$`?~?zB<0x*!ASe z(jPzE>hnW_0@y{eOL+WNl`f_mN=dD|>$uZ2XoFdn(tfvn@#8PL`N(w3Txbo4@U`c#rPh(i4C9SnjU6o7%c*9KwT8IlR3To^ z;4o|>P<=95e%nEd=4T7SvZEaEPbkdAu^ztHq}#L8CzPM;VvZK+#ZlLsmUuWbkyT)) zW8mL$eQTWY2Cau3h#%@+r4hOQpPkybFdJ?K-Y_*Fr|cF)fv)OmUnupZ- zh99qwmbz)yUYGu4ja4Qyr}m}x@k!hqhjpIaUi3$z_Rd)U#6EADcVtKCudevW=pzMj zRF`j?j(~v~9^XDJrmK$!E;M(08TNdayySshLc#;P70*bt?MM-MzRPXoDh7_%?z61l-tL^1b?xXkjbW9J<^py0}UBp_F6G`d_>h% z9Y8oX{Mfu&>Ca18Bc(D<`MJ75}8V z+N8%h<^SqVsOjiSWV6|?nhmG>U+>DYK9(o>&?KnIVp{HgiqD`|*~H?+j4S%QI?`4O znBgL2)~6Q}R1O;3rhU<)QFl0QGJ9I1^)Tm)a_&@LvWr@@!uGeG+b>=YTx0HLDv?}- zQ&ghrCQhCFt42NV%Y)|hxZ3(q^V|Z}h`E~6Kdl-H&gIAR;H$2;?QBVY>T(IYP2KM8 z;Ud}l-)=DP#?gf&y>=Z6(kqF#56y92W4?BvATnb0_=cMkLrNEaY#nfONqxVYxsrXz zve)M9QC5D)G?M!vhr6_Z*{1XxYeF4&?KT#X2)nn<+x0+__~fp}&$hl_9_V-tHs*|I zwg%9XHfWBBh}A3_&OUqf=l2ktemXg@} z#^_R)@z<(QckT03n@0it-aQp+A|`qfEW2#ahfbQvpt*)-H$WfCpZ1W+`AW>g9-K*I%FAKPV0bRGPKke1Xd-G#b;?`#CuPJ_I{`VzrZuULuRbAc?x37U+ zya*SZ=4j&$GSXcFX1O#|nt~cnk*b$qcvVrl-u*b5s-l!j6({_8S#RXo({ST5aW50^ z)IA~h_OU!n6t&VHRZB#g1!{p%@l_SEMAT~{H(fK&0A>m6GNx9RvV z2DL}MeJwbg4q7sv&>VR+Vn_SE??a}!#S^z^{%6^tnS{8lEy3P)wO@G@NLiVUbGzFf z+T{o5lvPy3*>gwYUEH2+-ELtlEfH*xg59E5v{G?rtRGcEiK%r@SDN^yI+}$w}6b z{%Y-tcdI{rB}?g99F6Ez#D$C<=YNIWW^6`$;KcgV=Cz%tKg za)@R8buX!HHDBdLSc<=YDb1&5ig1xutQEbq88VtuzO4#Pkai>d*afAl+XY*tc2 zV&Y5nEHHoInFr>S1I>Bw-bO`W^L+a2(l^*}h6}~4m+nyVpxU&x7e%hNE_hQTVP?Ea zb+!Hn8umbY`hBa6%|+>s?aVz=YVC6DZ2$Yo_YWCsvUAxh8x&lZn$ONi_%MUse))P$ z&;Q8!ohy7mBKln2NsvEjSXBwe3cG^PycsYCs_Xmp+q{u{T-&!^W?;9>RWaOP;6hXL zSx$GtxxfEVQ_TMgGN+6mPGIyVMArwWHsw}K`73^iJ)XMdRKe4x2b1`SEjzTvyD!Tg zx1lES)zSs2a#4Ki97sd{F2zcL8O>sMSFHh8clVT|^NbUlCmRq%L?wM$^&+iN==x0IEXn1w|RHs>AVP8Q688Io@&Z<0eIOHfk6 zslh?q zVQ?cd-};_;HaXu6xAIlkRj#JC_92U3^t*Te4(%Iu0+WQU`jd%ji^LQ*@-W6U1WNQG z*W({Odej9nx^rP0m1d|vI*<_4a6B(8FykFq`DJsk4k? z37AqA;a8bqMyNGytj^BIBK+2H*Fzd0XmU{IqJg7ejH#QW<4z906CqKt&Xo_gUp6(u zj9|gk`1Y!;9=Gc2>s@fK&wkH5O*|Nq<5C*8Y4hg8JXO-k6^K+Z}m;@E|jJo%hKC7OD!Rseros5FJe3IUbFR%F;tRAOTL}mxyYfy z$${_I$V!3@Q830=TGhUNLG$u9)2O%gc|jL={3zv0SClu(UbGQ;oiBv{>72tM{7K`G z5`Ob{m1dg;+bd|9C19OrLG|y!bQLTrbl;f91@&tkBJygM!`{4kv+G;xvAu&W1!Qu4 zj`zujSy2yvq_4YE%wowl$*S5flh?&_dEyQZ%nO}J?wLGPmY}q__l?q(K`be-|0*tY z-RS6OIU9j2!rb@C+9%M6qdlxkn%5-;kFK&{c_&lFgln36=#~cBd8VY6oJwdOXu^^`I z5B{3k#&f_3kshF73#wLU?4z82Z-J)3c=MfGQ6K^It5a{TFfi&#%zU1ONM1 zLFaA!KhMT{JmzDQ*Qfm}9wf|%(Eq#;`aeHjn)ix%uRuGQ|CXnj^X@k9Zu9PjSYUpZ zLO~s2-W2nrG>PvD|8q@2g6kvrt^d-^L-WJ!{BVng)_ivNkEa6v^tL??abmFZ+l#-O zJ`8&_svEarsT3?}Y{ysxWBJ%_j8KRv1+Sol7gWk_(D`}6_nKXbW7M`p(^vZ@f0&IP zyUyMt{OR`sCT9K=b z-MsRKi33{;=Vr68h_D>`WJs=Jn$6k?m(-)o;l57Mu7?~aMfA=!(0i`156`5FharRs zk`&~}C|j9pLnVPT%4aP639Mz}mPjCvI5j09i~R#}zhM+1%;_d6@x5vd=O=Hv+4oK4jx%E)GUt5 zEFO~>l!>t$zZ(2?SdFgjA$~QxVKt10D}RHaMp;%Z&(~NGYV1js;2T93ZKAp+Gd>mh z-B9KJ(@Z|wX!Nn4pZ0lvO{U^d=XZ2PzFG26jmpcV`SyQ+vU%bf#j}fp1~i?6wl-g< zv_+6knh2Yv4^8KA1{Lvbr&&gjfGsI%DDEE-Lhw1ffot zOeJO#pyzs^O{A{EtwWh)qYa-;z;?Swt)i zT-e&05^NR+B5JOM6wG(dXo*2iWu_>EIJt}m0po_z%EXPL5C$lOCVLUAl8!cs@EWcI z3{DCgwxR>6UCdAgX#h$(TA75LmF}@jXe=Wn@DKwDTtXA!wJuTcO)f1+kT=F>#jk8 zKvaOr2~R}@ZbE@QK!AsU)=A-n=b-|TP~bxZQJ04R1@LrE_#;#R<*+k?Xoi|17?Q*) zbMe<hiEb!>0SbWUCh-7ZjjaytVn@*%u0l%7 zl(|XwVGWy50f1?O9&3!L)G*u}w zqY%1c+G^;EDP}VQme9KyI?&V7B-x8>O(4im6l5_I=eZh!q@W-dB*~1kD2M_CY1}a* zFe!nA2tyBocoNu)Qj8$TBnq;WiAz(5AdRTYTLTas2;!*^L2LoYchu+4q9BUwMg1s9 zEef&_fM`GvTNI>HoXpTdLC}{V3;+lV1#y8O!&DdlwH5rg*1dgBun_)pP zvr6<%F0!THADzH7J2_l&Z(auq4A7x@PHUslqH{8!zz}t!n>$uC_`e2!4=X~5YHeks zwdZ6(K{JeC%`FQy`HWrx0okgC3T%=ul*@Gi0&tYjTpz9#Rg?hUOL6dnUiZXl-4(5X z@8EhFtden9l&Pt6P9B4y9D(gmzj8vZyEPR&_SYmp#6z0cLfhN`aEB`a8Ri}QuQ`vv1YRY8GVED{V9MLD0aGug;X6Hz9Ji;=b)se3NT z0<}_NVI|L884Cy7t{@PLAw-5~Rsgc`r@Gdj9MXP@I5S+BP$09SQ4)xl;1NxdZoJp2 z+~x*$0ulEmhD_8)JPqOg>N&@?Qi_rHSPaAlAlt86U%SB|;$6pZF~$cpB0H<@LQ_3+ zOe!aEv+rY-X{!Jck}9lsi|FeBCT>zHtkdfZ5Oq_ARbAYnLqmqQ7y}Pv(brY^LXr~QONh8@ifan|8km9AocTH!~w@a8QWPv1%A`I=Ow8D0j zN}M1Fe(X>I05Na|K$15)qrhfy5wa=(;07d1b#wq^b)ylo3jtZw&RU|$fGi6kn+!zF zAX)sy9b0I~2&ha;KtxwUy{>9M24p)Wfap6!6prGp`-Q&(vbKm`$nO00&|>n%o`7sD zqL&&l3_c9%Wh7?~$Oa;ModTlr78uZuj6u=A0*>eUD{|K%T4Vw(Je6U6?>5DN`o<(d zeH}nt7Y@9XCOMPQjcnGhwf7PA^uUE^*p?2m!k+;VF9aR&)qWJcTl68&uLB`H4NB`^ zS4^>3K>|#Q*MJIz0f#hMSYd)zFsLvJvIZ{aAO=mWb7Hs*Y*K;70ETCLgBqq(RNXP1 z(ZV6k0ruzeG9{baVcMXTk0aJl2Gt#dF`Blr&{YA9tDtZVQV82KZE-kKxC8)fl>z`6 zu#vJ86ahduEdpq9AIPS_bdX^uN(WjPm;ie&1r6e$2AO%dW&>ue+Yn&nJ(x2P*z+b4 zZ0sB>-`XO#5o~?Sz6Dwl8AK>SXblb9xE!z*ZC|H2*;5VF4*R)D^i~7hr9i8bJvI2kS*WlC6g~q?iwdLtPo*RxoTkGUu7$$G%24>&Z{hXO;xtrv3tu=M z6~;s1AinUhJQPk8hsay`!j{mu!vav)^tZ4a6rLk+OMq?MfNhkJX@LUjtxKWsdf+<7 zcu*P)yFif2fqY^!U$hy{ROt6W#)pjPJb>kh$te*L#1SgdY^~r&IApfM`!&}?R5d;- z?2c5F5dvUG2rE(UjV02JK=EpwX!$z^WStAstCMIpGI@ zL!+gz^Q8l_p!D3w*u~4C12eoYqbS2M4K-&cx z!_r%oVE^l|8ulQoKo2747q&NB1~ns^w>AQkvyztB7M7R5jv|xSSuJhNRuxFObrYm)3OX%0*Rbu`TTsfC&`Use8_U8k>Hk=c z_GSKXEu)oyP_}8sdRU^AJ78-L0aw>z2%4S`M=2}7?u7%A3|gCvS?lsH=#;^GpsPxf zl{aMz?rwaHG6pZmf}Xb*vD?uwV~;~9u0BG|0W1(02wUOrthx<*m*F_XZ1gw)dqT#o z)e410G^XrE?mrx+;$a2v*MyS+&DB6*qYYIh1D~MTT_LR}O29azg?DpKKz$i0hzg9& zh#{Xcu#K-EEe8`wU~!MY5AYg^UTmSm;wYv?sdqFfcv=8MxdSU*zp=0}QdVQ1eC7Vd zQ6*jo**L8T$x_HjVm4|UrAaVRd&79Gn#ljKR5un3R6M)HEgHNl>-jK z9!=@U7IhvKA7eaAlPaj~H5#pm?EB@>Ru-&}SCpp5e$UciF9K;Ws-l`iiJ@o`qpXn; zLPhozLuERR@!vNE3ua$FCPfBixv*bqi)$rH8bt47 z63?%yU4zudi9w9qN>qyRmD3ea=rMU=Gy}4>VK}5Sg5t1D%?qmvRT!gA?H7Kf_Z?>RQ2Uu{v#2|=z$Lq7;i`R`&_0N-2y~bqD(NEzSZ5 zyZkM{)C}G$*6MrB(S`&fV{z*@L$LftHLeXaZ}^vIrt3Q)fC0GVojl zE4l5e&Ep);h+#m+h8RXzdzp8;7$u~9A{FY1PDDK)xzMLaN;NDW0bcS>aadzW zmk5zo$DJ57u)V%#M!+-WGeI0_J>CpgRaeZKU;-xo6wyb>4``Kf7{OMXjtVJpF(v2^ z24jP!61yH5Bf{qJ2N8yPTYXaq15NQN!xV)$3n6r>RwAW(Z%pt#E!GH~w55=aNrMvL zK#I@AcFqJnAln1oGGRthw|_5E>5s3HVMq=>xe$clD%eL{{|kYpc=Sq8IUwVAz`@eh zk0Es}_ygFW3krTWmLv5RqdyqT1oXbT&)Wn8#`|h|-2jf(Ux*sW9gx4@1bCU%2r&$! zE;^b7n~jBzV6D#(OKM(ygir=%^MVbws9s+X7{APAh-c@GP_eLyYsk&s4XVghFa?3b zhi6(Ugl^1?Cc&8qxPpbb5;pA*MBi5TWE3U_j-}#`1IV9@>2J}bI8Mh5lD?x0G8a>1 z5Y7Bcj-qD3!)_d3mWTXFdD^%Nxr)JTf=UTCLGx!bQ+dL$1@T`qpzs-6o-n$)bkPnK zF8YfnoQMIwhHvzS!a)YID6$@G*u@6Wz&3?WsBjWoPfB94pzxLuc~toAOp6GhzOo0~ z*>6w`9NY%1iy-gCJWV8Xk0AcA-x%gvt`Q`R!xA6{-uhV!_`l_7IDj8`{8NuN<`L%2 zH}6LCk4jM=n76~c9We7wFz*EOPQdel`C#~eIT*N!dGEfTI(=+`ropfEONpny5{Bm5 z4Kz;X*CZE*1zYCFmD7H%k!Q9%rI|+c_YARnD+$44D;bIZ-n`9__wFm^Eudj zR|CUrzQ3LCZ|D2l`TiF3->{}LKj_R4I`f0hzkB8MUmIm5aTAlZ1s}T3Z$p=cF&HuL zto$Is7`1_cfz504nYk}@|Zlz*$RwzdYlQ{XYIDNq8w zcbNGmN6M!uc(u~(4c;2<)NpQ{Gqop-bisF9CF!AMm z7R@IIY!yTghMm)FsVnAHz+?q+EvEj9jlk<|3p>FFKlwF!)>bAGYb%_lSnuDzXZi`@ z_0v{Rg6Fs)V1FAt2H$39+vq3WyJrsealTsc6#VxMyYU54GMY~)JPF2It^FrbD8E#H z+WQ#+5dybv;|-Ja%{%!k;SNVH;}WWg(KK2rxn4q`B)W0yLg&$|OL+HJ*8KYQ>wYgz z<9IH;ZYl3_N?7`0@Inl7P#I>swpV!HJkY(heBZsq zL`zv&*$d4$9PVXt9Y+i7t3r<9wJVJzi$i{e7)e%CRHTFkD1$Gfj_nuP)J|hRGTgT9 z4l0Iewbc5P=4Bmfe+|#|w*@j2;Pd;v;QyCM{&1@LrMRl2Itk0f#H{Bq9Xwa0v=mXdo49)V`fgEM z9yu3c=-fyy2pBEie`zfq6R=Y(^%7r@_)*SZQzg{q*NBf0-qPJ%V1;5yR~NFw4j$wi z_HC@*-sh>Zmgbld4RBE|T-y(SJyw?|u;16m=S|=x+?;|y$+=c*(M=D2{`^@JV8FXP ztiQsG)!f_+eBO#o`{87m7-<-~;6FVs5#fJmeLmd=CYv|H|F=e9kQ*`$2xr{G@Oxa%wG`wUa+Lk<=P};DALsq^q6=mJaOkiI_y_}T_pW`$FLpXy{13M> BJ^KIv literal 0 HcmV?d00001 diff --git a/testcases/test-data/document/issue1353from.docx b/testcases/test-data/document/issue1353from.docx new file mode 100644 index 0000000000000000000000000000000000000000..bd6dae68f06c9f9f708bc813a9f0dcd58ca69750 GIT binary patch literal 41759 zcmeFa1yogCv@d>0DM^v;P(r%9LmHJXX%Ok|ZYdFvRuoV`Kxru@73uB<>F#>_>;vDu zcieZ!8*kiu-x&Y@WslGA9Oj?67WP!3lvkX+6EHEAxw!-YrMxCQN4Al#K#z1 z=pimfCFDkJqf092O+y9uK zAeXUkl|la0UG=%j&-5n=-@;vL*o*V@tYQ_G=%hu&$MA0Srh4%q!NwAAD;DUaJ@Ef^Gl>@E)TT#iEOPD zBsZ4&@d#4Um4Tv=;yWEZm*w$5E~FZd=b61v^iT~R_1xQ#rO}2I6B8#!T*0=f8h0e6&v z;6n$Z)6mh(#)*{$`v2Rg{2v^O|4Q}3gdaduVu)=8T?F;ksg3<0%u!}F=@};+y@R4F zuZTB3Vm*9$Av7`qufOtKwxh5Ab&sc0x{S+AqW(5<(zCmfb*Mup22HwWweFBNA+;ab z-G}VwFw&L|%`bk_$TR#7iqgi9>?THzKMqgnY{Xk+lsa6@L${)4=pHbk{g#vI@ND=f z#g{YtE&Je*wVbZkozKG3^`T@nT|~ZU=Axy^oR8vSe@=bXZ+^P^x{BkKHNycju?-t5 zU3$E6AsX>^ZSSgQPD5TxLYBLCu|lSh0qZ zweiDeJ&)mv61EXMEj)#C{wP+~jI&~^4@F^1$Vr8x&-n+(#m&S?c5Pb}2A^Ym_9W*a zOej72`9pXx_H=b^_4Dds-B}bfxB1id;6=%P{;x_wOK|9~y*aop0O%bd;0nD(IE?KSn)lrOm>zO0xg)o=E3mJ82?L&$qx76lnqy3=6xs819nO?_!&9 zVkMHpqaoH?cL&Sk1~KE@u(37ZX#@NesW!F^*c8tSa>XB)gMD9gCtRsv@u(IE7l`B6#(QEw?pI=#dIvC_lyN%I!k zAe1RWk#=s~E*IkaS!j)uaDS1@X3f-|?<-(1jhOPz(cbO<{F6Z$$sysDNk%C5c9v-c z~f9~<)EZ{n}zdVw8 zun}Xjs#Ya|A0zNUxp-NCjPPLg2ayPAYK1Ui<)!;x1DwbHCjs#yE6 zYwB7nv`|@Bn4TN$thgf#@6_mT>nU^aWhaZ)vSs6`6ZwyM9`t)2?0Fs-`<%^P9No{s za^|ezx;)=((=-%eq93X>{Cl`}(789<@N>0zsKCxp0tuwv zi0=ZHiYiAM3I-qLKgqXleY(DMH2%&VH~&+%KXO9%3mwWyqDNW!ba0zQf-{j<(odi2 z#SvxpVfL`0LF-J^D@3}1^f+Wm`{61e=re*dWZQ98zVm|C8BU; zewUUbE8>((y^do_qp-qDwBQ0nWhcvu@6xJI1&53sX5TsezQS+w``@NqIL;^=6yQ!d z0t7+|L4gBPF03y3*NOM0Mu7uX4gmN6?5pr~hcZ|>%bf>td(C|i3sKFmRsCp7H?0f9jO;R96AlU|yc zT0LjAdimVKjGe{a)*?bxS@td(F|^fPc{wR{2n59+0=WZ0K?W%AS3i#cFR1o%+D;J2 zeLCnrIC*v2ZGZ^pq%JD~`O-zY0{nq!A+972ft1FgpFao61?v`hDegtl2*sLqw#;)nwSG&>nsV#7$hrsg4qko4j5lvT z(Ek$>a?1a#tK-rkh}RsH{BY3KIrI{9gvW-xgZM8XQeMA>{6ZDGd7FUefAg01!T%O` z!hSYBB`u9<+V9Gz+ULymZA!|+Cr_RX`t)E`*iPyku8%&sSfBh}Ny=xReGL`YmUJe{ zP?)x|vckc`qfvjhDfr`#mCba0-THJxgV5d|&Ow)J*3&eIX@=A~yMTaB{l(#U$eHWr zgtqI(*fZDl5j7bZncqEecZK%D-oAayAtg-H60v_eJ0CSue0SYoR1w+v(l zvKt=W^E7pKc7DFm@mfVh+lVtFWo70^(BR_nu{$@;^>F%MQbAS%P()W*o3lJu8D5Ky zBvRW({^FTkD{lCr@$uzGrVafWW=Dtb2B{kfyGwDfv|M$8Y}-+86=70KXYSB9X{l@VpLh42um^f{M^ zh{1JdBku5VER!`Z1vL}pFEj(han@pfE-aW{t7SBgDpteA&aS3!J6=)Ln4K@W<+eG& zaNX8M2u?0JH!rWCV`IFMfbd>ZQ`6w$z`)ag(-;_OeayQaOhlwKG&F-BZ#+9&H2?m{ zy)OoJIv3Yyjg-VJAMDqLigqg-E{eSOI(gBLgbznd7Pn`c78jEZS%TI#DyLbpd{3=h zgr}nRmb;V1_YZ~*S!*u-aCYBB7jh8fL-)lz#nnTLuJlhVnvS~*zjnI>w=gD>F9}%m zw8BLtYE>N0nj`ScRHcp`RtG-OWyNbZnMOYhE==h=KOYH?^nigY)*;oNMtF0zeW(6!LU zwL|H~CPr+iVyCK#&X#QyrE`nr!v?zdB&4=+o`@PtD{>-7G{mA9V-NXBVeg$RXR!uj z%f^suyXv%?_gbyW`gGCXL99-1ye5rhL%!W+ZH0+ub)^lVN(D=2b`_)7&JpDT_o zhOBlzO@k@mcX=+R=yfyl9vY4NZB#?EFTU1*x~+rOtzP& z!woDGzRMYI_v^kaNkt1pYAFTtIQ(&cH9tQ;=mWf=F!VVXr0drZ;CERa_<7)7yy_HX z(pKH<(Of$0c!|YmU??T}6YE-`pU}i6RMv2Hu{F3@?02!&hi=iGSrizmqj;sI(6i0f zjaOivS|Bw>og2O^>T~L>tyEV-AM-r{<^G)e1~&C&Mct`6Kl{#mBFozSJ_YnyMbfL? z#g2~4jWccz6#}jU{Bg809LdRV|e}wUo(RxE|;`;}&nd z(KOKJzRagMI~=zw=0E)VF-39rZ2HP~@R(*``Kb!Kc2v0(v%|!ETWs;^6zc;Kih?4< z>&#%Ztp(R_5ktzat~8a85Kt9uM49W~j23U}5_xZ~s`QXHSGswxMIb4h&Kl?4`C(;) zK97+5{43rhDMt2p^H4wJ3yT%Kbni8p<8B^H^h}Ty@+*`_Els7%)f+H2mb>`A&GzKc z>h=eQ7`)eVb0ej>bQ%@S)x*V{21gWE$8C-~b1l!ZI3?oUvsRsAoucM_PZpD-Vze8Q z!p(*_w1J5kyoP?FrLY`$A}LxH2Yiwy#Z{9=MBb36dVw=5UWoch+H&{TgDhs9ygqLm z#m0QeME7;ktCQ~4uMF?QmV)En#EizM%#l)mv5Zp9A<8b(tS>7vLsIk-ejH5Uce$69 zoUS57ADFb180Ws}e)nZ3K3jRL$f@No&op>E(OfUK?ZOeF_?l*YaSnFc|^i zIQEx|jQV{riX`=)<4!x@CkB2O2aJqbYmq633$ZAaN$5<}q~UQn_i-fi@L7R0q`k*J zpPt$f^@#}UtMTIV^5MVD)zbOBF`}!}((AqF`ieAG%Cy?b>4t)rC=P|LHn>~MIec!{ zeL@qOinL-$-)g+)GX=$t@LyOsL5273HP5HvJ)~~_dyk2$#l(13uIS{5>V3GmR%wz+ z{mD|=;QVUV&d$!)DUq}FZ_<^Tx^=kkWV|Mo&ImIKoi`o+9HM2FhYDWzQ9=wSM-he3 zP})jEuP&um(kBobE^f>rmp91%uDXx5_H?zt>`@H4aE-liV2CH3qNOZOK??;HbvR$v zsl~@Zmb$*osnVq3QD4Q{2BwIsLF+Y*u?D;P4{!Fm%dCMhs}xVUA8%oq%`N!F~sOs zJ(#?!?q-juS1m6u9xr2Fi$(GaEv1=ShRzFQf#JRFEy?%XWlsmN`Nt&I0yFt_=er$dMPuS^g9Vxd@Ns}@=6nuwQY$if%WIW#?}c}04CZz8s~yc|Ypf{2 z9wCr@PGC49BFNfeDGaN~dViF^7#=!5+K9mK6q|34r-|}CqNHke9P5`hhW}M+(x!2q z=KiX)ggP+(AX;WlIC{R#i)4<&SHr8zHN4;V>KZgV3j_aDMhdl49uG&MOfq;;YM{s0 zhSM=zE5~EqX}RkWs*FHHn|_u3I}Abs=m-Xe8 zccaZ&@X>fPWoN2J*>X?^i(o}1=P3T2FP={ zyxdJTv&`oeR+74h<1JK(!Y$B3OeGQT8jeHV%;&fu=W_M;@85*!wk?sX^Szk1Xsr+Z z3$c9WihG0<6o!tqD2!cMqSNe!;cb_jZVkGw8H%;boefc9xtR&LM{QezWSm{!$$k&` z;Rz_|M66Iz`0T5#ECAId`mjlYe0uj|YLK>}VG~1>8L%OzAc}F&V*m0*VJ1r}#n57a}KU|v! ztSL99>b}=RN1)U>uaA^6Y8`JkVQJnKr?w5(nw@KjBGYUr8^n>5B4HvE{27a)HdmUV zQO?y;YCPBc81K;>;ZBu%MnT3CDYl*39pW)^^Sg={=Qz&IUNwCKkpk}83=%}nKq2~x z#RUFl(LmA-%oX|#zIEro9LOT*x~^4*`(b#M0e?dtKMadv(-TQn@#1(X&F=HFM^yC# zK;=~a*94foX<|mbizaKkPTi?~#v2rITQ%fOW*$*SaEr4aEQJslXoY9rsKp1A$}Pz= zS3nu^xdR0cSka)_n6qz~+t?K9`0dX{vEIMt;&XTxmDW(%;{Y#8Yq_-G&&Ka*4wPtYN|HFBW_pc{pnmuv+-E zdU~)n+;M*H9neWXL^@gP@vVluUv$ptx}1R)`}=YiA@1JtmlsFV1S5*n)~7&aP|$r8 zfN+jD1$Pc7Z4c%AA~>MWCXy z3t*-`5C1z4O;}%m{VC|xGmS_Y+deU&cQPAB@f%o|y-iOq%w=u{7Qe>So!i^?<*SQ3 zZ4|6thwC`LuqF^%>VH{B+vZ;rA#tfU%NWRi@dEunSot@F+~pM&H3ZgL9e@5PzD-Lj zVA%qUI(bvdUYG(V8SDne1UjzJAh-QiS}_sZ=P%1L7Xujd>1-RYn!FiPQ+%p+U`g3R zNg@Z?4Ii9sTUhvjdNUd}0?+~QI@-h!6f%a7leIK9mN>piB4XhvrrnvsA+nN?T@+wx z{Dy?rHgR-x)QsZW%kc_pQFWhcvyLPVF0QB7w#qhaZVWoc6!JAUH~$TY@HuO-`Cc5t z9n2KuT@)0tq0!0jZXHFsl>*8a;q5fmdHUa7BZRNp$}t$ng^Srv*X!%sMQt@5ZH#L| zcM`Nj;p1HHF&WMwOx>TAjjkE3^K!eE&%cv8l$MzwPz&{2JtF0rY4tJ9``BZ#w14C` zzqcdnZAi{8mxf|`0d)TZSgrz_3QGxR6khA>PoU3Up%)>_>({Rrhl+F+Hm4i>{6?#t zEZ$W{zx!MI@NH{b8^I(2lOZN4ALS*C8)9VC?6v@{Jqxz}q*0@-lu?InqKJ8}hf(-G z+}qoW+Kf6j0lfKU%0&JJ43x+D4isqm({zvTIvifW68&2*B;wQ85w}O zGwIR4zHS5Eu6gGMBn{kI*|R1h!Kgx?Yo(2PTHKa5wz{__s=t{wA!DgP`e@iMa;yNC zFx#4{yXp0z88C3b;5{bAd@Ti7tR<;nj2@GDBhJ^v_NTxo3hS?X-%T8}P5Qswg@JZM?APi`xUg!sG^JqIy zSG*j*@w$?yd5~t}luckuVSpu``Z64!?HaLBT~bm~0hvirNeRCO+B)x__|lqcZ*PA; zzR^h{#0Ts)081r;Nn1a;oAGWLYr_AKTu>=5d?}S1JB5N4Pb`?JO;J;|l+CO(6#Ek5KadmmVIvoo;WZTUcn_R(JpMRNy~-Z0}g~ zaC2ek%je0T+qM%dQZp#w{wQMm;`jrT~r>UR_k8K$!_)PlgD)&UV@)z%BJ?MetlF#^SqU6Dn9sI?#JU zcb=Y?Vh2D4ror`xzDQQlUTTGl0q^{KQNS0^;bsbS9OxrXHe65&)s3WoV5mSC>q$I6 zW+_U5r4a=Y`Xcs`doDHvl*STv3UsxQ=$b{06NX|2Jdl71qXRmRKe2A>bw@pNpuA5< zXl`WT0e8+Qr!sF;;==I<`hoPugp1y%hMq^v4gvS;!(B{oG`b5D;5JW2o z1gVNRHW3CvW(;5;)^o83Fc2@86BdMvR?vW+YYQ797W&H(m?TxOfv*ZbHW7t^=)gd< z=VC8lATMAb4j&VFdqUnq(Lu z8b+Ylkre^MV;dW^>vrgI4h-Ws1?0f?yN3&g*cRw+jSI~bbyAdonHwd*F~`I6+s6YL zEI`3i5|2$tK~2P9_i_EAWx+Uhf&rK|Q_O>ijkVxtv*GNt9fOE$4?qzVCC=HgK$-r? z!XU8y{#-+Vanm@{OtA-p5Q0Il?c4#oOo0svGTo&S7@Yn);3yi2&0&eqLkGaW6h>g1 z!y*Tb>F)p|P|jgx!U*gz0`?ph3mw>G2eiKtWDe^Kj8F;^veS=)bR(b+XG98W{*eB1 z#sCz95GKas2vMyl(AuXUW_H|hP&wElI}Nn$?{LwPNRYu3#t?oSR0Lyq4Kh3i7_Jdu zefl2<)xj8|K!%?YqI}l~AOmH}aZnD70Vab)gs2?M6yBhaD72T9ufQ(9f?ZNZ9|t`J zg>DDE${#R99|%AR6G0+e)Di|D1OuSF%)SNydz>+v!_t8@2m?jJq`l0}0DItoF#w1% zFa+Q%G+?e7z>+dBTbqCcBMX24GwnRs#7Gt(fKlgf0wX+_!!n0qT)>*#0SGV*9~i*| zAiywyr_#_tkpu`Z4B$B{lt43w<*opF;yBC`k((*DsX#}wQ2-r{3D2*w33SC0GSC$Z z<<8+$K<{qk0X?k*cju0t3<$CY13_!1uqOjS3Sl5_xPFZdJ^ z5PO=PJB5-U$PokK#%|s zRuDuF2GWh~*T@b7fqe)<2mon=ftZ0H+u>&J_x&16L8fgXuqPq0b2x1nfeR#fH}_z? zt%V-xcZV%trc8`NZKfUq1R>bee8tWzdB+YPAc(-6=(RY}nEN;2?`WJ z(5rtu*h#*5Bhuzz>geb?T^nf1x=^r-q^O>^}J>PChYrrR(zy(-jD508UC;Z^) z=C=e+0*NYT`5cZ$E9{UciFG3xL&<7VIieoF^7Ky~PRHLJxhyT(6n4 zc?rj_Pz5oeZ38M#1gNSd@`%t}>_)iQZk0H|S_TdzcE@(A?0Km$jvRR;ewJ`W?y&&f+tw$OC||dQiQfr}G&= zi;=e41H#5b^?C#thB5%uOOj9#5Y`i_mleQDsssVXv2hdQqlZDQJJsbws1_A~7WTAY zf8ROcfd2Mzf&S(Jc0O?8^`9h^*<;>mJ9&@+RZjr85d)5;5dm^9AczAL9qOy=F!Uvi zcYuELP@&HN>Ij&M{gsHs07+WufDVxX8A=Gi4%67ZfexcVsR5TW!U9dq^L+aca7YC- z24MKcAyC7@uAaBD=j;^F;Q-F(URO$5Zvr@hQ8s{DgBIvc7mU#o;wE!)U|t1?bWkEV zo+W5OP$D`2z>5a}l!Jp*l|}^s1jR-GT4Vscg!(0ht#sQgM0H%d8!}3ozE|j^1=Z1M0 zWZtF)nRWkRW&kZ73uETKVNQlIQ-aK1H_Y3lAafQrh|GJ#tO6Q$8xCZa{fC(lWWJ)g zYzJ&(3D|}jx-1}vdFx$}nE`MeDN2Cq4W>Y#lmqGst{c`VaHW!x4pe;58T}gIKGfv? z5fP%h;i7U6;D3Qr<_y@LjR8b`bb|_}BYIk>0Kfzfv%V4d%-{c4IJCVb;CNvBlw=6h z(WvKQh32rvfI$xz1Eg94gD?eJavle%0S*nLg2^`p5Eh{J{zC=zB7_O6_74KM^dL-u z@%}>v1BEaVq-x(Fw1Vmq0u?WSJNge5Tv8H7!+38HTER()FdWAF4;7S`5R?~T>c)AZ z!KsrC0@}t~4lw~NJlXC;hewPbqzWnCP%%L&JB+GyLq!IuFzW)f0t}%?1)4Tg<<8?} z&*6q|hTR#Qxf7xJ2`n05<68&Ds&q325Iy$LScN*f7+4&Op@N+O)x$L`D6Xm)2)lNp zgfr-4!C(MD%Lo{(FbMktge|#=Au(_{CH4@61?mYHY#b;pHcZ;H8(33N+F+QpKw$xc ztp;JmVbU_+NJ|eI0R@CL#l8-<1yC+TFe1e6->`zVZG_1cCx0V>B-CE^u$VFh5|%0&t@g8n~La7$oa5#)uYT`+dqKoQnqnoa&g1##D5xF$E^u7g%6 zK>(GAmcEv(gcYhKBMmjJUXKq}xLcK~e>Shw%-QiJ)|hz!gi zBtQlsbPZ6b!iSj=R<}+7CU46|*K6u*2NOe8EL4`6$AB!MdNcQJWkJtvgw-ROz_7E= zz#rL5!ZL#`s7@6$f@kk*1?j>(&t4c59H?bIFe(~TClbL#=)VSLr%Wn9EkhBQR1B9!%VIp^fUIJ9N@okjo>%Tf-xy&8h%b1~o zimWw*VyglZc^(|iEx^^;8{uUggJ2?)gX!fMC^BMa@#SXjFM>|#{TOsrTt8ZlDtP&c z4={;=56A+UcLi!Uod7A@Coo(=sAxvO27wT=2IX6lH(++zPJ)^(B?*9ij&C`m0fU8V z>@N>(|1^N!Rs(F$1}+BJ$N+^U8GG6{euHK=2gS;z28<(ylv@29)VHw^szM_d)R1|N zC=*{nv5aIu0nnD={sJE(5r}UxLW^!z>Trq?^FD)v_`d}^WngZah$3KBChb;5i*A3} zvAa50(2pg0ZVyBxtX58G<-f!ZAng`Ii~jSf!#+mTpx)a9dKWAOQzB6ov_jR4kZmVR zp-0rOMRAs*Y-0}u6IZ(B2gHw8=R}xAyn;S_JedFH5?=!H+>%k63 zS>Qod^6#jATZsehR0!sCkfw$xdTH@|Oz$Nn|J%%a!Mb`%5LBB|%L%b1Tf1U>}_XxX?3nn087PlPC>g6FIf zl)#<@?BtC(`4WI|mU5s=12qg#u|W-k%!%nVhvo0nc~}JM30sKT=a{9O?RK!Lv|y!#bdD61SrL4JGJ|?+43P%_L-Dm-76$PWgy88RhEfH}WGI)XHKF2^ z+y%vv8KVYd5KFE=SvdE~^fLr>s{kvC5mg0fr+)`<1E4kd5fTuBBw&ts^$`l~Z@YpM zehgInMid~G>;ot|JNN=f1KUt=O}G#3w-xpRfgFO~H`2=w?{Tm?xMB(5uz!TA0c`=w z?|KM)m{k&Ln8uNq7%_0z+F&!-Og_|-Y+*T2kpZ(gfCF}CR1h98{vWfgYdbT8iUk}- zLK{1cF+uMFOAv7SurDbBp(iS0#K4sZa0dmfl~78aLG_)nDS*MmfpaOg@dotI#cf~@K3+3tK>%N)oNxk}y@Uv0$O7QNq6vWp)@m|=F=vDON!iV9 zATzfQDU7-1d>R!Hop>2#VO^*daBwYPUj+KOn7k~%OKqq>s7isgmU)C2#0VW=13vZh z0Fb}tnAHe)0k8km|Y&){Fn1z*#GjKYvJH-4aoa{13NLb;iq&y zJq3I+)zugH3I|}d0bb|AM;qVG{`snd|E});o3y%x1@^yhjc{uOFqUsU0Wia@5pInD zM#HTqK+SL)4!1_Q4Tt~s^7^(0yG=DhnVX6Q(soS4n_{=5mBNL8g>T;$|n@NGF6MtzR@IHnzxb z6bG(7W`Y;VbT173x_$TH$;nB^3I(e{ZOX{q>)V9^rD(thVxX7*vh75Mp@G4dIzd4} z&I^+;KuE6NA4Y8|4mW|bp8dw9DKJLJ3_r2k(){LmvCQ%F(>7aFG1qnAG|Y2*jIgM3z&~W#JdFZrhf~QiFm*B zV~3i$I(@IJ)j_5LL-HR}8%w;M%IR5IDg*=sZc`K#6veG0$LzqlD(JQSfLIc@)#t=V z61S_XtI*ej7Wih=eN{w`x!9c?5q|!+FgD1H3j6z52TfnYNXkohJ%HyB`1<`7;P)j8 zep>YxW1EU(rJ-Dpgjin{7R79v`=$c+;n9)iY#0@4tO8^g(bm>h!|PS+vSdt5j7GN& zPZ}l`mgW^?{@NA&r(42>Wz6keT(}?IkGk>^F`e*h@Yrir4Sqlg@sPkO3cg_!{YB`` zM(?Y2vg?dUsbZrDM?}@WxClLA2VQ;&hO=!eE1!x8R1_h*tiVmeAWm1xSMhw;45}{9 z&Sjp#6j$VM?RGPo7#x{vYiolZLf5yq1&JKmrlzISFoaPrd1QePyD0{`vr$L@aH-{JwzYLZd^tDo3%wlsTb#tQzQ9r_!Y z>pHqoB(nE?4cq-JPxUq2)@+&Y=+BRE9owg@l}4P9FKX-I+{cS1v)={Z#d; z#+G?;&b6E|mo2*aQAH!epH4!RxL}sp&s4I@*}U%t8~0KN5#tA3)D!*3WWN!;HC|rb z#nMc^s;W8vUH9F0XhXXA!fv*1j`*9n}qK;$H#&mvBoB$hx-{n;SVnr-wO}y zPz!#-Ovc@|M5x;=Lfu@lM)lT_ene4#0w*sve2_NJ)L5!t<}bN?BP$b$_;%&ZCs2Q6@zc&v#F=@5e+SL#2UA8qIg^S`IO=QNUwBEOQ{qgl~*85MOgQ&HPcR^YAR*D z%3f175l0ScSd(Rxra%VCr$l=f%MDuch~|-LgCbdWj-QVYLWB)8C$^`H`AsPI_IcZ9 zhLZxCFAH8eMdp__(iQvXdHc=rdL*nD`@9M#B5FGBPXp18Y(6Oqbu~ zFzc1upi2D|%b_PDx!|^vb%xK1>Gz+bVdGz3AV-HSOtQWRwR}tdyh@(AC++i6?&p(+ zV(Y_<H_cEcf!vV()x;Cuzgw-tgK^nfUvA zw)7F|gst`-Hduz=iUmoMiT4v3T&>E+?3#udBWxCtQ&WYP^&G4jgrAiCt>HW#K=rNg;+msH704Q+Z(;?^zAS4 z{dQ)o^P?Cli<$9C1WO!rL!-Qi1(>?*50~%RPsYN`YwDQ3W!ahIGCZi;DL=EO;#T{e>Sc@V z@^TEXef;~PLLpDYw9%Wz%?;CG?FZj|hMUu-QRuAGS}?35OGC!Y2R^vI!WXxyrsg`* z#~t<|vym;Tp&APLxVhoo)=95IwHv1Tg~f_T;>lmD-%&JQs#UbAey2S(&7&Rf7r5KA zPuNY0YasT!jOf7?Znd0o+bI0%E+b-*1~-yZ?N75i71&+y=O2HD1RD@pZ%Jq+FY+Mm zzSrV!vcP2eDr3v==7nn^O4bD*abd$;XWu7s{k*^EE6n^WH56X241BP;knxKr37@T& z*JxVtdX_&f?#(~R3EjGT_Tzz=N^8V)J1L(G>brvTN^DQ>;Ph?ZQC&pqw@ZiJtWAARoGgO2>>M~|Jx>W>m_t4iy--;|b^LFA^pOI1e^Yw1=c z(-fF(^D?Sdm=Mh)&sUF&4N0D+Zm5Y8p5>hOAlPq)M+x0ouF#TQoV)@i_?zFdyaz#s zK-aibkXlYbp$eeJHop6>eu&!1%-Pw>*1`!o$(CupbQv$p-1Zz>eV(0NRgNyErTen+=3Fm~DRa_2dxy4DNTCy%mcted|&s9Nj4 z5+Hl?CWXp{n(+@DbFisgQ-PiHxcXxqVX6*8q5vELT4z(m5hnkRgZSDON~Mio*y=}J(O=egI^`MTorQDct&(2ZCh5r~ zs@vaD|Bf^|`gQ89VU_7#iNd+*B7H^Y`)qT#ccNiQhs=mCUdrGn5e;zfH$CV5OGt@S z{7&8=vLQs-nnAjA??trOA)^qU1TWjb`-ix%xQ;n>9ye#B#{@+iHa#``_Dor&hYkiVfbT33NBL&CgN2-XNRK7zyYT@DF6QrPr4D#=`N<%BGs1p5( z-els%6tin5ora30NZAXab$?m1WU}^|ahyXYAdRC5okVqOvZQiMVK!p?HU4CraKtF& zqG{y3D&GHZ6P?kT(fi7KfvqkQnLEMDmG)@x(JVi=j%GA5jci>nG0G20incLm!l^O# zr@y_e`$j}J7$_#)PLe69bWzbMr)Gpof}Q^rX#h9g*kpeF_rBW(I?*9g;=A$#O0#c+ zPc0vf98@q;4P9-~zhrmAT*IjEb6g}i>M?ZvJn4JSP%&+R^DlXXO4F>gQ|MOw@XM|m zHBsxaCaiX8JHEGEncSBp@h6AXuYJuDYFg4;kc>ak=9jY>%97>8{~k=VkIf_05fYI~ z5I8XUz5!{${>X_^e8CMT$#u8Tddq~0iK z6yvsj!TW|Y+hdiITp*xSiy!vR8S(>iT${wBe70>PL(DRL|AKUs_G?W_B?X?-1|fs6 z8se*<;(Q;k;RUic5x=y#sUK(_m=4!1Qods5 zhzXRVU!6tYDwE1Y1b!_v3b&#XK1^=;Nk}j2YO>_FzECIc=6)Y54|8*THt*%4gyoh4 zyENMJ-6f^7u6qElmANZQH? z;mtzt!s=e69@L-DB{v+OuZkxbwsD~&iX{lAgoV{{c`c|b5>)2e5&iPH)m#Zm7^lH(NqeJ1K{OopBQ@-x=h|2&vZ*9m+KIB9q^w5#ck3M+1Af;@9vuqN`)Qg|fh zE7s$9zX6p~jg92a_kM~dCz54j1QInkSQLE>+N~b+y#4)8?N%QhEVHZZGFN$ueT^%1 zQZrQhn;x;7MM_7s7D1C}dZN}E?y(&|^&qx;A)-9#c@oL@SnX!d@vl7!sq}N(B-CTR zs_Vb&^*6LO_~Q>44_`(4u*=DmhBExj22gnHv5c(~EXeKu|sOqBkf- zKhFDYq$+*oJqethzQ0mja6W0Q^2{nzLoc74bL-eRI4KM|ic91&O6T(92Na1;#dC+h zjm`<0404=bRPU2d;vWuq=s&lG=1LMrKbH~iYaxw&Uv_2xtvxSs#^PM#bCoxAuJxXt zsT`S+VqPPHs%DWH7S3InB@f?6I2d!7;9Qu?yw)UoHFVbCTj;I5g>u4y(-7umvMA?p zU)YnRF9f4*&QgLlkM)B%bGN})m)YOvZgg6P{TddcIZ}tB;#c&+pGDA&DIamnTd%Pv z^M29K2w}8z*F}0|TaZ0D&S>eai?lJRA%0f*EH2O^3#pVAS3g34;y!{Z@2u89cx!3+ z-B%{PxWsML_*^m4sFtKrIXMo@zR|6vRSfVCmfv-v-?gC7sjVY&bE23H{a&qL-!wUa zP&I3dd2CyiHvgSubIE=)^gF-jcYrkHK4F}XFNDvbu-nC$=9u|FC@+9?-&KYtqETJG znnGxFrFWo1+S8wbI&CvtFegOnrQIPmo%+$GP;#|NW8RNM{r1E>rxvT-&{l781YBwO zZW^P<((2|`I0RYBD~Y*WsGn5Y4(~8>{-D(EdO+^&B+gR%yq9)&!kg}Wa(0QMWxQzj z2f36xd6}=-7AFf@BPx%#qs=DA9|t0~b@1h8mKYp6u!jr^^Qy8rj>o1lcDl;gHmn{H|@#j#|8y?RKf%5U#d@0n^e9KaN%2x znpu2k6N)*(e|1ikxyZok-I;hUrq=g(H+CtC=vT_`H;mXD-%oduqi6WFo$IsvQ%ah# z>|!gHf?EO_aGGBOKVlr{R3B%RYeOjN-zL<3GC`7?iF&?3B5*RGf)p!-o37_oGe)D* zFNwAu?D5wWjh5U)0=G#qiH+4K|L57=x=i~78Q&h|Cpr@e2~SkQEllelB9oDq(ap`h z2^S@okwn|7q&0IiXiv`Xs`Dr64;^*fO%0utoJ1#ge@k>~{kGslmV4mY(B(`G79OMh zWEe`MQm?Sw)q#B}e$^&{Zor;P=>zs(9On8GF0Fem)pVI#Ya5y8Rzl=^&Na~&+(xK> zi;xt=?3CK)7lnR#8;4+k3 zC`SwlOvFxi`4RdIWnV8i*UvD>7YmDvM6Mw1u!-wrXXJV_QiRURJK$B`k>i&o^CGn& zu&fo=hTE3zm8z@j#`pWH=hhfK=K-zUGGlrx?FUYBS*~)u*OM9x z9TqJnM7#yXpL?yx_K3cxEdCg^;U2g98STcSlZ5KkV&fFx@=|07t9c+*I1fj+t0VGf z7(;8*Ve9W4rq)Fh-n*@9@lq|0l^^MtooYuNg&%*>+AJ>%HruQ$dn!<*#j`R?CC~bT z?0NAoKMnrOmXpKOT1zuMU7Oc5Ma*k@_Qk)V7}Zf@eyV=CFXlRC)oMGfEad7H9l8FH zkbhK7XYDs;FKtQk{@vHYg7lW3cQxEp{HuzQdyA--hZPL|jBDOc9}^uoc#4sp5RF{U z*K~-k`R1XCUE9!XD`v02<_ML}9ZEr|0y$G|*$`U6$7>^|VU}bc*0KLuB6%U|l?5JF zSt4!dzsHwyh|nODfpZNXYJw9))XB$&e>8wegCvOfIKOd1J|7$D(NmOw`;5V2==hk8 z_7Wk7eD5T@2;NEDgZ?X1rGhoN;Td$WvEz2bWt0*}$CtyZe-wtOdnQl=Uudv`JfZNmX*%OVl-5c&^xZ{bHu6s>mCa19 zyA9zcG6&yu+0@HX<@v#jkC1o2$nFLU3rf7!mH6`89wVeTiAzvI_i!EMrBxYC_Ho(I znTT@9cSIGE)oORmLO+h_=er^@4`Tm_u!hVla|b)-5=#Jg5NMLD!~H*w3G*DO0rIAolOK)+mcI+@urFKZT-beWrp38qY{^ z`#aM-#{jmSl&Xu@B z*?(_jiL9v*C5&B$>=b3ZDf=>ZS+h*`EnBt_;gvUQjNKs2SQ3SdZR~4|LAF8}d6Dch z^n3KyH?MyG!T0-_<+|p2uKS$N%-qlUoa>zXI;GG%n`+2CBzn;Y!yU}aIiuxoo-V*5 z)i{nAlo@d_2v;m_-WxV5nWbjJ5tE&TeUi=uGVivxEs5em3#i7Fz6n?lk7>$B1cEKr z5Lfj=fi;ukbEHwwP->E>MKl>!@ikXk-m?kQkoV5qGopN=UKQn8EpIumzQdh;k0E4a zy?O5TlFky&Q_kKf%ga^pf?@j&-zd2 zQSlW{KIBs)TJbvZy{qv&6)Gu=!?55hJTN}h+ZdcNCd;Pv0~kTO`WSsC+XwlTCG(m5 zuDU;D@6a(G>O-0CH+bxdO7`oTSnwSuP{wXA%yx5g#;b6#I!V~ z_QYhzx|~3)LK1A8(zgP4C3U!4Q!2tMG&!~Z-DLI4?2n1Ba?FW-CGbVHel${u^$m89 zu|wODLx~?V{=izvK>m(LH9CKqDqwD>V5d3~t7zbK$uRWqdv-B>_6`Dy_n&k2S4v62 zt%PT?XDXA;P+wfKvXH?>FN1Dw<)hng84FXW!L>gZ-jSu5xoe z@lT;LZ8Cvvb#7jjE^Ox|#U-003Q8wysP_DsM(wUtU$$=LYkB0?vQe;fjkj#U`L3Dg zP0jhZwfRMpJ_00ON$7q?@fb!wmwlb*te;T3CN%B~bWyPW33T@Pm{Xn&gLY&V9pM&5 zR?I%1&=zp1vO`s94ay;@>k(R{T)U$xB&`|F^lHqqK`g%p5&MSyV^g$GFLe5PMEVEQ z0b8WerxOO;$*mpO_8x?{a81GV;!-Ozo`CeY}fyuoHo zcY9p{J|@&BK!0T%d#Cc*+8F}zabnXS-?D>uzJw?dsms-EH1Bu!?294%2=m7CG^tZY z+4z+lc4pb0q31HvcHNIi~uo4(HOb29>|W-h$3!Y!M+o06@2 zUKi*Tseyd2BSOHz46NCWTf!Hj*hiCHN8g?`WRVMXx;u;T)2znn#4UkkhTnYktCq2l zD8=(FQ9s>u-8F?wB!3|_$CL!KAi~x(Yh%n*gBCQK1<=MEs!MK_NyYs=5j=}vScovc z%L2pui+W3HA|<++>BGj}4+eN|gGY@hTbC<5!>cBNL@A;3z!-ZI8FtQWDGBAV`{tF^ zXN-7S77FsB=R=y0PuWHrgBCJnkizTA&PNUNWg!*?-AX6Dq+Bzej6_*Qu2V`bC)%w_ z9LH=H%9mrm0osb+OACC{d$-&G3BzTehI-~_X~EadM*m0&6+S%W+H&a($t;04FzQht zLS9PUR?6gD>Xe9j%{7vi=e%S^q~<=_O2t^LpRKPx{ovPyH5tp5muij8@{jrW^R3lR zi*ZCsX22f=p(vk#JhIrD&z$eqp@4Sr-8h0 zl2KU9y6SrAGlo0$x#{D7qt3gJoc-!~IeCLhUTc^Q#uga+@DDDzt2{F>vBs{Vb5O>i zS9*pk1=w0gDN|jO`B`)0Cx)up60rVWM^6e^*JXJTqL@e_vN%_HPr!v6c@PRyvU)(# zE4xf!dxE?HvB&+Dmo1^7pyv($c6OMw4aFiJEQ@8zNSm&NujMUwWcEk5n}0OvGWQoe zSCTD@kM1~CnBZ2=xACqT&vtdu?@_u#IeT~t(jcJ)snLQ_J1-mDy4zMrZ9Nm$;Q|X+ z##~yS;BK%iYZzIlGIY!q8KoEbvsFW|Y-YwnIm+VdItC2<{J;M}WT)%{HG$H%1W*|| zYfvhn%o(qxWv=5F)p>S8fra)nQm`(<>&h6q$ zSL|&R*OjKV!IX_fbmzqT3vzfuATL9%1@AB2lhP;tG$S=J+sQmP2%bN{@hNGb;Pt<)hv|Nh*Kb)RF@{R z%G{_LD_5Ni^+17gORak(`GXDl!6F+poIrEBF>*(^AU z7Z>kJXHt-|skC|qV({T}u{Yf&nRE|~g453QM?(ElNU3YyhGW(_#tvHc$D&T*C-9>w zS8iQl4|SSb@7Xkjgvo_&X=@V(vbQW7>!9(GBa#uzr^87*O|dsrI~bN@K^QgtSPwA0 znp`v7E@k;Ewq<0R|h;2@31ntJop~CKW@`YVqI2jE@hi!m>Oe7~s@4DIQ zc)GcJfovh2lZ?Wdcu}W&l$eb>;F?5uD8%gFu!8#y#n^{8Yy3uF}t8FXl zQW2kfgg2%~`O`=pRJ$V2S&cuGN4ds>KE?B%Ac{N)E0h-razGZOve?}h0~B-CBp4b$L1=L@G7Hx*Kds37cO$(j5Z_78f-$}M!XoK z$+(d|Yp}>IQU8k4K4VVWLwxwUOYZPMEv`J(VfE_)es2FgVWpBX71O;X*xRG*H3yP^ z)+)flMb37S}M9pv8^$9L!|@y$1wRt}?2_p+QKnpLXS#i)n1BUX$w4=0`dPT%eF zsBkBMn;3w;j7RBf?e2aUIseDrf9_hiUe6(W8+g7j=&pR=EiIM6@4?<=VwE}|Hy|G+AGV%%RY6KWS`D35Sa0OK}Wv6?1rpt95L zCh*k2xP^z77ENaE7a?z1Pd%;hu(&U{Yu28(T*2a@?4q989%%u3m}`fERksE5`(B%9 zLzUiZUz5l+C`J(ljOk-)Iq~Sc?yhC9>(U$kYxGiE)6o$`Ubpnep3kYIt90r?8py!; zvqLanj$d`pjd`g#lAamOF_txbSgqw-XAS zr1Dmgo-E!I4*OmwwI}FBA3Zdu7@~Y%pZ}7nS&b%KT|QH$MTLAzv+3=oh4E8c+dl$U zJ^ps`&DNJi5kUi5lS?DWhJ^4`C4Xb4*qF&DlsCyP;vL8nu`pasv6cjyU9PcjO=#C! z`uU>5yw8Wlr7y47ejVu3Kuf3^OC9Y9e%V9wxAdF`)IY6bxgdOKHdOQ^rQ zo!6a1&g!WD+rY)Y&eyI22rYo)KPAEc7{~$=K1)wKXD_hm;rnqQjxi%s1@Ni@%=QMJ zM^+=C-2I+r0O8)p1#tiW`6ZQzbv_Af{3YN8n5=(fiPQdo|Kt3qks}+S`GMdf5qzoM zCgubT^8{XJkJuq02?P{&-#6l7cNb<2hPhZf*olj}yE+{IF306|zpP9HgVMj7I4-_B zZsNF*;Fk&2upcIl$_kFdkGJT4!9^bZg#V{ucN}~?3I7F-O8EgkmXaU0a6C)=WkCQ? zcmJL<9>@Rtp#Oy?Awi^*kon@~1xCF82mT}M>Znry3?m_-1s>!8eJFB( H4l literal 0 HcmV?d00001 From 8388892efe3dba250c8a2632787a5eeca9afc780 Mon Sep 17 00:00:00 2001 From: seijiro Date: Mon, 26 Jan 2026 19:01:55 +0900 Subject: [PATCH 2/2] move test case to OOXML.TestCases.Core and rename test method for clarity and remove unnecessary project reference. --- testcases/main/NPOI.TestCases.Core.csproj | 1 - testcases/{main => ooxml}/TestIssue1353.cs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) rename testcases/{main => ooxml}/TestIssue1353.cs (98%) diff --git a/testcases/main/NPOI.TestCases.Core.csproj b/testcases/main/NPOI.TestCases.Core.csproj index e7cdff63f..e42390dcc 100644 --- a/testcases/main/NPOI.TestCases.Core.csproj +++ b/testcases/main/NPOI.TestCases.Core.csproj @@ -27,7 +27,6 @@ - diff --git a/testcases/main/TestIssue1353.cs b/testcases/ooxml/TestIssue1353.cs similarity index 98% rename from testcases/main/TestIssue1353.cs rename to testcases/ooxml/TestIssue1353.cs index 559ff6f0a..00d07d261 100644 --- a/testcases/main/TestIssue1353.cs +++ b/testcases/ooxml/TestIssue1353.cs @@ -13,7 +13,7 @@ public class TestIssue1353 { [Test] - public void TestOutputHasNorotWithShapeAttribute() + public void TestOutputHasNoRotWithShapeAttribute() { var samples = POIDataSamples.GetDocumentInstance(); string inputPath = samples.GetFileInfo("issue1353from.docx").FullName;