From 22b24cea7d30366817e366d5b3510b0e22294e42 Mon Sep 17 00:00:00 2001 From: manomurugan Date: Tue, 2 Dec 2025 10:18:03 +0530 Subject: [PATCH 01/12] 974850: Add documentation for custom data API --- .../images/track-changes-customData.png | Bin 0 -> 45944 bytes .../Word-Processor/angular/track-changes.md | 46 ++++++++++++++++++ .../images/track-changes-customData.png | Bin 0 -> 45944 bytes .../asp-net-core/track-changes.md | 23 +++++++++ .../images/track-changes-customData.png | Bin 0 -> 45944 bytes .../asp-net-mvc/track-changes.md | 23 +++++++++ .../images/track-changes-customData.png | Bin 0 -> 45944 bytes .../Word-Processor/blazor/track-changes.md | 26 ++++++++++ .../images/track-changes-customData.png | Bin 0 -> 45944 bytes .../javascript-es5/track-changes.md | 29 +++++++++++ .../images/track-changes-customData.png | Bin 0 -> 45944 bytes .../javascript-es6/track-changes.md | 27 ++++++++++ .../react/images/track-changes-customData.png | Bin 0 -> 45944 bytes .../vue/images/track-changes-customData.png | Bin 0 -> 45944 bytes .../Word/Word-Processor/vue/track-changes.md | 41 ++++++++++++++++ .../document-editor.cs | 5 ++ .../track-changes-revisionSettings/razor | 4 ++ .../track-changes-revisionSettings/tagHelper | 4 ++ .../document-editor.cs | 5 ++ .../track-changes-revisionSettings/razor | 4 ++ .../track-changes-revisionSettings/tagHelper | 16 ++++++ 21 files changed, 253 insertions(+) create mode 100644 Document-Processing/Word/Word-Processor/angular/images/track-changes-customData.png create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/images/track-changes-customData.png create mode 100644 Document-Processing/Word/Word-Processor/asp-net-mvc/images/track-changes-customData.png create mode 100644 Document-Processing/Word/Word-Processor/blazor/images/track-changes-customData.png create mode 100644 Document-Processing/Word/Word-Processor/javascript-es5/images/track-changes-customData.png create mode 100644 Document-Processing/Word/Word-Processor/javascript-es6/images/track-changes-customData.png create mode 100644 Document-Processing/Word/Word-Processor/react/images/track-changes-customData.png create mode 100644 Document-Processing/Word/Word-Processor/vue/images/track-changes-customData.png create mode 100644 Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/document-editor.cs create mode 100644 Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/razor create mode 100644 Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/tagHelper create mode 100644 Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/document-editor.cs create mode 100644 Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/razor create mode 100644 Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/tagHelper diff --git a/Document-Processing/Word/Word-Processor/angular/images/track-changes-customData.png b/Document-Processing/Word/Word-Processor/angular/images/track-changes-customData.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1fdff502faedc25497e83381a39247cbb990dc GIT binary patch literal 45944 zcmb6A1yEbj8b6BS?ouf3R@@;0io3T3iaQi{cPmib9g4NZ-QB$!&X#~(Sn0R5P*Y&H$X#y-Qh-2&wzcw zyJ^Ww!BtOF9K!w}Sxc%)!ok%gU_wlhVgJ#c74+QT;BW^1UhpGM-z?zZ8n6{*B;R=( zoveC!Q~WNvyF3@+Yf$Z)NVcEox{ItkEQ(5}(o%2*As$8ujj7V+@qbjnW!Pj2heOAc zLd~)I;@7gvv|L|l^kGSKw=-z6nth_au5WlacLt25+X3?Q^xA7FpTyU1w$H*bh%U3u zF0)-CPu=&4l`%A2rK}!_!obAjE|DohnJ)j^mhEYPh9rgMe|;bvFU?POBdxl$DNX+= z%2ba@=}@Ei-|NTHG4oWP2%?eV;^Ja=dYSoEL9ox-XZLTv{{B2oEtHP?H&8he<)?p* zfbZzEk7WbDisb%2*_iS{a8iNQuivJ zs(T-6fF@0;&iCe%=lL3TmR4T3<)e@GN+S&{dl>SKh~(Z(z(>*2w{#%_l3u!rIQ zR@>HAt<0OnkfcDtUkW;u9QiSa`0>-fVfwKserlmf(j^rZ6@}#IQU8qRxdi! zwDN;spuv2=kZmFTs_{Q|sQDnU&dMy4Ei^Y^KM{w;PzO(15PAS^f2FwNM;ULl{+D?C z1^nEyxK+zWJJff;F%WsSvkIa4&s@61vXIy7)5#;$+hgA~z*i?t!!L^`(B~51z(7n1hhitcz4!p`A`K>c$sq2Wh>zn&c z7o05}$BzuJe4B#=uT1go+Cq2n0Y&^j(x@mcQu02r|CjZ}nOE-c^-32IayQ~_Wlm@d zVlYv(s4?EXPS`ic()SiT@3w!Hmfq{JVoqj*H9+bv`fi40yZyMjWA-M~=$&q`DTVBC zQfTn^+G4?Fp+);83+*0IS>3<@wxnWp2z)C>$;D^EGQEcBB11`^m*@(ozZ~K}C1$}* zfD>U9_)>Lcv)mlL|Dg&0M`a=J!uXGJK1P1b=`FF0DYH>KH2#;3G*k&IQj{@^t*z(;?<)5z~7_-&(^o_>SyHF3MUtlRgG$X=ywXn|z_ojoHD$0X79SHJtbF z-+v(&imx*tA;3b>RO)Jen#(Lx24x$aK@_=y?pu_9u#Jl7>^NWUn!fsydJ@3f7bo%M z>Y|<>ofbaC6*>MCYK#_Q`}q4EyfW6Bp~`2KwBJShgptrz%X`$m6QT1Wj64ggtYF64 z$;obuc?lCETI3Hs9@#H&MX0ZZ3oNM&p8qYwNjP6x33-&fF4)Tu_(kDKkSfrOOYOHz zb-UTC_vzlMAyzcBNLorC_4R!o56gWvBS>tVoaB`hxk(3`9hx1MhY8hzeLvn;I8*F5 z#XU1%h0GJ|Z$g!8Z8}V@h)t`XJmJ?Na5xV$ zt1D+eQrePzq|m}Zu?r=)glF-R^#-2CAK>{ndgPNKS(p6~D*d zaSS^7R2wZC6FdaZ(TlBY(vEW)XM5yT_I*92jQ-3_7qy$|uU7jF;1g&E&x3j+s|-sJ zBEC>1g&jGXx*77hAi0`E57^O!(`2dCJFbd0JFTk;Q;2Vz^-G~4gupdBH26Qb-kz=c z^%iExua*t-i+PHrZ)`$EOQzAlbqPB>75%-QMER)Uh*&it3T#tLI4o6ynIZ;1+gXPi z>}Z@)Eo}T^o}gUA^s(BN>wAUll8U8@8e1fijFinaap1`S9x7kSpNidZEAndYk#U#LP08>ywS$a;oh!Yjdo; zp2U_sZAt%SrhLO+Duwl-M_2v`Eb%2b<0g+S-;=cJz0Qq3R2wL=rHR_Cl(W;y7-xR3 zsu}_VeSLk85_sp(RJ7Qi)su&~1}g9NoX<|+@Z~qHjJ{~m(1+G*qNK=WeR*xAnT*Qe z!J5u~cM$D&Vpwb=`*k)(?2SWur6-yyI&XJ>uRCS4_{va1P_mU}6hrwa!wiADW1SBq znkbqq)};wWB(l)MG88KA2>N-Z(K2A^)gU<<-epH&WU!6*jVDXP&P++x-a0pEZEm1| zT6^IE`h}kAD!mtV=+qiM3E@$So+^6>Nw@ISw1-?XcJ%iKMMkF{*)K z)Nky`nTJR-(4q|E_2XG~m2o931lEM6gmQ1sa`_?el%!IEU2I_dKet6dNHCE4`2Z(f z{D#F#BBRiAGpq9{#%C@a$I`w@`S{Niu%$lBM3(V4agF!_7M1`uHg=_6!(Q#S1kCUM z$Y)Z|Um^Kq#5zQwfZ&pl&M9l%CaL z74zcq(SwH!0z%}-p4C_h=GDW{dCbG&jN8M8KDKMiQl;*v22cuV{8S_fA;jzT96Q!k z7WJzu&~i-MWe~lA@VmMSfd*05#C-XQY+Qv_eb@2UxU+BBiqViSxD)%R{zs@0Uum?BpV6kr& zCVJE}L$A9xRMy-U*~i0UPswB=IXAk_b4MCi0w8y1BR-DWgscO-!YJ=GtB=i=Z)p)# z)3svWv3b0`0sV>~gTpn@*(AcaqC-gOtI$bB_ziVElMiFcE1UpKd5tSl6G$$I*Fy5WaV=alWY|og|z5>!L`VSC@72o1v%;un;H0~ zaWubtZ5Svj23hoHF-gamoGL4R6cwv|%XX0*lWvH^K`FS}JhWKAvbASS;_@&FH>-IN z`X7==(v(Djn$j}z{ZoU0B-RU|4L;|)4J;`bGw)e;w^(9FYmqzm4Z)e&pwWS#pwuC9 zvS^<`r!vCb1L-(;EsRN=gtc&LPMoEHO;jXp-zT9$h^6c(u2lXpDgz_mOesz2Tl5HW zkA)_IzOSh54--{}kh5W&KzHq!n<<(wR7Z9AKDf*>>Rcj(2pLk05tI>P20tPWj+lPB zl<{#mmWZ4zp;RXg?R>qgYv)L+sN-6}XUeSSOzw`+2GS~!#W%*b7y(P< zL`MR4q_V5e0?fKSw0-%4PlZIYJ=0a^>j>fSY*|~o0KmiaJOSikor*l0Cfl6HJY?*r z8Qydsqx7dlkJ|!yGzo)mFU!Zw%X_kL7!hwEW>ssPlGYi8#pI&xh4h~^fWu~67O|ml zt>MB@LLdJtLdjQZ{B>VrJk(3tZgLF$pUO4UPhIfZ{aRqI`BtuoC?Ac0lX^ykB!8x3 zT{MNa$oUC1yW7Xmz>=U^B+sh{Y%ra}7itDVD#dA6>oJPwonryA53BN%e%!1(i6A=m z>M(h{v*l6U^eT2#y}UjZGkD4qhJHNuIt(0|WufKPC^<@j_$A3(e;+Fk(&(LW;@kwR zv+oRK=)KzuKE^V*xB#l-PZJXnWBPVbEPVvMOd)cFyiGcBU6|jUsYvbR$HKsT8_9?% z{&CdHiG5REf_2kRf^!p9f@SB?iTLVfW}o+af3KqVb(yMMo=&d^tPLirS1IR_!d`4A ze*8mjTq2Edd%bzH|F$eit}dMv^wdz5dkN6HlPDLQ`24{j=xxRj?xMR7< zA!=%T#9naWPA8hj71qJ7qiljov-9mHU!%yMfTooJ3 zwLwEz64sZ8;v|%>eo6~^I3&v92@rXpN6b@!+6X|z4FGh+WbZvcnG!XavE?M_op_SWT zE%?rm&?5XWN)x#?pP`&L>ds%Rf0vJe^4R{xLno$ZeZQ82DeE#H?Hs_T@SXAE6TQK6 z2%hzCHbL>My)y}>wkHWrRmqeJiKLOCa@3@==%5sVzg}o+<2SZVGz*kg}ef4)u;Gzp}e$Q#%79m`SOhuMGdQr zyBJatuSyvagisWbAAFL7qu0wA%kWGU)yn)t5LQy@{v2;+Cg&PRYCMJvfr-?Vl0190 zLv#HT-kIkDdNNHcB@<^LWx-iYXt?3;7}|-&e(@XfL=c3ABE;s>DLTHrk4r)(t^V3F z0vn4qN$Yc>tYf#LW)Y2zrLWJwUAN%37sQWbk$u?$cHRd?QD_lTh}L4k4$DL&ByLjz z^BX=?u&ATP@vZX3a*uF6P39Zc3LFgp)8s-OZRGFF)IDVt$Xmp~!dh1>wl~;HuFr2% z0#?w-Qs0xkOC@_rM8HTj)p$o`vUAV9%^X3hX`W2T&%!Q1s%3?DO|E0UN1FN}J9X!@ z$2eZgBpgYWn2DG%G?A6NbfVjGb>((|^X0KpwPc~NM20}_S0n4x5l*cV($LE@1akC7 z9gmZjlovSIif%fbfU9X}nM_T@!ljM87hLd59pkKii*mx2Ct7&Cjf$@glM50-d zbx|w{={k4ABK#lxh9LLWL;lc6Gx5t11FN`}Q6YDlzv-h!p?V?NZ}1w`5*DFZPFez! zX4f{cNdu}%V64=Jp67)B>b84*g%oiQxZ`$NK-&RSnym0y?}hUTsM}jtF`< zsrSxbvZ(@${$fB z{#GgEnCd0-Z=Pr=CynR{6CP{8WGY(#c>Pm4T&gIffvUIJAtpAqZ7*DnM0$6@PoMKAkSP~mAdJ41iu*hYZzXETd%Ls_Kom{J>4H+^a8Ezq)M?yARrZ{ z(wSuGriW;aaL=U@k(g(qD6xj)wN}TP16uQsTLPzcSSAQa<<_M~((r0#JmX1dd+YjK zh}$`uU<>s8`psTamPsM^vt4o`!2oxy3MMVG5-U(WDTk1Wd8j?d1ny()TA{vHHlXPDG{HH5&-gQBd$d4UoZ?+GyoO2r(TcbT#Bv zjn!b0;U?;@S1B>2!TYR23pY~#XbbC8H&T)=i-GEx5f2L=CyEDaJKQqH8z{?dV@lfo zL;3F#jW}2t3|GYzq>~FW+}@fF9m}#_0A<<#gyDrcGlbH{nJ;N9w4T9IQto19B*d>a z+Hv9?QgSksS%{>@3CWo#Muzy~y6O1-iWew8A5QB#zZ3=n{BgLzDV`J_Mg%t&;)n}g zKbOe3(QaufzmSl&j!u+qHe$MX;=WJ#fN7a}LA+Ls4gW{3!wRNL4W);%F=0r|-zCDP zhFuD2=3D&f%3jgWkcA?1=$`$S#=BqH`d>5P=5^%y_L9e{`3HJXh6&aH(A42SEq)D` z%Jx`?cb(#|ZllORlka5yS?e;&pumJ9^9->^si`{s(tldJbgV8^`2RIU{Qpv|)5Le4 z{O`pM4;gYAQ`UR$RMba2XHm+f<6vIEINLr00Be#_i+c3`#GDaAvKn$;oNu%|2NkwM z1r^Bwg0+4)6*hzz)2RZI9t##wjf9(0q;CUWpU_oOl0PRLN0X*rS^VvcC4hHU%}So! z{(Ar6CJCE==`urXTKCk$AX`@URoql8|_qLVs!)4!<-Q z-p>>ctwDT$pDb2aS|V4x4S!Ke)hcoD+Zb5laW6TK@U%bN4&gH-E`{PN6j0uZA4^GJBwnddAw>otq8pIh;7y-|DB_EnCwf#c$Ua2jc3t{7z9} zQa_q^w@1U0HX9-L*{lZKKd832fvBNF$#N0&SP%nx2(IP;@5}9c&qcy+m5gEZujcq5 z=<^KZq0RRr41_>oOyVVsF%C&I3rZA6S723O(zai3%Te_J92_3XQkg+TMLYC*Y~OT{ z-zKY-FE(|Aq*VxM^mM?_0NQ5aYNBa*2%Z*N4+TXPaT*dAkTVGXSl~uL_RQ$0wnLq1dDa8>L zZa%HGT*eW!UsGbw7xqw>(~~m$#vrCjuG`6>x*Ps0mBI6JXCiLF7PkS~qKuZxe;IzU z?m+vN%-d{3a}EXr7#LWZypF1|;$|n5CRG>#SU7t>qXTEm@ABo+Yd*@GYl9^{l(dxW zM=Y%a5G&>#OWI1YONpj994d`kq61VpP&u7rk_fc?nj2hH>F3l;WLlFr-ssdWsGiIGZ6Oa< zG%V%p5NS%md!f)4B<_~@5RR7_`KtwIfSY^j8H`SA)I!*ih>&(rWILs7-w;{5G5$uR zihHWr+So#!H_orO1~Y`{S^dMyJwpws`jZnwe~sFK9#q&1@(}paQHMIiU5D~Lj)#Nr zcY7A}<#GnH4$85Wq!NVdG6K%f6QFB zhlTQ5#Ei6jDr@>1{y>rzm9yhXP#~!{)tIDL4$zjM77-h9m6x3>6npRLLsy0fSdOCc1#_-I(S-P3Y^` z5gY9Ipk2r3kfS=vLHmdY(Lj9Q`~dqmivPRa{dXM`t7Xl6hWN#9 z-7-aWb*>4WYD>3OPo;^NEPx%^K;#E7$|zre%wD)3i&?Ltq*9M#XN!=Uw%eOH)hTxm zkK$C(jhz(iH;0X?cKU$7_po>i9F`kB+-E7{zNX6ScnMWiQ3f!ploBwrY1fSf$R5Bd(_!ZMhlc0*GX|>3^6Ru zHtSpSDeyK*|9)|Grndflk@sp)F;y}xV=3bh(a!F#wMA7OFLmQ!ysQnv)5FphAvsA& zDn>?G78+)PB3}h$pSGlK56c5u|8nO?>Inp;ugUkW=CvatZ> z7nU}~!SI9ib~rO0Xf9El6_vb6hhv$@+x4;pTxltPk{rQGvj)w+@P=uV+xuUn*nYZ~ zSB|q$so`niBjRf9 zk=*@Fl&jZ)dwvf~BkO%b#qB3 z)9#Ufu=+f@gk)H!DrgxN;-}8U{PdbXaVTe0nH^pUuvee| z{%snof6s2%921w*GW(lSR;edI5}0HG<1x&-_BEe&=(hU{Oz2cGE`g-k(yWeeeg8Nv zNXc8zUy4;r(RB&0VpsUM<|wM2x|h9w#clgy6KcdaBheC@A1<^(l2JwpU#fwDvELbY zEFOq#eoVdB(gKY@6&!LYjb?nN;``x%ngBW5hg>bP(62qPihC@+`w%4KcF2G z3IQr9#~vP@mNqqYodZ})8DOI0>At}#YirB1sex8X^pySa@BFaiR09QCQoZv>^1I?H z4H`l+(yR7LEh}`JT{&`^?U||6O-NCG*>Ks-JDE*1Q!;4VO1xzqS_@ERH|)-)1l(;1 z<7g>SjF|3Mi&cJX2x-2>3CDxUXuacrRrBeBEUyPJDh@BOY_U5`V8SbfuQL)o#g3Jn zCrM<_=xDymL|Y0Ia-5P+ViIPGs~iUA+W*TEG%;uFL9Da;FOD}2Eg2_s#Nvv6zZZ`8^XKYh&U{;2^F58YVjlFHxU{6?^LUIaEat2D zQ(5l#qy~!yxfv)a4J!@0@?lpwj{#$9c@=zWE*Rb z7=z5nH@~V&ks`^KrP5Yjk~LyKk~C-x^?t>=+HCMP>i)R~Iv$o|Wvew;0+S}LCG>UNmz<~{0O&aTi!>3QBO;vf`bRkI(E_1ClSu(te!W1ZlrB!)p74r=q%Q&;&uU!CM!Gkn? z&6N6jZRO$7Da?F)xJq`+E|0d7WXJR1m9ml-Nu-VTk}5N~JaAw)_&Xmden2+$^9~hN z)o~v`<5xdE+?7j`Kp$hml=Wx$?&~qP*RKgSe3?s1f4EZEV~x*vQ_lxM*f_}ux3hX6 zNz2e%3jMEv=&R9zI>w+I1vE+CG_%u44*T!Rik7mk!TZw|Hmbz&+gQ2JsmUBhj*hnU zSt`6PE2PuF0G#rfylIFJ-)p}1bQ7A-$G#=Af&ec8ywf-yhjE!{F);tD$(*4@>)hem zY_?m07OTLfhmkpLjCnArcw;sn$+YE5XBN@UK0XHWYaV}=?UDE^^^%&yRRBc@Ezq~) zuI^+=EK@F=w<2N+;Mq`0`}Y0o(ex%@54~hRSh=!(C)jM4{&e+g*8|JUkSF`F(UrLP z-C+f3+p`4Zr6p*;n?&dGe0{yYYQ{s`?ZNtC{cg(qUAO$wElTy);CO015eczYVu8Aj zS7XiGZ!oaEqxkxIkY#kH{2RAK!)K`UAT3T1*PaAM& zT-9qGd7T!)__>mcHY6)sqGjuA#slZ;Yd*NG=<3>E;*fKu@?M*riuqN7wnn15sVNm4 z<50vGYC!hVra-tqhjp_db?mj-uq=p)#;_0V`q#djX{ewKNr=+Ct? zMF!!6sz!WRF$1x6V6c<_oq~`;Whipw4@9M{zVRc+J_#X#=NdtIMvax2s zqZ1RQot5Fp})t7b#Z55up^ zXH3USE|CyMD!`HJuejP>06Blo`fs!KpmSo7i}Ic=`4&i6P#e-&`-L)a&yn89)7x4CF|u zs@=?#Y*4iFQKdAv{Sma;!ZM9;ms?JYg?6t!kc2gjw7*>f6Cj-i!wKZFmOiW=`d+oL zNYt!uL6YNo9j)H@YJhmcsz584DEa6IM&!HHI=dO8{D45#zy5bMlH+6vq~OFJPn4)s zT1Ocr!`t^5r|)gM$Yx|z7nzY!V>L3p3M;x`OB?ohCTuxq!F^T-vT28Iw{zxuLDa5h z@w|U=-gY*Ap=^7Yo6hbZq}`pvVlA>dz>`zYn!X3h9@kqhu4E0$CU=2ld%Y_ANzGn3TvRS zt2owzO_nadq^dYYfkDbgPto%Xkz~5DNx4i5Ho->b;U6kF9T_^6o4dpni}Q1#4$CF8 zwg&U1C9R3DjEIgGZdVr%Oi|HTzf);RvJjP&w`An!8?|@%)~cjzeU-x6ysOpv1Z~@H z-FXdXYVvbxxV?&fmC|%Bvu=`1e=KpFAo3lS=}9J!N{-FXx!NRa9Y%<3_*-EdHGNbE zrH42ZG2EJ}Fv0nO-9aM;V=gvw`)OY;W9Y$9F2It)x*PoLzq!4yVdpK({B8V@X114? z@w;I~+xcCKGq^!fsm!R?1L`I?fEnh^>@8ue{SE#CICN3;dooWf?dw-5L5Ia*m>2#$ zwC&Vtl5*PS{4EEWtrS9tzy@0QRoq#bD#BOJ>u`m{_D1OvIP}K>;B!{GJLj+-aoQR< zZ}S#Sk%fqk0*4SM3Oz!K=+zFN*@8yoyL4(zom2ayo6Bt-FBOa`?4ajE z!N4mUa$@b7Z9?N0Jg3*MX%E_R53HPOMCMpZoedLAr7N<8{6uAkBJ8V|r?1lNqKC{f zof1vVNl`>ZlDZ>jy6Q-0xw-jLQj_DWIn8)_m_uzzS=4_mlS{K^3I}32iTJ_q7xvMQpp)SNE(1;?h={B z>qBS>E8~}=6*JMw!-hFxz3uhGbCnRugy?39`{6;OO+pyB%K~E)*rp#5p0Ka_TnrO(6~eD(3G4x?+HRPqd4??T z#FnMH=^medQ1t|;(vbG@V`G59!VYIx(|WB?2)Fegeyf>GDb*Xipo6SnSyNN->h1a# z7wS5h&`|%LrJmZ}nsLX4Wf``#G8Tyh1>uz%q$Q`7%2ZKD(>~rppVe1JMq2U@2OpUd zI1mi%M}|CsGzqhtgd$=q3eQ(0KJ6gnT~lU)K|(>!6DS~G+}5|fs~R}pgR1LDE5a

DRb_+dv!qJM~ffVA38tJ4_9tDjs8SXJN6)=q4Rh>2@0 zkJUa@epFX?I=}3Iqo!vAdDqZLB*0Wmw7q?y(-KhSaC&_`{P}ixVSc55k7HSpNgL}s zJ2OG_hA$Ps^UUlpMgW%Qp-WRM)_{eycvwizhPd-CV>44ljjf4iHn=w(@0Vb(hy6K9Vn(*nwg)YW?s;X5xa{Z|{@5LzDmw9NogrowEa84=nPHY$C+4E`A z)Cl8l>rJ&O?fy8FbO10AuxMG?*ak6lPwX7~+{9p7%2UG7LxXEe%HPzukiMV%x=|Uw%w>wG%nFFHoi!_WRn-1 zlziIr@!xtwy}5-SSSX^`pYg4tqJ#eQq6oifzzCcdBwO|#dKTFQ+c{=WPdk>Wkd3S? zf{cD63nwYyV|@(xEj5xdx~5!K8u!~y=;tqDM$%dqmeBz)5zGp~y~Ad;UYd)Bh3=cJ zR5>m7=G%J?;ZpFC?>^wwR!(ByfBizq7pk~DLVzA+voJq+)I=VAJNS)-qpYMPv)U$g zc-ZO+?3yKLi6HPh4aV4uty$vC$gwQUJ%Z@_Rh}_^9RIT+OLy7g$-Le5q&aS!PWnT; z&G{y4N0bFGdG&~W?E06G8Efc=!26JsyaeKLzZCvkkdY3mzY(q^T8IMxCVVXHqX0*V zT3Che5@-T8fyFvEk`KLR7N^`WT}x&Sxd{?(tDb-vdA)`}K0@X%rdQ#0XtWDm)?9W% z_OwYVT6`s;xw#ZefDRi6yYklBU_B7?lhC>Li|Wl^r+y0X(ggUkG+3z=RkkMP>*l_< z6RZu?rj)Lz$OPE2l@7_mteZhb)$*}kvzb6?DIIpZ6`27f=UM6uUo_n?+GnbVL}~xi_$4Ky3qqNr8ET?F=nJes)oa zrmzwl_>G;72eF&Adhyq&?z-M>o=OzZ{*8spbSd=`>pROaKyrV7Hz^}y*=w?%nQEe*g^jJGu{Cogchu!% zHm_=b29ism(i4U2ZLNORq6dnHAvd4HrC~;+xVAQUc8iW}VuE`rEQlpCR1yOdj2;mh zu%A~XAe|}Vz{@Bb(b(jr)#Jxiw?_I~nk|#Zfk0L^!aLu13kK1!aB&q?cBWp{6S(%9 z8qCn+p=o?HP?7avP1`Nq+1-6Ct;o6!6%oN#Qi@?^W2eEZ#aSpfSG0f@<9s4Jod9wk z2rZ;|Y7w%`#!EYiMtygi-ZnRWMkDzh$rCSGDDo%XR#Ejs^W1=kA>LLYk7E4Xv7Q#F z01shCyR{l5#1LY6N*!AYT#T#7z z+{rPJ_EBr&d(mX$?rhI`;pCYL?>wbXkARgsA>{`T^?>>7leT^^(0+N?LyUc5^2;g% z%CkcfwhSWWnalhQDzX^W{v16A&(HWOda<*b(vso*%{H8PJAAa)XdWlNzw#Ox1@soV z-h2KW79uMp(!yY$pd&zs#WRpZUYeg4`%~S26c|((m_sceBrP|dPHS`su#iTlqVX`0 zpL3kCGu4%RMsdHHlIoUy_am}hQdB?-F}+`3?+Zm<^eF+F^vWTBo)lIu()gSU+ZDWp zW8Ezzi9hi~aopBO2n(X0JW1eF1^A*^(WnU9(UQfR4{;mFAiY`lCA3jOz9tg`LPa}gsxHDgtMUqFJ_i=(8e>DzhduPFG zCbTE+d$_Os7ZhGPR{TGME`Kr4vb?_#FixSLyp0pmqnoem?D@p;8^0PR2MHLK6Xv}( zCdOM|X33QwwhH(mQA!j^J2o@%`g)CHsV*ge3+FD-X5@pXv-$Jl8Vup7Qoo(p^vTB& zTvAlFj5OaQK3mFR4DaQi3cR!=GlhIX zZevR1I96Bkvw@ZLeNyh+&HnxU5!47~Jt)f0zgAG{KPR03@<&}`kDpjj9~qA(dpexr z^y8hC9a|b>@gtatA1ccO*7s=_0OD&-yf&PrkFc(nMgm0x)gJ2#8ifR5X>qLW+U0fa&lAgmFE2P)Y8i7jQK`@Dxhe(dr&An$1oO<`lmgBw5pkna zuZ<}!t>XVw_UCP_u@}jeBmYAZ|NjNo!@D(#g?-w+{)-z{b!%+5F|Wf#GK0k2{(_IE zaVJyG(u1(u!h*RLr2^@eR5yl%|AG4x5fI=pC+dauT;uS*IwdZdmvYUau_}~nWwt{9`INqPt%HV7M5Wl6=qek3r`h}4|AYiUZI5#4-O_CR4Z3xAYduQW9~DF zWF82ahmG2(-8ZK3oJyGpQY()h*+!$SL-@n9T!T0qm`vdNRgAPOgc!{vE1e4c-Cyvu zaefk}dLzSi4zu5hKG3`srs(5lSWLbAI1+e-DUia1h05Mr)>K74;=+SP2uegN@(Z;4 zhpw}+MwAmZA8&|oCgq|fDInpExW84_)Y0*hAK#NcyvGC1yd~rI?2Mq1b#nURE*i0) z=Py?L50UlT=Kc#rtEf5RMB0AkUEIoy%9e@24S*h-e#}8mqG-LrE&W1aYYG@Ci~ol` z^T$apO;Al}m>YPldgzF9f--<4G-(9kQlYVHWJTW;w%Y$!69M@gSR|*U=;p@f;o*^4 zCgS`D@!uH*tH|Htx*c=d1i{nUVQe!TQ( z3U2g?>jFLoh1FH1{}A$QA(D(1FES(%VYl6TjL6Z6qN4+~qk+8RP0Z?Q*fQZj9P_0; zDp8gtLqM3szq31Kl%?i`pLiMh&_b*MgUx4V>tYGD&rv;=10ydPX&C`ArPkdAB-UMd zmiq<+M|XkI9L6u`et~X6c{7~MtA8S{41&I}8oK`HG)cuzA(j5P^|+sZ=swGA?6+ia zn}sVbiH8C(Fkw^TvLrNY$odmS^6PR=d9dZrwg{&YTUhagqs6@FkjBzOxmB~69_UelNfqnqKougB){UaRll;qw`1rSI(I-Mo8n@@t0)fIiU@4ji z8H{L`Z$1kWGkx072V8;mUJt5I-F+GO&$pKw-=RFD_TnMlVR3oaM^dVL5uWTu!+*|K zlt2LqW?r(-wFI^CzHr~|do^uy7WODlAYhQi33&tam zrXodoBqt5MmDrQW@48op)q_#h;sn*oMJHuBZKN7j;UTc1<~a2R-Z6chx; zG|4qr_905mr5B8KSQiXcnh|y~h)vCaC#*>t#M9&yqlr)=;YxwP-J(?G9~V;H0#FsJ zG>^+kw>$8R!?H~?`(*dj8?ENC!CxeoAwHOyG&y>0XFP!|p7fMuGAt1lNFi?p%Hzay zyi_v>6F>KRc5Sc&1)39p_3XlC$SkVIWP%!cLQMebVThv z74)i>t-W)w59jArLFD6m-7ddyJPdt*GyL%WtL;(}q149hndQ`HY`?2_shxc_5F6{Gb>Fe)|8k%XU9O1 zU#oYQzx{e0Kg(T_7z~yH~TVjg#sNoj}XI18!s{}@$ zj%bMEl46)Xdz@HZ#^gM#NK0(113=!S3iC|ALCRkNa=c5@%WJ#9CQA|WCDDUZ#l(~N zq|c?!Vi9=g&F6;W#ri_^#Z@Hb%nheDxR=$!(c!UCZ@)44>3_If_>*Supqv~tT<2%r zD8#Wn&D`Dhbk-9g;h=0j_QGhu%>1A8WG-1R{bsS=Dkgf)o2B?MF${F_=>?*Io+G1Y79L3}p(S4kx}? zs-Uclc?YxSbi+n1B~=$RiFr%T_UH1DW0B}imm_oJS?)Tl9+r7-hK-{5kr@J2kQ&-R zA_G9MzSWUq)zbR1`ceSNoWp*hDRPJ>*7^KHGdZZ$+Z+GYi-_JL&ygTB%KG%uK-@ue zAPi;tY~(&Dma5!(FzSBT=X~oq#oBH7KqQxkuAs{Uy16zCWWveoZv`rP4Kx5--%OS0 zQSV3X8;;AG@4LK&KNtwR(C#PX^_R^0yCT|Ve@wp|Y&II6df}B2+ozbO4ie2!5y@-Y z4ZX3W-hbH9<)kuH)pSJOj#S(4jK*xUflyeLv|Rbim)0Fk*#m66Xw4shd`Ax@wv z@hpSMBbZ_+JAs-uiB460fbFaYR@iqxBH?yiaJKpK{3FuwvIf%*Ho`NT3+b67l}RkqgH(k`#*Uc{+HKr;a9NRzaUK{fzyQC4PM)8qrVzAPuzKXZ9*ySF6hi&e@OFEt9 z{d)dg#_XTgFRImH7{t7lKho=d50Gl}W!F8lA<5!MkK1MG@}&OyO`oZusZz~Iqpe4T zmde*@MoP~X$y42)?((;VFBgC4!9pnE3QhOnUD|K%`ug;`_XDqW1VS*?dm?M{ywKls zs9)y%)>nALt+qv7Ay4rs9M9V}rC&$AXq)^r}Hpip~Yo;CJ0tk{zNR%whOBg$}iWe z??N5nSC5CIMVjTdF?@jwy5Bv8JP)C?hxgIe??y8tX*JayK18*hmPxoApTG1|;sR&J zH{+?WjB^IROm4rOC0H2{gqG^62ngP%pX8ZBNQ1;)tq_BiG%ZYK*W$<5@Yj&vwwAOGbgA;@LK5W0gK^voR833gh! zJ(jpArd}PLcZ3Kjdp;R%CTy@!>PTUXd3l4m>yRLE~moB2uK$s7_ft zQ`-Zs|B;jN&H(Oe-?{O}fp{DeEa>>saDK(>>ix0zxZoK^T(@~J zbhCP&YD0ZSVg?gCk0nddB1}t|N>`2+6onOG@y1V!YHjnCNMAhroP`pP8F@>}N)s1& zp*QQ6P-znd!JccnlvDoJ&gGO@nig9W!&Oh8h{ogo{R4K#mSTHG&B)=2NQ@vEf@!A0 z0Pvbu>Z=N-DHh8r9>M@G`gP7EypDzKV}iaGUEGO3ij>0SB<~-|_aq4P4FO$z{ z6gyypaP96RR&?sqd=z`3XFoe<;8WHl`TKAws!ny-t~(oPqYTfAhp)UV3O9`(yuJ(F zxD?bF4J1*D(83`8vG)}uF~*V6m7@%1><|J@a^>H{Q+MCJ@jv+`TY2dIn76IkZ$>@Q zBHo)&&=y9`-kn0t*&TKce6|kkam2pyv?BR}NB4eaYj=Hv9ttrQcRlyIp9_Fa$WucB z35(kIqmYL${BbI^qOMvf3i8H#Ys5iYe(LLExFmlsXb3c5&y;En6eF4p&b3V}NQu&N z(Lxulk5KzUk13FK2h>~-2CasrMmcpN2G*jtQuRqz6c9xooB7YcRuRXP3fgAN4@+Jlwmm?8Bl6T6x? zPW10~i(c>3GC#z`i{qr>v<@R6*4-s(} z%`o=C&oI7vRo#9X4k+VS7>}8&_Y7{S8n#kpZNPPP2-fc$ z?tAZC?t2FY@S)pMk^Vseyp$>SULX8e?{%AD-`bQn+GuO?JDg_6q`{6Rcd!J-&RksA zQ#N*lURMhM!S`lV#*Hy?s+@mv6WrZBK+vGU>BcPtmjI0h4-nkl-GVzE zAh^3WeGk8X)lAK;TQxOb<^vSca(bV=m+ZaXXRX#mdih*AE@?m}Y`Imsudy#6liWu$ z`IRDp+T78eY>i1wtFd1%rs}x!?lT9tTz#-r#91(`+rynq&fhpTZveF^Pudx#uQx;A zbZo;#;E1Hn)m%cf+B~idMt$?FkL;#xekFJv& z1^!8%AkUR_V)X*#c>BZxh6CsR;bJY(l#jQB;2XZ!)5jS87b71PB37Hy>2BaZTAt3> zRfSz}p!aKI;1l4%sQ*3qT=jA9Y_%6FkUO7JX;mlr@j~_Sc7X3})$}nd-LWZ?a@C6q z`g8|l296H(>BExT9DKq+$KX^{ipCVNHE)7>{|6aIf18)fJ`etH0eOz52Koe=n#hxa zsE{|2A>SiJ%<;JUidLs1vCb0mB2#U)LSmcI%JWEDt8#Xi`~a`WY`1bW3e6&*7cMyOIi*kvFFQ!n`qv z%oRpIzLb`r7Dy{$$Ue76Y?^L#+ox;w-=+iGj2qtl$@p;FyAqnAuKjg)o07ONAZdCi z%~zR7fF_kFnTX8TcJg5F*Z8J~Az@aga7jG_V(8_)@^E&HPID7E+YgG{)Ad(@ZW_Hy z>9$UG<|oH(km88s?KW<{8~lmZ*Jg5BCE?8jPlIg!AihW+JAs?w(#Gxm5w8d4V60e? z&I1LoIjNb~`A`Qqzau$$P$~>8sA0m)@aK<)aL2?LkGl4%S~72T9kz4&N*1gx_*#HuJ-1MeL9+7IoCt# z54rGyqe6#JE7By?ckul#rd#gjbK8DBQfuK*DmWk5>9n;b`{)L+vxg`<-MoD(QkOpG zg_lVG+AQAcfxv&W!Sg9RrOhSdp}xUo?4f*P%8XnXUeR%p*wL=!>v{jTk{)4lxP;+p zY{JPqZnl^@<0{7UT#VA^1IBP3GyI}##ckrOB)?Ztojqq7PbgX) z3Gq)y7D*Clkt-RT-y<)6{mSZmS+h2DXU^j(0>?eT|Jhr5N6oA@Obu~pnRa?mAlEZ| zCsi0?nug4&ebpUV;|}X++pAinD!7;6M4ITh5Qq5!-I-vXY zWC8t{+^|b*0Bb!vPr)mv6Tv-IrW?ttUZfIo`+*B7!~*O0{fRO7hN0m+I2-n!Yjqe) z?1{Vq3gc{1?x}dEj;<=-{U)*TJaPVftipIeSM(mc+;6_+ZWR7Nxh7imZFfrB{^0v2 zLYSEuBvX%OV#k;Ap4;?p=D~Y;uPzBu(n{6rK1$=dd{tq!{+DUAWK`zzzL&RaNHGCJ zjk7tjyW7^c@PbpduJCSZbxJP z!}zAFDU8hY?o`_dw&v-2G~Y2eu=8@^ej$%}ZAu&w`xiw5{^1eZ+3sfKqBdCYs~BQ_=Oyl zrv*$_Cp=^?$W&}@T-&e5`-@I&w}yi6N3u5oVZ(oKepc+{7dnxl-&tNnu?2}{>3yMS zpjS<N3On={@*(t3W5B z*W8|ynL~n*=uMxex^eBG*6KyD&5~5BFOKU$voHTJn}EQ3iNAuYwY3d@=B75BTB;(9 zvBnM$z9)_vg@wfNs{~!gsHCN*Ew)rdlnEuf&gY5!{lX@!sCp%Iw=zSb{(vMh zsL$3WM5iC@N_?D9ssC*{zMXLvmCYG!pt(-A#o=Z7v>FbxYC?HopkHOnCPeUNW?P86 z!f+sg?t{0>os5Sx4Q8o}js4QlcXHPCeS^YmE|Ml|z7Hl#p&vS9JgU9Ve3~ytQm>Nb zlNy;egp#WoMeO@?oIemjK&4}*r?a&mRi>Z5}u1Cc8t%7rhyFX`N_NXm*gfO{U za{yTiBiwhSb{060d0n*fx-Ein)pkG({vk!HI(+2Zg2R)~i#!Frz?tE&7yWygJOu5xHQmpOEh3Fbkv>Iw$4qezq)3mN^MJ5&=ZXp!1 z#TVdF>i7o(@7zxSh7C;5<(upT?@&F3l} zGtK@qJLqP_qU0^Y_(P~yf>!r z@wgs(Hf{QtobGtX(sA2Y(Fl^}GIq@PtV*(c`~~|5Q$T2pO-5GM*AfL+rf&%4{;gEu zkFDlmp&PUypIyWdHAch`#HQCf58CsKq#|D4p-C+iG9ZSd`rzp~<#1(K5GY$F>9~@V{L+Gv!qHG zhfiy~7IN};X|bmGxD;EXvAml-%z08Dn1MU~85QH{DnBfNIwO@XX z-URa6X0v`}Fe)6hN7&>6Y$_JL7Qdx@Q7b4I9ZOA@JbCB^ed67$&e(}X3d zz5ePV5?Nh6-L(C?!NuDhL6<4%+*vqSZc<6q?>PK!pV4@FzHm!UBQjGN#YDHj+cGS7=G7UQf$bE1$Z($3F=D@^K`Q|! zE>dH@vCYv?SN<>SM&liiN8k+$%5CzR4~(^)d!D~vFNsqIs&Kwt1fM=0H0@PaI8SfQyH0PJZWfMo^t0&trKhubk?LZLtWMy?jcCnI7>Mzz$pKF*bT;P z@c(t@ylTEZ;l*IuvEk$Ay*S?}P;->d3in@ms%N|C6R0WX5jOgsD!g6>eyFZEy%;Iq z*&eCbNd~@lQovEMV_Cz4Mk%#N?bPECSrQhtkB#*xHB^KXAYa*0opRaFZY)-g|k)D&IJw0ysaufYMME3ti@yGug^IHDs7 zN2~;@*}aWvXx}*Bqxbw{OvJ;e_)9(qLNuTL4gx*$*hSPTmItdQ=O3K)C#eQ$Wvu_opElB#d2 zs*(HK6caFBkt#FY#4e@XW3t|xE$P>9JZt=1k+2*B%*^!>wHTB^9+mw=3>sPzct4Xm z*~yx7kL(vAQY2wwYzhBj91eK{_U+yyi6ctBFUCty>jEU^#jppr)gsYR2B;seQ`_#l zw@T&tor6iYHh?g{VC8W2>y56MC0z7&xbQRsc5&mx`KN(mpfC9+CLt)U@}XaDwKc%J*12k72g4WooanE5Qcmp;gn zY2J|cG1&LsTk}7I9*Oi4{iAmYK6ggrFyGfJjH%PV19&!GRq1$|^v?JHBxd4G^dC^l z4nYWk5 zI&S=)ob*K=mO#6X%RT3)C;vdu$CnMO4GA*3=8QO&Z#X`WD!qMMU$cED+gPEZ&bjY4 zPC^&w<;5wLZ$+{b%NtSV_04p(Cgch$)6K)}Pvf4n-wg)5ykF7tYD2uk#}vMX-j`^_ z0h(eL1k~Lyoc6)`e#Xgb6kd@tez>2T$RvkFs>_m>0%x5>m?fUmYR`uM>PTXG+TNi} z-qV(Kbx&8w1lZgCn<6SDGpAPT%&Q|F2qoRaO~NJGiA_SBr*RtQM^{Y`!^6(apkdxrW8IUAD$hce2UX(coUU+J z9h>-A$ZHH!H8>+Wc^}xI8)k28Q^LYbSMC`c+m9w5uj6GjR5IM&%fC-dTGh%}%QC^= z>ss#jVwI9nHtVk?F&Ap6tSZZRMZmy8zcZ+a5yE~A<;M>FI^7Fu-t)RM1)m5(H=Egf z)7ijV%iyQ`Z0C^;#w}O2^$SxkA?qlX{;$Sls_HyD_G?dTu1pKp$PG|u8orfBYsdRV zw%e|Xlg)^G0F2or)%}z*rA^dAT?JtGfe|yNMnYA8&N}q{we= z6ea7_9&rNuH~+XX2fdg+fhRya{z!m+h9n3RU^r{O@&Wlo6dA*LbjP-*8akqHFrCaM z;j82G{^uaar@JvD_=x|x8;FI{Ye2fy-9vuc>%GyNpWJLp>R++^Z}%$h?%14mKzwV% z6}qUY9B{-ne;J-a1Uw?(n6oVeqfkKD{eflWG|%*+X8CDQwFBYfzgI0ie|(aI-CZTEf*Olqiq-`uGT95cE`DP284}>h{PG{gXc-05u#rlZovRAF$@uNZq!lI{LBdLaF zx5kvA^1poWFJ#}C`%pxzF&ekIOnLJt8GF5&f0{5%RnH7QeO;Wz+uSB>2k4RZ2Q|Ll zukl5gq2;d*7Zxb$tr+yS-d#Y9E!HXaVb7p2lbR{?t}+QW?_<`ek8p*QyT z_mAcBZ~y%7MMgfI0e%wbtw}xQ%WxT3bO*!gQXpn{jB2FfM31Y8!Z>7Lfzm(zk(i+C zqO>dK8#{nbO_dxLY0Sch&)q|WE;g629Xke+65s8ikAD0cASC~OzVG_=6eq`vr0^rm z-3@w7#HSDyX}d$@$mYI^P`EjP_xf6Cgf4nxDVP z-n?(XrekxvC1vx5OhJM#$uUAR75;u>Uk^Zd9kYpTGsYUX{e)NdnA~v=MDq=6;uSlvZ9J4@ zOKKy3%Ibmer-5H=e{M&b>pOmbz>+9DJ?R(t>0(?T*s$s26_Y(^+|x-_lNn4hdbP}e zsWc+tg*tIyX{rkh9!l8$=Vis%({z7kOV`%ay}U3reBPL2uIIw5Of>)`G+0|ZPA-(O zp4}0)(ZGzbm4iLqzWwXD`i$Tgqvh@ZRJsqaQXw(9EXw{6l=1KuW~MFA6Y^6kg*(3e zWoVnzC#Fg2IR~Otk#z6Ni3aB*zNc}`2Zg4MeZ@vElQ+ZUt*|jabX8(K?>A9df)PX0 zh3wwL{B|SC`GX#kW3wQb8KbIFzeqK>_Jbovx<>BsNRgj9$tP9|U1! zB8T99%c8)4mr~8a)%a+v`*l_z@fRmbX}>_yVW@7-{p!`NvLw3jge3Ag5vLD6LBE!| z+il70ypkC{D`R1`584myA6iM<1h25)KJ#^IE%x;4iv{)*NCuM(yeRstN3BLZ%L~pk z2`%0b{uG|5h!GtA5ct)owKf_PWeCFmJsy6tiTN-(i~L?uy&N=iAQYc;u#psH@kHme z(+qD)h_uEk`r|B5>GE@LC;Fl~mTAJJ3cVEKy9n~SDX1aF^YLv~ENNfo0*b@h;zd24 zt20ZB{r2--XC0`sd%m}DY>dG(g;AdGDD{s<{4~O0`ysO!V>+CBzv{t9@U2?BU$Fr1 zMWUMW%O5B0sV;nep=q)0NHlDymXzQR`Fv4+vvdz2V_R9)>E(TQQMbkY(s@wJ^P7CR z*_XtEeA;Xbk)2_GtfBnW&DJqqIpH4{)TD`)^w#X(4wX_5j=&zbBWHxQ5E^ydI+c!@ z=sKQcF?c{a3f4tPbg_EC*yc>#&1q^(nwHofcqCY>Tg3JW6D;vumWbk_W!#Lzf^E(EHl$J9|2dvM1$a`7nMt@dQIAfezdD)|l*iCVg_z6&&6 zPxC)mvOEi7I}^jJ>5q%-d9S9mBG3LGI$7GaAiyqq{*bl* zCl;CWOin*#-umCO%#hP;AxJC5L!t;pxF~D5|C6(c?c)6TW9QD}UVuI}yYm_ikMq;v z&gV*7cBCC*{*%s*hh;H%=QFRVR&%lxokv3(wTm@iAPpC>;57ip(0YF) zHh0n}#{|e-KXb}2)#E`dV?tg({frsjf|+*Y|pcN;K}85?baVf5qQu{q)}}*CbJ|Y2odn*3=O?|VjOu2ifh{P zg*KxQm%9A5Sd5&>2_q)D1;aa(r$0Ga5C|RIsA+PAESX8VaNSH0k9N9~-;xDTn%rN= z;yYNLVX#flO-3NtmAr?DIni$w&`}|`c<=$zq91@dgevs&%0fIdzr)+EPq-7L;1I?5 zR|+jR+||2HDFBuLjfq%aC~A6VoGO7poJm?&H_1B7Py&GOWbJT(ZFn$tCJGyW;i`Ju zuT^IjjOY?X_KBm>$54)CK&A&rqW?^jTJN1}|6ZDQc34RVuH0OkcNprLtJ!zTWuyE`5weRYaDqYdzuXR2LPhm zRZ*^BIs-I^_&pN+k(7S}wcYZAPL1t_j@3k3e~3#SY~JVFX8E%_AYwS&1}TVJ>++=^ zcvM=g(lrz0YKCgcdIgt>YT{2^Km=ReK&6;AMK8K`Sm667c~n3XVcz}sx^YtW0x8p83- zLoSs(zPHw!g@PKk>Bq;60GFhPosKXAgi>RzWM-;~F``p`;iSSZH-reWn4FvIQXJ9I z&{rQ8u+AC>2HVEY(Q@QEv$0%J(BT3QjWHGgl1}Dv(M|4Wep8zV!5MHRbJ#lNiyv*} zId-yJ;ug7zCKnb)0Tu?HM4TKw(8s}C&Qf3}yC%SOTre~AVn-w`# zo#Ar-yvro&Bw+nQlRg>{1K~%|CficrYE0KF8_E)TH#KE=UL%eR9k_+zl$mesUmY&Z z25j;J6T<8w+2L?;`5SO#GQb1y5*!9tJ$ShBBl~dB3!aT_@xcE%0f|^XkuCGDQafC# zNdaVPxgzTM)W6D0q!hZ2MWTBNUdha0(}}T#+tj8Irj-BN>tm~S0Ey`Q$*s*#6~T)B zt=|v$K=H=zG-qz}mB_H~eMqOK5KMjCD0R1qa1`9T^ zsmbYaAum+Tlsl@l8y-=xvHe2xLqSs{KViI_Ri|vR^Ea_3gx6d6%~k;bZU986IkmM! zA3jkBFeUbD3jIziDN)$>tvN41#+Ibap6x);>7l2bJF^;J|h~56c*%iB_x=W-0%=6(*9!nPylFBbL75B2@e5KknS8@1t#E<)jGc5lpk=~{d0alJaVrP z`0N1^!{L$(@CH+iDJ5fL@+Su@LMHa}!}uz*VN;k?w-YG<-=QZVAtlxpifU~o%K~qE^Exf| zr>fThve7ELF`s?U6FMTysgJ@s*d)GOA3Hf+<7<2G41U|0E5KD z%G{~>w~<1!G(12}Do^A!;ahg!eJMb9sQyvcns6^knV(Dsp{Ue_}TC{;o5e7rL8II{bsb>!ULMI{iAX3df@kg84tkQ@tM z7i*<$L8$nxW}Go4ugL+lqx>>_umCnGlhX745UuzGx!7>yn9Jp{ewLC`+kRKbxBq7P%O>{Esn1;s7wr*ZUPn z2CpZ5*3RV2Ob~+bM8WU;)TWvum+NltC<>7vK>cg5yku*8^wZ3V08pb^ciD0Y?2O)F zk{a~&vlvFuZOAb(v9MTOj~0(YM50?WGLZbXNV}4`A^ z3bFmQm z&J}M_=1(zzt1|qxT%QQgo3yl&s?D!_0DhO^QvJ|a1iQ-$<1@aC8}nloAPJAL;BtAi zIY0l3g7pDdru9d?F3)U{P+V01*P*xoED3;^0U!UW<>vhSeD=`M=JV~J{dQj#Hl{*A zNe`H4fCnT}Ws*C|2+YE`#KgSiNg(?LAWdL80mSkH4ZYNf+F}A*r<2cs^!o1(vG7D* z>4)!@5G}0YPEFhhDFC`sP}D$3jof2b0?g{k*;T+1F^E(V0mQdWe(bR^hu``w5kkk! zu|n_@Q4=rQm!KP7JXKnC1-w_`Oz#;HsE9B%3^b(FbKniOX};0U>u7-bS zbQ-}zgT}IU>?43+sL5u#VPt(Z`Ztk+`0YzG-&d-Agg0a#o zlPM}|heG@16_`i%LB55yf9B>?de(da_onXtO@jmgQXXhDxC`OHZkV!6T0?-4=NTq3 zxRm2t!Gn*@VXlV-+)e<&W@!zh=w8PyD3JDJV>jN)f6hiuOC+!$b|F=HcEkoEA%HCW z8Lnb^WkVauK5fnhrpIQswwZ3t5&ImH`(a&k_3a?#Wz3%|xfWGDrJ)dE`e} zG#w^f{3>CV^@d!1RuC1Qpj;JtP+S?&l1HPy-_}I(D~METK@WY0TS=s$KMp)?2D{X3 z{I{(U_-XN<%p--20+Z3a>CQ(9H0J4_j>{fEsMNW@K?7)}-{}-y0#fb-V4IOvlSroU z%x)O&>F4NJm@@wNai1jCowU9Zu=Q4B8N`{?{O8bE@3XY8afTdVenCbzdH z0Hr9HJtyXE-UrwK!t$|Eod`0|6Q_YLsZbK8#SYjuE0y%#NAH?cF4y-tYG|R9yai_L zZZ4Rv9(ovzVtaFPBU@;r4A{do-R_BAW6VVZ-`e|1g=S3+|RTw zlp1Ej46KemuX(WGjjlrSE37{>r(*W{sAzM%bNa$z|H90b6Ea~ zJz#Jp@}FFVdYIXtwaLD6k!au8x(3fUC3>b0OlOK3-wg!mI0khEu08D^&dEZ<(tEG#tO8cz8f6=?~%43cXm!0K%BnF-Y z&?>Cm#7tk~{wSH(ehH|L${bDS3f7;dH-n(aZ2NKcNr(Oq-rz4Z(h_zr7}P~Y2YALT z^DVm$hsnn#E{Le5MBzot+c|Y?Cvy6Bng$fI;6i5c2ht~>5?*lT&EG>RV zgh|Go4dnD5`+~!3s+DHbI)JtFxK)$L!EI{7Gn%k~^|PQ+r*gV5TNd<5wSe?n%($L& zI}hL$EL@(^D&G1)D7qm?QL5wgF%6|?EK7xvtd~=XdE_&|Zn9sjpN98!_>eOK0d#K_ zIbf{wt8+8XtIf^NkPRD-@+*G^0MI93AolBze^ye(0#rjFb}6X&Fuc}JKldBjUA~GH zMaB^ou_*(H>E(;2f9us`-HU)0D_uSSQ42K?hbJVwyXNNJXrchjuf_F&U53b80HpNv zu)t-%)QY9btJJh~zpa$sBM6zoA;Pp0(lM&o$n~vorREMZ4QCHV5;N@=ni8 z4M*)I5^?-aTLqDN-%b_*7F1%XezA4-Bq&>{fQgNz%fo?p-obk8e(Z3iF5Ug0fvVus z^(fQpH*YW7beNEVDPHSP<8vefgeGIn(do9fw$}GE5i?piXBg`tKY%xNkKVRSZ}mz)-Z_PNC;cnrx4!$(V`z6_Ol%)KD-#<6rhXM0}Aa zGq>Sm0&SH*+c-l`Z#e$xBj;Uc2e7fKwJ}SHyZ=ROe(Wr%J78jcpI_+n?HC4FRS*1g z4D?6;j=42eK;%-*Je}X#8nUq=(UDUa1faYW6u%djm*?lUMm@HY{fAjg@p>l?#OV>6 z1MD7`avjkqh|}Cd6BCxbrz8NniDr=eu~NAdP1rCy;idpI?0ZNK2O6`g`UC zA1fqC9Ec+aBcu?%0Y^DWDe)->;fVmvPGgTd>wq)YgK@f01u&uJ`c|e9vH*6CyTEjn z$Ben_Bf4RFM-w(=wv1?T2RmjfM#C5xgTJB8=07r zGICi=K*Ux3mii?CA_L~}Tf6YtxaE%lRE8Oxb`o+XX;UPVWtV$a$9K~@FFO#?UNmMwad{q$t_eZcPHfZBd@Yn&=cd1H$&6aI zn@yl?dihDHW1EeBq?z{1M9bI9shBhVVyIs^u|ja_{0fADRWy>-rflRhDS(U=h{U=O z%#!j$BrMpW<79!^^&idnIfS{zMsLOC-mH&1gw{$i>&A;9zP@nq~S>8W!^4>_<6Up2Q^{#`F z!bsPyf0K^7MVu+8Ae)=b6wgEYtBjgx0s4XQOXb#m^2BK3YWopcqa$bAGzx1@us3#!2?UMh)3b9_D?aw5?bxljn_1P$v0}S{}Ka<Xe<_`h3){y#YI|80`~e+5eXUtLH4 zPcP+^phkn+o&9_<%0fIqmkmIQ&(5wqosEga^pe5Q9(Ssf`w^z$48B%X!0hQw!p}_q z@4|b%v~y(SBBa)zPl7>vN6~nS`Od=dro`=LR)l%_wc2p34?5NMo1z=nRX7yG@{`k( z%G}A_+DO^YP3X9fuADD{=hHF?@`+7A9q*X3;fK0+x7Hn_bUb9I!>=9d=uH$PF)>g%RR!&v=0i7CS25Uh4PnM{->}Czl4d$WAA!5Ktsx* z-}2ue%C7H9M91mL1YNR8Q`y*c{1D6hq~K8oc4fH}qlw(`>`%rv_$N9+ME0xU zOV<8|NZ0a#8gc2_k#z4uek150Aj7_Y;XJrVAr)4-TV8=XG2saFKJT;_wpHh$^K{4Y zr)O=n!w#}URUHduQ{~`keuJkU3o{kB z@%&Ag;(amDLWq7h%iYczNnF+?;k_epb*IOFa zYcrRY>$C`Q?c7=D%DkP;?IQI6UkVv>wc={{9eQXYGF09AIe}6}a^9RRqgy!3KNi1pO8TiWLInqaIHxN$imm~AX?~=9U<_~dsi|3KTY|W%f78>ne z)T|lyKYa0U{)3Td8mF8#(OJf7x%Y74ebDA^|GuJt*ha82)>qqw^WLq;wC%?oS4tIA z*2vFpc7VE0z_-*n7s>@OL=Tk~2w~EY61)FHUJT((d{pbG)euQVw+*<4>|AU7O1z4*jF z_)9(SkHPf9f}S5@4*jAA0gGv0>klFMONtTVJfApAFaGlI(l9FmMOm{L#~U>wyG>_k%8XP|oVMj8I#jy+ zRp3kaM|8wAsXmFP^HbU^NDX8knfu73C+KForj;o>$G172lvDi;pmb)iuAH3@pO$fB z7~y88Sx!BBoPKv(#Fv*yC&n?9WSxNYu1W-m>Qq5~$?eBub@tIy{;OXs`j z6cO851Nrr5reIOE-|9bI4-4}aMQ>D-I&Nki(6ck!{PDe|dpvx~KF`)w{n@b|?`$pw zC|Nd+*M)u=<4;WR_Fj!h5#-sh`jT78||!erpfeX%H4l&-7!E3-kKv2SR&NAq)lV;=4uKq^3_H+Jj6!JyIUdMpKUd28hj%3VoWspo+ zd@?A$f_&Wa*&a0=3f!oXJbv(qf$$COPAB7SLwsq2X}z`SI5~bS!5A?6VNb zZfNu*0ow+K^(Fm;Tz#sP0RcaWFoO!lUpm3dBJ$wt&T1|qUPpwdCCkUNW3lsvgA4uk zx`eskS(uap0isRfQP{o`VL`WRM@c6C)c2JkE+CkDc6*pHIYgp#k^H%aVUb&N+&>uRpQ&|&QhmgVBq>MJZTw55_cTDxLiwV3w2guF&gpr-NW zNeBwSDTN)nFG&;Arw+YnLBYeGk%}mF;{?-tv{2VBsRu+BW#B}=6vT6Y`D7jB9J$^5 zuM4esUqIX{RtM7)DR$N#DE=j93wLI(ttd$+_8XqNmZDp9|FX|g8SYme47X1?29QgdF)q>!_W3~!3D_GKvl**q&8dfC0 z?C-U<-qGN$TnCF%HV6wOkNva3&p#BIotPA8nWk6RCp!i!nzSiX8y5bpD2t@h>dO?G zIUWAWv^_Z+e$IQ`d?e#|drs_DVLCBWl)W8Y_fV{A9JuO7zV1x&^ix*xOOjqo(VM@$ z1hutZx4vfGGMuM2Ws{UuC%~i(;jiDs;ZZOnR#&j<=+E|p3u27W5EVw0ahsIbO34!R z=5pAN^s*!1MEyR#BozqB*ghJ~YKWgIb6-FjV9yDU7tZngy~D^&5*_;j$tTY7&}{1( z1>5J70lKBZ?I?-PC^&Mbu-r^{WZi5FiG;lpyoa1gZ*ZgIs>TFtUL)7mWLJxj%p>(6 zXWD!^S*l}R-OF44i>K7Oi`afY>*O+zBc|%q_G2r(L;#mYAcnpVDX6c{?c}(s>@!Y_ z-HT-@;DhRo|HbML(eNMg++H_s~!KbT2k>Ha;h_fl#Jx&%8JixQ*FNh>VtAOgpU; zjPW|ke8aZw%)uw!+SH`G9wpR4kZgfFd?(94#TXLI@3cWB5#Wg!{_(%*=lPg}5`A#L zCvx^>Ya(4^Po9*|C;yJ% zFmky2e9y|=2=wcY#fZ(GSbT*sZ&;Rtg?k23e7{UuZiHl0kGlxi_}+Q^M+*Cz$pl8n zgNWw}jLH-4K>y*L2yq-G-4Y4SageR`I-pP|7ubz%J?;CK zN(S>#AuK1RqeA6**+kuPGe9*93JMZ)Im-S2t>L1Uyvf0RT(2_v4x|vWU*55^fRC2E z+#af`m*|f3O|129l>&m9LHnx0{5}67Z&td-kQ_3ugF}774meNhai2F1-|^Pc(i#;CJTCHB`PcfvWq@wI5vZ+r$3v)S_)|SBaI!W# zp>Nu2-~VZRbK1iUTQpq}^`-N!^K9aELWMFJg$+XM%qAr=2?9`tLY*ZycOr0{16}Sg zYH-jT05&>&PgimroEpfMuvg7Y$@#Pkjg1`!@+3tZmi=r@4a#gl?^>(QkpN^g~DucE6P4?)y{jZw>k8p`UjG>^TuQi_dKX|-!^Jo zQSMjYc?mi`;ME-+xV#Ys-cI-|1s!le8~nc2YOa_|7tUPG9ETfD=QYbtTgR0CKSshW z<7}Wxz(WAP%Oqf%)9)&RD6mT8z9tP`U%|sXH1}&5e>WqwcyKFJkNG@_cblh0ue}7G~?80o|l%2`2T+o2#qDTOVS`x zFk_TV-ZXiwP#hC}-plyI2ov~Ke<>#A`EpJyfTnT8dc)7#-aT5Tbnx@@q*m z8GZU;?#}{QeVjlOlm*}(biB|uFc4%S*}RuM#&Y>-fQQ~iNikB;xbQCP5BbPu4T}fa z!blR!NtM@*9kvXqnD;?X2N10aiqs`Imf(_ z&X;3o_(I@Xwott=VzHF4D}oR=gCCEEOoBn>Zz=}harYA1h=#J2r$4VYyDMc1{`g4s zr)t*>=yD?_jAZ)tTY!ni1O6-sC&HOBzPdf-Q5YnH9!ci!QI_0xH~iuf+fKT*0^-*P#(@TH^NuYnYtTGGhvAQOP=mYm$e591bCZ0K& z;dM!QrdBOpzP0P&-yz~eqp%I{UV?ZQNORMInQ?$)qjtLm+?EYsh8v+!dE1~q)kTq-E+0&hj*%V2GXq^^Ie+ZTArgTv+zXOdIESzCc zhF*Vs^3YA69QDu#iM%6=so0~r>*OMe%Kh*bQMZQbwjFAx*10I{crwA0P6{RMlgs4W%3~YG& zeXUGWRe;W{GeAB8d+ZnRfv+1W;THot&RG*5m>c%*bdxIs4!QRqOWzgB_#psEl}l7T z5a=4+;+#{&fPu=`lkqLR){~?1JYhd)dIGP97GtXYdS8xwCfy)M0_S4g*zXiKLZMtPtYItceXS>Uai4RF_WM1=C0cHGTi$$YVH0pejq`A!VgqD2mnj(&x|ZLE zHh#Bk;zv#5k}MXpXEML}PYQ1@1^md{r#OH8swyonzb&iF_g}aK**%A;6>(r&*(~%7 z=H+}_*mc9^b1m?Gb9`VYZQb`O@+$)YxQFum)zHg`2^j9Gh)a{&+gWS(1Flb*_7&{u zQR*mK;4`g76b8gau5qx%S)}LDmawC;iM0X3B2RTfL(=nyLDx?;Xfj&tesDvTo1ay9 z?PpXE%cfo_&q~m|YqjSYA$*zp`pV9Oaph@39}(PQyWbOElH37^^exxm4EJMpN7nbZn%;ViH*`aZvX zpL1?P+gOB2b=A*^M$2K?F5Jlc^z1VYK6)&UC{BaD2`NhPq9>>26MfZnK5R3R)ZDab z|-QCmN+C+58`k94kSt)e#?UDZv4i?OO7wg|EJtYRkznNDD;i-1_EEVOZk>o+hOW8PklbLFuT>7IbM;L4!xHYES3=F zc{|s4XRtW$SAeV`>3T`Qm*!~ZFU|XEw%1ZGlS$HE8ClQfm-QJw@z40>v|_umpT!N+ zeFD=Vaq2rCUoSgS73M#uwaPxrj2b;Fj6RA}yY+buKaxeYJ#r;s(36N^VVdXQRTa74 zTYS$^{B~4E1)~E8tC3c`ky)_{nf1@FCu65cd@JEi8W&v4D$*Ey6R-ZAjDMompYk*e z{VnA9$KL7pKlSNp&jHS)^at=r}doZwpV@ugGkI3WdC!aipMpsoA-WCQX)b)T`D zi?z-sj&L3(a9F%c&@4IREEZ$%9vVx%eDBCj zYXr7ATOJY`9C|p$b-4p!>LnwYiZu9rJXqtT%MNTjJsegxHrtQ1%wA{n8Mo(Vs$5%n z^ECKTxE1G`rYk=C6-F-lGOXE-Q2bAGe11=pc=Pip4tpwS3XDoUYkhy9#QNir6U(SD zABblTk~s-6wy;j^9tp)f+)VSd@4-p?n;;n<-nm~au?u0_BTB@K)$0f@&g>!Yz#;I1 z*(tL~y9{qN8*Gpccg(K29)tBaQzVza zn56_fK&f+lLBDIASHsKV^p{AxAE}1Im%1wn?u85)2N^c&lHlm+I`_Vm2bbM@7W+{P z<9&4y=oulQGPh^gK)764LboX~L?V^;_$fS+pT%72gPDfv?aCXa%4*{AV#-h#1c-=O ziFI|0Ddr;1!TR1Oqu%rQnUf5=@)J_BD5ZdylZ^JTq^y?^ZD8y*kCOr%DirwAVFnqA zT_8d2CBs<%to@6@Rk{6x@}}S;?NBzlDRwlW;JQbDs;ah+Jy6vNku3w=bO*YXADok5 z(=B8Uxq{iYk0X?zAKu}iycRD!N+^3YX&S0%xVCh%L4KeT{t`T$mhg|CkzBy0=A|YK zxT(l3=$8AY*+xE~et3TAZ3W543`eSf@!(;<13xm$bK$AwTZSnAinXSlX!nmZ4m3%; z@oK9|SQ>#B2Gpq^NKlgaS2`&;UOb<`b_fI_K70$rf$~^cM{&6W3in~X-X^H*X@zb3 zaB+T)-0C`&N9wV~?N9gD9;^k5k`$MhadvZ>-JMVVJF}%k5lJFnvPyy@r0A`OYO9qH zp&ZGqCl<9zi|~4dKTnym3>)qO6N~BI+9c-0#0qb(IHzX1CjvwVIZo6s-!@Q8z1p{7 zh6~^*YW+4@h;9CAZfUZ}=iMwAOTqiPW7V_wJd*u$hY8I!geS#h3`#o06(wWFV%U&; z6mD?48|arG;2*74UJY$uDQ2EIxr)91tE5VecaoBl*EcuOQ)7Q${o+ENw&%;4We-Q$ z&!6Ax>t7EEc{F~9djqXonK;t$ne6`l{<9)Tt7>?+dUiy==FP7M#CdNok+J`mN%p5B_oJ&0!2*w(1(xOGzeuB;dOUiw#6%`69=pJuza!e{bn;XR zjIfuQmmD^JVQ$kYaoeq3$PvMQ38_?FcEtMdZKG84tgg=Q+EA;~a4a02Kfr6$mizrE z{N^zr0{87-&yI6!E^aRE4in5IIm{AsfR(%iKyU3fP@`o#B-WFt+S^vAR+#pU7HLkl zPO}9f)N;&n;kS3Iup{Rdn295{A-zynt5RpIq1I)aRlmPJ>pWA`^Od=<2h96UEk+i= zvX}euOGZFr!0e40uUk@&F9(3_OU2YQuQ4&kP;FUdxjF3n8>JlH1nau(I+qcd>>O$! z4J&*d^)Y0!*2SWuF_Yw&&3I<%dS1T;an>Ez7Woqfz~kC+)Z2zBzNLOMzz= znzZ#iipA)fd9PYYi@wrj}Uc_|x_I(X304Os8K4$%H>iEW&`B$cpKN}fe28G9p zI)-Ttv92u}$O~t+`HJbx#bx}huB(bPJ^vH~!4_}r{hEb^CYhTe^V$VS`p4}ZN1-i> zdyNp`k-lQvStm!eTWlz}dhL!ZY3qmSH79LtEn0aH957^!5-4t~rv<(ezw4%M zb$!gwdN^D?D?Qziv(+8JR9rE(f31cRVX|>(sUoYEB^4UW#ny1TD^a-I{QLxoAIP#{_ zpx(hiV!xZV>GMlXnU@w-?}XG<_BX`|vWOrpI~KKcZE_iKLz?5~BYF`w%*Uq6ud$JDgtn$Ha^a&Es!) zQ;_kcarhqHv*_37&aPzlr;N3Crzh8LW~`<&aIfTz5decKb8i*38%(jQ+6Ci?3_%}0 zPrtMq0w{D*5zbxOl}w>f&sDwNdqu62K{ChlP1maGs#*-{>A_l;X`!d5;UT4b-h{p( zEl&G>{gqsi6e7dC?iK%gfTmdpb#J}AvNH@ge@n=2(ARpMadshYXg1m^UEk0ToL7^z zz+|~eGNnAe96&X~<-Gt_@;Q2=(0C}oG6g)PzFUJoxc0kF+*+FG5FT-kvI9Jw zVg8_^W9vwF-;nopo3zO7!BA_XF?vOf*41aN8oMphtHY|Vs(k^#22_~8GO)_Sa;%@; z$91~ODm@R6p)<}R1i|03%I2x7*pz*u^SZpB(`pE#{fXL#40n-sJb__wtHB0GiL~w{|K)z!0Y;=TU2{5p-kAOPDP@Ab)YRIn6f`x7afq9rX)mV@Yzw zDM(*%TcMq^mQp7`dL=04=E%G8a^#Q^hi~JwI-AOV);_&x0?5>pA16Tf})$IP~K4nYg8BO>vsnpXNEDxPD59 z&UrAZDt12wFY&K?zIEG%wa*{E+lkhUFrT!5q}B#)36NLKi?f1NL^Im)JZ!JZHBtqZ>)9OI?mf?Rn2PuuGoC zk3iJgpK3_6PC*TP z)Np8lk=pF~7h;*18fJM=#u9vUtic{;9Y1eh3CIZWl>j%3=xG0?lZvX- zzm7+1u+@hUZWYRbCGQwOgF!$rDv}2d48XL^_a=p_5|15Iw#G2CgKyLnN$f94F_~5TGg=O2zt~eui^BWUFI(GcC}xpW!3U0& zNW}~caU9-&Ln(i$Iw9en;KuWVWRj6X#K zqDK)oD(rr=;_K6zUr12=6l^AfL)X@+L|o>wDp2}z`B{0yk>Y#6jE9wS!S%s=n1IzZ zU#}kRb!#CCJFLKeZPY6ywBz>8bjKa zq>L~QC@bMOw<kA`>lghvw^|kPH6VgGA0SP4e_qE z31ECbiC=7Y&sJN@B_RbIO#i^tiwifPF!wJ%@X1zVkfVZCdn+<-fv@q=kZwl#JGy}s zCC~2F?#alFSBrmY$Xx{8;NT#zpnw$Wr7U8)y>nNyWfCEdMnfBbiJrD@-qp{PuO^V| ziv1kbm>9t19sJnreo(eN{BXyy+Y*vSMzPuY+!lqVwiQy4IzUN8IY*bosZ$-J&j6d z783t(?>iEG(J|dnDl|Qnx+Ddi&IHBmW^2!fo*KEm3O@Dcv_}-rG z0rER~^K{i)_i*_v z+B4<3QcR2AcYJL|5`9`4_uVqVp;gQqCD8Xl(9nP5EuidDHPbl%)U$MI71uv*#l=0T zVepv(wEqex94#_*;8f5Vbpg3}16?VfmY#Krn9l1Dcuuz^Hcck;cYS*-J1Im*+R{mD zf+QDe%VUPwl61ra)vx>3d`W>rmlcc`e^n-+_QAdzk=mWa-3)o(!@*<=R}8CwP+k$Sk@6CqkPyW5sc+ylb0EKk<;ve8tWM#f`%QHF65* z`~DAkH~&5PmWN$Q7s}RzT;Fy{-ML7Gro-=O#;9r~m{AD7$pVyDR`Y*2O=`IL-!Wo5 z-RQYcdL=&O`{fw}))iXsS;JQ9Fg<4}mZpl=6lCQO<|NL4R`g!aIPaJ#)1y+E-KvQZ z(0a>$Q;{)SggpbRs8Oe!`soG$Uox8V&bps*Eg5PC?AJIAbbo zcu|syP(dQ*_Ri?}tXThXn)#;x3){wmqhC~xLsNuvX*8@gqF z*VCX4o#;Ii_o{&tL!v)9(AlwHic`RLnh_$wPgBo(GW4fsoT34Pu4dEfOvg|}z~7vE zj=$b{KL1VK4;wLo^eVs9;|?!Gf~Ql2x?kCa5Gyu@9eGDr>XcbFV+(m+)NHb{`HpNje7Pq);W<%n zo8{}50(R;a+zl)<{$E$a@JrS|Q_{Ltv49r(o`=HgHbJD`n8a6CvJkKqppp4uEjCuU z&{?wJW3$Jk-RQ@ZLWbkgN!lM~IKPP`S>#lYusj@GqHrbsy$`?VExI(K1#B0I zy#?QB3{l|M_Qc(&7I`NVLw}%F;KhnTFMWr+;^((2t^}h`>biyjnc1rkQK5=V&Z21# zx~^7j7+euBvPtAOy0Yte$h{5Zz19x>6;)Jcdqx5$L-zs#Rk2N&!IEYtxZ>CzEI-U= zG)aeSPxtn}+2<e zclvgVnNizO3po7&+6MtPGJeOc@Gqs+Z6bo`tDJBoMSr|wmetS=A-~(fF(A7fD=M>m zuhLz3W!&Q&s0HZE4IOX_=9|2k|F~n*kVhiAW7{n^gv$LumLdUcA}1%iksieEt{6?1 ztf>XhV<#^5zkF12;IrO+&y(GD|7*@jNBUEOgZ^nBX49?jtojm|UQc20Ti^QIU*ck< zTwG9j%*gpVPw`9TxJ;Qd;=_4xKA`7uajiW;^@CtJ=DX9=1E)#TwB0X#NUlv}ZoNqV z#ZH1X@mxgQ7zf8N-fdP-mi8JweubI*?uQ0n!Y)ap_4Jj#*L9)v7E66`?Bah}$DWC1 zS-kTrREXHfyv59Fxh7t_%y-t^>K}`JylxxL(>Pk|&!AXaWEcAzO2%*E))s_$pDXhm zlwcxC@6>Z5De&j`v~&QNa-tZxHUmH2?*Br$e*AfHo;b=3SzK;@5W^U`XXRZKv z4V9lme|vf&0}qh8zr=@5($=@%;>W$=9IkvsH@ZYbXxnHy7VYiYcPzd;%GY>I$tm++ z`@C-ZB@_-(quWyhSD>gC?W)}98PRe$yju~*bv_Xfl$bWSR(lM!EqmU8_HKXvo?|u; z(DhJr#YlplS*btR`|2M=9iH92M+c z376-s2F+NUeP@2(YiYO`)gasWLCh0|q@d7vK8#saXV*u{mu6=+`XJqUv+$aWYf{jD z3hhJTyZDVnt6BBQerJ7s`gz@?jGR!ojY5M%Y3L_hK9%jR3CM??Zsk1A&{kh&TUbbgggC42$@QhE<#+_rM6rOX}W! zPY%%8MYen51|!1R(D1#*x!54-mBt(4zml`G{KxnK z9#5AKPG9+zW`koXu#WjMSE6+J-p-9Y%`ja_<4&&c_X+m25BU=rb_Nwhy>c`iyV7|m zqLcK1@!$4Hi0|9*)v@CDoxr)ik6qvN^bv9L(FehO5|<-`k0hD0f6h}n77pwWHm!HX z4q_K2INvUc`<{t<&f2V#@kzpvk?3Nn6RXCfHb44g;;8I$wQ8dB{pG z_9(nQga{J{=Q<+=Jh|4kb76Fxorn;CpS2Gpy_?c#o4~f?)2M0_FZ!Ejlb`Aq2Z%|L zzL{%&bz z?G`^?K%n(iqQkWE@h_RQtlQO5#n*l?rk7)vI-fnG`A)%;zV|#_P8E}~hPICbOIJ^i zalRomww^}@i_EQe;M(VM2c`2q<_pJtTR4kOdqnI7PrFMW5iw6SrPVijd^`44We#Fv zU>V545tljvl>_slyZ~!&87x$Fci>vn+IshgRqQ@xGkJ zm1++=C@;8+*k{bV;L#eR*hvt&dMn7;I-|vbP!{wYI)iNtFq24(J0v>K-d$$rh!B#>+U9?Ku@y zcxlmj=n83Byc66hV`U|yvqII)b|TG@1DuSzu!avfWZngJD_`1`e{IxJq&9TLjEDD( z4tJuF-{U^v6|1GoPyd<4Z@J*&YWK!oiK37Ky8g=dUCkpStO8L;U22JH9N$*+TZQCH zx67g+1lsA|J4j`J=sYBzp-OuS7^H8oLkG|}Q~^wgrP-c(=K>g@GrX_K6){XNdo zUzP_CMR}3;$gOaz*(&oaWIrV5XBW=avTTnU4Fd(I+l35v^NVlqn;dGVOKBGr%rv-l zZMi19fxVGpX6SYX6(dZ5j*ow2A*6qOk&={@MDFAlTV3Gp!oj5gt4q0`Nit!;N6*-n z3o9wv3=7O6u|^6FmV$h?Ri=WGFFYqC|K@itdq~=Qq)ARWrVHd#PI2F#;dI~ALGsZpj-k?f@-E5F#b{}dmiUe3-kY-J_^j)K{Klrjl)j{mG>qSEn2G5Iy zo@wI+lQS+%2Bw3aAU4sRv?P^?F_G5K(zYUpFq=5O&@kxP?s74a^gNK-4Q~ehYUo}- zWR{a*$T0La*a4-foDg5H-(;MIbJV$Va!WuC2gLr?AI@bNuFkXTy%6c_{X5*X zH<2UJ(T)@iHa4eaAA-1lJ6@3M0snH&(ftJLEbOw>1s5pC)?*zUN#ES#(9D6EJq!g% zN)`~X2i9V0)kp;AM5EEJjzg;~DYSIK5-IwO#>PM3#_s#U9kP-(df|9^Nh;Xs%Bq+e zbG-Q=(H7vFREi^0WZ+NUjWU#ml{JjrorJGk;xz^eF0<_--|cPl>o=DLwi$jO3OCQY zf+$}s)&g~ax7iuU$%w%{g?IrSxc_>V4zTcy)y>Ps5{)mjXbe|hwCen(g+hYg3C`=h zXaYr=>wGo082{z_zRkytT3DC>%99fOeVNaLnWez<6K;#!06pFbCHHuuO&?n1hp>>Y zB9xfTIU2xo!Yzj(N(TJc+?RV)9_-D9;>&jh40{zvHr~(TsLbA1{O1bbO^nH#pS_v;5>m90P6VRPpAG+(?W*hC7IVg}!Z zN~~Y8mlH4&8xfDZ(idTlTPf-oaAfO<0*~%UjU&M2DlnfLc$z4f#`9wL167_zR;kVp zp5|b_9=GWs~|St6qSGm?!7vw{1k@olkd2Zk{{L z$n0(1i1)z{za?c^w}4x)UG-+lcUHJmm{-|-N;VspjFv4v-##1oRbX6S_V{4a4}ns8 zp3ma?h-Ppwxl2Z6n7*G!-flG>Ba*|V_J0vem32ijMWRhj&so2JEe%FT$1xx(rL}4q zrElmdnTNa_y0SAi`%FS~Esj}{0=c%TpCN|vAXtK=hf)W;+%FlRawueJtw}j75N#!b z;)2`D*_yMnQ*2_d*dkVdKCC-v`hXp@(UQA*?bh!>*-gM~xRI5nVHMqItXBfiU_AZV zS@r9zApKLJ(raM8t-ngoZJFYxK5mHQhYbA?45aeFoA<}ctd4E+t-rCV3f~J>DVCBiURcZFJZM?J z|6Lg#*6xM==9D{*4I1d=E{Ei9RF)1#>He}*AN~WaPFoJGJqCtJq$_xhuG`|h+r&U zh^U(Oe?U&n|GYOKZbN|KPX9PIjQ;~)_V1Pd4=*5ZDcth+j3_VH4C^^*l=ps3q$g0h zG_L+{IeOJI!}NjHQ+Y=#Z-%J{vt(tdJSw~(%I7aA;o)@Xvj3$=Rd6cauU&6k-;e7C z3Ki0AJNe7B#FZ!O49Ew~;9LFU;GEBZc9Vw(-~9Z%7wCF7EW4@a(*ORo$s(cd{?z2@ z7Vr@R8;MPdQL`3zk03Hz3Nc(%l~R}Hzd&o9Ol1I|LjNyC_y2g6{~L$*e_G)*>xb~t zZ}tCqJtQU8ri)jR2#T@_j1K|g3guGfwEqET*He=~AYh6X4hZhFHx%zGLsz=g5Yy~q%1;ld~@+We#3Z?FBAp4n`cBSLGeE{U@xPjEszv{1C~Z*Lyn)NKn>V z*eWV2w9}a^hwy@ zRhtlhEc*2G*Dq@ahkkbh;L-qOb#r?g_!_L-N5G4dnQwGl6|pY=hb;CoO54Wmw*WLn zbaXVakQ)QFOsw%*XYeK*j!2Hdb145mFJ-`enVL;@|1+Rw2Hx-gSEBg;PBs4{ga=Ni zE)6ixI9UnmkF@{GMgLG!DAa_=sw%M%7Bw_@fEHTZ_oq9R-(vm?jSqfWRu!cWfpd=+ Vj_L}v0xy6cd1;l8l^={l{s)|m7q$QZ literal 0 HcmV?d00001 diff --git a/Document-Processing/Word/Word-Processor/angular/track-changes.md b/Document-Processing/Word/Word-Processor/angular/track-changes.md index 24d8a50e7..b83e33332 100644 --- a/Document-Processing/Word/Word-Processor/angular/track-changes.md +++ b/Document-Processing/Word/Word-Processor/angular/track-changes.md @@ -105,6 +105,52 @@ In DocumentEditor, we have built-in review panel in which we have provided suppo ![Track changes](images/tracked-changes.png) +## Custom metadata along with author + +The Document Editor provides options to customize revisions using [`revisionsettings`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/documenteditorsettingsmodel#revisionsettings). The [`customData`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/revisionsettings#customdata) property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the [`showCustomDataWithAuthor`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/revisionsettings#showcustomdatawithauthor) property. + +The following example code illustrates how to enable and update custom metadata for track changes revisions. + +```ts +import { Component, OnInit, ViewChild } from '@angular/core'; +import { + RibbonService, + DocumentEditorContainerComponent, +} from '@syncfusion/ej2-angular-documenteditor'; +import { DocumentEditorContainerModule } from '@syncfusion/ej2-angular-documenteditor'; +@Component({ + selector: 'app-container', + standalone: true, + imports: [DocumentEditorContainerModule], + providers: [RibbonService], + template: ` + + `, +}) +export class AppComponent implements OnInit { + @ViewChild('documenteditor_default') + public container?: DocumentEditorContainerComponent; + public Settings = { + revisionSettings: { + customData: 'Developer', + showCustomDataWithAuthor: true, + }}; + ngOnInit(): void {} +} +``` +The Track Changes pane will display the author name along with the custom metadata, as shown in the screenshot below. + +![Custom metadata along with author](images/track-changes-customData.png) + +>Note: +* When you export the document as SFDT, the customData value is stored in the revision collection. When you reopen the SFDT, the custom data is automatically restored and displayed in the Track Changes pane. +* Other than SFDT export (e.g. DOCX and other), the customData is not preserved, as it is specific to the Document Editor component. + ## Protect the document in track changes only mode Document Editor provides support for protecting the document with `RevisionsOnly` protection. In this protection, all the users are allowed to view the document and do their corrections, but they cannot accept or reject any tracked changes in the document. Later, the author can view their corrections and accept or reject the changes. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/images/track-changes-customData.png b/Document-Processing/Word/Word-Processor/asp-net-core/images/track-changes-customData.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1fdff502faedc25497e83381a39247cbb990dc GIT binary patch literal 45944 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 Vj_L}v0xy6cd1;l8l^={l{s)|m7q$QZ literal 0 HcmV?d00001 diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/track-changes.md b/Document-Processing/Word/Word-Processor/asp-net-core/track-changes.md index 53d8823e9..8e2a8399f 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/track-changes.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/track-changes.md @@ -129,6 +129,29 @@ In DocumentEditor, we have built-in review panel in which we have provided suppo ![Track changes](images/track-changes.png) +## Custom metadata along with author + +The Document Editor provides options to customize revisions using `Revisionsettings`. The `CustomData` property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the `showCustomDataWithAuthor` property. + +The following example code illustrates how to enable and update custom metadata for track changes revisions. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Track-changes-only.cs" %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + +The Track Changes pane will display the author name along with the custom metadata, as shown in the screenshot below. + +![Custom metadata along with author](images/track-changes-customData.png) + +>Note: +* When you export the document as SFDT, the customData value is stored in the revision collection. When you reopen the SFDT, the custom data is automatically restored and displayed in the Track Changes pane. +* Other than SFDT export (e.g. DOCX and other), the customData is not preserved, as it is specific to the Document Editor component. + ## Protect the document in track changes only mode Document Editor provides support for protecting the document with `RevisionsOnly` protection. In this protection, all the users are allowed to view the document and do their corrections, but they cannot accept or reject any tracked changes in the document. Later, the author can view their corrections and accept or reject the changes. diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/images/track-changes-customData.png b/Document-Processing/Word/Word-Processor/asp-net-mvc/images/track-changes-customData.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1fdff502faedc25497e83381a39247cbb990dc GIT binary patch literal 45944 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 Vj_L}v0xy6cd1;l8l^={l{s)|m7q$QZ literal 0 HcmV?d00001 diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/track-changes.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/track-changes.md index 4d92f624c..301158906 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/track-changes.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/track-changes.md @@ -124,6 +124,29 @@ In DocumentEditor, we have built-in review panel in which we have provided suppo ![Track changes](images/track-changes.png) +## Custom metadata along with author + +The Document Editor provides options to customize revisions using `Revisionsettings`. The `CustomData` property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the `showCustomDataWithAuthor` property. + +The following example code illustrates how to enable and update custom metadata for track changes revisions. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Track-changes.cs" %} +{% include code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + +The Track Changes pane will display the author name along with the custom metadata, as shown in the screenshot below. + +![Custom metadata along with author](images/track-changes-customData.png) + +>Note: +* When you export the document as SFDT, the customData value is stored in the revision collection. When you reopen the SFDT, the custom data is automatically restored and displayed in the Track Changes pane. +* Other than SFDT export (e.g. DOCX and other), the customData is not preserved, as it is specific to the Document Editor component. + ## Protect the document in track changes only mode Document Editor provides support for protecting the document with `RevisionsOnly` protection. In this protection, all the users are allowed to view the document and do their corrections, but they cannot accept or reject any tracked changes in the document. Later, the author can view their corrections and accept or reject the changes. diff --git a/Document-Processing/Word/Word-Processor/blazor/images/track-changes-customData.png b/Document-Processing/Word/Word-Processor/blazor/images/track-changes-customData.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1fdff502faedc25497e83381a39247cbb990dc GIT binary patch literal 45944 zcmb6A1yEbj8b6BS?ouf3R@@;0io3T3iaQi{cPmib9g4NZ-QB$!&X#~(Sn0R5P*Y&H$X#y-Qh-2&wzcw zyJ^Ww!BtOF9K!w}Sxc%)!ok%gU_wlhVgJ#c74+QT;BW^1UhpGM-z?zZ8n6{*B;R=( zoveC!Q~WNvyF3@+Yf$Z)NVcEox{ItkEQ(5}(o%2*As$8ujj7V+@qbjnW!Pj2heOAc zLd~)I;@7gvv|L|l^kGSKw=-z6nth_au5WlacLt25+X3?Q^xA7FpTyU1w$H*bh%U3u zF0)-CPu=&4l`%A2rK}!_!obAjE|DohnJ)j^mhEYPh9rgMe|;bvFU?POBdxl$DNX+= z%2ba@=}@Ei-|NTHG4oWP2%?eV;^Ja=dYSoEL9ox-XZLTv{{B2oEtHP?H&8he<)?p* zfbZzEk7WbDisb%2*_iS{a8iNQuivJ zs(T-6fF@0;&iCe%=lL3TmR4T3<)e@GN+S&{dl>SKh~(Z(z(>*2w{#%_l3u!rIQ zR@>HAt<0OnkfcDtUkW;u9QiSa`0>-fVfwKserlmf(j^rZ6@}#IQU8qRxdi! zwDN;spuv2=kZmFTs_{Q|sQDnU&dMy4Ei^Y^KM{w;PzO(15PAS^f2FwNM;ULl{+D?C z1^nEyxK+zWJJff;F%WsSvkIa4&s@61vXIy7)5#;$+hgA~z*i?t!!L^`(B~51z(7n1hhitcz4!p`A`K>c$sq2Wh>zn&c z7o05}$BzuJe4B#=uT1go+Cq2n0Y&^j(x@mcQu02r|CjZ}nOE-c^-32IayQ~_Wlm@d zVlYv(s4?EXPS`ic()SiT@3w!Hmfq{JVoqj*H9+bv`fi40yZyMjWA-M~=$&q`DTVBC zQfTn^+G4?Fp+);83+*0IS>3<@wxnWp2z)C>$;D^EGQEcBB11`^m*@(ozZ~K}C1$}* zfD>U9_)>Lcv)mlL|Dg&0M`a=J!uXGJK1P1b=`FF0DYH>KH2#;3G*k&IQj{@^t*z(;?<)5z~7_-&(^o_>SyHF3MUtlRgG$X=ywXn|z_ojoHD$0X79SHJtbF z-+v(&imx*tA;3b>RO)Jen#(Lx24x$aK@_=y?pu_9u#Jl7>^NWUn!fsydJ@3f7bo%M z>Y|<>ofbaC6*>MCYK#_Q`}q4EyfW6Bp~`2KwBJShgptrz%X`$m6QT1Wj64ggtYF64 z$;obuc?lCETI3Hs9@#H&MX0ZZ3oNM&p8qYwNjP6x33-&fF4)Tu_(kDKkSfrOOYOHz zb-UTC_vzlMAyzcBNLorC_4R!o56gWvBS>tVoaB`hxk(3`9hx1MhY8hzeLvn;I8*F5 z#XU1%h0GJ|Z$g!8Z8}V@h)t`XJmJ?Na5xV$ zt1D+eQrePzq|m}Zu?r=)glF-R^#-2CAK>{ndgPNKS(p6~D*d zaSS^7R2wZC6FdaZ(TlBY(vEW)XM5yT_I*92jQ-3_7qy$|uU7jF;1g&E&x3j+s|-sJ zBEC>1g&jGXx*77hAi0`E57^O!(`2dCJFbd0JFTk;Q;2Vz^-G~4gupdBH26Qb-kz=c z^%iExua*t-i+PHrZ)`$EOQzAlbqPB>75%-QMER)Uh*&it3T#tLI4o6ynIZ;1+gXPi z>}Z@)Eo}T^o}gUA^s(BN>wAUll8U8@8e1fijFinaap1`S9x7kSpNidZEAndYk#U#LP08>ywS$a;oh!Yjdo; zp2U_sZAt%SrhLO+Duwl-M_2v`Eb%2b<0g+S-;=cJz0Qq3R2wL=rHR_Cl(W;y7-xR3 zsu}_VeSLk85_sp(RJ7Qi)su&~1}g9NoX<|+@Z~qHjJ{~m(1+G*qNK=WeR*xAnT*Qe z!J5u~cM$D&Vpwb=`*k)(?2SWur6-yyI&XJ>uRCS4_{va1P_mU}6hrwa!wiADW1SBq znkbqq)};wWB(l)MG88KA2>N-Z(K2A^)gU<<-epH&WU!6*jVDXP&P++x-a0pEZEm1| zT6^IE`h}kAD!mtV=+qiM3E@$So+^6>Nw@ISw1-?XcJ%iKMMkF{*)K z)Nky`nTJR-(4q|E_2XG~m2o931lEM6gmQ1sa`_?el%!IEU2I_dKet6dNHCE4`2Z(f z{D#F#BBRiAGpq9{#%C@a$I`w@`S{Niu%$lBM3(V4agF!_7M1`uHg=_6!(Q#S1kCUM z$Y)Z|Um^Kq#5zQwfZ&pl&M9l%CaL z74zcq(SwH!0z%}-p4C_h=GDW{dCbG&jN8M8KDKMiQl;*v22cuV{8S_fA;jzT96Q!k z7WJzu&~i-MWe~lA@VmMSfd*05#C-XQY+Qv_eb@2UxU+BBiqViSxD)%R{zs@0Uum?BpV6kr& zCVJE}L$A9xRMy-U*~i0UPswB=IXAk_b4MCi0w8y1BR-DWgscO-!YJ=GtB=i=Z)p)# z)3svWv3b0`0sV>~gTpn@*(AcaqC-gOtI$bB_ziVElMiFcE1UpKd5tSl6G$$I*Fy5WaV=alWY|og|z5>!L`VSC@72o1v%;un;H0~ zaWubtZ5Svj23hoHF-gamoGL4R6cwv|%XX0*lWvH^K`FS}JhWKAvbASS;_@&FH>-IN z`X7==(v(Djn$j}z{ZoU0B-RU|4L;|)4J;`bGw)e;w^(9FYmqzm4Z)e&pwWS#pwuC9 zvS^<`r!vCb1L-(;EsRN=gtc&LPMoEHO;jXp-zT9$h^6c(u2lXpDgz_mOesz2Tl5HW zkA)_IzOSh54--{}kh5W&KzHq!n<<(wR7Z9AKDf*>>Rcj(2pLk05tI>P20tPWj+lPB zl<{#mmWZ4zp;RXg?R>qgYv)L+sN-6}XUeSSOzw`+2GS~!#W%*b7y(P< zL`MR4q_V5e0?fKSw0-%4PlZIYJ=0a^>j>fSY*|~o0KmiaJOSikor*l0Cfl6HJY?*r z8Qydsqx7dlkJ|!yGzo)mFU!Zw%X_kL7!hwEW>ssPlGYi8#pI&xh4h~^fWu~67O|ml zt>MB@LLdJtLdjQZ{B>VrJk(3tZgLF$pUO4UPhIfZ{aRqI`BtuoC?Ac0lX^ykB!8x3 zT{MNa$oUC1yW7Xmz>=U^B+sh{Y%ra}7itDVD#dA6>oJPwonryA53BN%e%!1(i6A=m z>M(h{v*l6U^eT2#y}UjZGkD4qhJHNuIt(0|WufKPC^<@j_$A3(e;+Fk(&(LW;@kwR zv+oRK=)KzuKE^V*xB#l-PZJXnWBPVbEPVvMOd)cFyiGcBU6|jUsYvbR$HKsT8_9?% z{&CdHiG5REf_2kRf^!p9f@SB?iTLVfW}o+af3KqVb(yMMo=&d^tPLirS1IR_!d`4A ze*8mjTq2Edd%bzH|F$eit}dMv^wdz5dkN6HlPDLQ`24{j=xxRj?xMR7< zA!=%T#9naWPA8hj71qJ7qiljov-9mHU!%yMfTooJ3 zwLwEz64sZ8;v|%>eo6~^I3&v92@rXpN6b@!+6X|z4FGh+WbZvcnG!XavE?M_op_SWT zE%?rm&?5XWN)x#?pP`&L>ds%Rf0vJe^4R{xLno$ZeZQ82DeE#H?Hs_T@SXAE6TQK6 z2%hzCHbL>My)y}>wkHWrRmqeJiKLOCa@3@==%5sVzg}o+<2SZVGz*kg}ef4)u;Gzp}e$Q#%79m`SOhuMGdQr zyBJatuSyvagisWbAAFL7qu0wA%kWGU)yn)t5LQy@{v2;+Cg&PRYCMJvfr-?Vl0190 zLv#HT-kIkDdNNHcB@<^LWx-iYXt?3;7}|-&e(@XfL=c3ABE;s>DLTHrk4r)(t^V3F z0vn4qN$Yc>tYf#LW)Y2zrLWJwUAN%37sQWbk$u?$cHRd?QD_lTh}L4k4$DL&ByLjz z^BX=?u&ATP@vZX3a*uF6P39Zc3LFgp)8s-OZRGFF)IDVt$Xmp~!dh1>wl~;HuFr2% z0#?w-Qs0xkOC@_rM8HTj)p$o`vUAV9%^X3hX`W2T&%!Q1s%3?DO|E0UN1FN}J9X!@ z$2eZgBpgYWn2DG%G?A6NbfVjGb>((|^X0KpwPc~NM20}_S0n4x5l*cV($LE@1akC7 z9gmZjlovSIif%fbfU9X}nM_T@!ljM87hLd59pkKii*mx2Ct7&Cjf$@glM50-d zbx|w{={k4ABK#lxh9LLWL;lc6Gx5t11FN`}Q6YDlzv-h!p?V?NZ}1w`5*DFZPFez! zX4f{cNdu}%V64=Jp67)B>b84*g%oiQxZ`$NK-&RSnym0y?}hUTsM}jtF`< zsrSxbvZ(@${$fB z{#GgEnCd0-Z=Pr=CynR{6CP{8WGY(#c>Pm4T&gIffvUIJAtpAqZ7*DnM0$6@PoMKAkSP~mAdJ41iu*hYZzXETd%Ls_Kom{J>4H+^a8Ezq)M?yARrZ{ z(wSuGriW;aaL=U@k(g(qD6xj)wN}TP16uQsTLPzcSSAQa<<_M~((r0#JmX1dd+YjK zh}$`uU<>s8`psTamPsM^vt4o`!2oxy3MMVG5-U(WDTk1Wd8j?d1ny()TA{vHHlXPDG{HH5&-gQBd$d4UoZ?+GyoO2r(TcbT#Bv zjn!b0;U?;@S1B>2!TYR23pY~#XbbC8H&T)=i-GEx5f2L=CyEDaJKQqH8z{?dV@lfo zL;3F#jW}2t3|GYzq>~FW+}@fF9m}#_0A<<#gyDrcGlbH{nJ;N9w4T9IQto19B*d>a z+Hv9?QgSksS%{>@3CWo#Muzy~y6O1-iWew8A5QB#zZ3=n{BgLzDV`J_Mg%t&;)n}g zKbOe3(QaufzmSl&j!u+qHe$MX;=WJ#fN7a}LA+Ls4gW{3!wRNL4W);%F=0r|-zCDP zhFuD2=3D&f%3jgWkcA?1=$`$S#=BqH`d>5P=5^%y_L9e{`3HJXh6&aH(A42SEq)D` z%Jx`?cb(#|ZllORlka5yS?e;&pumJ9^9->^si`{s(tldJbgV8^`2RIU{Qpv|)5Le4 z{O`pM4;gYAQ`UR$RMba2XHm+f<6vIEINLr00Be#_i+c3`#GDaAvKn$;oNu%|2NkwM z1r^Bwg0+4)6*hzz)2RZI9t##wjf9(0q;CUWpU_oOl0PRLN0X*rS^VvcC4hHU%}So! z{(Ar6CJCE==`urXTKCk$AX`@URoql8|_qLVs!)4!<-Q z-p>>ctwDT$pDb2aS|V4x4S!Ke)hcoD+Zb5laW6TK@U%bN4&gH-E`{PN6j0uZA4^GJBwnddAw>otq8pIh;7y-|DB_EnCwf#c$Ua2jc3t{7z9} zQa_q^w@1U0HX9-L*{lZKKd832fvBNF$#N0&SP%nx2(IP;@5}9c&qcy+m5gEZujcq5 z=<^KZq0RRr41_>oOyVVsF%C&I3rZA6S723O(zai3%Te_J92_3XQkg+TMLYC*Y~OT{ z-zKY-FE(|Aq*VxM^mM?_0NQ5aYNBa*2%Z*N4+TXPaT*dAkTVGXSl~uL_RQ$0wnLq1dDa8>L zZa%HGT*eW!UsGbw7xqw>(~~m$#vrCjuG`6>x*Ps0mBI6JXCiLF7PkS~qKuZxe;IzU z?m+vN%-d{3a}EXr7#LWZypF1|;$|n5CRG>#SU7t>qXTEm@ABo+Yd*@GYl9^{l(dxW zM=Y%a5G&>#OWI1YONpj994d`kq61VpP&u7rk_fc?nj2hH>F3l;WLlFr-ssdWsGiIGZ6Oa< zG%V%p5NS%md!f)4B<_~@5RR7_`KtwIfSY^j8H`SA)I!*ih>&(rWILs7-w;{5G5$uR zihHWr+So#!H_orO1~Y`{S^dMyJwpws`jZnwe~sFK9#q&1@(}paQHMIiU5D~Lj)#Nr zcY7A}<#GnH4$85Wq!NVdG6K%f6QFB zhlTQ5#Ei6jDr@>1{y>rzm9yhXP#~!{)tIDL4$zjM77-h9m6x3>6npRLLsy0fSdOCc1#_-I(S-P3Y^` z5gY9Ipk2r3kfS=vLHmdY(Lj9Q`~dqmivPRa{dXM`t7Xl6hWN#9 z-7-aWb*>4WYD>3OPo;^NEPx%^K;#E7$|zre%wD)3i&?Ltq*9M#XN!=Uw%eOH)hTxm zkK$C(jhz(iH;0X?cKU$7_po>i9F`kB+-E7{zNX6ScnMWiQ3f!ploBwrY1fSf$R5Bd(_!ZMhlc0*GX|>3^6Ru zHtSpSDeyK*|9)|Grndflk@sp)F;y}xV=3bh(a!F#wMA7OFLmQ!ysQnv)5FphAvsA& zDn>?G78+)PB3}h$pSGlK56c5u|8nO?>Inp;ugUkW=CvatZ> z7nU}~!SI9ib~rO0Xf9El6_vb6hhv$@+x4;pTxltPk{rQGvj)w+@P=uV+xuUn*nYZ~ zSB|q$so`niBjRf9 zk=*@Fl&jZ)dwvf~BkO%b#qB3 z)9#Ufu=+f@gk)H!DrgxN;-}8U{PdbXaVTe0nH^pUuvee| z{%snof6s2%921w*GW(lSR;edI5}0HG<1x&-_BEe&=(hU{Oz2cGE`g-k(yWeeeg8Nv zNXc8zUy4;r(RB&0VpsUM<|wM2x|h9w#clgy6KcdaBheC@A1<^(l2JwpU#fwDvELbY zEFOq#eoVdB(gKY@6&!LYjb?nN;``x%ngBW5hg>bP(62qPihC@+`w%4KcF2G z3IQr9#~vP@mNqqYodZ})8DOI0>At}#YirB1sex8X^pySa@BFaiR09QCQoZv>^1I?H z4H`l+(yR7LEh}`JT{&`^?U||6O-NCG*>Ks-JDE*1Q!;4VO1xzqS_@ERH|)-)1l(;1 z<7g>SjF|3Mi&cJX2x-2>3CDxUXuacrRrBeBEUyPJDh@BOY_U5`V8SbfuQL)o#g3Jn zCrM<_=xDymL|Y0Ia-5P+ViIPGs~iUA+W*TEG%;uFL9Da;FOD}2Eg2_s#Nvv6zZZ`8^XKYh&U{;2^F58YVjlFHxU{6?^LUIaEat2D zQ(5l#qy~!yxfv)a4J!@0@?lpwj{#$9c@=zWE*Rb z7=z5nH@~V&ks`^KrP5Yjk~LyKk~C-x^?t>=+HCMP>i)R~Iv$o|Wvew;0+S}LCG>UNmz<~{0O&aTi!>3QBO;vf`bRkI(E_1ClSu(te!W1ZlrB!)p74r=q%Q&;&uU!CM!Gkn? z&6N6jZRO$7Da?F)xJq`+E|0d7WXJR1m9ml-Nu-VTk}5N~JaAw)_&Xmden2+$^9~hN z)o~v`<5xdE+?7j`Kp$hml=Wx$?&~qP*RKgSe3?s1f4EZEV~x*vQ_lxM*f_}ux3hX6 zNz2e%3jMEv=&R9zI>w+I1vE+CG_%u44*T!Rik7mk!TZw|Hmbz&+gQ2JsmUBhj*hnU zSt`6PE2PuF0G#rfylIFJ-)p}1bQ7A-$G#=Af&ec8ywf-yhjE!{F);tD$(*4@>)hem zY_?m07OTLfhmkpLjCnArcw;sn$+YE5XBN@UK0XHWYaV}=?UDE^^^%&yRRBc@Ezq~) zuI^+=EK@F=w<2N+;Mq`0`}Y0o(ex%@54~hRSh=!(C)jM4{&e+g*8|JUkSF`F(UrLP z-C+f3+p`4Zr6p*;n?&dGe0{yYYQ{s`?ZNtC{cg(qUAO$wElTy);CO015eczYVu8Aj zS7XiGZ!oaEqxkxIkY#kH{2RAK!)K`UAT3T1*PaAM& zT-9qGd7T!)__>mcHY6)sqGjuA#slZ;Yd*NG=<3>E;*fKu@?M*riuqN7wnn15sVNm4 z<50vGYC!hVra-tqhjp_db?mj-uq=p)#;_0V`q#djX{ewKNr=+Ct? zMF!!6sz!WRF$1x6V6c<_oq~`;Whipw4@9M{zVRc+J_#X#=NdtIMvax2s zqZ1RQot5Fp})t7b#Z55up^ zXH3USE|CyMD!`HJuejP>06Blo`fs!KpmSo7i}Ic=`4&i6P#e-&`-L)a&yn89)7x4CF|u zs@=?#Y*4iFQKdAv{Sma;!ZM9;ms?JYg?6t!kc2gjw7*>f6Cj-i!wKZFmOiW=`d+oL zNYt!uL6YNo9j)H@YJhmcsz584DEa6IM&!HHI=dO8{D45#zy5bMlH+6vq~OFJPn4)s zT1Ocr!`t^5r|)gM$Yx|z7nzY!V>L3p3M;x`OB?ohCTuxq!F^T-vT28Iw{zxuLDa5h z@w|U=-gY*Ap=^7Yo6hbZq}`pvVlA>dz>`zYn!X3h9@kqhu4E0$CU=2ld%Y_ANzGn3TvRS zt2owzO_nadq^dYYfkDbgPto%Xkz~5DNx4i5Ho->b;U6kF9T_^6o4dpni}Q1#4$CF8 zwg&U1C9R3DjEIgGZdVr%Oi|HTzf);RvJjP&w`An!8?|@%)~cjzeU-x6ysOpv1Z~@H z-FXdXYVvbxxV?&fmC|%Bvu=`1e=KpFAo3lS=}9J!N{-FXx!NRa9Y%<3_*-EdHGNbE zrH42ZG2EJ}Fv0nO-9aM;V=gvw`)OY;W9Y$9F2It)x*PoLzq!4yVdpK({B8V@X114? z@w;I~+xcCKGq^!fsm!R?1L`I?fEnh^>@8ue{SE#CICN3;dooWf?dw-5L5Ia*m>2#$ zwC&Vtl5*PS{4EEWtrS9tzy@0QRoq#bD#BOJ>u`m{_D1OvIP}K>;B!{GJLj+-aoQR< zZ}S#Sk%fqk0*4SM3Oz!K=+zFN*@8yoyL4(zom2ayo6Bt-FBOa`?4ajE z!N4mUa$@b7Z9?N0Jg3*MX%E_R53HPOMCMpZoedLAr7N<8{6uAkBJ8V|r?1lNqKC{f zof1vVNl`>ZlDZ>jy6Q-0xw-jLQj_DWIn8)_m_uzzS=4_mlS{K^3I}32iTJ_q7xvMQpp)SNE(1;?h={B z>qBS>E8~}=6*JMw!-hFxz3uhGbCnRugy?39`{6;OO+pyB%K~E)*rp#5p0Ka_TnrO(6~eD(3G4x?+HRPqd4??T z#FnMH=^medQ1t|;(vbG@V`G59!VYIx(|WB?2)Fegeyf>GDb*Xipo6SnSyNN->h1a# z7wS5h&`|%LrJmZ}nsLX4Wf``#G8Tyh1>uz%q$Q`7%2ZKD(>~rppVe1JMq2U@2OpUd zI1mi%M}|CsGzqhtgd$=q3eQ(0KJ6gnT~lU)K|(>!6DS~G+}5|fs~R}pgR1LDE5a

DRb_+dv!qJM~ffVA38tJ4_9tDjs8SXJN6)=q4Rh>2@0 zkJUa@epFX?I=}3Iqo!vAdDqZLB*0Wmw7q?y(-KhSaC&_`{P}ixVSc55k7HSpNgL}s zJ2OG_hA$Ps^UUlpMgW%Qp-WRM)_{eycvwizhPd-CV>44ljjf4iHn=w(@0Vb(hy6K9Vn(*nwg)YW?s;X5xa{Z|{@5LzDmw9NogrowEa84=nPHY$C+4E`A z)Cl8l>rJ&O?fy8FbO10AuxMG?*ak6lPwX7~+{9p7%2UG7LxXEe%HPzukiMV%x=|Uw%w>wG%nFFHoi!_WRn-1 zlziIr@!xtwy}5-SSSX^`pYg4tqJ#eQq6oifzzCcdBwO|#dKTFQ+c{=WPdk>Wkd3S? zf{cD63nwYyV|@(xEj5xdx~5!K8u!~y=;tqDM$%dqmeBz)5zGp~y~Ad;UYd)Bh3=cJ zR5>m7=G%J?;ZpFC?>^wwR!(ByfBizq7pk~DLVzA+voJq+)I=VAJNS)-qpYMPv)U$g zc-ZO+?3yKLi6HPh4aV4uty$vC$gwQUJ%Z@_Rh}_^9RIT+OLy7g$-Le5q&aS!PWnT; z&G{y4N0bFGdG&~W?E06G8Efc=!26JsyaeKLzZCvkkdY3mzY(q^T8IMxCVVXHqX0*V zT3Che5@-T8fyFvEk`KLR7N^`WT}x&Sxd{?(tDb-vdA)`}K0@X%rdQ#0XtWDm)?9W% z_OwYVT6`s;xw#ZefDRi6yYklBU_B7?lhC>Li|Wl^r+y0X(ggUkG+3z=RkkMP>*l_< z6RZu?rj)Lz$OPE2l@7_mteZhb)$*}kvzb6?DIIpZ6`27f=UM6uUo_n?+GnbVL}~xi_$4Ky3qqNr8ET?F=nJes)oa zrmzwl_>G;72eF&Adhyq&?z-M>o=OzZ{*8spbSd=`>pROaKyrV7Hz^}y*=w?%nQEe*g^jJGu{Cogchu!% zHm_=b29ism(i4U2ZLNORq6dnHAvd4HrC~;+xVAQUc8iW}VuE`rEQlpCR1yOdj2;mh zu%A~XAe|}Vz{@Bb(b(jr)#Jxiw?_I~nk|#Zfk0L^!aLu13kK1!aB&q?cBWp{6S(%9 z8qCn+p=o?HP?7avP1`Nq+1-6Ct;o6!6%oN#Qi@?^W2eEZ#aSpfSG0f@<9s4Jod9wk z2rZ;|Y7w%`#!EYiMtygi-ZnRWMkDzh$rCSGDDo%XR#Ejs^W1=kA>LLYk7E4Xv7Q#F z01shCyR{l5#1LY6N*!AYT#T#7z z+{rPJ_EBr&d(mX$?rhI`;pCYL?>wbXkARgsA>{`T^?>>7leT^^(0+N?LyUc5^2;g% z%CkcfwhSWWnalhQDzX^W{v16A&(HWOda<*b(vso*%{H8PJAAa)XdWlNzw#Ox1@soV z-h2KW79uMp(!yY$pd&zs#WRpZUYeg4`%~S26c|((m_sceBrP|dPHS`su#iTlqVX`0 zpL3kCGu4%RMsdHHlIoUy_am}hQdB?-F}+`3?+Zm<^eF+F^vWTBo)lIu()gSU+ZDWp zW8Ezzi9hi~aopBO2n(X0JW1eF1^A*^(WnU9(UQfR4{;mFAiY`lCA3jOz9tg`LPa}gsxHDgtMUqFJ_i=(8e>DzhduPFG zCbTE+d$_Os7ZhGPR{TGME`Kr4vb?_#FixSLyp0pmqnoem?D@p;8^0PR2MHLK6Xv}( zCdOM|X33QwwhH(mQA!j^J2o@%`g)CHsV*ge3+FD-X5@pXv-$Jl8Vup7Qoo(p^vTB& zTvAlFj5OaQK3mFR4DaQi3cR!=GlhIX zZevR1I96Bkvw@ZLeNyh+&HnxU5!47~Jt)f0zgAG{KPR03@<&}`kDpjj9~qA(dpexr z^y8hC9a|b>@gtatA1ccO*7s=_0OD&-yf&PrkFc(nMgm0x)gJ2#8ifR5X>qLW+U0fa&lAgmFE2P)Y8i7jQK`@Dxhe(dr&An$1oO<`lmgBw5pkna zuZ<}!t>XVw_UCP_u@}jeBmYAZ|NjNo!@D(#g?-w+{)-z{b!%+5F|Wf#GK0k2{(_IE zaVJyG(u1(u!h*RLr2^@eR5yl%|AG4x5fI=pC+dauT;uS*IwdZdmvYUau_}~nWwt{9`INqPt%HV7M5Wl6=qek3r`h}4|AYiUZI5#4-O_CR4Z3xAYduQW9~DF zWF82ahmG2(-8ZK3oJyGpQY()h*+!$SL-@n9T!T0qm`vdNRgAPOgc!{vE1e4c-Cyvu zaefk}dLzSi4zu5hKG3`srs(5lSWLbAI1+e-DUia1h05Mr)>K74;=+SP2uegN@(Z;4 zhpw}+MwAmZA8&|oCgq|fDInpExW84_)Y0*hAK#NcyvGC1yd~rI?2Mq1b#nURE*i0) z=Py?L50UlT=Kc#rtEf5RMB0AkUEIoy%9e@24S*h-e#}8mqG-LrE&W1aYYG@Ci~ol` z^T$apO;Al}m>YPldgzF9f--<4G-(9kQlYVHWJTW;w%Y$!69M@gSR|*U=;p@f;o*^4 zCgS`D@!uH*tH|Htx*c=d1i{nUVQe!TQ( z3U2g?>jFLoh1FH1{}A$QA(D(1FES(%VYl6TjL6Z6qN4+~qk+8RP0Z?Q*fQZj9P_0; zDp8gtLqM3szq31Kl%?i`pLiMh&_b*MgUx4V>tYGD&rv;=10ydPX&C`ArPkdAB-UMd zmiq<+M|XkI9L6u`et~X6c{7~MtA8S{41&I}8oK`HG)cuzA(j5P^|+sZ=swGA?6+ia zn}sVbiH8C(Fkw^TvLrNY$odmS^6PR=d9dZrwg{&YTUhagqs6@FkjBzOxmB~69_UelNfqnqKougB){UaRll;qw`1rSI(I-Mo8n@@t0)fIiU@4ji z8H{L`Z$1kWGkx072V8;mUJt5I-F+GO&$pKw-=RFD_TnMlVR3oaM^dVL5uWTu!+*|K zlt2LqW?r(-wFI^CzHr~|do^uy7WODlAYhQi33&tam zrXodoBqt5MmDrQW@48op)q_#h;sn*oMJHuBZKN7j;UTc1<~a2R-Z6chx; zG|4qr_905mr5B8KSQiXcnh|y~h)vCaC#*>t#M9&yqlr)=;YxwP-J(?G9~V;H0#FsJ zG>^+kw>$8R!?H~?`(*dj8?ENC!CxeoAwHOyG&y>0XFP!|p7fMuGAt1lNFi?p%Hzay zyi_v>6F>KRc5Sc&1)39p_3XlC$SkVIWP%!cLQMebVThv z74)i>t-W)w59jArLFD6m-7ddyJPdt*GyL%WtL;(}q149hndQ`HY`?2_shxc_5F6{Gb>Fe)|8k%XU9O1 zU#oYQzx{e0Kg(T_7z~yH~TVjg#sNoj}XI18!s{}@$ zj%bMEl46)Xdz@HZ#^gM#NK0(113=!S3iC|ALCRkNa=c5@%WJ#9CQA|WCDDUZ#l(~N zq|c?!Vi9=g&F6;W#ri_^#Z@Hb%nheDxR=$!(c!UCZ@)44>3_If_>*Supqv~tT<2%r zD8#Wn&D`Dhbk-9g;h=0j_QGhu%>1A8WG-1R{bsS=Dkgf)o2B?MF${F_=>?*Io+G1Y79L3}p(S4kx}? zs-Uclc?YxSbi+n1B~=$RiFr%T_UH1DW0B}imm_oJS?)Tl9+r7-hK-{5kr@J2kQ&-R zA_G9MzSWUq)zbR1`ceSNoWp*hDRPJ>*7^KHGdZZ$+Z+GYi-_JL&ygTB%KG%uK-@ue zAPi;tY~(&Dma5!(FzSBT=X~oq#oBH7KqQxkuAs{Uy16zCWWveoZv`rP4Kx5--%OS0 zQSV3X8;;AG@4LK&KNtwR(C#PX^_R^0yCT|Ve@wp|Y&II6df}B2+ozbO4ie2!5y@-Y z4ZX3W-hbH9<)kuH)pSJOj#S(4jK*xUflyeLv|Rbim)0Fk*#m66Xw4shd`Ax@wv z@hpSMBbZ_+JAs-uiB460fbFaYR@iqxBH?yiaJKpK{3FuwvIf%*Ho`NT3+b67l}RkqgH(k`#*Uc{+HKr;a9NRzaUK{fzyQC4PM)8qrVzAPuzKXZ9*ySF6hi&e@OFEt9 z{d)dg#_XTgFRImH7{t7lKho=d50Gl}W!F8lA<5!MkK1MG@}&OyO`oZusZz~Iqpe4T zmde*@MoP~X$y42)?((;VFBgC4!9pnE3QhOnUD|K%`ug;`_XDqW1VS*?dm?M{ywKls zs9)y%)>nALt+qv7Ay4rs9M9V}rC&$AXq)^r}Hpip~Yo;CJ0tk{zNR%whOBg$}iWe z??N5nSC5CIMVjTdF?@jwy5Bv8JP)C?hxgIe??y8tX*JayK18*hmPxoApTG1|;sR&J zH{+?WjB^IROm4rOC0H2{gqG^62ngP%pX8ZBNQ1;)tq_BiG%ZYK*W$<5@Yj&vwwAOGbgA;@LK5W0gK^voR833gh! zJ(jpArd}PLcZ3Kjdp;R%CTy@!>PTUXd3l4m>yRLE~moB2uK$s7_ft zQ`-Zs|B;jN&H(Oe-?{O}fp{DeEa>>saDK(>>ix0zxZoK^T(@~J zbhCP&YD0ZSVg?gCk0nddB1}t|N>`2+6onOG@y1V!YHjnCNMAhroP`pP8F@>}N)s1& zp*QQ6P-znd!JccnlvDoJ&gGO@nig9W!&Oh8h{ogo{R4K#mSTHG&B)=2NQ@vEf@!A0 z0Pvbu>Z=N-DHh8r9>M@G`gP7EypDzKV}iaGUEGO3ij>0SB<~-|_aq4P4FO$z{ z6gyypaP96RR&?sqd=z`3XFoe<;8WHl`TKAws!ny-t~(oPqYTfAhp)UV3O9`(yuJ(F zxD?bF4J1*D(83`8vG)}uF~*V6m7@%1><|J@a^>H{Q+MCJ@jv+`TY2dIn76IkZ$>@Q zBHo)&&=y9`-kn0t*&TKce6|kkam2pyv?BR}NB4eaYj=Hv9ttrQcRlyIp9_Fa$WucB z35(kIqmYL${BbI^qOMvf3i8H#Ys5iYe(LLExFmlsXb3c5&y;En6eF4p&b3V}NQu&N z(Lxulk5KzUk13FK2h>~-2CasrMmcpN2G*jtQuRqz6c9xooB7YcRuRXP3fgAN4@+Jlwmm?8Bl6T6x? zPW10~i(c>3GC#z`i{qr>v<@R6*4-s(} z%`o=C&oI7vRo#9X4k+VS7>}8&_Y7{S8n#kpZNPPP2-fc$ z?tAZC?t2FY@S)pMk^Vseyp$>SULX8e?{%AD-`bQn+GuO?JDg_6q`{6Rcd!J-&RksA zQ#N*lURMhM!S`lV#*Hy?s+@mv6WrZBK+vGU>BcPtmjI0h4-nkl-GVzE zAh^3WeGk8X)lAK;TQxOb<^vSca(bV=m+ZaXXRX#mdih*AE@?m}Y`Imsudy#6liWu$ z`IRDp+T78eY>i1wtFd1%rs}x!?lT9tTz#-r#91(`+rynq&fhpTZveF^Pudx#uQx;A zbZo;#;E1Hn)m%cf+B~idMt$?FkL;#xekFJv& z1^!8%AkUR_V)X*#c>BZxh6CsR;bJY(l#jQB;2XZ!)5jS87b71PB37Hy>2BaZTAt3> zRfSz}p!aKI;1l4%sQ*3qT=jA9Y_%6FkUO7JX;mlr@j~_Sc7X3})$}nd-LWZ?a@C6q z`g8|l296H(>BExT9DKq+$KX^{ipCVNHE)7>{|6aIf18)fJ`etH0eOz52Koe=n#hxa zsE{|2A>SiJ%<;JUidLs1vCb0mB2#U)LSmcI%JWEDt8#Xi`~a`WY`1bW3e6&*7cMyOIi*kvFFQ!n`qv z%oRpIzLb`r7Dy{$$Ue76Y?^L#+ox;w-=+iGj2qtl$@p;FyAqnAuKjg)o07ONAZdCi z%~zR7fF_kFnTX8TcJg5F*Z8J~Az@aga7jG_V(8_)@^E&HPID7E+YgG{)Ad(@ZW_Hy z>9$UG<|oH(km88s?KW<{8~lmZ*Jg5BCE?8jPlIg!AihW+JAs?w(#Gxm5w8d4V60e? z&I1LoIjNb~`A`Qqzau$$P$~>8sA0m)@aK<)aL2?LkGl4%S~72T9kz4&N*1gx_*#HuJ-1MeL9+7IoCt# z54rGyqe6#JE7By?ckul#rd#gjbK8DBQfuK*DmWk5>9n;b`{)L+vxg`<-MoD(QkOpG zg_lVG+AQAcfxv&W!Sg9RrOhSdp}xUo?4f*P%8XnXUeR%p*wL=!>v{jTk{)4lxP;+p zY{JPqZnl^@<0{7UT#VA^1IBP3GyI}##ckrOB)?Ztojqq7PbgX) z3Gq)y7D*Clkt-RT-y<)6{mSZmS+h2DXU^j(0>?eT|Jhr5N6oA@Obu~pnRa?mAlEZ| zCsi0?nug4&ebpUV;|}X++pAinD!7;6M4ITh5Qq5!-I-vXY zWC8t{+^|b*0Bb!vPr)mv6Tv-IrW?ttUZfIo`+*B7!~*O0{fRO7hN0m+I2-n!Yjqe) z?1{Vq3gc{1?x}dEj;<=-{U)*TJaPVftipIeSM(mc+;6_+ZWR7Nxh7imZFfrB{^0v2 zLYSEuBvX%OV#k;Ap4;?p=D~Y;uPzBu(n{6rK1$=dd{tq!{+DUAWK`zzzL&RaNHGCJ zjk7tjyW7^c@PbpduJCSZbxJP z!}zAFDU8hY?o`_dw&v-2G~Y2eu=8@^ej$%}ZAu&w`xiw5{^1eZ+3sfKqBdCYs~BQ_=Oyl zrv*$_Cp=^?$W&}@T-&e5`-@I&w}yi6N3u5oVZ(oKepc+{7dnxl-&tNnu?2}{>3yMS zpjS<N3On={@*(t3W5B z*W8|ynL~n*=uMxex^eBG*6KyD&5~5BFOKU$voHTJn}EQ3iNAuYwY3d@=B75BTB;(9 zvBnM$z9)_vg@wfNs{~!gsHCN*Ew)rdlnEuf&gY5!{lX@!sCp%Iw=zSb{(vMh zsL$3WM5iC@N_?D9ssC*{zMXLvmCYG!pt(-A#o=Z7v>FbxYC?HopkHOnCPeUNW?P86 z!f+sg?t{0>os5Sx4Q8o}js4QlcXHPCeS^YmE|Ml|z7Hl#p&vS9JgU9Ve3~ytQm>Nb zlNy;egp#WoMeO@?oIemjK&4}*r?a&mRi>Z5}u1Cc8t%7rhyFX`N_NXm*gfO{U za{yTiBiwhSb{060d0n*fx-Ein)pkG({vk!HI(+2Zg2R)~i#!Frz?tE&7yWygJOu5xHQmpOEh3Fbkv>Iw$4qezq)3mN^MJ5&=ZXp!1 z#TVdF>i7o(@7zxSh7C;5<(upT?@&F3l} zGtK@qJLqP_qU0^Y_(P~yf>!r z@wgs(Hf{QtobGtX(sA2Y(Fl^}GIq@PtV*(c`~~|5Q$T2pO-5GM*AfL+rf&%4{;gEu zkFDlmp&PUypIyWdHAch`#HQCf58CsKq#|D4p-C+iG9ZSd`rzp~<#1(K5GY$F>9~@V{L+Gv!qHG zhfiy~7IN};X|bmGxD;EXvAml-%z08Dn1MU~85QH{DnBfNIwO@XX z-URa6X0v`}Fe)6hN7&>6Y$_JL7Qdx@Q7b4I9ZOA@JbCB^ed67$&e(}X3d zz5ePV5?Nh6-L(C?!NuDhL6<4%+*vqSZc<6q?>PK!pV4@FzHm!UBQjGN#YDHj+cGS7=G7UQf$bE1$Z($3F=D@^K`Q|! zE>dH@vCYv?SN<>SM&liiN8k+$%5CzR4~(^)d!D~vFNsqIs&Kwt1fM=0H0@PaI8SfQyH0PJZWfMo^t0&trKhubk?LZLtWMy?jcCnI7>Mzz$pKF*bT;P z@c(t@ylTEZ;l*IuvEk$Ay*S?}P;->d3in@ms%N|C6R0WX5jOgsD!g6>eyFZEy%;Iq z*&eCbNd~@lQovEMV_Cz4Mk%#N?bPECSrQhtkB#*xHB^KXAYa*0opRaFZY)-g|k)D&IJw0ysaufYMME3ti@yGug^IHDs7 zN2~;@*}aWvXx}*Bqxbw{OvJ;e_)9(qLNuTL4gx*$*hSPTmItdQ=O3K)C#eQ$Wvu_opElB#d2 zs*(HK6caFBkt#FY#4e@XW3t|xE$P>9JZt=1k+2*B%*^!>wHTB^9+mw=3>sPzct4Xm z*~yx7kL(vAQY2wwYzhBj91eK{_U+yyi6ctBFUCty>jEU^#jppr)gsYR2B;seQ`_#l zw@T&tor6iYHh?g{VC8W2>y56MC0z7&xbQRsc5&mx`KN(mpfC9+CLt)U@}XaDwKc%J*12k72g4WooanE5Qcmp;gn zY2J|cG1&LsTk}7I9*Oi4{iAmYK6ggrFyGfJjH%PV19&!GRq1$|^v?JHBxd4G^dC^l z4nYWk5 zI&S=)ob*K=mO#6X%RT3)C;vdu$CnMO4GA*3=8QO&Z#X`WD!qMMU$cED+gPEZ&bjY4 zPC^&w<;5wLZ$+{b%NtSV_04p(Cgch$)6K)}Pvf4n-wg)5ykF7tYD2uk#}vMX-j`^_ z0h(eL1k~Lyoc6)`e#Xgb6kd@tez>2T$RvkFs>_m>0%x5>m?fUmYR`uM>PTXG+TNi} z-qV(Kbx&8w1lZgCn<6SDGpAPT%&Q|F2qoRaO~NJGiA_SBr*RtQM^{Y`!^6(apkdxrW8IUAD$hce2UX(coUU+J z9h>-A$ZHH!H8>+Wc^}xI8)k28Q^LYbSMC`c+m9w5uj6GjR5IM&%fC-dTGh%}%QC^= z>ss#jVwI9nHtVk?F&Ap6tSZZRMZmy8zcZ+a5yE~A<;M>FI^7Fu-t)RM1)m5(H=Egf z)7ijV%iyQ`Z0C^;#w}O2^$SxkA?qlX{;$Sls_HyD_G?dTu1pKp$PG|u8orfBYsdRV zw%e|Xlg)^G0F2or)%}z*rA^dAT?JtGfe|yNMnYA8&N}q{we= z6ea7_9&rNuH~+XX2fdg+fhRya{z!m+h9n3RU^r{O@&Wlo6dA*LbjP-*8akqHFrCaM z;j82G{^uaar@JvD_=x|x8;FI{Ye2fy-9vuc>%GyNpWJLp>R++^Z}%$h?%14mKzwV% z6}qUY9B{-ne;J-a1Uw?(n6oVeqfkKD{eflWG|%*+X8CDQwFBYfzgI0ie|(aI-CZTEf*Olqiq-`uGT95cE`DP284}>h{PG{gXc-05u#rlZovRAF$@uNZq!lI{LBdLaF zx5kvA^1poWFJ#}C`%pxzF&ekIOnLJt8GF5&f0{5%RnH7QeO;Wz+uSB>2k4RZ2Q|Ll zukl5gq2;d*7Zxb$tr+yS-d#Y9E!HXaVb7p2lbR{?t}+QW?_<`ek8p*QyT z_mAcBZ~y%7MMgfI0e%wbtw}xQ%WxT3bO*!gQXpn{jB2FfM31Y8!Z>7Lfzm(zk(i+C zqO>dK8#{nbO_dxLY0Sch&)q|WE;g629Xke+65s8ikAD0cASC~OzVG_=6eq`vr0^rm z-3@w7#HSDyX}d$@$mYI^P`EjP_xf6Cgf4nxDVP z-n?(XrekxvC1vx5OhJM#$uUAR75;u>Uk^Zd9kYpTGsYUX{e)NdnA~v=MDq=6;uSlvZ9J4@ zOKKy3%Ibmer-5H=e{M&b>pOmbz>+9DJ?R(t>0(?T*s$s26_Y(^+|x-_lNn4hdbP}e zsWc+tg*tIyX{rkh9!l8$=Vis%({z7kOV`%ay}U3reBPL2uIIw5Of>)`G+0|ZPA-(O zp4}0)(ZGzbm4iLqzWwXD`i$Tgqvh@ZRJsqaQXw(9EXw{6l=1KuW~MFA6Y^6kg*(3e zWoVnzC#Fg2IR~Otk#z6Ni3aB*zNc}`2Zg4MeZ@vElQ+ZUt*|jabX8(K?>A9df)PX0 zh3wwL{B|SC`GX#kW3wQb8KbIFzeqK>_Jbovx<>BsNRgj9$tP9|U1! zB8T99%c8)4mr~8a)%a+v`*l_z@fRmbX}>_yVW@7-{p!`NvLw3jge3Ag5vLD6LBE!| z+il70ypkC{D`R1`584myA6iM<1h25)KJ#^IE%x;4iv{)*NCuM(yeRstN3BLZ%L~pk z2`%0b{uG|5h!GtA5ct)owKf_PWeCFmJsy6tiTN-(i~L?uy&N=iAQYc;u#psH@kHme z(+qD)h_uEk`r|B5>GE@LC;Fl~mTAJJ3cVEKy9n~SDX1aF^YLv~ENNfo0*b@h;zd24 zt20ZB{r2--XC0`sd%m}DY>dG(g;AdGDD{s<{4~O0`ysO!V>+CBzv{t9@U2?BU$Fr1 zMWUMW%O5B0sV;nep=q)0NHlDymXzQR`Fv4+vvdz2V_R9)>E(TQQMbkY(s@wJ^P7CR z*_XtEeA;Xbk)2_GtfBnW&DJqqIpH4{)TD`)^w#X(4wX_5j=&zbBWHxQ5E^ydI+c!@ z=sKQcF?c{a3f4tPbg_EC*yc>#&1q^(nwHofcqCY>Tg3JW6D;vumWbk_W!#Lzf^E(EHl$J9|2dvM1$a`7nMt@dQIAfezdD)|l*iCVg_z6&&6 zPxC)mvOEi7I}^jJ>5q%-d9S9mBG3LGI$7GaAiyqq{*bl* zCl;CWOin*#-umCO%#hP;AxJC5L!t;pxF~D5|C6(c?c)6TW9QD}UVuI}yYm_ikMq;v z&gV*7cBCC*{*%s*hh;H%=QFRVR&%lxokv3(wTm@iAPpC>;57ip(0YF) zHh0n}#{|e-KXb}2)#E`dV?tg({frsjf|+*Y|pcN;K}85?baVf5qQu{q)}}*CbJ|Y2odn*3=O?|VjOu2ifh{P zg*KxQm%9A5Sd5&>2_q)D1;aa(r$0Ga5C|RIsA+PAESX8VaNSH0k9N9~-;xDTn%rN= z;yYNLVX#flO-3NtmAr?DIni$w&`}|`c<=$zq91@dgevs&%0fIdzr)+EPq-7L;1I?5 zR|+jR+||2HDFBuLjfq%aC~A6VoGO7poJm?&H_1B7Py&GOWbJT(ZFn$tCJGyW;i`Ju zuT^IjjOY?X_KBm>$54)CK&A&rqW?^jTJN1}|6ZDQc34RVuH0OkcNprLtJ!zTWuyE`5weRYaDqYdzuXR2LPhm zRZ*^BIs-I^_&pN+k(7S}wcYZAPL1t_j@3k3e~3#SY~JVFX8E%_AYwS&1}TVJ>++=^ zcvM=g(lrz0YKCgcdIgt>YT{2^Km=ReK&6;AMK8K`Sm667c~n3XVcz}sx^YtW0x8p83- zLoSs(zPHw!g@PKk>Bq;60GFhPosKXAgi>RzWM-;~F``p`;iSSZH-reWn4FvIQXJ9I z&{rQ8u+AC>2HVEY(Q@QEv$0%J(BT3QjWHGgl1}Dv(M|4Wep8zV!5MHRbJ#lNiyv*} zId-yJ;ug7zCKnb)0Tu?HM4TKw(8s}C&Qf3}yC%SOTre~AVn-w`# zo#Ar-yvro&Bw+nQlRg>{1K~%|CficrYE0KF8_E)TH#KE=UL%eR9k_+zl$mesUmY&Z z25j;J6T<8w+2L?;`5SO#GQb1y5*!9tJ$ShBBl~dB3!aT_@xcE%0f|^XkuCGDQafC# zNdaVPxgzTM)W6D0q!hZ2MWTBNUdha0(}}T#+tj8Irj-BN>tm~S0Ey`Q$*s*#6~T)B zt=|v$K=H=zG-qz}mB_H~eMqOK5KMjCD0R1qa1`9T^ zsmbYaAum+Tlsl@l8y-=xvHe2xLqSs{KViI_Ri|vR^Ea_3gx6d6%~k;bZU986IkmM! zA3jkBFeUbD3jIziDN)$>tvN41#+Ibap6x);>7l2bJF^;J|h~56c*%iB_x=W-0%=6(*9!nPylFBbL75B2@e5KknS8@1t#E<)jGc5lpk=~{d0alJaVrP z`0N1^!{L$(@CH+iDJ5fL@+Su@LMHa}!}uz*VN;k?w-YG<-=QZVAtlxpifU~o%K~qE^Exf| zr>fThve7ELF`s?U6FMTysgJ@s*d)GOA3Hf+<7<2G41U|0E5KD z%G{~>w~<1!G(12}Do^A!;ahg!eJMb9sQyvcns6^knV(Dsp{Ue_}TC{;o5e7rL8II{bsb>!ULMI{iAX3df@kg84tkQ@tM z7i*<$L8$nxW}Go4ugL+lqx>>_umCnGlhX745UuzGx!7>yn9Jp{ewLC`+kRKbxBq7P%O>{Esn1;s7wr*ZUPn z2CpZ5*3RV2Ob~+bM8WU;)TWvum+NltC<>7vK>cg5yku*8^wZ3V08pb^ciD0Y?2O)F zk{a~&vlvFuZOAb(v9MTOj~0(YM50?WGLZbXNV}4`A^ z3bFmQm z&J}M_=1(zzt1|qxT%QQgo3yl&s?D!_0DhO^QvJ|a1iQ-$<1@aC8}nloAPJAL;BtAi zIY0l3g7pDdru9d?F3)U{P+V01*P*xoED3;^0U!UW<>vhSeD=`M=JV~J{dQj#Hl{*A zNe`H4fCnT}Ws*C|2+YE`#KgSiNg(?LAWdL80mSkH4ZYNf+F}A*r<2cs^!o1(vG7D* z>4)!@5G}0YPEFhhDFC`sP}D$3jof2b0?g{k*;T+1F^E(V0mQdWe(bR^hu``w5kkk! zu|n_@Q4=rQm!KP7JXKnC1-w_`Oz#;HsE9B%3^b(FbKniOX};0U>u7-bS zbQ-}zgT}IU>?43+sL5u#VPt(Z`Ztk+`0YzG-&d-Agg0a#o zlPM}|heG@16_`i%LB55yf9B>?de(da_onXtO@jmgQXXhDxC`OHZkV!6T0?-4=NTq3 zxRm2t!Gn*@VXlV-+)e<&W@!zh=w8PyD3JDJV>jN)f6hiuOC+!$b|F=HcEkoEA%HCW z8Lnb^WkVauK5fnhrpIQswwZ3t5&ImH`(a&k_3a?#Wz3%|xfWGDrJ)dE`e} zG#w^f{3>CV^@d!1RuC1Qpj;JtP+S?&l1HPy-_}I(D~METK@WY0TS=s$KMp)?2D{X3 z{I{(U_-XN<%p--20+Z3a>CQ(9H0J4_j>{fEsMNW@K?7)}-{}-y0#fb-V4IOvlSroU z%x)O&>F4NJm@@wNai1jCowU9Zu=Q4B8N`{?{O8bE@3XY8afTdVenCbzdH z0Hr9HJtyXE-UrwK!t$|Eod`0|6Q_YLsZbK8#SYjuE0y%#NAH?cF4y-tYG|R9yai_L zZZ4Rv9(ovzVtaFPBU@;r4A{do-R_BAW6VVZ-`e|1g=S3+|RTw zlp1Ej46KemuX(WGjjlrSE37{>r(*W{sAzM%bNa$z|H90b6Ea~ zJz#Jp@}FFVdYIXtwaLD6k!au8x(3fUC3>b0OlOK3-wg!mI0khEu08D^&dEZ<(tEG#tO8cz8f6=?~%43cXm!0K%BnF-Y z&?>Cm#7tk~{wSH(ehH|L${bDS3f7;dH-n(aZ2NKcNr(Oq-rz4Z(h_zr7}P~Y2YALT z^DVm$hsnn#E{Le5MBzot+c|Y?Cvy6Bng$fI;6i5c2ht~>5?*lT&EG>RV zgh|Go4dnD5`+~!3s+DHbI)JtFxK)$L!EI{7Gn%k~^|PQ+r*gV5TNd<5wSe?n%($L& zI}hL$EL@(^D&G1)D7qm?QL5wgF%6|?EK7xvtd~=XdE_&|Zn9sjpN98!_>eOK0d#K_ zIbf{wt8+8XtIf^NkPRD-@+*G^0MI93AolBze^ye(0#rjFb}6X&Fuc}JKldBjUA~GH zMaB^ou_*(H>E(;2f9us`-HU)0D_uSSQ42K?hbJVwyXNNJXrchjuf_F&U53b80HpNv zu)t-%)QY9btJJh~zpa$sBM6zoA;Pp0(lM&o$n~vorREMZ4QCHV5;N@=ni8 z4M*)I5^?-aTLqDN-%b_*7F1%XezA4-Bq&>{fQgNz%fo?p-obk8e(Z3iF5Ug0fvVus z^(fQpH*YW7beNEVDPHSP<8vefgeGIn(do9fw$}GE5i?piXBg`tKY%xNkKVRSZ}mz)-Z_PNC;cnrx4!$(V`z6_Ol%)KD-#<6rhXM0}Aa zGq>Sm0&SH*+c-l`Z#e$xBj;Uc2e7fKwJ}SHyZ=ROe(Wr%J78jcpI_+n?HC4FRS*1g z4D?6;j=42eK;%-*Je}X#8nUq=(UDUa1faYW6u%djm*?lUMm@HY{fAjg@p>l?#OV>6 z1MD7`avjkqh|}Cd6BCxbrz8NniDr=eu~NAdP1rCy;idpI?0ZNK2O6`g`UC zA1fqC9Ec+aBcu?%0Y^DWDe)->;fVmvPGgTd>wq)YgK@f01u&uJ`c|e9vH*6CyTEjn z$Ben_Bf4RFM-w(=wv1?T2RmjfM#C5xgTJB8=07r zGICi=K*Ux3mii?CA_L~}Tf6YtxaE%lRE8Oxb`o+XX;UPVWtV$a$9K~@FFO#?UNmMwad{q$t_eZcPHfZBd@Yn&=cd1H$&6aI zn@yl?dihDHW1EeBq?z{1M9bI9shBhVVyIs^u|ja_{0fADRWy>-rflRhDS(U=h{U=O z%#!j$BrMpW<79!^^&idnIfS{zMsLOC-mH&1gw{$i>&A;9zP@nq~S>8W!^4>_<6Up2Q^{#`F z!bsPyf0K^7MVu+8Ae)=b6wgEYtBjgx0s4XQOXb#m^2BK3YWopcqa$bAGzx1@us3#!2?UMh)3b9_D?aw5?bxljn_1P$v0}S{}Ka<Xe<_`h3){y#YI|80`~e+5eXUtLH4 zPcP+^phkn+o&9_<%0fIqmkmIQ&(5wqosEga^pe5Q9(Ssf`w^z$48B%X!0hQw!p}_q z@4|b%v~y(SBBa)zPl7>vN6~nS`Od=dro`=LR)l%_wc2p34?5NMo1z=nRX7yG@{`k( z%G}A_+DO^YP3X9fuADD{=hHF?@`+7A9q*X3;fK0+x7Hn_bUb9I!>=9d=uH$PF)>g%RR!&v=0i7CS25Uh4PnM{->}Czl4d$WAA!5Ktsx* z-}2ue%C7H9M91mL1YNR8Q`y*c{1D6hq~K8oc4fH}qlw(`>`%rv_$N9+ME0xU zOV<8|NZ0a#8gc2_k#z4uek150Aj7_Y;XJrVAr)4-TV8=XG2saFKJT;_wpHh$^K{4Y zr)O=n!w#}URUHduQ{~`keuJkU3o{kB z@%&Ag;(amDLWq7h%iYczNnF+?;k_epb*IOFa zYcrRY>$C`Q?c7=D%DkP;?IQI6UkVv>wc={{9eQXYGF09AIe}6}a^9RRqgy!3KNi1pO8TiWLInqaIHxN$imm~AX?~=9U<_~dsi|3KTY|W%f78>ne z)T|lyKYa0U{)3Td8mF8#(OJf7x%Y74ebDA^|GuJt*ha82)>qqw^WLq;wC%?oS4tIA z*2vFpc7VE0z_-*n7s>@OL=Tk~2w~EY61)FHUJT((d{pbG)euQVw+*<4>|AU7O1z4*jF z_)9(SkHPf9f}S5@4*jAA0gGv0>klFMONtTVJfApAFaGlI(l9FmMOm{L#~U>wyG>_k%8XP|oVMj8I#jy+ zRp3kaM|8wAsXmFP^HbU^NDX8knfu73C+KForj;o>$G172lvDi;pmb)iuAH3@pO$fB z7~y88Sx!BBoPKv(#Fv*yC&n?9WSxNYu1W-m>Qq5~$?eBub@tIy{;OXs`j z6cO851Nrr5reIOE-|9bI4-4}aMQ>D-I&Nki(6ck!{PDe|dpvx~KF`)w{n@b|?`$pw zC|Nd+*M)u=<4;WR_Fj!h5#-sh`jT78||!erpfeX%H4l&-7!E3-kKv2SR&NAq)lV;=4uKq^3_H+Jj6!JyIUdMpKUd28hj%3VoWspo+ zd@?A$f_&Wa*&a0=3f!oXJbv(qf$$COPAB7SLwsq2X}z`SI5~bS!5A?6VNb zZfNu*0ow+K^(Fm;Tz#sP0RcaWFoO!lUpm3dBJ$wt&T1|qUPpwdCCkUNW3lsvgA4uk zx`eskS(uap0isRfQP{o`VL`WRM@c6C)c2JkE+CkDc6*pHIYgp#k^H%aVUb&N+&>uRpQ&|&QhmgVBq>MJZTw55_cTDxLiwV3w2guF&gpr-NW zNeBwSDTN)nFG&;Arw+YnLBYeGk%}mF;{?-tv{2VBsRu+BW#B}=6vT6Y`D7jB9J$^5 zuM4esUqIX{RtM7)DR$N#DE=j93wLI(ttd$+_8XqNmZDp9|FX|g8SYme47X1?29QgdF)q>!_W3~!3D_GKvl**q&8dfC0 z?C-U<-qGN$TnCF%HV6wOkNva3&p#BIotPA8nWk6RCp!i!nzSiX8y5bpD2t@h>dO?G zIUWAWv^_Z+e$IQ`d?e#|drs_DVLCBWl)W8Y_fV{A9JuO7zV1x&^ix*xOOjqo(VM@$ z1hutZx4vfGGMuM2Ws{UuC%~i(;jiDs;ZZOnR#&j<=+E|p3u27W5EVw0ahsIbO34!R z=5pAN^s*!1MEyR#BozqB*ghJ~YKWgIb6-FjV9yDU7tZngy~D^&5*_;j$tTY7&}{1( z1>5J70lKBZ?I?-PC^&Mbu-r^{WZi5FiG;lpyoa1gZ*ZgIs>TFtUL)7mWLJxj%p>(6 zXWD!^S*l}R-OF44i>K7Oi`afY>*O+zBc|%q_G2r(L;#mYAcnpVDX6c{?c}(s>@!Y_ z-HT-@;DhRo|HbML(eNMg++H_s~!KbT2k>Ha;h_fl#Jx&%8JixQ*FNh>VtAOgpU; zjPW|ke8aZw%)uw!+SH`G9wpR4kZgfFd?(94#TXLI@3cWB5#Wg!{_(%*=lPg}5`A#L zCvx^>Ya(4^Po9*|C;yJ% zFmky2e9y|=2=wcY#fZ(GSbT*sZ&;Rtg?k23e7{UuZiHl0kGlxi_}+Q^M+*Cz$pl8n zgNWw}jLH-4K>y*L2yq-G-4Y4SageR`I-pP|7ubz%J?;CK zN(S>#AuK1RqeA6**+kuPGe9*93JMZ)Im-S2t>L1Uyvf0RT(2_v4x|vWU*55^fRC2E z+#af`m*|f3O|129l>&m9LHnx0{5}67Z&td-kQ_3ugF}774meNhai2F1-|^Pc(i#;CJTCHB`PcfvWq@wI5vZ+r$3v)S_)|SBaI!W# zp>Nu2-~VZRbK1iUTQpq}^`-N!^K9aELWMFJg$+XM%qAr=2?9`tLY*ZycOr0{16}Sg zYH-jT05&>&PgimroEpfMuvg7Y$@#Pkjg1`!@+3tZmi=r@4a#gl?^>(QkpN^g~DucE6P4?)y{jZw>k8p`UjG>^TuQi_dKX|-!^Jo zQSMjYc?mi`;ME-+xV#Ys-cI-|1s!le8~nc2YOa_|7tUPG9ETfD=QYbtTgR0CKSshW z<7}Wxz(WAP%Oqf%)9)&RD6mT8z9tP`U%|sXH1}&5e>WqwcyKFJkNG@_cblh0ue}7G~?80o|l%2`2T+o2#qDTOVS`x zFk_TV-ZXiwP#hC}-plyI2ov~Ke<>#A`EpJyfTnT8dc)7#-aT5Tbnx@@q*m z8GZU;?#}{QeVjlOlm*}(biB|uFc4%S*}RuM#&Y>-fQQ~iNikB;xbQCP5BbPu4T}fa z!blR!NtM@*9kvXqnD;?X2N10aiqs`Imf(_ z&X;3o_(I@Xwott=VzHF4D}oR=gCCEEOoBn>Zz=}harYA1h=#J2r$4VYyDMc1{`g4s zr)t*>=yD?_jAZ)tTY!ni1O6-sC&HOBzPdf-Q5YnH9!ci!QI_0xH~iuf+fKT*0^-*P#(@TH^NuYnYtTGGhvAQOP=mYm$e591bCZ0K& z;dM!QrdBOpzP0P&-yz~eqp%I{UV?ZQNORMInQ?$)qjtLm+?EYsh8v+!dE1~q)kTq-E+0&hj*%V2GXq^^Ie+ZTArgTv+zXOdIESzCc zhF*Vs^3YA69QDu#iM%6=so0~r>*OMe%Kh*bQMZQbwjFAx*10I{crwA0P6{RMlgs4W%3~YG& zeXUGWRe;W{GeAB8d+ZnRfv+1W;THot&RG*5m>c%*bdxIs4!QRqOWzgB_#psEl}l7T z5a=4+;+#{&fPu=`lkqLR){~?1JYhd)dIGP97GtXYdS8xwCfy)M0_S4g*zXiKLZMtPtYItceXS>Uai4RF_WM1=C0cHGTi$$YVH0pejq`A!VgqD2mnj(&x|ZLE zHh#Bk;zv#5k}MXpXEML}PYQ1@1^md{r#OH8swyonzb&iF_g}aK**%A;6>(r&*(~%7 z=H+}_*mc9^b1m?Gb9`VYZQb`O@+$)YxQFum)zHg`2^j9Gh)a{&+gWS(1Flb*_7&{u zQR*mK;4`g76b8gau5qx%S)}LDmawC;iM0X3B2RTfL(=nyLDx?;Xfj&tesDvTo1ay9 z?PpXE%cfo_&q~m|YqjSYA$*zp`pV9Oaph@39}(PQyWbOElH37^^exxm4EJMpN7nbZn%;ViH*`aZvX zpL1?P+gOB2b=A*^M$2K?F5Jlc^z1VYK6)&UC{BaD2`NhPq9>>26MfZnK5R3R)ZDab z|-QCmN+C+58`k94kSt)e#?UDZv4i?OO7wg|EJtYRkznNDD;i-1_EEVOZk>o+hOW8PklbLFuT>7IbM;L4!xHYES3=F zc{|s4XRtW$SAeV`>3T`Qm*!~ZFU|XEw%1ZGlS$HE8ClQfm-QJw@z40>v|_umpT!N+ zeFD=Vaq2rCUoSgS73M#uwaPxrj2b;Fj6RA}yY+buKaxeYJ#r;s(36N^VVdXQRTa74 zTYS$^{B~4E1)~E8tC3c`ky)_{nf1@FCu65cd@JEi8W&v4D$*Ey6R-ZAjDMompYk*e z{VnA9$KL7pKlSNp&jHS)^at=r}doZwpV@ugGkI3WdC!aipMpsoA-WCQX)b)T`D zi?z-sj&L3(a9F%c&@4IREEZ$%9vVx%eDBCj zYXr7ATOJY`9C|p$b-4p!>LnwYiZu9rJXqtT%MNTjJsegxHrtQ1%wA{n8Mo(Vs$5%n z^ECKTxE1G`rYk=C6-F-lGOXE-Q2bAGe11=pc=Pip4tpwS3XDoUYkhy9#QNir6U(SD zABblTk~s-6wy;j^9tp)f+)VSd@4-p?n;;n<-nm~au?u0_BTB@K)$0f@&g>!Yz#;I1 z*(tL~y9{qN8*Gpccg(K29)tBaQzVza zn56_fK&f+lLBDIASHsKV^p{AxAE}1Im%1wn?u85)2N^c&lHlm+I`_Vm2bbM@7W+{P z<9&4y=oulQGPh^gK)764LboX~L?V^;_$fS+pT%72gPDfv?aCXa%4*{AV#-h#1c-=O ziFI|0Ddr;1!TR1Oqu%rQnUf5=@)J_BD5ZdylZ^JTq^y?^ZD8y*kCOr%DirwAVFnqA zT_8d2CBs<%to@6@Rk{6x@}}S;?NBzlDRwlW;JQbDs;ah+Jy6vNku3w=bO*YXADok5 z(=B8Uxq{iYk0X?zAKu}iycRD!N+^3YX&S0%xVCh%L4KeT{t`T$mhg|CkzBy0=A|YK zxT(l3=$8AY*+xE~et3TAZ3W543`eSf@!(;<13xm$bK$AwTZSnAinXSlX!nmZ4m3%; z@oK9|SQ>#B2Gpq^NKlgaS2`&;UOb<`b_fI_K70$rf$~^cM{&6W3in~X-X^H*X@zb3 zaB+T)-0C`&N9wV~?N9gD9;^k5k`$MhadvZ>-JMVVJF}%k5lJFnvPyy@r0A`OYO9qH zp&ZGqCl<9zi|~4dKTnym3>)qO6N~BI+9c-0#0qb(IHzX1CjvwVIZo6s-!@Q8z1p{7 zh6~^*YW+4@h;9CAZfUZ}=iMwAOTqiPW7V_wJd*u$hY8I!geS#h3`#o06(wWFV%U&; z6mD?48|arG;2*74UJY$uDQ2EIxr)91tE5VecaoBl*EcuOQ)7Q${o+ENw&%;4We-Q$ z&!6Ax>t7EEc{F~9djqXonK;t$ne6`l{<9)Tt7>?+dUiy==FP7M#CdNok+J`mN%p5B_oJ&0!2*w(1(xOGzeuB;dOUiw#6%`69=pJuza!e{bn;XR zjIfuQmmD^JVQ$kYaoeq3$PvMQ38_?FcEtMdZKG84tgg=Q+EA;~a4a02Kfr6$mizrE z{N^zr0{87-&yI6!E^aRE4in5IIm{AsfR(%iKyU3fP@`o#B-WFt+S^vAR+#pU7HLkl zPO}9f)N;&n;kS3Iup{Rdn295{A-zynt5RpIq1I)aRlmPJ>pWA`^Od=<2h96UEk+i= zvX}euOGZFr!0e40uUk@&F9(3_OU2YQuQ4&kP;FUdxjF3n8>JlH1nau(I+qcd>>O$! z4J&*d^)Y0!*2SWuF_Yw&&3I<%dS1T;an>Ez7Woqfz~kC+)Z2zBzNLOMzz= znzZ#iipA)fd9PYYi@wrj}Uc_|x_I(X304Os8K4$%H>iEW&`B$cpKN}fe28G9p zI)-Ttv92u}$O~t+`HJbx#bx}huB(bPJ^vH~!4_}r{hEb^CYhTe^V$VS`p4}ZN1-i> zdyNp`k-lQvStm!eTWlz}dhL!ZY3qmSH79LtEn0aH957^!5-4t~rv<(ezw4%M zb$!gwdN^D?D?Qziv(+8JR9rE(f31cRVX|>(sUoYEB^4UW#ny1TD^a-I{QLxoAIP#{_ zpx(hiV!xZV>GMlXnU@w-?}XG<_BX`|vWOrpI~KKcZE_iKLz?5~BYF`w%*Uq6ud$JDgtn$Ha^a&Es!) zQ;_kcarhqHv*_37&aPzlr;N3Crzh8LW~`<&aIfTz5decKb8i*38%(jQ+6Ci?3_%}0 zPrtMq0w{D*5zbxOl}w>f&sDwNdqu62K{ChlP1maGs#*-{>A_l;X`!d5;UT4b-h{p( zEl&G>{gqsi6e7dC?iK%gfTmdpb#J}AvNH@ge@n=2(ARpMadshYXg1m^UEk0ToL7^z zz+|~eGNnAe96&X~<-Gt_@;Q2=(0C}oG6g)PzFUJoxc0kF+*+FG5FT-kvI9Jw zVg8_^W9vwF-;nopo3zO7!BA_XF?vOf*41aN8oMphtHY|Vs(k^#22_~8GO)_Sa;%@; z$91~ODm@R6p)<}R1i|03%I2x7*pz*u^SZpB(`pE#{fXL#40n-sJb__wtHB0GiL~w{|K)z!0Y;=TU2{5p-kAOPDP@Ab)YRIn6f`x7afq9rX)mV@Yzw zDM(*%TcMq^mQp7`dL=04=E%G8a^#Q^hi~JwI-AOV);_&x0?5>pA16Tf})$IP~K4nYg8BO>vsnpXNEDxPD59 z&UrAZDt12wFY&K?zIEG%wa*{E+lkhUFrT!5q}B#)36NLKi?f1NL^Im)JZ!JZHBtqZ>)9OI?mf?Rn2PuuGoC zk3iJgpK3_6PC*TP z)Np8lk=pF~7h;*18fJM=#u9vUtic{;9Y1eh3CIZWl>j%3=xG0?lZvX- zzm7+1u+@hUZWYRbCGQwOgF!$rDv}2d48XL^_a=p_5|15Iw#G2CgKyLnN$f94F_~5TGg=O2zt~eui^BWUFI(GcC}xpW!3U0& zNW}~caU9-&Ln(i$Iw9en;KuWVWRj6X#K zqDK)oD(rr=;_K6zUr12=6l^AfL)X@+L|o>wDp2}z`B{0yk>Y#6jE9wS!S%s=n1IzZ zU#}kRb!#CCJFLKeZPY6ywBz>8bjKa zq>L~QC@bMOw<kA`>lghvw^|kPH6VgGA0SP4e_qE z31ECbiC=7Y&sJN@B_RbIO#i^tiwifPF!wJ%@X1zVkfVZCdn+<-fv@q=kZwl#JGy}s zCC~2F?#alFSBrmY$Xx{8;NT#zpnw$Wr7U8)y>nNyWfCEdMnfBbiJrD@-qp{PuO^V| ziv1kbm>9t19sJnreo(eN{BXyy+Y*vSMzPuY+!lqVwiQy4IzUN8IY*bosZ$-J&j6d z783t(?>iEG(J|dnDl|Qnx+Ddi&IHBmW^2!fo*KEm3O@Dcv_}-rG z0rER~^K{i)_i*_v z+B4<3QcR2AcYJL|5`9`4_uVqVp;gQqCD8Xl(9nP5EuidDHPbl%)U$MI71uv*#l=0T zVepv(wEqex94#_*;8f5Vbpg3}16?VfmY#Krn9l1Dcuuz^Hcck;cYS*-J1Im*+R{mD zf+QDe%VUPwl61ra)vx>3d`W>rmlcc`e^n-+_QAdzk=mWa-3)o(!@*<=R}8CwP+k$Sk@6CqkPyW5sc+ylb0EKk<;ve8tWM#f`%QHF65* z`~DAkH~&5PmWN$Q7s}RzT;Fy{-ML7Gro-=O#;9r~m{AD7$pVyDR`Y*2O=`IL-!Wo5 z-RQYcdL=&O`{fw}))iXsS;JQ9Fg<4}mZpl=6lCQO<|NL4R`g!aIPaJ#)1y+E-KvQZ z(0a>$Q;{)SggpbRs8Oe!`soG$Uox8V&bps*Eg5PC?AJIAbbo zcu|syP(dQ*_Ri?}tXThXn)#;x3){wmqhC~xLsNuvX*8@gqF z*VCX4o#;Ii_o{&tL!v)9(AlwHic`RLnh_$wPgBo(GW4fsoT34Pu4dEfOvg|}z~7vE zj=$b{KL1VK4;wLo^eVs9;|?!Gf~Ql2x?kCa5Gyu@9eGDr>XcbFV+(m+)NHb{`HpNje7Pq);W<%n zo8{}50(R;a+zl)<{$E$a@JrS|Q_{Ltv49r(o`=HgHbJD`n8a6CvJkKqppp4uEjCuU z&{?wJW3$Jk-RQ@ZLWbkgN!lM~IKPP`S>#lYusj@GqHrbsy$`?VExI(K1#B0I zy#?QB3{l|M_Qc(&7I`NVLw}%F;KhnTFMWr+;^((2t^}h`>biyjnc1rkQK5=V&Z21# zx~^7j7+euBvPtAOy0Yte$h{5Zz19x>6;)Jcdqx5$L-zs#Rk2N&!IEYtxZ>CzEI-U= zG)aeSPxtn}+2<e zclvgVnNizO3po7&+6MtPGJeOc@Gqs+Z6bo`tDJBoMSr|wmetS=A-~(fF(A7fD=M>m zuhLz3W!&Q&s0HZE4IOX_=9|2k|F~n*kVhiAW7{n^gv$LumLdUcA}1%iksieEt{6?1 ztf>XhV<#^5zkF12;IrO+&y(GD|7*@jNBUEOgZ^nBX49?jtojm|UQc20Ti^QIU*ck< zTwG9j%*gpVPw`9TxJ;Qd;=_4xKA`7uajiW;^@CtJ=DX9=1E)#TwB0X#NUlv}ZoNqV z#ZH1X@mxgQ7zf8N-fdP-mi8JweubI*?uQ0n!Y)ap_4Jj#*L9)v7E66`?Bah}$DWC1 zS-kTrREXHfyv59Fxh7t_%y-t^>K}`JylxxL(>Pk|&!AXaWEcAzO2%*E))s_$pDXhm zlwcxC@6>Z5De&j`v~&QNa-tZxHUmH2?*Br$e*AfHo;b=3SzK;@5W^U`XXRZKv z4V9lme|vf&0}qh8zr=@5($=@%;>W$=9IkvsH@ZYbXxnHy7VYiYcPzd;%GY>I$tm++ z`@C-ZB@_-(quWyhSD>gC?W)}98PRe$yju~*bv_Xfl$bWSR(lM!EqmU8_HKXvo?|u; z(DhJr#YlplS*btR`|2M=9iH92M+c z376-s2F+NUeP@2(YiYO`)gasWLCh0|q@d7vK8#saXV*u{mu6=+`XJqUv+$aWYf{jD z3hhJTyZDVnt6BBQerJ7s`gz@?jGR!ojY5M%Y3L_hK9%jR3CM??Zsk1A&{kh&TUbbgggC42$@QhE<#+_rM6rOX}W! zPY%%8MYen51|!1R(D1#*x!54-mBt(4zml`G{KxnK z9#5AKPG9+zW`koXu#WjMSE6+J-p-9Y%`ja_<4&&c_X+m25BU=rb_Nwhy>c`iyV7|m zqLcK1@!$4Hi0|9*)v@CDoxr)ik6qvN^bv9L(FehO5|<-`k0hD0f6h}n77pwWHm!HX z4q_K2INvUc`<{t<&f2V#@kzpvk?3Nn6RXCfHb44g;;8I$wQ8dB{pG z_9(nQga{J{=Q<+=Jh|4kb76Fxorn;CpS2Gpy_?c#o4~f?)2M0_FZ!Ejlb`Aq2Z%|L zzL{%&bz z?G`^?K%n(iqQkWE@h_RQtlQO5#n*l?rk7)vI-fnG`A)%;zV|#_P8E}~hPICbOIJ^i zalRomww^}@i_EQe;M(VM2c`2q<_pJtTR4kOdqnI7PrFMW5iw6SrPVijd^`44We#Fv zU>V545tljvl>_slyZ~!&87x$Fci>vn+IshgRqQ@xGkJ zm1++=C@;8+*k{bV;L#eR*hvt&dMn7;I-|vbP!{wYI)iNtFq24(J0v>K-d$$rh!B#>+U9?Ku@y zcxlmj=n83Byc66hV`U|yvqII)b|TG@1DuSzu!avfWZngJD_`1`e{IxJq&9TLjEDD( z4tJuF-{U^v6|1GoPyd<4Z@J*&YWK!oiK37Ky8g=dUCkpStO8L;U22JH9N$*+TZQCH zx67g+1lsA|J4j`J=sYBzp-OuS7^H8oLkG|}Q~^wgrP-c(=K>g@GrX_K6){XNdo zUzP_CMR}3;$gOaz*(&oaWIrV5XBW=avTTnU4Fd(I+l35v^NVlqn;dGVOKBGr%rv-l zZMi19fxVGpX6SYX6(dZ5j*ow2A*6qOk&={@MDFAlTV3Gp!oj5gt4q0`Nit!;N6*-n z3o9wv3=7O6u|^6FmV$h?Ri=WGFFYqC|K@itdq~=Qq)ARWrVHd#PI2F#;dI~ALGsZpj-k?f@-E5F#b{}dmiUe3-kY-J_^j)K{Klrjl)j{mG>qSEn2G5Iy zo@wI+lQS+%2Bw3aAU4sRv?P^?F_G5K(zYUpFq=5O&@kxP?s74a^gNK-4Q~ehYUo}- zWR{a*$T0La*a4-foDg5H-(;MIbJV$Va!WuC2gLr?AI@bNuFkXTy%6c_{X5*X zH<2UJ(T)@iHa4eaAA-1lJ6@3M0snH&(ftJLEbOw>1s5pC)?*zUN#ES#(9D6EJq!g% zN)`~X2i9V0)kp;AM5EEJjzg;~DYSIK5-IwO#>PM3#_s#U9kP-(df|9^Nh;Xs%Bq+e zbG-Q=(H7vFREi^0WZ+NUjWU#ml{JjrorJGk;xz^eF0<_--|cPl>o=DLwi$jO3OCQY zf+$}s)&g~ax7iuU$%w%{g?IrSxc_>V4zTcy)y>Ps5{)mjXbe|hwCen(g+hYg3C`=h zXaYr=>wGo082{z_zRkytT3DC>%99fOeVNaLnWez<6K;#!06pFbCHHuuO&?n1hp>>Y zB9xfTIU2xo!Yzj(N(TJc+?RV)9_-D9;>&jh40{zvHr~(TsLbA1{O1bbO^nH#pS_v;5>m90P6VRPpAG+(?W*hC7IVg}!Z zN~~Y8mlH4&8xfDZ(idTlTPf-oaAfO<0*~%UjU&M2DlnfLc$z4f#`9wL167_zR;kVp zp5|b_9=GWs~|St6qSGm?!7vw{1k@olkd2Zk{{L z$n0(1i1)z{za?c^w}4x)UG-+lcUHJmm{-|-N;VspjFv4v-##1oRbX6S_V{4a4}ns8 zp3ma?h-Ppwxl2Z6n7*G!-flG>Ba*|V_J0vem32ijMWRhj&so2JEe%FT$1xx(rL}4q zrElmdnTNa_y0SAi`%FS~Esj}{0=c%TpCN|vAXtK=hf)W;+%FlRawueJtw}j75N#!b z;)2`D*_yMnQ*2_d*dkVdKCC-v`hXp@(UQA*?bh!>*-gM~xRI5nVHMqItXBfiU_AZV zS@r9zApKLJ(raM8t-ngoZJFYxK5mHQhYbA?45aeFoA<}ctd4E+t-rCV3f~J>DVCBiURcZFJZM?J z|6Lg#*6xM==9D{*4I1d=E{Ei9RF)1#>He}*AN~WaPFoJGJqCtJq$_xhuG`|h+r&U zh^U(Oe?U&n|GYOKZbN|KPX9PIjQ;~)_V1Pd4=*5ZDcth+j3_VH4C^^*l=ps3q$g0h zG_L+{IeOJI!}NjHQ+Y=#Z-%J{vt(tdJSw~(%I7aA;o)@Xvj3$=Rd6cauU&6k-;e7C z3Ki0AJNe7B#FZ!O49Ew~;9LFU;GEBZc9Vw(-~9Z%7wCF7EW4@a(*ORo$s(cd{?z2@ z7Vr@R8;MPdQL`3zk03Hz3Nc(%l~R}Hzd&o9Ol1I|LjNyC_y2g6{~L$*e_G)*>xb~t zZ}tCqJtQU8ri)jR2#T@_j1K|g3guGfwEqET*He=~AYh6X4hZhFHx%zGLsz=g5Yy~q%1;ld~@+We#3Z?FBAp4n`cBSLGeE{U@xPjEszv{1C~Z*Lyn)NKn>V z*eWV2w9}a^hwy@ zRhtlhEc*2G*Dq@ahkkbh;L-qOb#r?g_!_L-N5G4dnQwGl6|pY=hb;CoO54Wmw*WLn zbaXVakQ)QFOsw%*XYeK*j!2Hdb145mFJ-`enVL;@|1+Rw2Hx-gSEBg;PBs4{ga=Ni zE)6ixI9UnmkF@{GMgLG!DAa_=sw%M%7Bw_@fEHTZ_oq9R-(vm?jSqfWRu!cWfpd=+ Vj_L}v0xy6cd1;l8l^={l{s)|m7q$QZ literal 0 HcmV?d00001 diff --git a/Document-Processing/Word/Word-Processor/blazor/track-changes.md b/Document-Processing/Word/Word-Processor/blazor/track-changes.md index 01c9b5a76..07cba5ac8 100644 --- a/Document-Processing/Word/Word-Processor/blazor/track-changes.md +++ b/Document-Processing/Word/Word-Processor/blazor/track-changes.md @@ -85,6 +85,32 @@ In DocumentEditor, we have built-in review panel in which we have provided suppo ![Track changes in Blazor DocumentEditor](images/track-changes.png) +## Custom metadata along with author + +The Document Editor provides options to customize revisions using [`Revisionsettings`](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DocumentEditor.DocumentEditorSettingsModel.html#Syncfusion_Blazor_DocumentEditor_DocumentEditorSettingsModel_RevisionSettings). The `CustomData` property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the `showCustomDataWithAuthor` property. + +The following example code illustrates how to enable and update custom metadata for track changes revisions. + +```ts +@using Syncfusion.Blazor.DocumentEditor + + + +@code { + SfDocumentEditorContainer container; + DocumentEditorSettingsModel settings = new DocumentEditorSettingsModel() + { RevisionSettings= { CustomData = "Developer", ShowCustomDataWithAuthor = true}}; +} +``` + +The Track Changes pane will display the author name along with the custom metadata, as shown in the screenshot below. + +![Custom metadata along with author](images/track-changes-customData.png) + +>Note: +* When you export the document as SFDT, the customData value is stored in the revision collection. When you reopen the SFDT, the custom data is automatically restored and displayed in the Track Changes pane. +* Other than SFDT export (e.g. DOCX and other), the customData is not preserved, as it is specific to the Document Editor component. + ## Protect the document in track changes only mode Document Editor provides support for protecting the document with `RevisionsOnly` protection. In this protection, all the users are allowed to view the document and do their corrections, but they cannot accept or reject any tracked changes in the document. Later, the author can view their corrections and accept or reject the changes. diff --git a/Document-Processing/Word/Word-Processor/javascript-es5/images/track-changes-customData.png b/Document-Processing/Word/Word-Processor/javascript-es5/images/track-changes-customData.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1fdff502faedc25497e83381a39247cbb990dc GIT binary patch literal 45944 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 Vj_L}v0xy6cd1;l8l^={l{s)|m7q$QZ literal 0 HcmV?d00001 diff --git a/Document-Processing/Word/Word-Processor/javascript-es5/track-changes.md b/Document-Processing/Word/Word-Processor/javascript-es5/track-changes.md index 247ad0b38..1607e553e 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es5/track-changes.md +++ b/Document-Processing/Word/Word-Processor/javascript-es5/track-changes.md @@ -123,6 +123,35 @@ container.documentEditor.selection.navigateNextRevision(); */ container.documentEditor.selection.navigatePreviousRevision(); ``` +## Custom metadata along with author + +The Document Editor provides options to customize revisions using [`revisionsettings`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor/documenteditorsettingsmodel#revisionsettings). The [`customData`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor/revisionsettings#customdata) property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the [`showCustomDataWithAuthor`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor/revisionsettings#showcustomdatawithauthor) property. + +The following example code illustrates how to enable and update custom metadata for track changes revisions. + +```js +var container = new ej.documenteditor.DocumentEditor({ + serviceUrl: hostUrl, + height: '590px', + enableTrackChanges: true, + documentEditorSettings: { + revisionSettings: { + customData: 'Developer', + showCustomDataWithAuthor: true + }} +}); +DocumentEditorContainer.Inject(Toolbar); +container.appendTo('#container'); + +``` + +The Track Changes pane will display the author name along with the custom metadata, as shown in the screenshot below. + +![Custom metadata along with author](images/track-changes-customData.png) + +>Note: +* When you export the document as SFDT, the customData value is stored in the revision collection. When you reopen the SFDT, the custom data is automatically restored and displayed in the Track Changes pane. +* Other than SFDT export (e.g. DOCX and other), the customData is not preserved, as it is specific to the Document Editor component. ## Filtering changes based on user diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/images/track-changes-customData.png b/Document-Processing/Word/Word-Processor/javascript-es6/images/track-changes-customData.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1fdff502faedc25497e83381a39247cbb990dc GIT binary patch literal 45944 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 Vj_L}v0xy6cd1;l8l^={l{s)|m7q$QZ literal 0 HcmV?d00001 diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/track-changes.md b/Document-Processing/Word/Word-Processor/javascript-es6/track-changes.md index 4a79d669f..c8d07388d 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/track-changes.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/track-changes.md @@ -168,6 +168,33 @@ In DocumentEditor, we have built-in review panel in which we have provided suppo ![Track changes](images/track-changes.png) +## Custom metadata along with author + +The Document Editor provides options to customize revisions using [`revisionsettings`](https://ej2.syncfusion.com/documentation/api/document-editor/documenteditorsettingsmodel#revisionsettings). The [`customData`](https://ej2.syncfusion.com/documentation/api/document-editor/revisionsettings#customdata) property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the [`showCustomDataWithAuthor`](https://ej2.syncfusion.com/documentation/api/document-editor/revisionsettings#showcustomdatawithauthor) property. + +The following example code illustrates how to enable and update custom metadata for track changes revisions. + +```ts +import { DocumentEditorContainer, Ribbon } from '@syncfusion/ej2-documenteditor'; +let container: DocumentEditorContainer = new DocumentEditorContainer({ + height: '590px', + serviceUrl= hostUrl, + enableTrackChanges=true, + documentEditorSettings: { + revisionSettings: { customData : "Developer", showCustomDataWithAuthor : true }} +}); +DocumentEditorContainer.Inject(Ribbon); +container.appendTo('#container'); +``` + +The Track Changes pane will display the author name along with the custom metadata, as shown in the screenshot below. + +![Custom metadata along with author](images/track-changes-customData.png) + +>Note: +* When you export the document as SFDT, the customData value is stored in the revision collection. When you reopen the SFDT, the custom data is automatically restored and displayed in the Track Changes pane. +* Other than SFDT export (e.g. DOCX and other), the customData is not preserved, as it is specific to the Document Editor component. + ## Protect the document in track changes only mode Document Editor provides support for protecting the document with `RevisionsOnly` protection. In this protection, all the users are allowed to view the document and do their corrections, but they cannot accept or reject any tracked changes in the document. Later, the author can view their corrections and accept or reject the changes. diff --git a/Document-Processing/Word/Word-Processor/react/images/track-changes-customData.png b/Document-Processing/Word/Word-Processor/react/images/track-changes-customData.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1fdff502faedc25497e83381a39247cbb990dc GIT binary patch literal 45944 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 Vj_L}v0xy6cd1;l8l^={l{s)|m7q$QZ literal 0 HcmV?d00001 diff --git a/Document-Processing/Word/Word-Processor/vue/images/track-changes-customData.png b/Document-Processing/Word/Word-Processor/vue/images/track-changes-customData.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1fdff502faedc25497e83381a39247cbb990dc GIT binary patch literal 45944 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 Vj_L}v0xy6cd1;l8l^={l{s)|m7q$QZ literal 0 HcmV?d00001 diff --git a/Document-Processing/Word/Word-Processor/vue/track-changes.md b/Document-Processing/Word/Word-Processor/vue/track-changes.md index 6b6f96514..42169311e 100644 --- a/Document-Processing/Word/Word-Processor/vue/track-changes.md +++ b/Document-Processing/Word/Word-Processor/vue/track-changes.md @@ -165,6 +165,47 @@ In DocumentEditor, we have built-in review panel in which we have provided suppo ![Track changes](images/track-changes.png) +## Custom metadata along with author + +The Document Editor provides options to customize revisions using [`revisionsettings`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/documenteditorsettingsmodel#revisionsettings). The [`customData`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/revisionsettings#customdata) property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the [`showCustomDataWithAuthor`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/revisionsettings#showcustomdatawithauthor) property. + +The following example code illustrates how to enable and update custom metadata for track changes revisions. + +```ts + + + + +``` +The Track Changes pane will display the author name along with the custom metadata, as shown in the screenshot below. + +![Custom metadata along with author](images/track-changes-customData.png) + +>Note: +* When you export the document as SFDT, the customData value is stored in the revision collection. When you reopen the SFDT, the custom data is automatically restored and displayed in the Track Changes pane. +* Other than SFDT export (e.g. DOCX and other), the customData is not preserved, as it is specific to the Document Editor component. + + ## Protect the document in track changes only mode Document Editor provides support for protecting the document with `RevisionsOnly` protection. In this protection, all the users are allowed to view the document and do their corrections, but they cannot accept or reject any tracked changes in the document. Later, the author can view their corrections and accept or reject the changes. diff --git a/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/document-editor.cs b/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/document-editor.cs new file mode 100644 index 000000000..cca48eedf --- /dev/null +++ b/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/document-editor.cs @@ -0,0 +1,5 @@ + public ActionResult Default() + { + return View(); + } + diff --git a/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/razor b/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/razor new file mode 100644 index 000000000..557ee8fbb --- /dev/null +++ b/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/razor @@ -0,0 +1,4 @@ +@Html.EJS().DocumentEditorContainer("container").EnableTrackChanges(true).EnableToolbar(true).DocumentEditorSettings("settings").Render() + diff --git a/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/tagHelper b/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/tagHelper new file mode 100644 index 000000000..222f30f8c --- /dev/null +++ b/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/tagHelper @@ -0,0 +1,4 @@ + + diff --git a/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/document-editor.cs b/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/document-editor.cs new file mode 100644 index 000000000..cca48eedf --- /dev/null +++ b/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/document-editor.cs @@ -0,0 +1,5 @@ + public ActionResult Default() + { + return View(); + } + diff --git a/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/razor b/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/razor new file mode 100644 index 000000000..a40941262 --- /dev/null +++ b/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/razor @@ -0,0 +1,4 @@ +@Html.EJS().DocumentEditorContainer("container").EnableTrackChanges(true).DocumentEditorSettings("settings").Render() + diff --git a/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/tagHelper b/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/tagHelper new file mode 100644 index 000000000..43e6449ff --- /dev/null +++ b/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/tagHelper @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file From 05ec20468086da83fc0614924a212ffe891f17c5 Mon Sep 17 00:00:00 2001 From: manomurugan Date: Tue, 2 Dec 2025 10:21:33 +0530 Subject: [PATCH 02/12] 974850: tag helper changes --- .../track-changes-revisionSettings/tagHelper | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/tagHelper b/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/tagHelper index 43e6449ff..222f30f8c 100644 --- a/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/tagHelper +++ b/Document-Processing/code-snippet/document-editor/asp-net-mvc/document-editor-container/track-changes-revisionSettings/tagHelper @@ -1,16 +1,4 @@ - - - - + \ No newline at end of file + var settings = { revisionSettings: { customData: 'Developer', showCustomDataWithAuthor: true} }; + From 68c33664c80f7eccc694344a6f43ae487a64e01f Mon Sep 17 00:00:00 2001 From: KarthikaSF4773 Date: Fri, 12 Dec 2025 21:10:04 +0530 Subject: [PATCH 03/12] 990897-NumberFormatColumn --- ...formatting-to-an-entire-column-in-Excel.md | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 Document-Processing/Excel/Excel-Library/NET/faqs/how-to-apply-number-formatting-to-an-entire-column-in-Excel.md diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-apply-number-formatting-to-an-entire-column-in-Excel.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-apply-number-formatting-to-an-entire-column-in-Excel.md new file mode 100644 index 000000000..8efd2b13b --- /dev/null +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-apply-number-formatting-to-an-entire-column-in-Excel.md @@ -0,0 +1,83 @@ +--- +title: Apply number formatting to an entire column in Excel | Syncfusion +description: Code example to apply number formatting to an entire column in Excel using Syncfusion .NET Excel library (XlsIO). +platform: document-processing +control: XlsIO +documentation: UG +--- + +# How to apply number formatting to an entire column in Excel? + +The following code examples demonstrate applying number formatting to an entire column in Excel using C# (Cross-platform and Windows-specific) and VB.NET. + +{% tabs %} +{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/XlsIO-Examples/master/FAQ/Column%20Number%20Format/.NET/ColumnNumberFormat/ColumnNumberFormat/Program.cs,180" %} +using (ExcelEngine excelEngine = new ExcelEngine()) +{ + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Xlsx; + IWorkbook workbook = application.Workbooks.Open(Path.GetFullPath(@"Data/Input.xlsx")); + IWorksheet sheet = workbook.Worksheets[0]; + + //Case 1: Apply direct number format (zero-based index) + sheet.Columns[0].NumberFormat = "yyyy-mm-dd"; //Column A + sheet.Columns[3].NumberFormat = "$#,##0.00"; //Column D + sheet.Columns[4].NumberFormat = "0.00%"; //Column E + + //Case 2: Apply style-based format (one-based index) + IStyle style = workbook.Styles.Add("DecimalStyle"); + style.NumberFormat = "0.00"; + sheet.SetDefaultColumnStyle(3, style); //Column C + + //Saving the workbook + workbook.SaveAs(Path.GetFullPath(@"Output/Output.xlsx")); +} +{% endhighlight %} + +{% highlight c# tabtitle="C# [Windows-specific]" %} +using (ExcelEngine excelEngine = new ExcelEngine()) +{ + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Xlsx; + IWorkbook workbook = application.Workbooks.Open("Input.xlsx"); + IWorksheet sheet = workbook.Worksheets[0]; + + //Case 1: Apply direct number format (zero-based index) + sheet.Columns[0].NumberFormat = "yyyy-mm-dd"; //Column A + sheet.Columns[3].NumberFormat = "$#,##0.00"; //Column D + sheet.Columns[4].NumberFormat = "0.00%"; //Column E + + //Case 2: Apply style-based format (one-based index) + IStyle style = workbook.Styles.Add("DecimalStyle"); + style.NumberFormat = "0.00"; + sheet.SetDefaultColumnStyle(3, style); //Column C + + //Saving the workbook + workbook.SaveAs("Output.xlsx"); +} +{% endhighlight %} + +{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Using excelEngine As New ExcelEngine() + Dim application As IApplication = excelEngine.Excel + application.DefaultVersion = ExcelVersion.Xlsx + Dim workbook As IWorkbook = application.Workbooks.Open("Input.xlsx") + Dim sheet As IWorksheet = workbook.Worksheets(0) + + 'Case 1: Apply direct number format (zero-based index) + sheet.Columns(0).NumberFormat = "yyyy-mm-dd" 'Column A + sheet.Columns(3).NumberFormat = "$#,##0.00" 'Column D + sheet.Columns(4).NumberFormat = "0.00%" 'Column E + + 'Case 2: Apply style-based format (one-based index) + Dim style As IStyle = workbook.Styles.Add("DecimalStyle") + style.NumberFormat = "0.00" + sheet.SetDefaultColumnStyle(3, style) 'Column C + + 'Save the workbook + workbook.SaveAs("Output.xlsx") +End Using +{% endhighlight %} +{% endtabs %} + +A complete working example that shows how to apply number formatting to an entire column in Excel using C# is present on this GitHub page. \ No newline at end of file From b0a8ecf5bf3d2c774d00b97f9cf1f6f4cad1f60a Mon Sep 17 00:00:00 2001 From: manomurugan Date: Fri, 26 Dec 2025 12:13:02 +0530 Subject: [PATCH 04/12] 974850: review changes --- Document-Processing-toc.html | 1 + .../Word-Processor/angular/track-changes.md | 8 ++-- .../asp-net-core/track-changes.md | 2 +- .../asp-net-mvc/track-changes.md | 4 +- .../Word-Processor/blazor/track-changes.md | 2 +- .../javascript-es5/track-changes.md | 2 +- .../javascript-es6/track-changes.md | 6 +-- .../Word-Processor/react/track-changes.md | 43 ++++++++++++++++++- .../Word/Word-Processor/vue/track-changes.md | 6 +-- .../track-changes-revisionSettings/razor | 2 +- 10 files changed, 59 insertions(+), 17 deletions(-) diff --git a/Document-Processing-toc.html b/Document-Processing-toc.html index 8125cf72e..6849cfabc 100644 --- a/Document-Processing-toc.html +++ b/Document-Processing-toc.html @@ -2768,6 +2768,7 @@

  • Working with Table Formatting
  • Working with Section Formatting
  • Comments
  • +
  • Track Changes
  • Fields
  • Form fields
  • Clipboard
  • diff --git a/Document-Processing/Word/Word-Processor/angular/track-changes.md b/Document-Processing/Word/Word-Processor/angular/track-changes.md index b83e33332..95d9bc4b1 100644 --- a/Document-Processing/Word/Word-Processor/angular/track-changes.md +++ b/Document-Processing/Word/Word-Processor/angular/track-changes.md @@ -107,14 +107,14 @@ In DocumentEditor, we have built-in review panel in which we have provided suppo ## Custom metadata along with author -The Document Editor provides options to customize revisions using [`revisionsettings`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/documenteditorsettingsmodel#revisionsettings). The [`customData`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/revisionsettings#customdata) property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the [`showCustomDataWithAuthor`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/revisionsettings#showcustomdatawithauthor) property. +The Document Editor provides options to customize revisions using [`revisionSettings`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/documenteditorsettingsmodel#revisionsettings). The [`customData`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/revisionsettings#customdata) property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the [`showCustomDataWithAuthor`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/revisionsettings#showcustomdatawithauthor) property. The following example code illustrates how to enable and update custom metadata for track changes revisions. ```ts import { Component, OnInit, ViewChild } from '@angular/core'; import { - RibbonService, + ToolbarService, DocumentEditorContainerComponent, } from '@syncfusion/ej2-angular-documenteditor'; import { DocumentEditorContainerModule } from '@syncfusion/ej2-angular-documenteditor'; @@ -122,7 +122,7 @@ import { DocumentEditorContainerModule } from '@syncfusion/ej2-angular-documente selector: 'app-container', standalone: true, imports: [DocumentEditorContainerModule], - providers: [RibbonService], + providers: [ToolbarService], template: ` { + container = scope; + }} + height={'590px'} + serviceUrl="HostUrl" + enableTrackChanges={true} + documentEditorSettings={settings} + /> + ); +} +export default App; +ReactDOM.render(, document.getElementById('sample')); + +``` +The Track Changes pane will display the author name along with the custom metadata, as shown in the screenshot below. +![Custom metadata along with author](images/track-changes-customData.png) +>Note: +* When you export the document as SFDT, the customData value is stored in the revision collection. When you reopen the SFDT, the custom data is automatically restored and displayed in the Track Changes pane. +* Other than SFDT export (e.g. DOCX and other), the customData is not preserved, as it is specific to the Document Editor component. + ## Protect the document in track changes only mode Document Editor provides support for protecting the document with `RevisionsOnly` protection. In this protection, all the users are allowed to view the document and do their corrections, but they cannot accept or reject any tracked changes in the document. Later, the author can view their corrections and accept or reject the changes. -Document editor provides an option to protect and unprotect document using [`enforceProtection`](https://ej2.syncfusion.com/react/documentation/api/document-editor/editor/#enforceprotection) and [`stopProtection`](https://ej2.syncfusion.com/react/documentation/api/document-editor/editor/#stopprotection) API. +Document editor provides an option to protect and unprotect document using [`enforceProtection`](https://ej2.syncfusion.com/react/documentation/api/document-editor/editor#enforceprotection) and [`stopProtection`](https://ej2.syncfusion.com/react/documentation/api/document-editor/editor#stopprotection) API. The following example code illustrates how to enforce and stop protection in Document editor container. diff --git a/Document-Processing/Word/Word-Processor/vue/track-changes.md b/Document-Processing/Word/Word-Processor/vue/track-changes.md index 42169311e..201d2279a 100644 --- a/Document-Processing/Word/Word-Processor/vue/track-changes.md +++ b/Document-Processing/Word/Word-Processor/vue/track-changes.md @@ -167,7 +167,7 @@ In DocumentEditor, we have built-in review panel in which we have provided suppo ## Custom metadata along with author -The Document Editor provides options to customize revisions using [`revisionsettings`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/documenteditorsettingsmodel#revisionsettings). The [`customData`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/revisionsettings#customdata) property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the [`showCustomDataWithAuthor`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/revisionsettings#showcustomdatawithauthor) property. +The Document Editor provides options to customize revisions using [`revisionSettings`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/documenteditorsettingsmodel#revisionsettings). The [`customData`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/revisionsettings#customdata) property allows you to attach additional metadata to tracked revisions in the Word Processor. This metadata can represent roles, tags, or any custom identifier for the revision. To display this metadata along with the author name in the Track Changes pane, you must enable the [`showCustomDataWithAuthor`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/revisionsettings#showcustomdatawithauthor) property. The following example code illustrates how to enable and update custom metadata for track changes revisions. @@ -179,7 +179,7 @@ The following example code illustrates how to enable and update custom metadata diff --git a/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/razor b/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/razor index 557ee8fbb..a40941262 100644 --- a/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/razor +++ b/Document-Processing/code-snippet/document-editor/asp-net-core/document-editor-container/track-changes-revisionSettings/razor @@ -1,4 +1,4 @@ -@Html.EJS().DocumentEditorContainer("container").EnableTrackChanges(true).EnableToolbar(true).DocumentEditorSettings("settings").Render() +@Html.EJS().DocumentEditorContainer("container").EnableTrackChanges(true).DocumentEditorSettings("settings").Render() From 57c5241037af03908bc00baca4d24b6d42a9cf46 Mon Sep 17 00:00:00 2001 From: manomurugan Date: Tue, 30 Dec 2025 17:16:16 +0530 Subject: [PATCH 05/12] 1001521: Add user specific dictionary document editor --- .../Word/Word-Processor/angular/spell-check.md | 7 +++++++ .../Word/Word-Processor/asp-net-core/spell-check.md | 8 ++++++++ .../Word/Word-Processor/asp-net-mvc/spell-check.md | 8 ++++++++ .../Word/Word-Processor/javascript-es5/spell-check.md | 7 +++++++ .../Word/Word-Processor/javascript-es6/spell-check.md | 8 ++++++++ .../Word/Word-Processor/react/spell-check.md | 7 +++++++ .../Word/Word-Processor/vue/spell-check.md | 7 +++++++ 7 files changed, 52 insertions(+) diff --git a/Document-Processing/Word/Word-Processor/angular/spell-check.md b/Document-Processing/Word/Word-Processor/angular/spell-check.md index 8cd8f7e2b..d67fb6a4b 100644 --- a/Document-Processing/Word/Word-Processor/angular/spell-check.md +++ b/Document-Processing/Word/Word-Processor/angular/spell-check.md @@ -82,6 +82,13 @@ The following code example illustrates how to enable optimized spell checking. ```typescript this.container.documentEditor.spellChecker.enableOptimizedSpellCheck = true; ``` +### EnableUserDictionary + +By default, Document Editor maintains a shared custom dictionary for all users. You can enable user-specific dictionary support using the [`enableUserDictionary`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/spellchecker#enableuserdictionary-boolean) API, which stores and retrieves error words based on the `currentUser` property. + +```typescript +this.container.documentEditor.spellChecker.enableUserDictionary = true; +``` ### Spell check dictionary cache diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/spell-check.md b/Document-Processing/Word/Word-Processor/asp-net-core/spell-check.md index 9b7278ee1..b5cc1cb8c 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/spell-check.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/spell-check.md @@ -67,6 +67,14 @@ Document editor provides option to spellcheck page by page when loading the docu this.container.documentEditor.spellChecker.enableOptimizedSpellCheck = true; ``` +### EnableUserDictionary + +By default, Document Editor maintains a shared custom dictionary for all users. You can enable user-specific dictionary support using the `enableUserDictionary` API, which stores and retrieves error words based on the `currentUser` property. + +```typescript +this.container.documentEditor.spellChecker.enableUserDictionary = true; +``` + ### Spell check dictionary cache Starting from `v20.1.0.xx`, the performance and memory usage of spell checker has been optimized by adding a static method to initialize the dictionaries with specified cache count. diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/spell-check.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/spell-check.md index 62f5b81cd..867e72561 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/spell-check.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/spell-check.md @@ -68,6 +68,14 @@ Document editor provides option to spellcheck page by page when loading the docu this.container.documentEditor.spellChecker.enableOptimizedSpellCheck = true; ``` +### EnableUserDictionary + +By default, Document Editor maintains a shared custom dictionary for all users. You can enable user-specific dictionary support using the `enableUserDictionary` API, which stores and retrieves error words based on the `currentUser` property. + +```typescript +this.container.documentEditor.spellChecker.enableUserDictionary = true; +``` + ### Spell check dictionary cache Starting from `v20.1.0.xx`, the performance and memory usage of spell checker has been optimized by adding a static method to initialize the dictionaries with specified cache count. diff --git a/Document-Processing/Word/Word-Processor/javascript-es5/spell-check.md b/Document-Processing/Word/Word-Processor/javascript-es5/spell-check.md index 4ee986a79..159f81a3f 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es5/spell-check.md +++ b/Document-Processing/Word/Word-Processor/javascript-es5/spell-check.md @@ -80,6 +80,13 @@ The following code example illustrates how to enable optimized spell checking. ```ts documentEditor.spellChecker.enableOptimizedSpellCheck = true; ``` +### EnableUserDictionary + +By default, Document Editor maintains a shared custom dictionary for all users. You can enable user-specific dictionary support using the [`enableUserDictionary`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor/spellchecker#enableuserdictionary-boolean) API, which stores and retrieves error words based on the `currentUser` property. + +```typescript +documentEditor.spellChecker.enableUserDictionary = true; +``` ### Spell check dictionary cache diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/spell-check.md b/Document-Processing/Word/Word-Processor/javascript-es6/spell-check.md index 59d8262a6..53fc27a82 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/spell-check.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/spell-check.md @@ -81,6 +81,14 @@ The following code example illustrates how to enable optimized spell checking. documentEditor.spellChecker.enableOptimizedSpellCheck = true; ``` +### EnableUserDictionary + +By default, Document Editor maintains a shared custom dictionary for all users. You can enable user-specific dictionary support using the [`enableUserDictionary`](https://ej2.syncfusion.com/documentation/api/document-editor/spellchecker#enableuserdictionary-boolean) API, which stores and retrieves error words based on the [`currentUser`] property. + +```ts +documentEditor.spellChecker.enableUserDictionary = true; +``` + ### Spell check dictionary cache Starting from `v20.1.0.xx`, we have optimized the performance and memory usage of spell checker by adding a static method to initialize the dictionaries with specified cache count. diff --git a/Document-Processing/Word/Word-Processor/react/spell-check.md b/Document-Processing/Word/Word-Processor/react/spell-check.md index dd30e68f7..028177b80 100644 --- a/Document-Processing/Word/Word-Processor/react/spell-check.md +++ b/Document-Processing/Word/Word-Processor/react/spell-check.md @@ -110,6 +110,13 @@ The following code example illustrates how to enable optimized spell checking. ```ts documentEditor.spellChecker.enableOptimizedSpellCheck = true; ``` +### EnableUserDictionary + +By default, Document Editor maintains a shared custom dictionary for all users. You can enable user-specific dictionary support using the [`enableUserDictionary`](https://ej2.syncfusion.com/react/documentation/api/document-editor/spellchecker#enableuserdictionary-boolean) API, which stores and retrieves error words based on the `currentUser` property. + +```ts +documentEditor.spellChecker.enableUserDictionary = true; +``` ### Spell check dictionary cache diff --git a/Document-Processing/Word/Word-Processor/vue/spell-check.md b/Document-Processing/Word/Word-Processor/vue/spell-check.md index 7597666c5..149ce1832 100644 --- a/Document-Processing/Word/Word-Processor/vue/spell-check.md +++ b/Document-Processing/Word/Word-Processor/vue/spell-check.md @@ -120,6 +120,13 @@ The following code example illustrates how to enable optimized spell checking. ```ts this.container.documentEditor.spellChecker.enableOptimizedSpellCheck = true; ``` +### EnableUserDictionary + +By default, Document Editor maintains a shared custom dictionary for all users. You can enable user-specific dictionary support using the [`enableUserDictionary`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/spellchecker#enableuserdictionary-boolean) API, which stores and retrieves error words based on the `currentUser` property. + +```ts +this.container.documentEditor.spellChecker.enableUserDictionary = true; +``` ### Spell check dictionary cache From 6e5ec86aba9c1b45b098a4a09783f91bd7221f1d Mon Sep 17 00:00:00 2001 From: manomurugan Date: Tue, 30 Dec 2025 19:16:17 +0530 Subject: [PATCH 06/12] 1000615: Visible the storage document in core and MVC document editor --- Document-Processing-toc.html | 39 ++++- .../opening-documents/aws-s3-bucket.md | 127 ++++++++++++++ .../opening-documents/azure-blob-storage.md | 112 ++++++++++++ .../box-cloud-file-storage.md | 137 +++++++++++++++ .../dropbox-cloud-file-storage.md | 119 +++++++++++++ .../opening-documents/google-cloud-storage.md | 127 ++++++++++++++ .../opening-documents/google-drive.md | 152 ++++++++++++++++ .../opening-documents/one-drive.md | 156 +++++++++++++++++ .../saving-documents/aws-s3-bucket.md | 134 ++++++++++++++ .../saving-documents/azure-blob-storage.md | 129 ++++++++++++++ .../box-cloud-file-storage.md | 143 +++++++++++++++ .../dropbox-cloud-file-storage.md | 135 +++++++++++++++ .../saving-documents/google-cloud-storage.md | 137 +++++++++++++++ .../saving-documents/google-drive.md | 163 ++++++++++++++++++ .../saving-documents/one-drive.md | 160 +++++++++++++++++ 15 files changed, 1967 insertions(+), 3 deletions(-) create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md create mode 100644 Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md diff --git a/Document-Processing-toc.html b/Document-Processing-toc.html index edc8340a3..38341b793 100644 --- a/Document-Processing-toc.html +++ b/Document-Processing-toc.html @@ -2799,8 +2799,30 @@
  • Overview
  • Getting Started
  • Feature modules
  • -
  • Import
  • -
  • Export
  • +
  • + Opening Document + +
  • +
  • + Saving Document + +
  • Collaborative Editing
  • -
  • Export
  • +
  • + Saving Document + +
  • Collaborative Editing
    • Using Redis in ASP.NET MVC
    • diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md new file mode 100644 index 000000000..02754f818 --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md @@ -0,0 +1,127 @@ +--- +layout: post +title: Open document from AWS S3 in ASP.NET Core Document editor | Syncfusion +description: Learn about how to Open document from AWS S3 in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Open document from AWS S3 +documentation: ug +domainurl: ##DomainURL## +--- + +# Open document from AWS S3 + +To load a document from AWS S3 in a Document Editor, you can follow the steps below + + +**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + + +**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Amazon; +using Amazon.S3; +using Amazon.S3.Model; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string _accessKey; +public readonly string _secretKey; +public readonly string _bucketName; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + _accessKey = _configuration.GetValue("AccessKey"); + _secretKey = _configuration.GetValue("SecretKey"); + _bucketName = _configuration.GetValue("BucketName"); +} +``` + +* Create the `LoadFromS3()` method to load the document from AWS S3. + +```csharp + +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("LoadFromS3")] +//Post action for Loading the documents + +public async Task LoadFromS3([FromBody] Dictionary onObject) +{ + MemoryStream stream = new MemoryStream(); + + if (jsonObject == null && !jsonObject.ContainsKey("documentName")) + { + return null; + } + RegionEndpoint bucketRegion = RegionEndpoint.USEast1; + + // Configure the AWS SDK with your access credentials and other settings + var s3Client = new AmazonS3Client(_accessKey, _secretKey, bucketRegion); + + string documentName = jsonObject["documentName"]; + + // Specify the document name or retrieve it from a different source + var response = await s3Client.GetObjectAsync(_bucketName, documentName); + + Stream responseStream = response.ResponseStream; + responseStream.CopyTo(stream); + stream.Seek(0, SeekOrigin.Begin); + WordDocument document = WordDocument.Load(stream, FormatType.Docx); + string json = Newtonsoft.Json.JsonConvert.SerializeObject(document); + document.Dispose(); + stream.Close(); + return json; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "AccessKey": "Your Access Key from AWS S3", + "SecretKey": "Your Secret Key from AWS S3", + "BucketName": "Your Bucket name from AWS S3" +} +``` + +N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Your Bucket name from AWS S3** with your actual AWS access key, secret key and bucket name + +**Step 3:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/open-aws-s3/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/open-aws-s3/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + + +N> The **AWSSDK.S3** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md new file mode 100644 index 000000000..50eab95aa --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md @@ -0,0 +1,112 @@ +--- +layout: post +title: Open Azure Blob Files in ASP.NET Core Document editor | Syncfusion +description: Learn about how to Open document from Azure Blob Storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Open document from Azure Blob Storage +documentation: ug +domainurl: ##DomainURL## +--- + +# Open document from Azure Blob Storage + +To load document from Azure Blob Storage in a Document Editor, you can follow the steps below + + +**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Azure.Storage.Blobs; +using Azure.Storage.Blobs.Specialized; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + + +```csharp +private readonly string _storageConnectionString; +private readonly string _storageContainerName; +private readonly ILogger _logger; + +public DocumentEditorController(IConfiguration configuration, ILogger logger) +{ + _storageConnectionString = configuration.GetValue("connectionString"); + _storageContainerName = configuration.GetValue("containerName"); + _logger = logger; +} +``` + +* Modify the `LoadFromAzure()` method to load the document from Azure Blob Storage + +```csharp + +[HttpPost("LoadFromAzure")] +[Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] +[Route("[controller]/LoadFromAzure")] +//Post action for Loading the PDF documents  +  +public IActionResult LoadFromAzure([FromBody] Dictionary jsonObject) +{ + MemoryStream stream = new MemoryStream(); + + if (jsonObject == null && !jsonObject.ContainsKey("documentName")) + { + return null + } + BlobServiceClient blobServiceClient = new BlobServiceClient(_storageConnectionString); + string fileName = jsonObject["documentName"]; + BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(_storageContainerName); + BlockBlobClient blockBlobClient = containerClient.GetBlockBlobClient(fileName); + blockBlobClient.DownloadTo(stream); + WordDocument document = WordDocument.Load(stream, FormatType.Docx); + string json = Newtonsoft.Json.JsonConvert.SerializeObject(document); + document.Dispose(); + stream.Close(); + return json; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "connectionString": "*Your Connection string from Azure*", + "containerName": "*Your container name in Azure*" +} +``` + +N> Replace **Your Connection string from Azure** with the actual connection string for your Azure Blob Storage account and **Your container name in Azure** with the actual container name + +**Step 3:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. + + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/open-azure-blob/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/open-azure-blob/document-editor.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +N> The **Azure.Storage.Blobs** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md new file mode 100644 index 000000000..1a4840f18 --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md @@ -0,0 +1,137 @@ +--- +layout: post +title: Open Box Cloud Files in ASP.NET Core Document Editor | Syncfusion +description: Learn here to open a document from Box cloud file storage in Syncfusion ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more. +platform: document-processing +control: Opening from Box cloud file storage +documentation: ug +domainurl: ##DomainURL## +--- + +# Open document from Box cloud file storage + +To load a document from Box cloud file storage in a document Editor, you can follow the steps below + +**Step 1:** Set up a Box developer account and create a Box application + +To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. + + +**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using Box.V2; +using Box.V2.Auth; +using Box.V2.Config; +using Box.V2.Models; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string _accessToken; +public readonly string _clientID; +public readonly string _clientSecret; +public readonly string _folderID; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + _accessToken = _configuration.GetValue("AccessToken"); + _clientID = _configuration.GetValue("ClientID"); + _clientSecret = _configuration.GetValue("ClientSecret"); + _folderID = _configuration.GetValue("FolderID"); +} +``` + +* Create the `LoadFromBoxCloud()` method to load the document from Box cloud file storage. + +```csharp +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("LoadFromBoxCloud")] +//Post action for Loading the documents + +public async Task LoadFromBoxCloud([FromBody] Dictionary jsonObject) +{ + if (jsonObject == null && !jsonObject.ContainsKey("documentName")) + { + return null + } + MemoryStream stream = new MemoryStream(); + // Initialize the Box API client with your authentication credentials + var auth = new OAuthSession(_accessToken, "YOUR_REFRESH_TOKEN", 3600, "bearer"); + var config = new BoxConfigBuilder(_clientID, _clientSecret, new Uri("http://boxsdk")).Build(); + var client = new BoxClient(config, auth); + + // Download the file from Box storage + var items = await client.FoldersManager.GetFolderItemsAsync(_folderID, 1000, autoPaginate: true); + var files = items.Entries.Where(i => i.Type == "file"); + + // Filter the files based on the objectName + var matchingFile = files.FirstOrDefault(file => file.Name == objectName); + + // Fetch the file from Box storage by its name + var fileStream = await client.FilesManager.DownloadAsync(matchingFile.Id); + stream = new MemoryStream(); + await fileStream.CopyToAsync(stream); + + // Reset the position to the beginning of the stream + stream.Position = 0; + + WordDocument document = WordDocument.Load(stream, FormatType.Docx); + string json = Newtonsoft.Json.JsonConvert.SerializeObject(document); + document.Dispose(); + stream.Close(); + return json; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "AccessToken": "Your_Box_Storage_Access_Token", + "FolderID": "Your_Folder_ID", + "ClientID": "Your_Box_Storage_ClientID", + "ClientSecret": "Your_Box_Storage_ClientSecret" +} +``` + +N> replace **Your_Box_Storage_Access_Token** with your actual box access token, and **Your_Folder_ID** with the ID of the folder in your box storage where you want to perform specific operations. Remember to use your valid box API credentials, as **Your_Box_Storage_ClientID** and **Your_Box_Storage_ClientSecret"** are placeholders for your application's API key and secret. + +**Step 4:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/open-box-cloud-file-storage/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/open-box-cloud-file-storage/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The **Box.V2.Core** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md new file mode 100644 index 000000000..d04275a83 --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md @@ -0,0 +1,119 @@ +--- +layout: post +title: Open Dropbox Files in ASP.NET Core Document Editor | Syncfusion +description: Learn about how to Open document from Dropbox cloud file storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Open document from Dropbox cloud file storage +documentation: ug +domainurl: ##DomainURL## +--- + +# Open document from Dropbox cloud file storage + +To load a document from Dropbox cloud file storage in a Document editor, you can follow the steps below + +**Step 1:** Create a Dropbox API + +To create a Dropbox API App, you should follow the official documentation provided by Dropbox [link](https://www.dropbox.com/developers/documentation/dotnet#tutorial). The process involves visiting the Dropbox Developer website and using their App Console to set up your API app. This app will allow you to interact with Dropbox programmatically, enabling secure access to files and data. + + +**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Dropbox.Api; +using Dropbox.Api.Files; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string _accessToken; +public readonly string _folderName; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + _accessToken = _configuration.GetValue("AccessToken"); + _folderName = _configuration.GetValue("FolderName"); +} +``` + +* Create the `LoadFromDropBox()` method to load the document from Dropbox cloud file storage. + +```csharp + +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("LoadFromBoxCloud")] +//Post action for Loading the documents + +public async Task LoadFromDropBox([FromBody] Dictionary jsonObject) +{ + if (jsonObject == null && !jsonObject.ContainsKey("documentName")) + { + return null + } + MemoryStream stream = new MemoryStream(); + + using (var dropBox = new DropboxClient(_accessToken)) + { + using (var response = await dropBox.Files.DownloadAsync(_folderName + "/" + fileName)) + { + var byteArray = await response.GetContentAsByteArrayAsync(); + stream = new MemoryStream(byteArray); + } + } + WordDocument document = WordDocument.Load(stream, FormatType.Docx); + string json = Newtonsoft.Json.JsonConvert.SerializeObject(document); + document.Dispose(); + stream.Close(); + return json; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "AccessToken": "Your_Dropbox_Access_Token", + "FolderName": "Your_Folder_Name" +} +``` + +N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token and **Your_Folder_Name** with your folder name. + +**Step 4:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/open-dropbox-cloud-file-storage/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/open-dropbox-cloud-file-storage/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + +N> The **Dropbox.Api** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md new file mode 100644 index 000000000..3948ac752 --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md @@ -0,0 +1,127 @@ +--- +layout: post +title: Open Google Cloud Files in ASP.NET Core Document Editor | Syncfusion +description: Learn about how to Open document from Google Cloud Storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Open document from Google Cloud Storage +documentation: ug +domainurl: ##DomainURL## +--- + +# Open document from Google Cloud Storage + +To load a document from Google Cloud Storage in a Document editor, you can follow the steps below + + +**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Google.Cloud.Storage.V1; +using Google.Apis.Auth.OAuth2; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +// Private readonly object _storageClient +private readonly StorageClient _storageClient; + +private IConfiguration _configuration; + +public readonly string _bucketName; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + + // The key file is used to authenticate with Google Cloud Storage. + string keyFilePath = "path/to/service-account-key.json"; + + // Load the service account credentials from the key file. + var credentials = GoogleCredential.FromFile(keyFilePath); + + // Create a storage client with Application Default Credentials + _storageClient = StorageClient.Create(credentials); + + _configuration = configuration; + + _bucketName = _configuration.GetValue("BucketName"); +} +``` + +* Create the `LoadFromGoogleCloud()` method to load the document from Google Cloud Storage. + +```csharp +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("LoadFromGoogleCloud")] +//Post action for Loading the documents + +public async Task LoadFromGoogleCloud([FromBody] Dictionary jsonObject) +{ + if (jsonObject == null && !jsonObject.ContainsKey("documentName")) + { + return null + } + MemoryStream stream = new MemoryStream(); + + string bucketName = _bucketName; + string objectName = jsonObject["document"]; + _storageClient.DownloadObject(bucketName, objectName, stream); + stream.Position = 0; + + WordDocument document = WordDocument.Load(stream, FormatType.Docx); + string json = Newtonsoft.Json.JsonConvert.SerializeObject(document); + document.Dispose(); + stream.Close(); + return json; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "BucketName": "Your Bucket name from Google Cloud Storage" +} +``` + +N> Replace **Your Bucket name from Google Cloud Storage** with the actual name of your Google Cloud Storage bucket + +N> Replace **path/to/service-account-key.json** with the actual file path to your service account key JSON file. Make sure to provide the correct path and filename. + +**Step 3:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/open-google-cloud-storage/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/open-google-cloud-storage/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The **Google.Cloud.Storage.V1** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md new file mode 100644 index 000000000..c61d753d8 --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md @@ -0,0 +1,152 @@ +--- +layout: post +title: Open Google Drive Files in ASP.NET Core Document Editor | Syncfusion +description: Learn about how to Open document from Google Drive in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Open document from Google Drive +documentation: ug +domainurl: ##DomainURL## +--- + +# Open document from Google Drive + +To load a document from Google Drive in a Document editor, you can follow the steps below + +**Step 1:** Set up Google Drive API + +You must set up a project in the Google Developers Console and enable the Google Drive API. Obtain the necessary credentials to access the API. For more information, view the official [link](https://developers.google.com/drive/api/guides/enable-sdk). + + +**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Google.Apis.Drive.v3; +using Google.Apis.Util.Store; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string folderId; +public readonly string applicationName; +public readonly string credentialPath; +private static readonly string[] Scopes = { DriveService.Scope.DriveFile, DriveService.Scope.DriveReadonly}; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + folderId = _configuration.GetValue("FolderId"); + credentialPath = _configuration.GetValue("CredentialPath"); + applicationName = _configuration.GetValue("ApplicationName"); +} +``` + +* Create the `LoadFromGoogleDrive()` method to load the document from Google Drive. + +```csharp +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("LoadFromGoogleDrive")] +//Post action for Loading the documents +public async Task LoadFromGoogleDrive([FromBody] Dictionary jsonObject) +{ + + MemoryStream stream = new MemoryStream(); + UserCredential credential; + using (var stream1 = new FileStream(credentialPath, FileMode.Open, FileAccess.Read)) + { + string credPath = "token.json"; + credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( + GoogleClientSecrets.Load(stream1).Secrets, + Scopes, + "user", + CancellationToken.None, + new FileDataStore(credPath, true)); + } + + // Create Google Drive API service. + var service = new DriveService(new BaseClientService.Initializer() + { + HttpClientInitializer = credential, + ApplicationName = applicationName, + }); + // List DOCX files in Google Drive + listRequest.Q = "mimeType='application/vnd.openxmlformats-officedocument.wordprocessingml.document' and '" + folderId + "' in parents and trashed=false"; + listRequest.Fields = "files(id, name)"; + var files = await listRequest.ExecuteAsync(); + string fileIdToDownload = string.Empty; + foreach (var file in files.Files) + { + string fileId = file.Id; + string fileName = file.Name; + if (fileName == objectName) + { + // Save the matching fileId + fileIdToDownload = fileId; + break; + } + } + string fileIds = fileIdToDownload; + var request = service.Files.Get(fileIds); + await request.DownloadAsync(stream); + stream.Position = 0; + + WordDocument document = WordDocument.Load(stream, FormatType.Docx); + string json = Newtonsoft.Json.JsonConvert.SerializeObject(document); + document.Dispose(); + stream.Close(); + return json; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "FolderId": "Your Google Drive Folder ID", + "CredentialPath": "Your Path to the OAuth 2.0 Client IDs json file", + "ApplicationName": "Your Application name" +} +``` + +N> Replace **Your Google Drive Folder ID**, **Your Application name**, and **Your Path to the OAuth 2.0 Client IDs json file** with your actual Google drive folder ID , Your name for your application and the path for the JSON file. + +N> The **FolderId** part is the unique identifier for the folder. For example, if your folder URL is: `https://drive.google.com/drive/folders/abc123xyz456`, then the folder ID is `abc123xyz456`. + +**Step 4:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/open-google-drive/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/open-google-drive/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The **Google.Apis.Drive.v3** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md new file mode 100644 index 000000000..3b88c9502 --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md @@ -0,0 +1,156 @@ +--- +layout: post +title: Open OneDrive Files in ASP.NET Core Document editor | Syncfusion +description: Learn about how to Open document from One Drive in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Open document from One Drive +documentation: ug +domainurl: ##DomainURL## +--- + +# Open document from One Drive + +To load a document from One Drive in a Document editor, you can follow the steps below + +**Step 1:** Create the Microsoft graph API. + +Need to create a Microsoft Graph API application and obtain the necessary credentials, namely the application ID and tenant ID. Follow the steps provided in the [link](https://learn.microsoft.com/en-us/training/modules/msgraph-access-file-data/3-exercise-access-files-onedrive) to create the application and obtain the required IDs. + + +**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Microsoft.Graph; +using Microsoft.Identity.Client; +using Helpers; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string folderName; +public readonly string applicationId; +public readonly string tenantId; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + folderName = _configuration.GetValue("FolderName"); + tenantId = _configuration.GetValue("TenantId"); + applicationId = _configuration.GetValue("ApplicationId"); +} +``` + +* Create the `LoadFromOneDrive()` method to load the document from One Drive. + +```csharp +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("LoadFromBoxCloud")] +//Post action for Loading the documents + +public async Task LoadFromOneDrive([FromBody] Dictionary jsonObject) +{ + MemoryStream stream = new MemoryStream(); + + var config = LoadAppSettings(); + var client = GetAuthenticatedGraphClient(config); + + var request = client.Me.Drive.Root.Children.Request(); + string folderIdToSearch = string.Empty; + var results = await request.GetAsync(); + + var folder = results.FirstOrDefault(f => f.Name == folderName && f.Folder != null); + if (folder != null) + { + // Save the matching folderId + folderIdToSearch = folder.Id; + } + + var folderRequest = client.Me.Drive.Items[folderIdToSearch].Children.Request(); + var folderContents = await folderRequest.GetAsync(); + + string fileIdToDownload = string.Empty; + var file = folderContents.FirstOrDefault(f => f.File != null && f.Name == objectName); + if (file != null) + { + // Save the matching fileId + fileIdToDownload = file.Id; + } + + string fileIds = fileIdToDownload; + var fileRequest = client.Me.Drive.Items[fileIdToDownload].Content.Request(); + + using (var streamResponse = await fileRequest.GetAsync()) + { + if (streamResponse != null) + { + streamResponse.Seek(0, SeekOrigin.Begin); + await streamResponse.CopyToAsync(stream); + } + } + WordDocument document = WordDocument.Load(stream, FormatType.Docx); + string json = Newtonsoft.Json.JsonConvert.SerializeObject(document); + document.Dispose(); + stream.Close(); + return json; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "TenantId": "Your_Tenant_ID", + "applApplicationIdicationId": "Your_Application_ID", + "FolderName": "Your_Folder_Name_To_Access_The_Files_In_Onedrive" +} + +``` + +N> Replace **Your_Tenent_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_Onedrive** with your actual tenant ID, application ID, and folder name. + +**Step 4:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/open-one-drive/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/open-one-drive/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The following NuGet packages are required to use the previous code example +* **Microsoft.Identity.Client** +* **Microsoft.Graph** +* **Microsoft.Extensions.Configuration** +* **Microsoft.Extensions.Configuration.FileExtensions** +* **Microsoft.Extensions.Configuration.Json** + +You can install these packages using the NuGet Package Manager in Visual Studio or Visual Studio Code. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md new file mode 100644 index 000000000..5dce54ed4 --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md @@ -0,0 +1,134 @@ +--- +layout: post +title: Save document to AWS S3 in Document editor | Syncfusion +description: Learn about how to Save document to AWS S3 in ASP.NET MVC Document editor of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Save document to AWS S3 +documentation: ug +domainurl: ##DomainURL## +--- + +# Save document to AWS S3 in Document editor Component + +To save a document to AWS S3, you can follow the steps below + + +**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Amazon; +using Amazon.S3; +using Amazon.S3.Model; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string _accessKey; +public readonly string _secretKey; +public readonly string _bucketName; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + _accessKey = _configuration.GetValue("AccessKey"); + _secretKey = _configuration.GetValue("SecretKey"); + _bucketName = _configuration.GetValue("BucketName"); +} +``` + +* Create the `SaveToS3()` method to save the document to AWS S3 bucket + +```csharp + +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("SaveToS3")] +//Post action for save the document to AWS S3 + +public void SaveToS3(IFormCollection data) +{ + if (data.Files.Count == 0) + return; + RegionEndpoint bucketRegion = RegionEndpoint.USEast1; + // Configure the AWS SDK with your access credentials and other settings + var s3Client = new AmazonS3Client(_accessKey, _secretKey, bucketRegion); + string bucketName = _bucketName; + IFormFile file = data.Files[0]; + string documentName = this.GetValue(data, "documentName"); + string result = Path.GetFileNameWithoutExtension(documentName); + Stream stream = new MemoryStream(); + file.CopyTo(stream); + var request = new PutObjectRequest + { + BucketName = bucketName, + Key = result + "_downloaded.docx", + InputStream = stream, + }; + // Upload the document to AWS S3 + var response = s3Client.PutObjectAsync(request).Result; +} + +private string GetValue(IFormCollection data, string key) +{ + if (data.ContainsKey(key)) + { + string[] values = data[key]; + if (values.Length > 0) + { + return values[0]; + } + } + return ""; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "AccessKey": "Your Access Key from AWS S3", + "SecretKey": "Your Secret Key from AWS S3", + "BucketName": "Your Bucket name from AWS S3" +} +``` + +N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Your Bucket name from AWS S3** with your actual AWS access key, secret key and bucket name + +**Step 3:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in AWS S3 Bucket. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/save-aws-s3/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/save-aws-s3/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The **AWSSDK.S3** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md new file mode 100644 index 000000000..2bb779b0a --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md @@ -0,0 +1,129 @@ +--- +layout: post +title: Save to Azure Blob in Document editor | Syncfusion +description: Learn about how to Save document to Azure Blob Storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Save document to Azure Blob Storage +documentation: ug +domainurl: ##DomainURL## +--- + +# Save document to Azure Blob Storage + +To save a document to Azure Blob Storage, you can follow the steps below + + +**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Create a web service project in .NET Core 3.0 or above. You can refer to this [link](../../document-editor/web-services-overview) for instructions on how to create a web service project. + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Azure.Storage.Blobs; +using Azure.Storage.Blobs.Specialized; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private readonly string _storageConnectionString; +private readonly string _storageContainerName; +private readonly ILogger _logger; + +public DocumentEditorController(IConfiguration configuration, ILogger logger) +{ + _storageConnectionString = configuration.GetValue("connectionString"); + _storageContainerName = configuration.GetValue("containerName"); + _logger = logger; +} +``` + +* Create then 'SaveToAzure' method to save the downloaded documents to Azure Blob Storage container + +```csharp + +[HttpPost("SaveToAzure")] +[Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")] +[Route("[controller]/SaveToAzure")] +//Post action for downloading the documents + +public void Download(IFormCollection data) +{ + if (data.Files.Count == 0) + return; + + BlobServiceClient blobServiceClient = new BlobServiceClient(_storageConnectionString); + BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(_storageContainerName); + + IFormFile file = data.Files[0]; + string documentName = this.GetValue(data, "documentName"); + string result = Path.GetFileNameWithoutExtension(documentName); + + // Get a reference to the blob + BlobClient blobClient = containerClient.GetBlobClient(result + "_downloaded.docx"); + + Stream stream = new MemoryStream(); + file.CopyTo(stream); + + // Upload the document to Azure Blob Storage + blobClient.Upload(stream, true); +} + +private string GetValue(IFormCollection data, string key) +{ + if (data.ContainsKey(key)) + { + string[] values = data[key]; + if (values.Length > 0) + { + return values[0]; + } + } + return ""; +} + +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "connectionString": "*Your Connection string from Azure*", + "containerName": "*Your container name in Azure*" +} +``` + +N> Replace **Your Connection string from Azure** with the actual connection string for your Azure Blob Storage account and **Your container name in Azure** with the actual container name + +**Step 3:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Azure Blob Storage container. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/save-azure-blob/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/save-azure-blob/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The **Azure.Storage.Blobs** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md new file mode 100644 index 000000000..b44454921 --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md @@ -0,0 +1,143 @@ +--- +layout: post +title: Save to Box cloud file Document editor | Syncfusion +description: Learn about how to Save document to Box cloud file storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Save document to Box cloud file storage +documentation: ug +domainurl: ##DomainURL## +--- + +# Save document to Box cloud file storage + +To save a document to Box cloud file storage, you can follow the steps below + +**Step 1:** Set up a Box developer account and create a Box application + +To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. + + +**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using Box.V2; +using Box.V2.Auth; +using Box.V2.Config; +using Box.V2.Models; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string _accessToken; +public readonly string _clientID; +public readonly string _clientSecret; +public readonly string _folderID; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + _accessToken = _configuration.GetValue("AccessToken"); + _clientID = _configuration.GetValue("ClientID"); + _clientSecret = _configuration.GetValue("ClientSecret"); + _folderID = _configuration.GetValue("FolderID"); +} +``` + +* Create the `SaveToBoxCloud()` method to save the downloaded document to Box cloud file storage bucket + +```csharp +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("SaveToBoxCloud")] +//Post action for downloading the document + +public void SaveToBoxCloud(IFormCollection data) +{ + if (data.Files.Count == 0) + return; + + IFormFile file = data.Files[0]; + string documentName = this.GetValue(data, "documentName"); + string result = Path.GetFileNameWithoutExtension(documentName); + + // Initialize the Box API client with your authentication credentials + var auth = new OAuthSession(_accessToken, "YOUR_REFRESH_TOKEN", 3600, "bearer"); + var config = new BoxConfigBuilder(_clientID, _clientSecret, new Uri("http://boxsdk")).Build(); + var client = new BoxClient(config, auth); + + var fileRequest = new BoxFileRequest + { + Name = result + "_downloaded.docx", + Parent = new BoxFolderRequest { Id = _folderID }, + }; + + Stream stream = new MemoryStream(); + file.CopyTo(stream); + + var boxFile = await client.FilesManager.UploadAsync(fileRequest, stream); +} + +private string GetValue(IFormCollection data, string key) +{ + if (data.ContainsKey(key)) + { + string[] values = data[key]; + if (values.Length > 0) + { + return values[0]; + } + } + return ""; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "AccessToken": "Your_Box_Storage_Access_Token", + "FolderID": "Your_Folder_ID", + "ClientID": "Your_Box_Storage_ClientID", + "ClientSecret": "Your_Box_Storage_ClientSecret" +} +``` + +N> replace **Your_Box_Storage_Access_Token** with your actual box access token, and **Your_Folder_ID** with the ID of the folder in your box storage where you want to perform specific operations. Remember to use your valid box API credentials, as **Your_Box_Storage_ClientID** and **Your_Box_Storage_ClientSecret"** are placeholders for your application's API key and secret. + +**Step 4:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Box cloud file storage. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/save-box-cloud-file-storage/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/save-box-cloud-file-storage/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The **Box.V2.Core** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md new file mode 100644 index 000000000..1b52dadef --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md @@ -0,0 +1,135 @@ +--- +layout: post +title: Save document to Dropbox cloud in Document editor | Syncfusion +description: Learn about how to Save document to Dropbox cloud file storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Save document to Dropbox cloud file storage +documentation: ug +domainurl: ##DomainURL## +--- + +# Save document to Dropbox cloud file storage + +To save a document to Dropbox cloud file storage, you can follow the steps below + +**Step 1:** Create a Dropbox API + +To create a Dropbox API App, you should follow the official documentation provided by Dropbox [link](https://www.dropbox.com/developers/documentation/dotnet#tutorial). The process involves visiting the Dropbox Developer website and using their App Console to set up your API app. This app will allow you to interact with Dropbox programmatically, enabling secure access to files and data. + + +**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Dropbox.Api; +using Dropbox.Api.Files; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string _accessToken; +public readonly string _folderName; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + _accessToken = _configuration.GetValue("AccessToken"); + _folderName = _configuration.GetValue("FolderName"); +} +``` + +* Create the `SaveToDropBox()` method to save the downloaded document to Dropbox cloud file storage bucket + +```csharp + +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("SaveToDropBox")] +//Post action for downloading the document + +public void SaveToDropBox(IFormCollection data) +{ + if (data.Files.Count == 0) + return; + + IFormFile file = data.Files[0]; + string documentName = this.GetValue(data, "documentName"); + string result = Path.GetFileNameWithoutExtension(documentName); + string fileName = result + "_downloaded.docx"; + + using (var dropBox = new DropboxClient(_accessToken)) + { + Stream stream = new MemoryStream(); + file.CopyTo(stream); + + // Upload the document to Dropbox + var uploadedFile = await dropBox.Files.UploadAsync( + _folderName + "/" + fileName, + WriteMode.Overwrite.Instance, + body: stream + ); + } +} + +private string GetValue(IFormCollection data, string key) +{ + if (data.ContainsKey(key)) + { + string[] values = data[key]; + if (values.Length > 0) + { + return values[0]; + } + } + return ""; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "AccessToken": "Your_Dropbox_Access_Token", + "FolderName": "Your_Folder_Name" +} +``` + +N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token and **Your_Folder_Name** with your folder name. + +**Step 4:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Dropbox cloud file storage. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/save-dropbox-cloud-file-storage/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/save-dropbox-cloud-file-storage/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The **Dropbox.Api** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md new file mode 100644 index 000000000..47d816b43 --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md @@ -0,0 +1,137 @@ +--- +layout: post +title: Save to Google Cloud Storage Document editor | Syncfusion +description: Learn about how to Save document to Google Cloud Storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Save document to Google Cloud Storage +documentation: ug +domainurl: ##DomainURL## +--- + +# Save document to Google Cloud Storage + +To save a document to Google Cloud Storage, you can follow the steps below + +**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 2:** Create the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Google.Cloud.Storage.V1; +using Google.Apis.Auth.OAuth2; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +// Private readonly object _storageClient +private readonly StorageClient _storageClient; + +private IConfiguration _configuration; + +public readonly string _bucketName; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + + // The key file is used to authenticate with Google Cloud Storage. + string keyFilePath = "path/to/service-account-key.json"; + + // Load the service account credentials from the key file. + var credentials = GoogleCredential.FromFile(keyFilePath); + + // Create a storage client with Application Default Credentials + _storageClient = StorageClient.Create(credentials); + + _configuration = configuration; + + _bucketName = _configuration.GetValue("BucketName"); +} +``` + +* Create the `SaveToGoogleCloud()` method to save the downloaded document to Google Cloud Storage bucket + +```csharp +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("SaveToGoogleCloud")] +//Post action for downloading the document +public void SaveToGoogleCloud(IFormCollection data) +{ + if (data.Files.Count == 0) + return; + + IFormFile file = data.Files[0]; + string documentName = this.GetValue(data, "documentName"); + string result = Path.GetFileNameWithoutExtension(documentName); + + string bucketName = _bucketName; + + Stream stream = new MemoryStream(); + file.CopyTo(stream); + + // Upload the document to Google Cloud Storage + _storageClient.UploadObject(bucketName, result + "_downloaded.docx", null, stream); + +} + +private string GetValue(IFormCollection data, string key) +{ + if (data.ContainsKey(key)) + { + string[] values = data[key]; + if (values.Length > 0) + { + return values[0]; + } + } + return ""; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "BucketName": "Your Bucket name from Google Cloud Storage" +} +``` + +N> Replace **Your Bucket name from Google Cloud Storage** with the actual name of your Google Cloud Storage bucket + +N> Replace **path/to/service-account-key.json** with the actual file path to your service account key JSON file. Make sure to provide the correct path and filename. + +**Step 4:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Google Cloud Storage. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/save-google-cloud-storage/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/save-google-cloud-storage/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The **Google.Cloud.Storage.V1** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md new file mode 100644 index 000000000..1f635d41e --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md @@ -0,0 +1,163 @@ +--- +layout: post +title: Save document to Google Drive in Document editor | Syncfusion +description: Learn about how to Save document to Google Drive in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Save document to Google Drive +documentation: ug +domainurl: ##DomainURL## +--- + +# Save document to Google Drive + +To save a document to Google Drive, you can follow the steps below + +**Step 1:** Set up Google Drive API + +You must set up a project in the Google Developers Console and enable the Google Drive API. Obtain the necessary credentials to access the API. For more information, view the official [link](https://developers.google.com/drive/api/guides/enable-sdk). + + +**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Google.Apis.Drive.v3; +using Google.Apis.Util.Store; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string folderId; +public readonly string applicationName; +public readonly string credentialPath; +private static readonly string[] Scopes = { DriveService.Scope.DriveFile, DriveService.Scope.DriveReadonly}; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + folderId = _configuration.GetValue("FolderId"); + credentialPath = _configuration.GetValue("CredentialPath"); + applicationName = _configuration.GetValue("ApplicationName"); +} +``` + +* Create the `SaveToGoogleDrive()` method to save the downloaded document to Google Drive bucket + +```csharp +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("SaveToGoogleDrive")] +//Post action for downloading the document + +public void SaveToGoogleDrive(IFormCollection data) +{ + if (data.Files.Count == 0) + return; + + IFormFile file = data.Files[0]; + string documentName = this.GetValue(data, "documentName"); + string result = Path.GetFileNameWithoutExtension(documentName); + string fileName = result + "_downloaded.docx"; + + UserCredential credential; + + using (var memStream = new FileStream(credentialPath, FileMode.Open, FileAccess.Read)) + { + string credPath = "token.json"; + credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( + GoogleClientSecrets.Load(memStream).Secrets, + Scopes, + "user", + CancellationToken.None, + new FileDataStore(credPath, true)); + } + + // Create the Drive API service. + var service = new DriveService(new BaseClientService.Initializer() + { + HttpClientInitializer = credential, + ApplicationName = applicationName, + }); + + var fileMetadata = new Google.Apis.Drive.v3.Data.File() + { + Name = fileName, + Parents = new List { folderId } + }; + + Stream stream = new MemoryStream(); + file.CopyTo(stream); + + FilesResource.CreateMediaUpload request; + request = service.Files.Create(fileMetadata, stream, "application/pdf"); + request.Fields = "id"; + object value = await request.UploadAsync(); +} + +private string GetValue(IFormCollection data, string key) +{ + if (data.ContainsKey(key)) + { + string[] values = data[key]; + if (values.Length > 0) + { + return values[0]; + } + } + return ""; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "FolderId": "Your Google Drive Folder ID", + "CredentialPath": "Your Path to the OAuth 2.0 Client IDs json file", + "ApplicationName": "Your Application name" +} +``` + +N> Replace **Your Google Drive Folder ID**, **Your Application name**, and **Your Path to the OAuth 2.0 Client IDs json file** with your actual Google drive folder ID , Your name for your application and the path for the JSON file. + +N> The **FolderId** part is the unique identifier for the folder. For example, if your folder URL is: `https://drive.google.com/drive/folders/abc123xyz456`, then the folder ID is `abc123xyz456`. + +N> You must use a unique `Client_ID` from json file to interface your application with the Google Drive API in order to save document directly to Google Drive. This Client_ID will serve as the authentication key, allowing you to save files securely. + +**Step 4:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Google Drive. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/save-google-drive/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/save-google-drive/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The **Google.Apis.Drive.v3** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md new file mode 100644 index 000000000..40255071a --- /dev/null +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md @@ -0,0 +1,160 @@ +--- +layout: post +title: Save document to One Drive Document editor | Syncfusion +description: Learn about how to Save document to One Drive in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. +platform: document-processing +control: Save document to One Drive +documentation: ug +domainurl: ##DomainURL## +--- + +# Save document to One Drive + +To save a document to One Drive, you can follow the steps below + +**Step 1:** Create the Microsoft graph API. + +Need to create a Microsoft Graph API application and obtain the necessary credentials, namely the application ID and tenant ID. Follow the steps provided in the [link](https://learn.microsoft.com/en-us/training/modules/msgraph-access-file-data/3-exercise-access-files-onedrive) to create the application and obtain the required IDs. + + +**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core + +Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component. + + +**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project + +* Open the `DocumentEditorController.cs` file in your web service project. + +* Import the required namespaces at the top of the file: + +```csharp +using System.IO; +using Microsoft.Graph; +using Microsoft.Identity.Client; +using Helpers; +``` + +* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields + +```csharp +private IConfiguration _configuration; +public readonly string folderName; +public readonly string applicationId; +public readonly string tenantId; + +public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration) +{ + _hostingEnvironment = hostingEnvironment; + _cache = cache; + _configuration = configuration; + folderName = _configuration.GetValue("FolderName"); + tenantId = _configuration.GetValue("TenantId"); + applicationId = _configuration.GetValue("ApplicationId"); +} +``` + +* Create the `SaveToOneDrive()` method to save the downloaded document to One Drive bucket + +```csharp +[AcceptVerbs("Post")] +[HttpPost] +[EnableCors("AllowAllOrigins")] +[Route("SaveToOneDrive")] +//Post action for downloading the document + +public void SaveToOneDrive(IFormCollection data) +{ + + if (data.Files.Count == 0) + return; + + IFormFile file = data.Files[0]; + string documentName = this.GetValue(data, "documentName"); + string result = Path.GetFileNameWithoutExtension(documentName); + string fileName = result + "_downloaded.docx"; + + Stream stream = new MemoryStream(); + file.CopyTo(stream); + + + var config = LoadAppSettings(); + var client = GetAuthenticatedGraphClient(config); + + var request = client.Me.Drive.Root.Children.Request(); + string folderId = string.Empty; + var results = await request.GetAsync(); + + var folder = results.FirstOrDefault(f => f.Name == folderName && f.Folder != null); + if (folder != null) + { + // Save the matching folderId + folderId = folder.Id; + } + + var uploadedFile = client.Me.Drive.Items[folderId] + .ItemWithPath(fileName) + .Content + .Request() + .PutAsync(stream) + .Result; + +} + +private string GetValue(IFormCollection data, string key) +{ + if (data.ContainsKey(key)) + { + string[] values = data[key]; + if (values.Length > 0) + { + return values[0]; + } + } + return ""; +} +``` + +* Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "TenantId": "Your_Tenant_ID", + "applApplicationIdicationId": "Your_Application_ID", + "FolderName": "Your_Folder_Name_To_Access_The_Files_In_Onedrive" +} + +``` + +N> Replace **Your_Tenent_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_Onedrive** with your actual tenant ID, application ID, and folder name. + +**Step 4:** Modify the Index.cshtml File in the Document Editor sample + +In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in One Drive. + + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/save-one-drive/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Document-editor.cs" %} +{% include code-snippet/document-editor-container/save-one-drive/document-editor.cs %} +{% endhighlight %} +{% endtabs %} + + +N> The following NuGet packages are required to use the previous code example +* **Microsoft.Identity.Client** +* **Microsoft.Graph** +* **Microsoft.Extensions.Configuration** +* **Microsoft.Extensions.Configuration.FileExtensions** +* **Microsoft.Extensions.Configuration.Json** + +You can install these packages using the NuGet Package Manager in Visual Studio or Visual Studio Code. From 823c95e3e6a46a105a7b619a738dcb020fe1f4db Mon Sep 17 00:00:00 2001 From: manomurugan Date: Tue, 30 Dec 2025 20:08:34 +0530 Subject: [PATCH 07/12] 1000615: Ci failures --- .../asp-net-core/opening-documents/aws-s3-bucket.md | 6 +++--- .../opening-documents/azure-blob-storage.md | 6 +++--- .../opening-documents/box-cloud-file-storage.md | 8 ++++---- .../opening-documents/dropbox-cloud-file-storage.md | 8 ++++---- .../opening-documents/google-cloud-storage.md | 6 +++--- .../asp-net-core/opening-documents/google-drive.md | 6 +++--- .../asp-net-core/opening-documents/one-drive.md | 8 ++++---- .../asp-net-core/saving-documents/aws-s3-bucket.md | 6 +++--- .../saving-documents/azure-blob-storage.md | 8 ++++---- .../saving-documents/box-cloud-file-storage.md | 10 +++++----- .../saving-documents/dropbox-cloud-file-storage.md | 10 +++++----- .../saving-documents/google-cloud-storage.md | 8 ++++---- .../asp-net-core/saving-documents/google-drive.md | 8 ++++---- .../asp-net-core/saving-documents/one-drive.md | 10 +++++----- .../asp-net-mvc/opening-documents/aws-s3-bucket.md | 2 +- .../opening-documents/azure-blob-storage.md | 2 +- .../opening-documents/box-cloud-file-storage.md | 4 ++-- .../opening-documents/dropbox-cloud-file-storage.md | 2 +- .../opening-documents/google-cloud-storage.md | 2 +- .../asp-net-mvc/opening-documents/google-drive.md | 2 +- .../asp-net-mvc/opening-documents/one-drive.md | 2 +- .../asp-net-mvc/saving-documents/aws-s3-bucket.md | 4 ++-- .../asp-net-mvc/saving-documents/azure-blob-storage.md | 4 ++-- .../saving-documents/box-cloud-file-storage.md | 4 ++-- .../saving-documents/dropbox-cloud-file-storage.md | 4 ++-- .../saving-documents/google-cloud-storage.md | 6 +++--- .../asp-net-mvc/saving-documents/google-drive.md | 6 +++--- .../asp-net-mvc/saving-documents/one-drive.md | 6 +++--- 28 files changed, 79 insertions(+), 79 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md index 02754f818..58b209e0a 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md @@ -111,14 +111,14 @@ N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/open-aws-s3/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-aws-s3/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/open-aws-s3/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-aws-s3/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md index 50eab95aa..9ba377fb9 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md @@ -96,15 +96,15 @@ N> Replace **Your Connection string from Azure** with the actual connection stri **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} {% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/open-azure-blob/razor %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-azure-blob/razor %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/open-azure-blob/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-azure-blob/document-editor.cs %} {% endhighlight %} {% endtabs %} {% endif %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md index 1a4840f18..e10c16d7c 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md @@ -14,7 +14,7 @@ To load a document from Box cloud file storage in a document Editor, you can fol **Step 1:** Set up a Box developer account and create a Box application -To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. +To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/guides), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. **Step 2:** Create a Simple Document Editor Sample in ASP.NET Core @@ -122,14 +122,14 @@ N> replace **Your_Box_Storage_Access_Token** with your actual box access token, **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/open-box-cloud-file-storage/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-box-cloud-file-storage/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/open-box-cloud-file-storage/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-box-cloud-file-storage/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md index d04275a83..de9086d2d 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Open document from Dropbox cloud file storage +# Open document from Dropbox cloud file storage in Document Editor To load a document from Dropbox cloud file storage in a Document editor, you can follow the steps below @@ -105,14 +105,14 @@ N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token a **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/open-dropbox-cloud-file-storage/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-dropbox-cloud-file-storage/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/open-dropbox-cloud-file-storage/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-dropbox-cloud-file-storage/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md index 3948ac752..bf9baec78 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md @@ -111,15 +111,15 @@ N> Replace **path/to/service-account-key.json** with the actual file path to you **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/open-google-cloud-storage/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-google-cloud-storage/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/open-google-cloud-storage/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-google-cloud-storage/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md index c61d753d8..94c06b497 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md @@ -136,15 +136,15 @@ N> The **FolderId** part is the unique identifier for the folder. For example, i **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/open-google-drive/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-google-drive/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/open-google-drive/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-google-drive/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md index 3b88c9502..9fec98920 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md @@ -129,19 +129,19 @@ public async Task LoadFromOneDrive([FromBody] Dictionary ``` -N> Replace **Your_Tenent_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_Onedrive** with your actual tenant ID, application ID, and folder name. +N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_OneDrive** with your actual tenant ID, application ID, and folder name. **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](../../api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/open-one-drive/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-one-drive/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/open-one-drive/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-one-drive/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md index 5dce54ed4..8b918d11a 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md @@ -1,7 +1,7 @@ --- layout: post title: Save document to AWS S3 in Document editor | Syncfusion -description: Learn about how to Save document to AWS S3 in ASP.NET MVC Document editor of Syncfusion Essential JS 2 and more details. +description: Learn about how to Save document to AWS S3 in ASP.NET Core Document editor of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to AWS S3 documentation: ug @@ -123,10 +123,10 @@ In the client-side, to export the document into blob the document using [`saveAs {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/save-aws-s3/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-aws-s3/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/save-aws-s3/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-aws-s3/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md index 2bb779b0a..52b37402c 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to Azure Blob Storage +# Save document to Azure Blob Storage in ASP.NET Core To save a document to Azure Blob Storage, you can follow the steps below @@ -113,15 +113,15 @@ N> Replace **Your Connection string from Azure** with the actual connection stri **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Azure Blob Storage container. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Azure Blob Storage container. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/save-azure-blob/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-azure-blob/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/save-azure-blob/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-azure-blob/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md index b44454921..95ee60141 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md @@ -8,13 +8,13 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to Box cloud file storage +# Save document to Box cloud file storage in ASP.NET Core To save a document to Box cloud file storage, you can follow the steps below **Step 1:** Set up a Box developer account and create a Box application -To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. +To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/guides), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. **Step 2:** Create a Simple Document Editor Sample in ASP.NET Core @@ -127,15 +127,15 @@ N> replace **Your_Box_Storage_Access_Token** with your actual box access token, **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Box cloud file storage. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Box cloud file storage. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/save-box-cloud-file-storage/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-box-cloud-file-storage/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/save-box-cloud-file-storage/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-box-cloud-file-storage/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md index 1b52dadef..1fae8b810 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md @@ -1,14 +1,14 @@ --- layout: post title: Save document to Dropbox cloud in Document editor | Syncfusion -description: Learn about how to Save document to Dropbox cloud file storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details. +description: Learn about how to Save document to Dropbox cloud file storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to Dropbox cloud file storage documentation: ug domainurl: ##DomainURL## --- -# Save document to Dropbox cloud file storage +# Save document to Dropbox cloud file storage in ASP.NET Core To save a document to Dropbox cloud file storage, you can follow the steps below @@ -119,15 +119,15 @@ N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token a **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Dropbox cloud file storage. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Dropbox cloud file storage. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/save-dropbox-cloud-file-storage/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-dropbox-cloud-file-storage/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/save-dropbox-cloud-file-storage/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-dropbox-cloud-file-storage/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md index 47d816b43..6b5039e55 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to Google Cloud Storage +# Save document to Google Cloud Storage in ASP.NET Core To save a document to Google Cloud Storage, you can follow the steps below @@ -121,15 +121,15 @@ N> Replace **path/to/service-account-key.json** with the actual file path to you **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Google Cloud Storage. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Google Cloud Storage. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/save-google-cloud-storage/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-google-cloud-storage/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/save-google-cloud-storage/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-google-cloud-storage/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md index 1f635d41e..75740a65b 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to Google Drive +# Save document to Google Drive in ASP.NET Core To save a document to Google Drive, you can follow the steps below @@ -147,15 +147,15 @@ N> You must use a unique `Client_ID` from json file to interface your applicatio **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in Google Drive. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Google Drive. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/save-google-drive/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-google-drive/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/save-google-drive/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-google-drive/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md index 40255071a..85ab807fc 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to One Drive +# Save document to One Drive in ASP.NET Core To save a document to One Drive, you can follow the steps below @@ -133,19 +133,19 @@ private string GetValue(IFormCollection data, string key) ``` -N> Replace **Your_Tenent_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_Onedrive** with your actual tenant ID, application ID, and folder name. +N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_OneDrive** with your actual tenant ID, application ID, and folder name. **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in One Drive. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in One Drive. {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/save-one-drive/tagHelper %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-one-drive/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Document-editor.cs" %} -{% include code-snippet/document-editor-container/save-one-drive/document-editor.cs %} +{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-one-drive/document-editor.cs %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/aws-s3-bucket.md index 32e8047b2..d2392c86c 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/aws-s3-bucket.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/aws-s3-bucket.md @@ -110,7 +110,7 @@ N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/azure-blob-storage.md index e3c3b921a..661f7716d 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/azure-blob-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/azure-blob-storage.md @@ -97,7 +97,7 @@ N> Replace **Your Connection string from Azure** with the actual connection stri **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/box-cloud-file-storage.md index bf50e9dec..da826c016 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/box-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/box-cloud-file-storage.md @@ -14,7 +14,7 @@ To load a document from Box cloud file storage in a document Editor, you can fol **Step 1:** Set up a Box developer account and create a Box application -To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. +To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/guides), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. **Step 2:** Create a Simple Document Editor Sample in ASP.NET MVC @@ -122,7 +122,7 @@ N> replace **Your_Box_Storage_Access_Token** with your actual box access token, **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/dropbox-cloud-file-storage.md index 49151701c..9e3388e47 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/dropbox-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/dropbox-cloud-file-storage.md @@ -105,7 +105,7 @@ N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token a **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-cloud-storage.md index f044c5040..81be458cf 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-cloud-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-cloud-storage.md @@ -111,7 +111,7 @@ N> Replace **path/to/service-account-key.json** with the actual file path to you **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-drive.md index a07ee391e..3c88f06a0 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-drive.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-drive.md @@ -136,7 +136,7 @@ N> The **FolderId** part is the unique identifier for the folder. For example, i **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/one-drive.md index fa54d2d77..5cb35a6d2 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/one-drive.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/one-drive.md @@ -133,7 +133,7 @@ N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_T **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method. +In the client-side, the document is returned from the web service is opening using `open` method. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md index b7ca18d04..3d0326aaa 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to AWS S3 +# Save document to AWS S3 in ASP.NET MVC To save a document to AWS S3, you can follow the steps below @@ -118,7 +118,7 @@ N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in AWS S3 Bucket. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in AWS S3 Bucket. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md index 817675bf1..442462d23 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to Azure Blob Storage +# Save document to Azure Blob Storage in ASP.NET MVC To save a document to Azure Blob Storage, you can follow the steps below @@ -113,7 +113,7 @@ N> Replace **Your Connection string from Azure** with the actual connection stri **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Azure Blob Storage container. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Azure Blob Storage container. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md index 3c20b3227..c31492d37 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to Box cloud file storage +# Save document to Box cloud file storage in ASP.NET MVC To save a document to Box cloud file storage, you can follow the steps below @@ -127,7 +127,7 @@ N> replace **Your_Box_Storage_Access_Token** with your actual box access token, **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Box cloud file storage. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Box cloud file storage. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md index e7489b4aa..f07918d5c 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to Dropbox cloud file storage +# Save document to Dropbox cloud file storage in ASP.NET MVC To save a document to Dropbox cloud file storage, you can follow the steps below @@ -119,7 +119,7 @@ N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token a **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Dropbox cloud file storage. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Dropbox cloud file storage. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-cloud-storage.md index 27ceafbad..55dcb2881 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-cloud-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-cloud-storage.md @@ -1,6 +1,6 @@ --- layout: post -title: Save document to Google Cloud Storage in ASP.NET MVC Document editor control | Syncfusion +title: Save to Google Cloud in ASP.NET MVC Document editor | Syncfusion description: Learn about how to Save document to Google Cloud Storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to Google Cloud Storage @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to Google Cloud Storage +# Save document to Google Cloud Storage in ASP.NET MVC To save a document to Google Cloud Storage, you can follow the steps below @@ -122,7 +122,7 @@ N> Replace **path/to/service-account-key.json** with the actual file path to you **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Google Cloud Storage. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Google Cloud Storage. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-drive.md index afb53b912..2186e4745 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-drive.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-drive.md @@ -1,6 +1,6 @@ --- layout: post -title: Save document to Google Drive in ASP.NET MVC Document editor control | Syncfusion +title: Save to Google Drive in ASP.NET MVC Document editor | Syncfusion description: Learn about how to Save document to Google Drive in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to Google Drive @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to Google Drive +# Save document to Google Drive in ASP.NET MVC To save a document to Google Drive, you can follow the steps below @@ -147,7 +147,7 @@ N> You must use a unique `Client_ID` from json file to interface your applicatio **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Google Drive. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Google Drive. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md index 44b407ac1..9bdc1e487 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md @@ -1,6 +1,6 @@ --- layout: post -title: Save document to One Drive in ASP.NET MVC Document editor control | Syncfusion +title: Save to One Drive in ASP.NET MVC Document editor | Syncfusion description: Learn about how to Save document to One Drive in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to One Drive @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save document to One Drive +# Save document to One Drive in ASP.NET MVC To save a document to One Drive, you can follow the steps below @@ -137,7 +137,7 @@ N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_T **Step 4:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in One Drive. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in One Drive. {% tabs %} From 0428d1c9572661249c36329952f83abca883c481 Mon Sep 17 00:00:00 2001 From: manomurugan Date: Tue, 30 Dec 2025 20:44:21 +0530 Subject: [PATCH 08/12] 1000615: CI failures --- .../asp-net-core/opening-documents/azure-blob-storage.md | 1 - .../asp-net-core/saving-documents/aws-s3-bucket.md | 2 +- .../asp-net-mvc/saving-documents/aws-s3-bucket.md | 2 +- .../asp-net-mvc/saving-documents/azure-blob-storage.md | 2 +- .../asp-net-mvc/saving-documents/box-cloud-file-storage.md | 4 ++-- .../saving-documents/dropbox-cloud-file-storage.md | 2 +- .../Word-Processor/asp-net-mvc/saving-documents/one-drive.md | 2 +- 7 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md index 9ba377fb9..892fb0676 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md @@ -107,6 +107,5 @@ In the client-side, the document is returned from the web service is opening usi {% include code-snippet/document-editor/asp-net-core/document-editor-container/open-azure-blob/document-editor.cs %} {% endhighlight %} {% endtabs %} -{% endif %} N> The **Azure.Storage.Blobs** NuGet package must be installed in your application to use the previous code example. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md index 8b918d11a..1c8b551f6 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md @@ -118,7 +118,7 @@ N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Step 3:** Modify the Index.cshtml File in the Document Editor sample -In the client-side, to export the document into blob the document using [`saveAsBlob`](../../api/document-editor/#saveAsBlob) and sent to server-side for saving in AWS S3 Bucket. +In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in AWS S3 Bucket. {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md index 3d0326aaa..f3a2720b3 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md @@ -1,6 +1,6 @@ --- layout: post -title: Save document to AWS S3 in ASP.NET MVC Document editor control | Syncfusion +title: Save document to AWS S3 in ASP.NET MVC Document editor | Syncfusion description: Learn about how to Save document to AWS S3 in ASP.NET MVC Document editor of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to AWS S3 diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md index 442462d23..b3c66b852 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md @@ -1,6 +1,6 @@ --- layout: post -title: Save document to Azure Blob Storage in ASP.NET MVC Document editor control | Syncfusion +title: Save to Azure Blob Storage in ASP.NET MVC Document editor | Syncfusion description: Learn about how to Save document to Azure Blob Storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to Azure Blob Storage diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md index c31492d37..534923873 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md @@ -1,6 +1,6 @@ --- layout: post -title: Save document to Box cloud file storage in ASP.NET MVC Document editor control | Syncfusion +title: Save to Box cloud file storage in ASP.NET MVC Document editor | Syncfusion description: Learn about how to Save document to Box cloud file storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to Box cloud file storage @@ -14,7 +14,7 @@ To save a document to Box cloud file storage, you can follow the steps below **Step 1:** Set up a Box developer account and create a Box application -To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. +To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/guides), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose. **Step 2:** Create a Simple Document Editor Sample in ASP.NET MVC diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md index f07918d5c..e011cd57c 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md @@ -1,6 +1,6 @@ --- layout: post -title: Save document to Dropbox cloud file storage in ASP.NET MVC Document editor control | Syncfusion +title: Save to Dropbox cloud file storage in Document editor | Syncfusion description: Learn about how to Save document to Dropbox cloud file storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to Dropbox cloud file storage diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md index 9bdc1e487..ec4d9c757 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md @@ -133,7 +133,7 @@ private string GetValue(IFormCollection data, string key) ``` -N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_Onedrive** with your actual tenant ID, application ID, and folder name. +N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_OneDrive** with your actual tenant ID, application ID, and folder name. **Step 4:** Modify the Index.cshtml File in the Document Editor sample From b839a7f424f959ec0c258a2d848274debea210a3 Mon Sep 17 00:00:00 2001 From: manomurugan Date: Tue, 30 Dec 2025 20:50:39 +0530 Subject: [PATCH 09/12] 1000615: Ci failures --- .../asp-net-mvc/saving-documents/box-cloud-file-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md index 534923873..efb6d7f36 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md @@ -1,6 +1,6 @@ --- layout: post -title: Save to Box cloud file storage in ASP.NET MVC Document editor | Syncfusion +title: Save to Box cloud file storage in Document editor | Syncfusion description: Learn about how to Save document to Box cloud file storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details. platform: document-processing control: Save document to Box cloud file storage From 713a56048a636831d4103fb51b5de34f77cadfef Mon Sep 17 00:00:00 2001 From: manomurugan Date: Mon, 5 Jan 2026 23:00:39 +0530 Subject: [PATCH 10/12] 974850: Custom data from document editor From c15f86f936e67affe21aec0ff73b3d0a75f1d119 Mon Sep 17 00:00:00 2001 From: ManoSF4839 Date: Mon, 5 Jan 2026 23:04:27 +0530 Subject: [PATCH 11/12] Remove user dictionary support from spell-check.md Removed user-specific dictionary support section from spell-check documentation. --- .../Word/Word-Processor/angular/spell-check.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/angular/spell-check.md b/Document-Processing/Word/Word-Processor/angular/spell-check.md index d67fb6a4b..184898e7e 100644 --- a/Document-Processing/Word/Word-Processor/angular/spell-check.md +++ b/Document-Processing/Word/Word-Processor/angular/spell-check.md @@ -82,13 +82,6 @@ The following code example illustrates how to enable optimized spell checking. ```typescript this.container.documentEditor.spellChecker.enableOptimizedSpellCheck = true; ``` -### EnableUserDictionary - -By default, Document Editor maintains a shared custom dictionary for all users. You can enable user-specific dictionary support using the [`enableUserDictionary`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/spellchecker#enableuserdictionary-boolean) API, which stores and retrieves error words based on the `currentUser` property. - -```typescript -this.container.documentEditor.spellChecker.enableUserDictionary = true; -``` ### Spell check dictionary cache @@ -169,4 +162,4 @@ Using this option, you can open spell check dialog. Please see below screenshot ![Spell check dialog](images/spell-check-dialog.png) -* Refer to the [Spell checker](https://help.syncfusion.com/document-processing/word/word-processor/angular/web-services/core#spell-check) link for configuring spell checker in server-side. \ No newline at end of file +* Refer to the [Spell checker](https://help.syncfusion.com/document-processing/word/word-processor/angular/web-services/core#spell-check) link for configuring spell checker in server-side. From 24fd8161ade7154ed157cd431a171021793e1f2d Mon Sep 17 00:00:00 2001 From: ManoSF4839 Date: Mon, 5 Jan 2026 23:06:03 +0530 Subject: [PATCH 12/12] Remove user dictionary feature details from spell-check Removed user dictionary support section from spell-check documentation. --- .../Word/Word-Processor/asp-net-core/spell-check.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/spell-check.md b/Document-Processing/Word/Word-Processor/asp-net-core/spell-check.md index b5cc1cb8c..8eed1e170 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/spell-check.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/spell-check.md @@ -67,14 +67,6 @@ Document editor provides option to spellcheck page by page when loading the docu this.container.documentEditor.spellChecker.enableOptimizedSpellCheck = true; ``` -### EnableUserDictionary - -By default, Document Editor maintains a shared custom dictionary for all users. You can enable user-specific dictionary support using the `enableUserDictionary` API, which stores and retrieves error words based on the `currentUser` property. - -```typescript -this.container.documentEditor.spellChecker.enableUserDictionary = true; -``` - ### Spell check dictionary cache Starting from `v20.1.0.xx`, the performance and memory usage of spell checker has been optimized by adding a static method to initialize the dictionaries with specified cache count. @@ -153,4 +145,4 @@ Using this option, you can open spell check dialog. ![Spell check dialog](images/spell-check-dialog.png) -* Refer to the [Spell checker](https://github.com/SyncfusionExamples/EJ2-Document-Editor-Web-Services/tree/master/ASP.NET%20Core#steps-to-configure-spell-checker) link for configuring spell checker in server-side. \ No newline at end of file +* Refer to the [Spell checker](https://github.com/SyncfusionExamples/EJ2-Document-Editor-Web-Services/tree/master/ASP.NET%20Core#steps-to-configure-spell-checker) link for configuring spell checker in server-side.