mxcad 1.0.80 → 1.0.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mxcad.d.ts +32 -4
- package/dist/mxcad.es.js +890 -782
- package/dist/mxcad.umd.js +46 -45
- package/dist/wasm/2d/mxdrawassembly_min.js +581 -580
- package/dist/wasm/2d/mxdrawassembly_min.wasm +0 -0
- package/dist/wasm/2d-st/mxdrawassembly_min.js +633 -632
- package/dist/wasm/2d-st/mxdrawassembly_minst.wasm +0 -0
- package/package.json +2 -2
package/dist/mxcad.es.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { MxFun as h, MrxDbgUiPrPoint as
|
|
1
|
+
import { MxFun as h, MrxDbgUiPrPoint as O, MxCursorType as MD, MrxDbgUtils as oD, DynamicInputType as dD, DetailedResult as Z, MrxDbgUiPrDist as AC, MrxDbgUiPrAngle as eC, MrxDbgUiPrInt as tC, MrxDbgUiPrKeyWord as iC, MrxDbgUiPrString as rC, store as PD, loadCoreCode as nC, MxPaintBrush as I, MrxDbgUiPrBaseReturn as T, MxDbCircleShape as TD, MxDbLine as CD, MxDbPolyline as sC, MxDbCircleArc as DD, Mx3PointArc as oC, MxDbEllipseShape as aC, McEdGetPointWorldDrawObject as uC, MxDbEllipse as lC } from "mxdraw";
|
|
2
2
|
function kD(E) {
|
|
3
3
|
return btoa(unescape(encodeURIComponent(E)));
|
|
4
4
|
}
|
|
5
5
|
function RD(E) {
|
|
6
6
|
return decodeURIComponent(escape(atob(E)));
|
|
7
7
|
}
|
|
8
|
-
async function
|
|
8
|
+
async function OD({
|
|
9
9
|
blob: E,
|
|
10
10
|
filename: D = "",
|
|
11
11
|
types: C = [
|
|
@@ -45,24 +45,24 @@ async function SD({
|
|
|
45
45
|
console.error(B.name, B.message);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
function
|
|
48
|
+
function LD(E, D) {
|
|
49
49
|
const C = document.createElement("a");
|
|
50
50
|
C.href = window.URL.createObjectURL(E), C.download = D, C.click();
|
|
51
51
|
}
|
|
52
|
-
function
|
|
52
|
+
function vD(E, D) {
|
|
53
53
|
fetch(E).then((C) => C.blob()).then((C) => {
|
|
54
54
|
const B = document.createElement("a");
|
|
55
55
|
B.href = window.URL.createObjectURL(C), B.download = D, B.click();
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
-
const
|
|
58
|
+
const Q = {
|
|
59
59
|
b64Encode: kD,
|
|
60
60
|
b64Decode: RD,
|
|
61
|
-
saveAsFileDialog:
|
|
62
|
-
downloadFile:
|
|
63
|
-
downloadFileFromUrl:
|
|
61
|
+
saveAsFileDialog: OD,
|
|
62
|
+
downloadFile: LD,
|
|
63
|
+
downloadFileFromUrl: vD
|
|
64
64
|
};
|
|
65
|
-
class
|
|
65
|
+
class cC {
|
|
66
66
|
z = "D2BBB6A18140C6DF814181428143CDF2D5C9C8FDC9CFCFC2D8A2B2BBD3EB8144D8A4B3F38145D7A8C7D2D8A7CAC08146C7F0B1FBD2B5B4D4B6ABCBBFD8A9814781488149B6AA814AC1BDD1CF814BC9A5D8AD814CB8F6D1BEE3DCD6D0814D814EB7E1814FB4AE8150C1D98151D8BC8152CDE8B5A4CEAAD6F78153C0F6BED9D8AF815481558156C4CB8157BEC38158D8B1C3B4D2E58159D6AECEDAD5A7BAF5B7A6C0D6815AC6B9C5D2C7C7815BB9D4815CB3CBD2D2815D815ED8BFBEC5C6F2D2B2CFB0CFE7815F816081618162CAE981638164D8C081658166816781688169816AC2F2C2D2816BC8E9816C816D816E816F817081718172817381748175C7AC8176817781788179817A817B817CC1CB817DD3E8D5F9817ECAC2B6FED8A1D3DABFF78180D4C6BBA5D8C1CEE5BEAE81818182D8A88183D1C7D0A9818481858186D8BDD9EFCDF6BFBA8187BDBBBAA5D2E0B2FABAE0C4B68188CFEDBEA9CDA4C1C18189818A818BC7D7D9F1818CD9F4818D818E818F8190C8CBD8E9819181928193D2DACAB2C8CAD8ECD8EAD8C6BDF6C6CDB3F08194D8EBBDF1BDE98195C8D4B4D381968197C2D88198B2D6D7D0CACBCBFBD5CCB8B6CFC98199819A819BD9DAD8F0C7AA819CD8EE819DB4FAC1EED2D4819E819FD8ED81A0D2C7D8EFC3C781A181A281A3D1F681A4D6D9D8F281A5D8F5BCFEBCDB81A681A781A8C8CE81A9B7DD81AAB7C281ABC6F381AC81AD81AE81AF81B081B181B2D8F8D2C181B381B4CEE9BCBFB7FCB7A5D0DD81B581B681B781B881B9D6DAD3C5BBEFBBE1D8F181BA81BBC9A1CEB0B4AB81BCD8F381BDC9CBD8F6C2D7D8F781BE81BFCEB1D8F981C081C181C2B2AEB9C081C3D9A381C4B0E981C5C1E681C6C9EC81C7CBC581C8CBC6D9A481C981CA81CB81CC81CDB5E881CE81CFB5AB81D081D181D281D381D481D5CEBBB5CDD7A1D7F4D3D381D6CCE581D7BACE81D8D9A2D9DCD3E0D8FDB7F0D7F7D8FED8FAD9A1C4E381D981DAD3B6D8F4D9DD81DBD8FB81DCC5E581DD81DEC0D081DF81E0D1F0B0DB81E181E2BCD1D9A681E3D9A581E481E581E681E7D9ACD9AE81E8D9ABCAB981E981EA81EBD9A9D6B681EC81ED81EEB3DED9A881EFC0FD81F0CACC81F1D9AA81F2D9A781F381F4D9B081F581F6B6B181F781F881F9B9A981FAD2C081FB81FCCFC081FD81FEC2C28240BDC4D5ECB2E0C7C8BFEBD9AD8241D9AF8242CEEABAEE82438244824582468247C7D682488249824A824B824C824D824E824F8250B1E3825182528253B4D9B6EDD9B48254825582568257BFA182588259825AD9DEC7CEC0FED9B8825B825C825D825E825FCBD7B7FD8260D9B58261D9B7B1A3D3E1D9B98262D0C58263D9B682648265D9B18266D9B2C1A9D9B382678268BCF3D0DEB8A98269BEE3826AD9BD826B826C826D826ED9BA826FB0B3827082718272D9C28273827482758276827782788279827A827B827C827D827E8280D9C4B1B68281D9BF82828283B5B98284BEF3828582868287CCC8BAF2D2D08288D9C38289828ABDE8828BB3AB828C828D828ED9C5BEEB828FD9C6D9BBC4DF8290D9BED9C1D9C0829182928293829482958296829782988299829A829BD5AE829CD6B5829DC7E3829E829F82A082A1D9C882A282A382A4BCD9D9CA82A582A682A7D9BC82A8D9CBC6AB82A982AA82AB82AC82ADD9C982AE82AF82B082B1D7F682B2CDA382B382B482B582B682B782B882B982BABDA182BB82BC82BD82BE82BF82C0D9CC82C182C282C382C482C582C682C782C882C9C5BCCDB582CA82CB82CCD9CD82CD82CED9C7B3A5BFFE82CF82D082D182D2B8B582D382D4C0FC82D582D682D782D8B0F882D982DA82DB82DC82DD82DE82DF82E082E182E282E382E482E582E682E782E882E982EA82EB82EC82EDB4F682EED9CE82EFD9CFB4A2D9D082F082F1B4DF82F282F382F482F582F6B0C182F782F882F982FA82FB82FC82FDD9D1C9B582FE8340834183428343834483458346834783488349834A834B834C834D834E834F83508351CFF1835283538354835583568357D9D283588359835AC1C5835B835C835D835E835F836083618362836383648365D9D6C9AE8366836783688369D9D5D9D4D9D7836A836B836C836DCBDB836EBDA9836F8370837183728373C6A7837483758376837783788379837A837B837C837DD9D3D9D8837E83808381D9D9838283838384838583868387C8E583888389838A838B838C838D838E838F839083918392839383948395C0DC8396839783988399839A839B839C839D839E839F83A083A183A283A383A483A583A683A783A883A983AA83AB83AC83AD83AE83AF83B083B183B2B6F9D8A3D4CA83B3D4AAD0D6B3E4D5D783B4CFC8B9E283B5BFCB83B6C3E283B783B883B9B6D283BA83BBCDC3D9EED9F083BC83BD83BEB5B383BFB6B583C083C183C283C383C4BEA483C583C6C8EB83C783C8C8AB83C983CAB0CBB9ABC1F9D9E283CBC0BCB9B283CCB9D8D0CBB1F8C6E4BEDFB5E4D7C883CDD1F8BCE6CADE83CE83CFBCBDD9E6D8E783D083D1C4DA83D283D3B8D4C8BD83D483D5B2E1D4D983D683D783D883D9C3B083DA83DBC3E1DAA2C8DF83DCD0B483DDBEFCC5A983DE83DF83E0B9DA83E1DAA383E2D4A9DAA483E383E483E583E683E7D9FBB6AC83E883E9B7EBB1F9D9FCB3E5BEF683EABFF6D2B1C0E483EB83EC83EDB6B3D9FED9FD83EE83EFBEBB83F083F183F2C6E083F3D7BCDAA183F4C1B983F5B5F2C1E883F683F7BCF583F8B4D583F983FA83FB83FC83FD83FE844084418442C1DD8443C4FD84448445BCB8B7B284468447B7EF84488449844A844B844C844DD9EC844EC6BE844FBFADBBCB84508451B5CA8452DBC9D0D78453CDB9B0BCB3F6BBF7DBCABAAF8454D4E4B5B6B5F3D8D6C8D084558456B7D6C7D0D8D78457BFAF84588459DBBBD8D8845A845BD0CCBBAE845C845D845EEBBEC1D0C1F5D4F2B8D5B4B4845FB3F584608461C9BE846284638464C5D0846584668467C5D9C0FB8468B1F08469D8D9B9CE846AB5BD846B846CD8DA846D846ED6C6CBA2C8AFC9B2B4CCBFCC846FB9F48470D8DBD8DCB6E7BCC1CCEA847184728473847484758476CFF78477D8DDC7B084788479B9D0BDA3847A847BCCDE847CC6CA847D847E848084818482D8E08483D8DE84848485D8DF848684878488B0FE8489BEE7848ACAA3BCF4848B848C848D848EB8B1848F8490B8EE849184928493849484958496849784988499849AD8E2849BBDCB849CD8E4D8E3849D849E849F84A084A1C5FC84A284A384A484A584A684A784A8D8E584A984AAD8E684AB84AC84AD84AE84AF84B084B1C1A684B2C8B0B0ECB9A6BCD3CEF1DBBDC1D384B384B484B584B6B6AFD6FAC5ACBDD9DBBEDBBF84B784B884B9C0F8BEA2C0CD84BA84BB84BC84BD84BE84BF84C084C184C284C3DBC0CAC684C484C584C6B2AA84C784C884C9D3C284CAC3E384CBD1AB84CC84CD84CE84CFDBC284D0C0D584D184D284D3DBC384D4BFB184D584D684D784D884D984DAC4BC84DB84DC84DD84DEC7DA84DF84E084E184E284E384E484E584E684E784E884E9DBC484EA84EB84EC84ED84EE84EF84F084F1D9E8C9D784F284F384F4B9B4CEF0D4C884F584F684F784F8B0FCB4D284F9D0D984FA84FB84FC84FDD9E984FEDECBD9EB8540854185428543D8B0BBAFB1B18544B3D7D8CE85458546D4D185478548BDB3BFEF8549CFBB854A854BD8D0854C854D854EB7CB854F85508551D8D185528553855485558556855785588559855A855BC6A5C7F8D2BD855C855DD8D2C4E4855ECAAE855FC7A78560D8A68561C9FDCEE7BBDCB0EB856285638564BBAAD0AD8565B1B0D7E4D7BF8566B5A5C2F4C4CF85678568B2A98569B2B7856AB1E5DFB2D5BCBFA8C2ACD8D5C2B1856BD8D4CED4856CDAE0856DCEC0856E856FD8B4C3AED3A1CEA38570BCB4C8B4C2D18571BEEDD0B68572DAE18573857485758576C7E485778578B3A78579B6F2CCFCC0FA857A857BC0F7857CD1B9D1E1D8C7857D857E85808581858285838584B2DE85858586C0E58587BAF185888589D8C8858AD4AD858B858CCFE1D8C9858DD8CACFC3858EB3F8BEC7858F859085918592D8CB8593859485958596859785988599DBCC859A859B859C859DC8A5859E859F85A0CFD885A1C8FEB2CE85A285A385A485A585A6D3D6B2E6BCB0D3D1CBABB7B485A785A885A9B7A285AA85ABCAE585ACC8A1CADCB1E4D0F085ADC5D185AE85AF85B0DBC5B5FE85B185B2BFDAB9C5BEE4C1ED85B3DFB6DFB5D6BBBDD0D5D9B0C8B6A3BFC9CCA8DFB3CAB7D3D285B4D8CFD2B6BAC5CBBECCBE85B5DFB7B5F0DFB485B685B785B8D3F585B9B3D4B8F785BADFBA85BBBACFBCAAB5F585BCCDACC3FBBAF3C0F4CDC2CFF2DFB8CFC585BDC2C0DFB9C2F085BE85BF85C0BEFD85C1C1DFCDCCD2F7B7CDDFC185C2DFC485C385C4B7F1B0C9B6D6B7D485C5BAACCCFDBFD4CBB1C6F485C6D6A8DFC585C7CEE2B3B385C885C9CEFCB4B585CACEC7BAF085CBCEE185CCD1BD85CD85CEDFC085CF85D0B4F485D1B3CA85D2B8E6DFBB85D385D485D585D6C4C585D7DFBCDFBDDFBEC5BBDFBFDFC2D4B1DFC385D8C7BACED885D985DA85DB85DC85DDC4D885DEDFCA85DFDFCF85E0D6DC85E185E285E385E485E585E685E785E8DFC9DFDACEB685E9BAC7DFCEDFC8C5DE85EA85EBC9EBBAF4C3FC85EC85EDBED785EEDFC685EFDFCD85F0C5D885F185F285F385F4D5A6BACD85F5BECCD3BDB8C085F6D6E485F7DFC7B9BEBFA785F885F9C1FCDFCBDFCC85FADFD085FB85FC85FD85FE8640DFDBDFE58641DFD7DFD6D7C9DFE3DFE4E5EBD2A7DFD28642BFA98643D4DB8644BFC8DFD4864586468647CFCC86488649DFDD864AD1CA864BDFDEB0A7C6B7DFD3864CBAE5864DB6DFCDDBB9FED4D5864E864FDFDFCFECB0A5DFE7DFD1D1C6DFD5DFD8DFD9DFDC8650BBA98651DFE0DFE18652DFE2DFE6DFE8D3B486538654865586568657B8E7C5B6DFEAC9DAC1A8C4C486588659BFDECFF8865A865B865CD5DCDFEE865D865E865F866086618662B2B88663BADFDFEC8664DBC18665D1E48666866786688669CBF4B4BD866AB0A6866B866C866D866E866FDFF1CCC6DFF286708671DFED867286738674867586768677DFE986788679867A867BDFEB867CDFEFDFF0BBBD867D867EDFF386808681DFF48682BBA38683CADBCEA8E0A7B3AA8684E0A6868586868687E0A186888689868A868BDFFE868CCDD9DFFC868DDFFA868EBFD0D7C4868FC9CC86908691DFF8B0A186928693869486958696DFFD869786988699869ADFFBE0A2869B869C869D869E869FE0A886A086A186A286A3B7C886A486A5C6A1C9B6C0B2DFF586A686A7C5BE86A8D8C4DFF9C4F686A986AA86AB86AC86AD86AEE0A3E0A4E0A5D0A586AF86B0E0B4CCE486B1E0B186B2BFA6E0AFCEB9E0ABC9C686B386B4C0AEE0AEBAEDBAB0E0A986B586B686B7DFF686B8E0B386B986BAE0B886BB86BC86BDB4ADE0B986BE86BFCFB2BAC886C0E0B086C186C286C386C486C586C686C7D0FA86C886C986CA86CB86CC86CD86CE86CF86D0E0AC86D1D4FB86D2DFF786D3C5E786D4E0AD86D5D3F786D6E0B6E0B786D786D886D986DA86DBE0C4D0E186DC86DD86DEE0BC86DF86E0E0C9E0CA86E186E286E3E0BEE0AAC9A4E0C186E4E0B286E586E686E786E886E9CAC8E0C386EAE0B586EBCECB86ECCBC3E0CDE0C6E0C286EDE0CB86EEE0BAE0BFE0C086EF86F0E0C586F186F2E0C7E0C886F3E0CC86F4E0BB86F586F686F786F886F9CBD4E0D586FAE0D6E0D286FB86FC86FD86FE87408741E0D0BCCE87428743E0D18744B8C2D8C587458746874787488749874A874B874CD0EA874D874EC2EF874F8750E0CFE0BD875187528753E0D4E0D387548755E0D78756875787588759E0DCE0D8875A875B875CD6F6B3B0875DD7EC875ECBBB875F8760E0DA8761CEFB876287638764BAD987658766876787688769876A876B876C876D876E876F8770E0E1E0DDD2AD87718772877387748775E0E287768777E0DBE0D9E0DF87788779E0E0877A877B877C877D877EE0DE8780E0E4878187828783C6F7D8ACD4EBE0E6CAC98784878587868787E0E587888789878A878BB8C1878C878D878E878FE0E7E0E887908791879287938794879587968797E0E9E0E387988799879A879B879C879D879EBABFCCE7879F87A087A1E0EA87A287A387A487A587A687A787A887A987AA87AB87AC87AD87AE87AF87B0CFF987B187B287B387B487B587B687B787B887B987BA87BBE0EB87BC87BD87BE87BF87C087C187C2C8C287C387C487C587C6BDC087C787C887C987CA87CB87CC87CD87CE87CF87D087D187D287D3C4D287D487D587D687D787D887D987DA87DB87DCE0EC87DD87DEE0ED87DF87E0C7F4CBC487E1E0EEBBD8D8B6D2F2E0EFCDC587E2B6DA87E387E487E587E687E787E8E0F187E9D4B087EA87EBC0A7B4D187EC87EDCEA7E0F087EE87EF87F0E0F2B9CC87F187F2B9FACDBCE0F387F387F487F5C6D4E0F487F6D4B287F7C8A6E0F6E0F587F887F987FA87FB87FC87FD87FE8840884188428843884488458846884788488849E0F7884A884BCDC1884C884D884ECAA5884F885088518852D4DADBD7DBD98853DBD8B9E7DBDCDBDDB5D888548855DBDA8856885788588859885ADBDBB3A1DBDF885B885CBBF8885DD6B7885EDBE0885F886088618862BEF988638864B7BB8865DBD0CCAEBFB2BBB5D7F8BFD38866886788688869886ABFE9886B886CBCE1CCB3DBDEB0D3CEEBB7D8D7B9C6C2886D886EC0A4886FCCB98870DBE7DBE1C6BADBE38871DBE88872C5F7887388748875DBEA88768877DBE9BFC088788879887ADBE6DBE5887B887C887D887E8880B4B9C0ACC2A2DBE2DBE48881888288838884D0CDDBED88858886888788888889C0DDDBF2888A888B888C888D888E888F8890B6E28891889288938894DBF3DBD2B9B8D4ABDBEC8895BFD1DBF08896DBD18897B5E68898DBEBBFE58899889A889BDBEE889CDBF1889D889E889FDBF988A088A188A288A388A488A588A688A788A8B9A1B0A388A988AA88AB88AC88AD88AE88AFC2F188B088B1B3C7DBEF88B288B3DBF888B4C6D2DBF488B588B6DBF5DBF7DBF688B788B8DBFE88B9D3F2B2BA88BA88BB88BCDBFD88BD88BE88BF88C088C188C288C388C4DCA488C5DBFB88C688C788C888C9DBFA88CA88CB88CCDBFCC5E0BBF988CD88CEDCA388CF88D0DCA588D1CCC388D288D388D4B6D1DDC088D588D688D7DCA188D8DCA288D988DA88DBC7B588DC88DD88DEB6E988DF88E088E1DCA788E288E388E488E5DCA688E6DCA9B1A488E788E8B5CC88E988EA88EB88EC88EDBFB088EE88EF88F088F188F2D1DF88F388F488F588F6B6C288F788F888F988FA88FB88FC88FD88FE894089418942894389448945DCA88946894789488949894A894B894CCBFAEBF3894D894E894FCBDC89508951CBFE895289538954CCC189558956895789588959C8FB895A895B895C895D895E895FDCAA89608961896289638964CCEEDCAB89658966896789688969896A896B896C896D896E896F897089718972897389748975DBD38976DCAFDCAC8977BEB38978CAFB8979897A897BDCAD897C897D897E89808981898289838984C9CAC4B989858986898789888989C7BDDCAE898A898B898CD4F6D0E6898D898E898F89908991899289938994C4ABB6D589958996899789988999899A899B899C899D899E899F89A089A189A289A389A489A589A6DBD489A789A889A989AAB1DA89AB89AC89ADDBD589AE89AF89B089B189B289B389B489B589B689B789B8DBD689B989BA89BBBABE89BC89BD89BE89BF89C089C189C289C389C489C589C689C789C889C9C8C089CA89CB89CC89CD89CE89CFCABFC8C989D0D7B389D1C9F989D289D3BFC789D489D5BAF889D689D7D2BC89D889D989DA89DB89DC89DD89DE89DFE2BA89E0B4A689E189E2B1B889E389E489E589E689E7B8B489E8CFC489E989EA89EB89ECD9E7CFA6CDE289ED89EED9EDB6E089EFD2B989F089F1B9BB89F289F389F489F5E2B9E2B789F6B4F389F7CCECCCABB7F289F8D8B2D1EBBABB89F9CAA789FA89FBCDB789FC89FDD2C4BFE4BCD0B6E189FEDEC58A408A418A428A43DEC6DBBC8A44D1D98A458A46C6E6C4CEB7EE8A47B7DC8A488A49BFFCD7E08A4AC6F58A4B8A4CB1BCDEC8BDB1CCD7DECA8A4DDEC98A4E8A4F8A508A518A52B5EC8A53C9DD8A548A55B0C28A568A578A588A598A5A8A5B8A5C8A5D8A5E8A5F8A608A618A62C5AEC5AB8A63C4CC8A64BCE9CBFD8A658A668A67BAC38A688A698A6AE5F9C8E7E5FACDFD8A6BD7B1B8BEC2E88A6CC8D18A6D8A6EE5FB8A6F8A708A718A72B6CABCCB8A738A74D1FDE6A18A75C3EE8A768A778A788A79E6A48A7A8A7B8A7C8A7DE5FEE6A5CDD78A7E8A80B7C1E5FCE5FDE6A38A818A82C4DDE6A88A838A84E6A78A858A868A878A888A898A8AC3C38A8BC6DE8A8C8A8DE6AA8A8E8A8F8A908A918A928A938A94C4B78A958A968A97E6A2CABC8A988A998A9A8A9BBDE3B9C3E6A6D0D5CEAF8A9C8A9DE6A9E6B08A9ED2A68A9FBDAAE6AD8AA08AA18AA28AA38AA4E6AF8AA5C0D18AA68AA7D2CC8AA88AA98AAABCA78AAB8AAC8AAD8AAE8AAF8AB08AB18AB28AB38AB48AB58AB6E6B18AB7D2F68AB88AB98ABAD7CB8ABBCDFE8ABCCDDEC2A6E6ABE6ACBDBFE6AEE6B38ABD8ABEE6B28ABF8AC08AC18AC2E6B68AC3E6B88AC48AC58AC68AC7C4EF8AC88AC98ACAC4C88ACB8ACCBEEAC9EF8ACD8ACEE6B78ACFB6F08AD08AD18AD2C3E48AD38AD48AD58AD68AD78AD88AD9D3E9E6B48ADAE6B58ADBC8A28ADC8ADD8ADE8ADF8AE0E6BD8AE18AE28AE3E6B98AE48AE58AE68AE78AE8C6C58AE98AEACDF1E6BB8AEB8AEC8AED8AEE8AEF8AF08AF18AF28AF38AF4E6BC8AF58AF68AF78AF8BBE98AF98AFA8AFB8AFC8AFD8AFE8B40E6BE8B418B428B438B44E6BA8B458B46C0B78B478B488B498B4A8B4B8B4C8B4D8B4E8B4FD3A4E6BFC9F4E6C38B508B51E6C48B528B538B548B55D0F68B568B578B588B598B5A8B5B8B5C8B5D8B5E8B5F8B608B618B628B638B648B658B668B67C3BD8B688B698B6A8B6B8B6C8B6D8B6EC3C4E6C28B6F8B708B718B728B738B748B758B768B778B788B798B7A8B7B8B7CE6C18B7D8B7E8B808B818B828B838B84E6C7CFB18B85EBF48B868B87E6CA8B888B898B8A8B8B8B8CE6C58B8D8B8EBCDEC9A98B8F8B908B918B928B938B94BCB58B958B96CFD38B978B988B998B9A8B9BE6C88B9CE6C98B9DE6CE8B9EE6D08B9F8BA08BA1E6D18BA28BA38BA4E6CBB5D58BA5E6CC8BA68BA7E6CF8BA88BA9C4DB8BAAE6C68BAB8BAC8BAD8BAE8BAFE6CD8BB08BB18BB28BB38BB48BB58BB68BB78BB88BB98BBA8BBB8BBC8BBD8BBE8BBF8BC08BC18BC28BC38BC48BC58BC6E6D28BC78BC88BC98BCA8BCB8BCC8BCD8BCE8BCF8BD08BD18BD2E6D4E6D38BD38BD48BD58BD68BD78BD88BD98BDA8BDB8BDC8BDD8BDE8BDF8BE08BE18BE28BE38BE48BE58BE68BE78BE88BE98BEA8BEB8BECE6D58BEDD9F88BEE8BEFE6D68BF08BF18BF28BF38BF48BF58BF68BF7E6D78BF88BF98BFA8BFB8BFC8BFD8BFE8C408C418C428C438C448C458C468C47D7D3E6DD8C48E6DEBFD7D4D08C49D7D6B4E6CBEFE6DAD8C3D7CED0A28C4AC3CF8C4B8C4CE6DFBCBEB9C2E6DBD1A78C4D8C4EBAA2C2CF8C4FD8AB8C508C518C52CAEBE5EE8C53E6DC8C54B7F58C558C568C578C58C8E68C598C5AC4F58C5B8C5CE5B2C4FE8C5DCBFCE5B3D5AC8C5ED3EECAD8B0B28C5FCBCECDEA8C608C61BAEA8C628C638C64E5B58C65E5B48C66D7DAB9D9D6E6B6A8CDF0D2CBB1A6CAB58C67B3E8C9F3BFCDD0FBCAD2E5B6BBC28C688C698C6ACFDCB9AC8C6B8C6C8C6D8C6ED4D78C6F8C70BAA6D1E7CFFCBCD28C71E5B7C8DD8C728C738C74BFEDB1F6CBDE8C758C76BCC58C77BCC4D2FAC3DCBFDC8C788C798C7A8C7BB8BB8C7C8C7D8C7EC3C28C80BAAED4A28C818C828C838C848C858C868C878C888C89C7DEC4AFB2EC8C8AB9D18C8B8C8CE5BBC1C88C8D8C8ED5AF8C8F8C908C918C928C93E5BC8C94E5BE8C958C968C978C988C998C9A8C9BB4E7B6D4CBC2D1B0B5BC8C9C8C9DCAD98C9EB7E28C9F8CA0C9E48CA1BDAB8CA28CA3CEBED7F08CA48CA58CA68CA7D0A18CA8C9D98CA98CAAB6FBE6D8BCE28CABB3BE8CACC9D08CADE6D9B3A28CAE8CAF8CB08CB1DECC8CB2D3C8DECD8CB3D2A28CB48CB58CB68CB7DECE8CB88CB98CBA8CBBBECD8CBC8CBDDECF8CBE8CBF8CC0CAACD2FCB3DFE5EAC4E1BEA1CEB2C4F2BED6C6A8B2E38CC18CC2BED38CC38CC4C7FCCCEBBDECCEDD8CC58CC6CABAC6C1E5ECD0BC8CC78CC88CC9D5B98CCA8CCB8CCCE5ED8CCD8CCE8CCF8CD0CAF48CD1CDC0C2C58CD2E5EF8CD3C2C4E5F08CD48CD58CD68CD78CD88CD98CDAE5F8CDCD8CDBC9BD8CDC8CDD8CDE8CDF8CE08CE18CE2D2D9E1A88CE38CE48CE58CE6D3EC8CE7CBEAC6F18CE88CE98CEA8CEB8CECE1AC8CED8CEE8CEFE1A7E1A98CF08CF1E1AAE1AF8CF28CF3B2ED8CF4E1ABB8DAE1ADE1AEE1B0B5BAE1B18CF58CF68CF78CF88CF9E1B3E1B88CFA8CFB8CFC8CFD8CFED1D28D40E1B6E1B5C1EB8D418D428D43E1B78D44D4C08D45E1B28D46E1BAB0B68D478D488D498D4AE1B48D4BBFF98D4CE1B98D4D8D4EE1BB8D4F8D508D518D528D538D54E1BE8D558D568D578D588D598D5AE1BC8D5B8D5C8D5D8D5E8D5F8D60D6C58D618D628D638D648D658D668D67CFBF8D688D69E1BDE1BFC2CD8D6AB6EB8D6BD3F88D6C8D6DC7CD8D6E8D6FB7E58D708D718D728D738D748D758D768D778D788D79BEFE8D7A8D7B8D7C8D7D8D7E8D80E1C0E1C18D818D82E1C7B3E78D838D848D858D868D878D88C6E98D898D8A8D8B8D8C8D8DB4DE8D8ED1C28D8F8D908D918D92E1C88D938D94E1C68D958D968D978D988D99E1C58D9AE1C3E1C28D9BB1C08D9C8D9D8D9ED5B8E1C48D9F8DA08DA18DA28DA3E1CB8DA48DA58DA68DA78DA88DA98DAA8DABE1CCE1CA8DAC8DAD8DAE8DAF8DB08DB18DB28DB3EFFA8DB48DB5E1D3E1D2C7B68DB68DB78DB88DB98DBA8DBB8DBC8DBD8DBE8DBF8DC0E1C98DC18DC2E1CE8DC3E1D08DC48DC58DC68DC78DC88DC98DCA8DCB8DCC8DCD8DCEE1D48DCFE1D1E1CD8DD08DD1E1CF8DD28DD38DD48DD5E1D58DD68DD78DD88DD98DDA8DDB8DDC8DDD8DDE8DDF8DE08DE18DE2E1D68DE38DE48DE58DE68DE78DE88DE98DEA8DEB8DEC8DED8DEE8DEF8DF08DF18DF28DF38DF48DF58DF68DF78DF8E1D78DF98DFA8DFBE1D88DFC8DFD8DFE8E408E418E428E438E448E458E468E478E488E498E4A8E4B8E4C8E4D8E4E8E4F8E508E518E528E538E548E55E1DA8E568E578E588E598E5A8E5B8E5C8E5D8E5E8E5F8E608E618E62E1DB8E638E648E658E668E678E688E69CEA18E6A8E6B8E6C8E6D8E6E8E6F8E708E718E728E738E748E758E76E7DD8E77B4A8D6DD8E788E79D1B2B3B28E7A8E7BB9A4D7F3C7C9BEDEB9AE8E7CCED78E7D8E7EB2EEDBCF8E80BCBAD2D1CBC8B0CD8E818E82CFEF8E838E848E858E868E87D9E3BDED8E888E89B1D2CAD0B2BC8E8ACBA7B7AB8E8BCAA68E8C8E8D8E8ECFA38E8F8E90E0F8D5CAE0FB8E918E92E0FAC5C1CCFB8E93C1B1E0F9D6E3B2AFD6C4B5DB8E948E958E968E978E988E998E9A8E9BB4F8D6A18E9C8E9D8E9E8E9F8EA0CFAFB0EF8EA18EA2E0FC8EA38EA48EA58EA68EA7E1A1B3A38EA88EA9E0FDE0FEC3B18EAA8EAB8EAC8EADC3DD8EAEE1A2B7F98EAF8EB08EB18EB28EB38EB4BBCF8EB58EB68EB78EB88EB98EBA8EBBE1A3C4BB8EBC8EBD8EBE8EBF8EC0E1A48EC18EC2E1A58EC38EC4E1A6B4B18EC58EC68EC78EC88EC98ECA8ECB8ECC8ECD8ECE8ECF8ED08ED18ED28ED3B8C9C6BDC4EA8ED4B2A28ED5D0D28ED6E7DBBBC3D3D7D3C48ED7B9E3E2CF8ED88ED98EDAD7AF8EDBC7ECB1D38EDC8EDDB4B2E2D18EDE8EDF8EE0D0F2C2AEE2D08EE1BFE2D3A6B5D7E2D2B5EA8EE2C3EDB8FD8EE3B8AE8EE4C5D3B7CFE2D48EE58EE68EE78EE8E2D3B6C8D7F98EE98EEA8EEB8EEC8EEDCDA58EEE8EEF8EF08EF18EF2E2D88EF3E2D6CAFCBFB5D3B9E2D58EF48EF58EF68EF7E2D78EF88EF98EFA8EFB8EFC8EFD8EFE8F408F418F42C1AEC0C88F438F448F458F468F478F48E2DBE2DAC0AA8F498F4AC1CE8F4B8F4C8F4D8F4EE2DC8F4F8F508F518F528F538F548F558F568F578F588F598F5AE2DD8F5BE2DE8F5C8F5D8F5E8F5F8F608F618F628F638F64DBC88F65D1D3CDA28F668F67BDA88F688F698F6ADEC3D8A5BFAADBCDD2ECC6FAC5AA8F6B8F6C8F6DDEC48F6EB1D7DFAE8F6F8F708F71CABD8F72DFB18F73B9AD8F74D2FD8F75B8A5BAEB8F768F77B3DA8F788F798F7AB5DCD5C58F7B8F7C8F7D8F7EC3D6CFD2BBA18F80E5F3E5F28F818F82E5F48F83CDE48F84C8F58F858F868F878F888F898F8A8F8BB5AFC7BF8F8CE5F68F8D8F8E8F8FECB08F908F918F928F938F948F958F968F978F988F998F9A8F9B8F9C8F9D8F9EE5E68F9FB9E9B5B18FA0C2BCE5E8E5E7E5E98FA18FA28FA38FA4D2CD8FA58FA68FA7E1EAD0CE8FA8CDAE8FA9D1E58FAA8FABB2CAB1EB8FACB1F2C5ED8FAD8FAED5C3D3B08FAFE1DC8FB08FB18FB2E1DD8FB3D2DB8FB4B3B9B1CB8FB58FB68FB7CDF9D5F7E1DE8FB8BEB6B4FD8FB9E1DFBADCE1E0BBB2C2C9E1E18FBA8FBB8FBCD0EC8FBDCDBD8FBE8FBFE1E28FC0B5C3C5C7E1E38FC18FC2E1E48FC38FC48FC58FC6D3F98FC78FC88FC98FCA8FCB8FCCE1E58FCDD1AD8FCE8FCFE1E6CEA28FD08FD18FD28FD38FD48FD5E1E78FD6B5C28FD78FD88FD98FDAE1E8BBD58FDB8FDC8FDD8FDE8FDFD0C4E2E0B1D8D2E48FE08FE1E2E18FE28FE3BCC9C8CC8FE4E2E3ECFEECFDDFAF8FE58FE68FE7E2E2D6BECDFCC3A68FE88FE98FEAE3C38FEB8FECD6D2E2E78FED8FEEE2E88FEF8FF0D3C78FF18FF2E2ECBFEC8FF3E2EDE2E58FF48FF5B3C08FF68FF78FF8C4EE8FF98FFAE2EE8FFB8FFCD0C38FFDBAF6E2E9B7DEBBB3CCACCBCBE2E4E2E6E2EAE2EB8FFE90409041E2F790429043E2F4D4F5E2F390449045C5AD9046D5FAC5C2B2C090479048E2EF9049E2F2C1AFCBBC904A904BB5A1E2F9904C904D904EBCB1E2F1D0D4D4B9E2F5B9D6E2F6904F90509051C7D390529053905490559056E2F0905790589059905A905BD7DCEDA1905C905DE2F8905EEDA5E2FECAD1905F906090619062906390649065C1B59066BBD090679068BFD69069BAE3906A906BCBA1906C906D906EEDA6EDA3906F9070EDA29071907290739074BBD6EDA7D0F490759076EDA4BADEB6F7E3A1B6B2CCF1B9A79077CFA2C7A190789079BFD2907A907BB6F1907CE2FAE2FBE2FDE2FCC4D5E3A2907DD3C1907E90809081E3A7C7C49082908390849085CFA490869087E3A9BAB790889089908A908BE3A8908CBBDA908DE3A3908E908F9090E3A4E3AA9091E3A69092CEF2D3C690939094BBBC90959096D4C39097C4FA90989099EDA8D0FCE3A5909AC3F5909BE3ADB1AF909CE3B2909D909E909FBCC290A090A1E3ACB5BF90A290A390A490A590A690A790A890A9C7E9E3B090AA90AB90ACBEAACDEF90AD90AE90AF90B090B1BBF390B290B390B4CCE890B590B6E3AF90B7E3B190B8CFA7E3AE90B9CEA9BBDD90BA90BB90BC90BD90BEB5EBBEE5B2D2B3CD90BFB1B9E3ABB2D1B5ACB9DFB6E890C090C1CFEBE3B790C2BBCC90C390C4C8C7D0CA90C590C690C790C890C9E3B8B3EE90CA90CB90CC90CDEDA990CED3FAD3E490CF90D090D1EDAAE3B9D2E290D290D390D490D590D6E3B590D790D890D990DAD3DE90DB90DC90DD90DEB8D0E3B390DF90E0E3B6B7DF90E1E3B4C0A290E290E390E4E3BA90E590E690E790E890E990EA90EB90EC90ED90EE90EF90F090F190F290F390F490F590F690F7D4B890F890F990FA90FB90FC90FD90FE9140B4C89141E3BB9142BBC59143C9F791449145C9E5914691479148C4BD9149914A914B914C914D914E914FEDAB9150915191529153C2FD9154915591569157BBDBBFAE91589159915A915B915C915D915ECEBF915F916091619162E3BC9163BFB6916491659166916791689169916A916B916C916D916E916F9170917191729173917491759176B1EF91779178D4F79179917A917B917C917DE3BE917E9180918191829183918491859186EDAD918791889189918A918B918C918D918E918FE3BFBAA9EDAC91909191E3BD91929193919491959196919791989199919A919BE3C0919C919D919E919F91A091A1BAB691A291A391A4B6AE91A591A691A791A891A9D0B891AAB0C3EDAE91AB91AC91AD91AE91AFEDAFC0C191B0E3C191B191B291B391B491B591B691B791B891B991BA91BB91BC91BD91BE91BF91C091C1C5B391C291C391C491C591C691C791C891C991CA91CB91CC91CD91CE91CFE3C291D091D191D291D391D491D591D691D791D8DCB291D991DA91DB91DC91DD91DEEDB091DFB8EA91E0CEECEAA7D0E7CAF9C8D6CFB7B3C9CED2BDE491E191E2E3DEBBF2EAA8D5BD91E3C6DDEAA991E491E591E6EAAA91E7EAACEAAB91E8EAAEEAAD91E991EA91EB91ECBDD891EDEAAF91EEC2BE91EF91F091F191F2B4C1B4F791F391F4BBA791F591F691F791F891F9ECE6ECE5B7BFCBF9B1E291FAECE791FB91FC91FDC9C8ECE8ECE991FECAD6DED0B2C5D4FA92409241C6CBB0C7B4F2C8D3924292439244CDD092459246BFB8924792489249924A924B924C924DBFDB924E924FC7A4D6B49250C0A9DED1C9A8D1EFC5A4B0E7B3B6C8C592519252B0E292539254B7F692559256C5FA92579258B6F39259D5D2B3D0BCBC925A925B925CB3AD925D925E925F9260BEF1B0D1926192629263926492659266D2D6CAE3D7A59267CDB6B6B6BFB9D5DB9268B8A7C5D79269926A926BDED2BFD9C2D5C7C0926CBBA4B1A8926D926EC5EA926F9270C5FBCCA79271927292739274B1A7927592769277B5D692789279927AC4A8927BDED3D1BAB3E9927CC3F2927D927EB7F79280D6F4B5A3B2F0C4B4C4E9C0ADDED49281B0E8C5C4C1E09282B9D59283BEDCCDD8B0CE9284CDCFDED6BED0D7BEDED5D5D0B0DD92859286C4E292879288C2A3BCF09289D3B5C0B9C5A1B2A6D4F1928A928BC0A8CAC3DED7D5FC928CB9B0928DC8ADCBA9928EDED9BFBD928F929092919292C6B4D7A7CAB0C4C39293B3D6B9D29294929592969297D6B8EAFCB0B492989299929A929BBFE6929C929DCCF4929E929F92A092A1CDDA92A292A392A4D6BFC2CE92A5CECECCA2D0AEC4D3B5B2DED8D5F5BCB7BBD392A692A7B0A492A8C5B2B4EC92A992AA92ABD5F192AC92ADEAFD92AE92AF92B092B192B292B3DEDACDA692B492B5CDEC92B692B792B892B9CEE6DEDC92BACDB1C0A692BB92BCD7BD92BDDEDBB0C6BAB4C9D3C4F3BEE892BE92BF92C092C1B2B692C292C392C492C592C692C792C892C9C0CCCBF092CABCF1BBBBB5B792CB92CC92CDC5F592CEDEE692CF92D092D1DEE3BEDD92D292D3DEDF92D492D592D692D7B4B7BDDD92D892D9DEE0C4ED92DA92DB92DC92DDCFC692DEB5E092DF92E092E192E2B6DECADAB5F4DEE592E3D5C692E4DEE1CCCDC6FE92E5C5C592E692E792E8D2B492E9BEF292EA92EB92EC92ED92EE92EF92F0C2D392F1CCBDB3B892F2BDD392F3BFD8CDC6D1DAB4EB92F4DEE4DEDDDEE792F5EAFE92F692F7C2B0DEE292F892F9D6C0B5A792FAB2F492FBDEE892FCDEF292FD92FE934093419342DEED9343DEF193449345C8E0934693479348D7E1DEEFC3E8CCE19349B2E5934A934B934CD2BE934D934E934F9350935193529353DEEE9354DEEBCED59355B4A79356935793589359935ABFABBEBE935B935CBDD2935D935E935F9360DEE99361D4AE9362DEDE9363DEEA9364936593669367C0BF9368DEECB2F3B8E9C2A79369936ABDC1936B936C936D936E936FDEF5DEF893709371B2ABB4A493729373B4EAC9A6937493759376937793789379DEF6CBD1937AB8E3937BDEF7DEFA937C937D937E9380DEF9938193829383CCC29384B0E1B4EE93859386938793889389938AE5BA938B938C938D938E938FD0AF93909391B2EB9392EBA19393DEF493949395C9E3DEF3B0DAD2A1B1F79396CCAF939793989399939A939B939C939DDEF0939ECBA4939F93A093A1D5AA93A293A393A493A593A6DEFB93A793A893A993AA93AB93AC93AD93AEB4DD93AFC4A693B093B193B2DEFD93B393B493B593B693B793B893B993BA93BB93BCC3FEC4A1DFA193BD93BE93BF93C093C193C293C3C1CC93C4DEFCBEEF93C5C6B293C693C793C893C993CA93CB93CC93CD93CEB3C5C8F693CF93D0CBBADEFE93D193D2DFA493D393D493D593D6D7B293D793D893D993DA93DBB3B793DC93DD93DE93DFC1C393E093E1C7CBB2A5B4E993E2D7AB93E393E493E593E6C4EC93E7DFA2DFA393E8DFA593E9BAB393EA93EB93ECDFA693EDC0DE93EE93EFC9C393F093F193F293F393F493F593F6B2D9C7E693F7DFA793F8C7DC93F993FA93FB93FCDFA8EBA293FD93FE944094419442CBD3944394449445DFAA9446DFA99447B2C194489449944A944B944C944D944E944F9450945194529453945494559456945794589459945A945B945C945D945E945F9460C5CA94619462946394649465946694679468DFAB9469946A946B946C946D946E946F9470D4DC94719472947394749475C8C19476947794789479947A947B947C947D947E948094819482DFAC94839484948594869487BEF094889489DFADD6A7948A948B948C948DEAB7EBB6CAD5948ED8FCB8C4948FB9A594909491B7C5D5FE94929493949494959496B9CA94979498D0A7F4CD9499949AB5D0949B949CC3F4949DBEC8949E949F94A0EBB7B0BD94A194A2BDCC94A3C1B294A4B1D6B3A894A594A694A7B8D2C9A294A894A9B6D894AA94AB94AC94ADEBB8BEB494AE94AF94B0CAFD94B1C7C394B2D5FB94B394B4B7F394B594B694B794B894B994BA94BB94BC94BD94BE94BF94C094C194C294C3CEC494C494C594C6D5ABB1F394C794C894C9ECB3B0DF94CAECB594CB94CC94CDB6B794CEC1CF94CFF5FAD0B194D094D1D5E594D2CED394D394D4BDEFB3E294D5B8AB94D6D5B694D7EDBD94D8B6CF94D9CBB9D0C294DA94DB94DC94DD94DE94DF94E094E1B7BD94E294E3ECB6CAA994E494E594E6C5D494E7ECB9ECB8C2C3ECB794E894E994EA94EBD0FDECBA94ECECBBD7E594ED94EEECBC94EF94F094F1ECBDC6EC94F294F394F494F594F694F794F894F9CEDE94FABCC894FB94FCC8D5B5A9BEC9D6BCD4E794FD94FED1AED0F1EAB8EAB9EABABAB59540954195429543CAB1BFF595449545CDFA9546954795489549954AEAC0954BB0BAEABE954C954DC0A5954E954F9550EABB9551B2FD9552C3F7BBE8955395549555D2D7CEF4EABF955695579558EABC9559955A955BEAC3955CD0C7D3B3955D955E955F9560B4BA9561C3C1D7F29562956395649565D5D19566CAC79567EAC595689569EAC4EAC7EAC6956A956B956C956D956ED6E7956FCFD495709571EACB9572BBCE9573957495759576957795789579BDFAC9CE957A957BEACC957C957DC9B9CFFEEACAD4CEEACDEACF957E9580CDED9581958295839584EAC99585EACE95869587CEEE9588BBDE9589B3BF958A958B958C958D958EC6D5BEB0CEFA958F95909591C7E79592BEA7EAD095939594D6C7959595969597C1C095989599959AD4DD959BEAD1959C959DCFBE959E959F95A095A1EAD295A295A395A495A5CAEE95A695A795A895A9C5AFB0B595AA95AB95AC95AD95AEEAD495AF95B095B195B295B395B495B595B695B7EAD3F4DF95B895B995BA95BB95BCC4BA95BD95BE95BF95C095C1B1A995C295C395C495C5E5DF95C695C795C895C9EAD595CA95CB95CC95CD95CE95CF95D095D195D295D395D495D595D695D795D895D995DA95DB95DC95DD95DE95DF95E095E195E295E3CAEF95E4EAD6EAD7C6D895E595E695E795E895E995EA95EB95ECEAD895ED95EEEAD995EF95F095F195F295F395F4D4BB95F5C7FAD2B7B8FC95F695F7EAC295F8B2DC95F995FAC2FC95FBD4F8CCE6D7EE95FC95FD95FE9640964196429643D4C2D3D0EBC3C5F39644B7FE96459646EBD4964796489649CBB7EBDE964AC0CA964B964C964DCDFB964EB3AF964FC6DA965096519652965396549655EBFC9656C4BE9657CEB4C4A9B1BED4FD9658CAF59659D6EC965A965BC6D3B6E4965C965D965E965FBBFA96609661D0E096629663C9B19664D4D3C8A896659666B8CB9667E8BEC9BC96689669E8BB966AC0EED0D3B2C4B4E5966BE8BC966C966DD5C8966E966F967096719672B6C59673E8BDCAF8B8DCCCF5967496759676C0B496779678D1EEE8BFE8C29679967ABABC967BB1ADBDDC967CEABDE8C3967DE8C6967EE8CB9680968196829683E8CC9684CBC9B0E59685BCAB96869687B9B996889689E8C1968ACDF7968BE8CA968C968D968E968FCEF69690969196929693D5ED9694C1D6E8C49695C3B69696B9FBD6A6E8C8969796989699CAE0D4E6969AE8C0969BE8C5E8C7969CC7B9B7E3969DE8C9969EBFDDE8D2969F96A0E8D796A1E8D5BCDCBCCFE8DB96A296A396A496A596A696A796A896A9E8DE96AAE8DAB1FA96AB96AC96AD96AE96AF96B096B196B296B396B4B0D8C4B3B8CCC6E2C8BEC8E196B596B696B7E8CFE8D4E8D696B8B9F1E8D8D7F596B9C4FB96BAE8DC96BB96BCB2E996BD96BE96BFE8D196C096C1BCED96C296C3BFC2E8CDD6F996C4C1F8B2F196C596C696C796C896C996CA96CB96CCE8DF96CDCAC1E8D996CE96CF96D096D1D5A496D2B1EAD5BBE8CEE8D0B6B0E8D396D3E8DDC0B896D4CAF796D5CBA896D696D7C6DCC0F596D896D996DA96DB96DCE8E996DD96DE96DFD0A396E096E196E296E396E496E596E6E8F2D6EA96E796E896E996EA96EB96EC96EDE8E0E8E196EE96EF96F0D1F9BACBB8F996F196F2B8F1D4D4E8EF96F3E8EEE8ECB9F0CCD2E8E6CEA6BFF296F4B0B8E8F1E8F096F5D7C096F6E8E496F7CDA9C9A396F8BBB8BDDBE8EA96F996FA96FB96FC96FD96FE9740974197429743E8E2E8E3E8E5B5B5E8E7C7C5E8EBE8EDBDB0D7AE9744E8F897459746974797489749974A974B974CE8F5974DCDB0E8F6974E974F9750975197529753975497559756C1BA9757E8E89758C3B7B0F09759975A975B975C975D975E975F9760E8F4976197629763E8F7976497659766B9A3976797689769976A976B976C976D976E976F9770C9D2977197729773C3CECEE0C0E69774977597769777CBF39778CCDDD0B59779977ACAE1977BE8F3977C977D977E9780978197829783978497859786BCEC9787E8F997889789978A978B978C978DC3DE978EC6E5978FB9F79790979197929793B0F497949795D7D897969797BCAC9798C5EF9799979A979B979C979DCCC4979E979FE9A697A097A197A297A397A497A597A697A797A897A9C9AD97AAE9A2C0E297AB97AC97ADBFC397AE97AF97B0E8FEB9D797B1E8FB97B297B397B497B5E9A497B697B797B8D2CE97B997BA97BB97BC97BDE9A397BED6B2D7B597BFE9A797C0BDB797C197C297C397C497C597C697C797C897C997CA97CB97CCE8FCE8FD97CD97CE97CFE9A197D097D197D297D397D497D597D697D7CDD697D897D9D2AC97DA97DB97DCE9B297DD97DE97DF97E0E9A997E197E297E3B4AA97E4B4BB97E597E6E9AB97E797E897E997EA97EB97EC97ED97EE97EF97F097F197F297F397F497F597F697F7D0A897F897F9E9A597FA97FBB3FE97FC97FDE9ACC0E397FEE9AA98409841E9B998429843E9B89844984598469847E9AE98489849E8FA984A984BE9A8984C984D984E984F9850BFACE9B1E9BA98519852C2A5985398549855E9AF9856B8C59857E9AD9858D3DCE9B4E9B5E9B79859985A985BE9C7985C985D985E985F98609861C0C6E9C598629863E9B098649865E9BBB0F19866986798689869986A986B986C986D986E986FE9BCD5A598709871E9BE9872E9BF987398749875E9C198769877C1F198789879C8B6987A987B987CE9BD987D987E988098819882E9C29883988498859886988798889889988AE9C3988BE9B3988CE9B6988DBBB1988E988F9890E9C0989198929893989498959896BCF7989798989899E9C4E9C6989A989B989C989D989E989F98A098A198A298A398A498A5E9CA98A698A798A898A9E9CE98AA98AB98AC98AD98AE98AF98B098B198B298B3B2DB98B4E9C898B598B698B798B898B998BA98BB98BC98BD98BEB7AE98BF98C098C198C298C398C498C598C698C798C898C998CAE9CBE9CC98CB98CC98CD98CE98CF98D0D5C198D1C4A398D298D398D498D598D698D7E9D898D8BAE198D998DA98DB98DCE9C998DDD3A398DE98DF98E0E9D498E198E298E398E498E598E698E7E9D7E9D098E898E998EA98EB98ECE9CF98ED98EEC7C198EF98F098F198F298F398F498F598F6E9D298F798F898F998FA98FB98FC98FDE9D9B3C898FEE9D399409941994299439944CFF0994599469947E9CD99489949994A994B994C994D994E994F995099519952B3F79953995499559956995799589959E9D6995A995BE9DA995C995D995ECCB4995F99609961CFAD99629963996499659966996799689969996AE9D5996BE9DCE9DB996C996D996E996F9970E9DE99719972997399749975997699779978E9D19979997A997B997C997D997E99809981E9DD9982E9DFC3CA9983998499859986998799889989998A998B998C998D998E998F9990999199929993999499959996999799989999999A999B999C999D999E999F99A099A199A299A399A499A599A699A799A899A999AA99AB99AC99AD99AE99AF99B099B199B299B399B499B599B699B799B899B999BA99BB99BC99BD99BE99BF99C099C199C299C399C499C599C699C799C899C999CA99CB99CC99CD99CE99CF99D099D199D299D399D499D599D699D799D899D999DA99DB99DC99DD99DE99DF99E099E199E299E399E499E599E699E799E899E999EA99EB99EC99ED99EE99EF99F099F199F299F399F499F5C7B7B4CEBBB6D0C0ECA399F699F7C5B799F899F999FA99FB99FC99FD99FE9A409A419A42D3FB9A439A449A459A46ECA49A47ECA5C6DB9A489A499A4ABFEE9A4B9A4C9A4D9A4EECA69A4F9A50ECA7D0AA9A51C7B89A529A53B8E89A549A559A569A579A589A599A5A9A5B9A5C9A5D9A5E9A5FECA89A609A619A629A639A649A659A669A67D6B9D5FDB4CBB2BDCEE4C6E79A689A69CDE19A6A9A6B9A6C9A6D9A6E9A6F9A709A719A729A739A749A759A769A77B4F59A78CBC0BCDF9A799A7A9A7B9A7CE9E2E9E3D1EAE9E59A7DB4F9E9E49A7ED1B3CAE2B2D09A80E9E89A819A829A839A84E9E6E9E79A859A86D6B39A879A889A89E9E9E9EA9A8A9A8B9A8C9A8D9A8EE9EB9A8F9A909A919A929A939A949A959A96E9EC9A979A989A999A9A9A9B9A9C9A9D9A9EECAFC5B9B6CE9A9FD2F39AA09AA19AA29AA39AA49AA59AA6B5EE9AA7BBD9ECB19AA89AA9D2E39AAA9AAB9AAC9AAD9AAECEE39AAFC4B89AB0C3BF9AB19AB2B6BED8B9B1C8B1CFB1D1C5FE9AB3B1D09AB4C3AB9AB59AB69AB79AB89AB9D5B19ABA9ABB9ABC9ABD9ABE9ABF9AC09AC1EBA4BAC19AC29AC39AC4CCBA9AC59AC69AC7EBA59AC8EBA79AC99ACA9ACBEBA89ACC9ACD9ACEEBA69ACF9AD09AD19AD29AD39AD49AD5EBA9EBABEBAA9AD69AD79AD89AD99ADAEBAC9ADBCACFD8B5C3F19ADCC3A5C6F8EBADC4CA9ADDEBAEEBAFEBB0B7D59ADE9ADF9AE0B7FA9AE1EBB1C7E29AE2EBB39AE3BAA4D1F5B0B1EBB2EBB49AE49AE59AE6B5AAC2C8C7E89AE7EBB59AE8CBAEE3DF9AE99AEAD3C09AEB9AEC9AED9AEED9DB9AEF9AF0CDA1D6ADC7F39AF19AF29AF3D9E0BBE39AF4BABAE3E29AF59AF69AF79AF89AF9CFAB9AFA9AFB9AFCE3E0C9C79AFDBAB99AFE9B409B41D1B4E3E1C8EAB9AFBDADB3D8CEDB9B429B43CCC09B449B459B46E3E8E3E9CDF49B479B489B499B4A9B4BCCAD9B4CBCB39B4DE3EA9B4EE3EB9B4F9B50D0DA9B519B529B53C6FBB7DA9B549B55C7DFD2CACED69B56E3E4E3EC9B57C9F2B3C19B589B59E3E79B5A9B5BC6E3E3E59B5C9B5DEDB3E3E69B5E9B5F9B609B61C9B39B62C5E69B639B649B65B9B59B66C3BB9B67E3E3C5BDC1A4C2D9B2D79B68E3EDBBA6C4AD9B69E3F0BEDA9B6A9B6BE3FBE3F5BAD39B6C9B6D9B6E9B6FB7D0D3CD9B70D6CED5D3B9C1D5B4D1D89B719B729B739B74D0B9C7F69B759B769B77C8AAB2B49B78C3DA9B799B7A9B7BE3EE9B7C9B7DE3FCE3EFB7A8E3F7E3F49B7E9B809B81B7BA9B829B83C5A29B84E3F6C5DDB2A8C6FC9B85C4E09B869B87D7A29B88C0E1E3F99B899B8AE3FAE3FDCCA9E3F39B8BD3BE9B8CB1C3EDB4E3F1E3F29B8DE3F8D0BAC6C3D4F3E3FE9B8E9B8FBDE09B909B91E4A79B929B93E4A69B949B959B96D1F3E4A39B97E4A99B989B999B9AC8F79B9B9B9C9B9D9B9ECFB49B9FE4A8E4AEC2E59BA09BA1B6B49BA29BA39BA49BA59BA69BA7BDF29BA8E4A29BA99BAABAE9E4AA9BAB9BACE4AC9BAD9BAEB6FDD6DEE4B29BAFE4AD9BB09BB19BB2E4A19BB3BBEECDDDC7A2C5C99BB49BB5C1F79BB6E4A49BB7C7B3BDACBDBDE4A59BB8D7C7B2E29BB9E4ABBCC3E4AF9BBABBEBE4B0C5A8E4B19BBB9BBC9BBD9BBED5E3BFA39BBFE4BA9BC0E4B79BC1E4BB9BC29BC3E4BD9BC49BC5C6D69BC69BC7BAC6C0CB9BC89BC99BCAB8A1E4B49BCB9BCC9BCD9BCED4A19BCF9BD0BAA3BDFE9BD19BD29BD3E4BC9BD49BD59BD69BD79BD8CDBF9BD99BDAC4F99BDB9BDCCFFBC9E69BDD9BDED3BF9BDFCFD19BE09BE1E4B39BE2E4B8E4B9CCE99BE39BE49BE59BE69BE7CCCE9BE8C0D4E4B5C1B0E4B6CED09BE9BBC1B5D39BEAC8F3BDA7D5C7C9ACB8A2E4CA9BEB9BECE4CCD1C49BED9BEED2BA9BEF9BF0BAAD9BF19BF2BAD49BF39BF49BF59BF69BF79BF8E4C3B5ED9BF99BFA9BFBD7CDE4C0CFFDE4BF9BFC9BFD9BFEC1DCCCCA9C409C419C429C43CAE79C449C459C469C47C4D79C48CCD4E4C89C499C4A9C4BE4C7E4C19C4CE4C4B5AD9C4D9C4ED3D99C4FE4C69C509C519C529C53D2F9B4E39C54BBB49C559C56C9EE9C57B4BE9C589C599C5ABBEC9C5BD1CD9C5CCCEDEDB59C5D9C5E9C5F9C609C619C629C639C64C7E59C659C669C679C68D4A89C69E4CBD7D5E4C29C6ABDA5E4C59C6B9C6CD3E69C6DE4C9C9F89C6E9C6FE4BE9C709C71D3E59C729C73C7FEB6C99C74D4FCB2B3E4D79C759C769C77CEC29C78E4CD9C79CEBC9C7AB8DB9C7B9C7CE4D69C7DBFCA9C7E9C809C81D3CE9C82C3EC9C839C849C859C869C879C889C899C8AC5C8E4D89C8B9C8C9C8D9C8E9C8F9C909C919C92CDC4E4CF9C939C949C959C96E4D4E4D59C97BAFE9C98CFE69C999C9AD5BF9C9B9C9C9C9DE4D29C9E9C9F9CA09CA19CA29CA39CA49CA59CA69CA79CA8E4D09CA99CAAE4CE9CAB9CAC9CAD9CAE9CAF9CB09CB19CB29CB39CB49CB59CB69CB79CB89CB9CDE5CAAA9CBA9CBB9CBCC0A39CBDBDA6E4D39CBE9CBFB8C89CC09CC19CC29CC39CC4E4E7D4B49CC59CC69CC79CC89CC99CCA9CCBE4DB9CCC9CCD9CCEC1EF9CCF9CD0E4E99CD19CD2D2E79CD39CD4E4DF9CD5E4E09CD69CD7CFAA9CD89CD99CDA9CDBCBDD9CDCE4DAE4D19CDDE4E59CDEC8DCE4E39CDF9CE0C4E7E4E29CE1E4E19CE29CE39CE4B3FCE4E89CE59CE69CE79CE8B5E19CE99CEA9CEBD7CC9CEC9CED9CEEE4E69CEFBBAC9CF0D7D2CCCFEBF89CF1E4E49CF29CF3B9F69CF49CF59CF6D6CDE4D9E4DCC2FAE4DE9CF7C2CBC0C4C2D09CF8B1F5CCB29CF99CFA9CFB9CFC9CFD9CFE9D409D419D429D43B5CE9D449D459D469D47E4EF9D489D499D4A9D4B9D4C9D4D9D4E9D4FC6AF9D509D519D52C6E19D539D54E4F59D559D569D579D589D59C2A99D5A9D5B9D5CC0ECD1DDE4EE9D5D9D5E9D5F9D609D619D629D639D649D659D66C4AE9D679D689D69E4ED9D6A9D6B9D6C9D6DE4F6E4F4C2FE9D6EE4DD9D6FE4F09D70CAFE9D71D5C49D729D73E4F19D749D759D769D779D789D799D7AD1FA9D7B9D7C9D7D9D7E9D809D819D82E4EBE4EC9D839D849D85E4F29D86CEAB9D879D889D899D8A9D8B9D8C9D8D9D8E9D8F9D90C5CB9D919D929D93C7B19D94C2BA9D959D969D97E4EA9D989D999D9AC1CA9D9B9D9C9D9D9D9E9D9F9DA0CCB6B3B19DA19DA29DA3E4FB9DA4E4F39DA59DA69DA7E4FA9DA8E4FD9DA9E4FC9DAA9DAB9DAC9DAD9DAE9DAF9DB0B3CE9DB19DB29DB3B3BAE4F79DB49DB5E4F9E4F8C5EC9DB69DB79DB89DB99DBA9DBB9DBC9DBD9DBE9DBF9DC09DC19DC2C0BD9DC39DC49DC59DC6D4E89DC79DC89DC99DCA9DCBE5A29DCC9DCD9DCE9DCF9DD09DD19DD29DD39DD49DD59DD6B0C49DD79DD8E5A49DD99DDAE5A39DDB9DDC9DDD9DDE9DDF9DE0BCA49DE1E5A59DE29DE39DE49DE59DE69DE7E5A19DE89DE99DEA9DEB9DEC9DED9DEEE4FEB1F49DEF9DF09DF19DF29DF39DF49DF59DF69DF79DF89DF9E5A89DFAE5A9E5A69DFB9DFC9DFD9DFE9E409E419E429E439E449E459E469E47E5A7E5AA9E489E499E4A9E4B9E4C9E4D9E4E9E4F9E509E519E529E539E549E559E569E579E589E599E5A9E5B9E5C9E5D9E5E9E5F9E609E619E629E639E649E659E669E679E68C6D99E699E6A9E6B9E6C9E6D9E6E9E6F9E70E5ABE5AD9E719E729E739E749E759E769E77E5AC9E789E799E7A9E7B9E7C9E7D9E7E9E809E819E829E839E849E859E869E879E889E89E5AF9E8A9E8B9E8CE5AE9E8D9E8E9E8F9E909E919E929E939E949E959E969E979E989E999E9A9E9B9E9C9E9D9E9EB9E09E9F9EA0E5B09EA19EA29EA39EA49EA59EA69EA79EA89EA99EAA9EAB9EAC9EAD9EAEE5B19EAF9EB09EB19EB29EB39EB49EB59EB69EB79EB89EB99EBABBF0ECE1C3F09EBBB5C6BBD29EBC9EBD9EBE9EBFC1E9D4EE9EC0BEC49EC19EC29EC3D7C69EC4D4D6B2D3ECBE9EC59EC69EC79EC8EAC19EC99ECA9ECBC2AFB4B69ECC9ECD9ECED1D79ECF9ED09ED1B3B49ED2C8B2BFBBECC09ED39ED4D6CB9ED59ED6ECBFECC19ED79ED89ED99EDA9EDB9EDC9EDD9EDE9EDF9EE09EE19EE29EE3ECC5BEE6CCBFC5DABEBC9EE4ECC69EE5B1FE9EE69EE79EE8ECC4D5A8B5E39EE9ECC2C1B6B3E39EEA9EEBECC3CBB8C0C3CCFE9EEC9EED9EEE9EEFC1D29EF0ECC89EF19EF29EF39EF49EF59EF69EF79EF89EF99EFA9EFB9EFC9EFDBAE6C0D39EFED6F29F409F419F42D1CC9F439F449F459F46BFBE9F47B7B3C9D5ECC7BBE29F48CCCCBDFDC8C89F49CFA99F4A9F4B9F4C9F4D9F4E9F4F9F50CDE99F51C5EB9F529F539F54B7E99F559F569F579F589F599F5A9F5B9F5C9F5D9F5E9F5FD1C9BAB89F609F619F629F639F64ECC99F659F66ECCA9F67BBC0ECCB9F68ECE2B1BAB7D99F699F6A9F6B9F6C9F6D9F6E9F6F9F709F719F729F73BDB99F749F759F769F779F789F799F7A9F7BECCCD1E6ECCD9F7C9F7D9F7E9F80C8BB9F819F829F839F849F859F869F879F889F899F8A9F8B9F8C9F8D9F8EECD19F8F9F909F919F92ECD39F93BBCD9F94BCE59F959F969F979F989F999F9A9F9B9F9C9F9D9F9E9F9F9FA09FA1ECCF9FA2C9B79FA39FA49FA59FA69FA7C3BA9FA8ECE3D5D5ECD09FA99FAA9FAB9FAC9FADD6F39FAE9FAF9FB0ECD2ECCE9FB19FB29FB39FB4ECD49FB5ECD59FB69FB7C9BF9FB89FB99FBA9FBB9FBC9FBDCFA89FBE9FBF9FC09FC19FC2D0DC9FC39FC49FC59FC6D1AC9FC79FC89FC99FCAC8DB9FCB9FCC9FCDECD6CEF59FCE9FCF9FD09FD19FD2CAECECDA9FD39FD49FD59FD69FD79FD89FD9ECD99FDA9FDB9FDCB0BE9FDD9FDE9FDF9FE09FE19FE2ECD79FE3ECD89FE49FE59FE6ECE49FE79FE89FE99FEA9FEB9FEC9FED9FEE9FEFC8BC9FF09FF19FF29FF39FF49FF59FF69FF79FF89FF9C1C79FFA9FFB9FFC9FFD9FFEECDCD1E0A040A041A042A043A044A045A046A047A048A049ECDBA04AA04BA04CA04DD4EFA04EECDDA04FA050A051A052A053A054DBC6A055A056A057A058A059A05AA05BA05CA05DA05EECDEA05FA060A061A062A063A064A065A066A067A068A069A06AB1ACA06BA06CA06DA06EA06FA070A071A072A073A074A075A076A077A078A079A07AA07BA07CA07DA07EA080A081ECDFA082A083A084A085A086A087A088A089A08AA08BECE0A08CD7A6A08DC5C0A08EA08FA090EBBCB0AEA091A092A093BEF4B8B8D2AFB0D6B5F9A094D8B3A095CBACA096E3DDA097A098A099A09AA09BA09CA09DC6ACB0E6A09EA09FA0A0C5C6EBB9A0A1A0A2A0A3A0A4EBBAA0A5A0A6A0A7EBBBA0A8A0A9D1C0A0AAC5A3A0ABEAF2A0ACC4B2A0ADC4B5C0CEA0AEA0AFA0B0EAF3C4C1A0B1CEEFA0B2A0B3A0B4A0B5EAF0EAF4A0B6A0B7C9FCA0B8A0B9C7A3A0BAA0BBA0BCCCD8CEFEA0BDA0BEA0BFEAF5EAF6CFACC0E7A0C0A0C1EAF7A0C2A0C3A0C4A0C5A0C6B6BFEAF8A0C7EAF9A0C8EAFAA0C9A0CAEAFBA0CBA0CCA0CDA0CEA0CFA0D0A0D1A0D2A0D3A0D4A0D5A0D6EAF1A0D7A0D8A0D9A0DAA0DBA0DCA0DDA0DEA0DFA0E0A0E1A0E2C8AEE1EBA0E3B7B8E1ECA0E4A0E5A0E6E1EDA0E7D7B4E1EEE1EFD3CCA0E8A0E9A0EAA0EBA0ECA0EDA0EEE1F1BFF1E1F0B5D2A0EFA0F0A0F1B1B7A0F2A0F3A0F4A0F5E1F3E1F2A0F6BAFCA0F7E1F4A0F8A0F9A0FAA0FBB9B7A0FCBED1A0FDA0FEAA40AA41C4FCAA42BADDBDC6AA43AA44AA45AA46AA47AA48E1F5E1F7AA49AA4AB6C0CFC1CAA8E1F6D5F8D3FCE1F8E1FCE1F9AA4BAA4CE1FAC0EAAA4DE1FEE2A1C0C7AA4EAA4FAA50AA51E1FBAA52E1FDAA53AA54AA55AA56AA57AA58E2A5AA59AA5AAA5BC1D4AA5CAA5DAA5EAA5FE2A3AA60E2A8B2FEE2A2AA61AA62AA63C3CDB2C2E2A7E2A6AA64AA65E2A4E2A9AA66AA67E2ABAA68AA69AA6AD0C9D6EDC3A8E2ACAA6BCFD7AA6CAA6DE2AEAA6EAA6FBAEFAA70AA71E9E0E2ADE2AAAA72AA73AA74AA75BBABD4B3AA76AA77AA78AA79AA7AAA7BAA7CAA7DAA7EAA80AA81AA82AA83E2B0AA84AA85E2AFAA86E9E1AA87AA88AA89AA8AE2B1AA8BAA8CAA8DAA8EAA8FAA90AA91AA92E2B2AA93AA94AA95AA96AA97AA98AA99AA9AAA9BAA9CAA9DE2B3CCA1AA9EE2B4AA9FAAA0AB40AB41AB42AB43AB44AB45AB46AB47AB48AB49AB4AAB4BE2B5AB4CAB4DAB4EAB4FAB50D0FEAB51AB52C2CAAB53D3F1AB54CDF5AB55AB56E7E0AB57AB58E7E1AB59AB5AAB5BAB5CBEC1AB5DAB5EAB5FAB60C2EAAB61AB62AB63E7E4AB64AB65E7E3AB66AB67AB68AB69AB6AAB6BCDE6AB6CC3B5AB6DAB6EE7E2BBB7CFD6AB6FC1E1E7E9AB70AB71AB72E7E8AB73AB74E7F4B2A3AB75AB76AB77AB78E7EAAB79E7E6AB7AAB7BAB7CAB7DAB7EE7ECE7EBC9BAAB80AB81D5E4AB82E7E5B7A9E7E7AB83AB84AB85AB86AB87AB88AB89E7EEAB8AAB8BAB8CAB8DE7F3AB8ED6E9AB8FAB90AB91AB92E7EDAB93E7F2AB94E7F1AB95AB96AB97B0E0AB98AB99AB9AAB9BE7F5AB9CAB9DAB9EAB9FABA0AC40AC41AC42AC43AC44AC45AC46AC47AC48AC49AC4AC7F2AC4BC0C5C0EDAC4CAC4DC1F0E7F0AC4EAC4FAC50AC51E7F6CBF6AC52AC53AC54AC55AC56AC57AC58AC59AC5AE8A2E8A1AC5BAC5CAC5DAC5EAC5FAC60D7C1AC61AC62E7FAE7F9AC63E7FBAC64E7F7AC65E7FEAC66E7FDAC67E7FCAC68AC69C1D5C7D9C5FDC5C3AC6AAC6BAC6CAC6DAC6EC7EDAC6FAC70AC71AC72E8A3AC73AC74AC75AC76AC77AC78AC79AC7AAC7BAC7CAC7DAC7EAC80AC81AC82AC83AC84AC85AC86E8A6AC87E8A5AC88E8A7BAF7E7F8E8A4AC89C8F0C9AAAC8AAC8BAC8CAC8DAC8EAC8FAC90AC91AC92AC93AC94AC95AC96E8A9AC97AC98B9E5AC99AC9AAC9BAC9CAC9DD1FEE8A8AC9EAC9FACA0AD40AD41AD42E8AAAD43E8ADE8AEAD44C1A7AD45AD46AD47E8AFAD48AD49AD4AE8B0AD4BAD4CE8ACAD4DE8B4AD4EAD4FAD50AD51AD52AD53AD54AD55AD56AD57AD58E8ABAD59E8B1AD5AAD5BAD5CAD5DAD5EAD5FAD60AD61E8B5E8B2E8B3AD62AD63AD64AD65AD66AD67AD68AD69AD6AAD6BAD6CAD6DAD6EAD6FAD70AD71E8B7AD72AD73AD74AD75AD76AD77AD78AD79AD7AAD7BAD7CAD7DAD7EAD80AD81AD82AD83AD84AD85AD86AD87AD88AD89E8B6AD8AAD8BAD8CAD8DAD8EAD8FAD90AD91AD92B9CFAD93F0ACAD94F0ADAD95C6B0B0EAC8BFAD96CDDFAD97AD98AD99AD9AAD9BAD9CAD9DCECDEAB1AD9EAD9FADA0AE40EAB2AE41C6BFB4C9AE42AE43AE44AE45AE46AE47AE48EAB3AE49AE4AAE4BAE4CD5E7AE4DAE4EAE4FAE50AE51AE52AE53AE54DDF9AE55EAB4AE56EAB5AE57EAB6AE58AE59AE5AAE5BB8CADFB0C9F5AE5CCCF0AE5DAE5EC9FAAE5FAE60AE61AE62AE63C9FBAE64AE65D3C3CBA6AE66B8A6F0AEB1C2AE67E5B8CCEFD3C9BCD7C9EAAE68B5E7AE69C4D0B5E9AE6AEEAEBBADAE6BAE6CE7DEAE6DEEAFAE6EAE6FAE70AE71B3A9AE72AE73EEB2AE74AE75EEB1BDE7AE76EEB0CEB7AE77AE78AE79AE7AC5CFAE7BAE7CAE7DAE7EC1F4DBCEEEB3D0F3AE80AE81AE82AE83AE84AE85AE86AE87C2D4C6E8AE88AE89AE8AB7ACAE8BAE8CAE8DAE8EAE8FAE90AE91EEB4AE92B3EBAE93AE94AE95BBFBEEB5AE96AE97AE98AE99AE9AE7DCAE9BAE9CAE9DEEB6AE9EAE9FBDAEAEA0AF40AF41AF42F1E2AF43AF44AF45CAE8AF46D2C9F0DAAF47F0DBAF48F0DCC1C6AF49B8EDBECEAF4AAF4BF0DEAF4CC5B1F0DDD1F1AF4DF0E0B0CCBDEAAF4EAF4FAF50AF51AF52D2DFF0DFAF53B4AFB7E8F0E6F0E5C6A3F0E1F0E2B4C3AF54AF55F0E3D5EEAF56AF57CCDBBED2BCB2AF58AF59AF5AF0E8F0E7F0E4B2A1AF5BD6A2D3B8BEB7C8ACAF5CAF5DF0EAAF5EAF5FAF60AF61D1F7AF62D6CCBADBF0E9AF63B6BBAF64AF65CDB4AF66AF67C6A6AF68AF69AF6AC1A1F0EBF0EEAF6BF0EDF0F0F0ECAF6CBBBEF0EFAF6DAF6EAF6FAF70CCB5F0F2AF71AF72B3D5AF73AF74AF75AF76B1D4AF77AF78F0F3AF79AF7AF0F4F0F6B4E1AF7BF0F1AF7CF0F7AF7DAF7EAF80AF81F0FAAF82F0F8AF83AF84AF85F0F5AF86AF87AF88AF89F0FDAF8AF0F9F0FCF0FEAF8BF1A1AF8CAF8DAF8ECEC1F1A4AF8FF1A3AF90C1F6F0FBCADDAF91AF92B4F1B1F1CCB1AF93F1A6AF94AF95F1A7AF96AF97F1ACD5CEF1A9AF98AF99C8B3AF9AAF9BAF9CF1A2AF9DF1ABF1A8F1A5AF9EAF9FF1AAAFA0B040B041B042B043B044B045B046B0A9F1ADB047B048B049B04AB04BB04CF1AFB04DF1B1B04EB04FB050B051B052F1B0B053F1AEB054B055B056B057D1A2B058B059B05AB05BB05CB05DB05EF1B2B05FB060B061F1B3B062B063B064B065B066B067B068B069B9EFB06AB06BB5C7B06CB0D7B0D9B06DB06EB06FD4EDB070B5C4B071BDD4BBCAF0A7B072B073B8DEB074B075F0A8B076B077B0A8B078F0A9B079B07ACDEEB07BB07CF0AAB07DB07EB080B081B082B083B084B085B086B087F0ABB088B089B08AB08BB08CB08DB08EB08FB090C6A4B091B092D6E5F1E4B093F1E5B094B095B096B097B098B099B09AB09BB09CB09DC3F3B09EB09FD3DBB0A0B140D6D1C5E8B141D3AFB142D2E6B143B144EEC1B0BBD5B5D1CEBCE0BAD0B145BFF8B146B8C7B5C1C5CCB147B148CAA2B149B14AB14BC3CBB14CB14DB14EB14FB150EEC2B151B152B153B154B155B156B157B158C4BFB6A2B159EDECC3A4B15AD6B1B15BB15CB15DCFE0EDEFB15EB15FC5CEB160B6DCB161B162CAA1B163B164EDEDB165B166EDF0EDF1C3BCB167BFB4B168EDEEB169B16AB16BB16CB16DB16EB16FB170B171B172B173EDF4EDF2B174B175B176B177D5E6C3DFB178EDF3B179B17AB17BEDF6B17CD5A3D1A3B17DB17EB180EDF5B181C3D0B182B183B184B185B186EDF7BFF4BEECEDF8B187CCF7B188D1DBB189B18AB18BD7C5D5F6B18CEDFCB18DB18EB18FEDFBB190B191B192B193B194B195B196B197EDF9EDFAB198B199B19AB19BB19CB19DB19EB19FEDFDBEA6B1A0B240B241B242B243CBAFEEA1B6BDB244EEA2C4C0B245EDFEB246B247BDDEB2C7B248B249B24AB24BB24CB24DB24EB24FB250B251B252B253B6C3B254B255B256EEA5D8BAEEA3EEA6B257B258B259C3E9B3F2B25AB25BB25CB25DB25EB25FEEA7EEA4CFB9B260B261EEA8C2F7B262B263B264B265B266B267B268B269B26AB26BB26CB26DEEA9EEAAB26EDEABB26FB270C6B3B271C7C6B272D6F5B5C9B273CBB2B274B275B276EEABB277B278CDABB279EEACB27AB27BB27CB27DB27ED5B0B280EEADB281F6C4B282B283B284B285B286B287B288B289B28AB28BB28CB28DB28EDBC7B28FB290B291B292B293B294B295B296B297B4A3B298B299B29AC3ACF1E6B29BB29CB29DB29EB29FCAB8D2D3B2A0D6AAB340EFF2B341BED8B342BDC3EFF3B6CCB0ABB343B344B345B346CAAFB347B348EDB6B349EDB7B34AB34BB34CB34DCEF9B7AFBFF3EDB8C2EBC9B0B34EB34FB350B351B352B353EDB9B354B355C6F6BFB3B356B357B358EDBCC5F8B359D1D0B35AD7A9EDBAEDBBB35BD1E2B35CEDBFEDC0B35DEDC4B35EB35FB360EDC8B361EDC6EDCED5E8B362EDC9B363B364EDC7EDBEB365B366C5E9B367B368B369C6C6B36AB36BC9E9D4D2EDC1EDC2EDC3EDC5B36CC0F9B36DB4A1B36EB36FB370B371B9E8B372EDD0B373B374B375B376EDD1B377EDCAB378EDCFB379CEF8B37AB37BCBB6EDCCEDCDB37CB37DB37EB380B381CFF5B382B383B384B385B386B387B388B389B38AB38BB38CB38DEDD2C1F2D3B2EDCBC8B7B38EB38FB390B391B392B393B394B395BCEFB396B397B398B399C5F0B39AB39BB39CB39DB39EB39FB3A0B440B441B442EDD6B443B5EFB444B445C2B5B0ADCBE9B446B447B1AEB448EDD4B449B44AB44BCDEBB5E2B44CEDD5EDD3EDD7B44DB44EB5FAB44FEDD8B450EDD9B451EDDCB452B1CCB453B454B455B456B457B458B459B45AC5F6BCEEEDDACCBCB2EAB45BB45CB45DB45EEDDBB45FB460B461B462C4EBB463B464B4C5B465B466B467B0F5B468B469B46AEDDFC0DAB4E8B46BB46CB46DB46EC5CDB46FB470B471EDDDBFC4B472B473B474EDDEB475B476B477B478B479B47AB47BB47CB47DB47EB480B481B482B483C4A5B484B485B486EDE0B487B488B489B48AB48BEDE1B48CEDE3B48DB48EC1D7B48FB490BBC7B491B492B493B494B495B496BDB8B497B498B499EDE2B49AB49BB49CB49DB49EB49FB4A0B540B541B542B543B544B545EDE4B546B547B548B549B54AB54BB54CB54DB54EB54FEDE6B550B551B552B553B554EDE5B555B556B557B558B559B55AB55BB55CB55DB55EB55FB560B561B562B563EDE7B564B565B566B567B568CABEECEAC0F1B569C9E7B56AECEBC6EEB56BB56CB56DB56EECECB56FC6EDECEDB570B571B572B573B574B575B576B577B578ECF0B579B57AD7E6ECF3B57BB57CECF1ECEEECEFD7A3C9F1CBEEECF4B57DECF2B57EB580CFE9B581ECF6C6B1B582B583B584B585BCC0B586ECF5B587B588B589B58AB58BB58CB58DB5BBBBF6B58EECF7B58FB590B591B592B593D9F7BDFBB594B595C2BBECF8B596B597B598B599ECF9B59AB59BB59CB59DB8A3B59EB59FB5A0B640B641B642B643B644B645B646ECFAB647B648B649B64AB64BB64CB64DB64EB64FB650B651B652ECFBB653B654B655B656B657B658B659B65AB65BB65CB65DECFCB65EB65FB660B661B662D3EDD8AEC0EBB663C7DDBACCB664D0E3CBBDB665CDBAB666B667B8D1B668B669B1FCB66AC7EFB66BD6D6B66CB66DB66EBFC6C3EBB66FB670EFF5B671B672C3D8B673B674B675B676B677B678D7E2B679B67AB67BEFF7B3D3B67CC7D8D1EDB67DD6C8B67EEFF8B680EFF6B681BBFDB3C6B682B683B684B685B686B687B688BDD5B689B68AD2C6B68BBBE0B68CB68DCFA1B68EEFFCEFFBB68FB690EFF9B691B692B693B694B3CCB695C9D4CBB0B696B697B698B699B69AEFFEB69BB69CB0DEB69DB69ED6C9B69FB6A0B740EFFDB741B3EDB742B743F6D5B744B745B746B747B748B749B74AB74BB74CB74DB74EB74FB750B751B752CEC8B753B754B755F0A2B756F0A1B757B5BEBCDABBFCB758B8E5B759B75AB75BB75CB75DB75EC4C2B75FB760B761B762B763B764B765B766B767B768F0A3B769B76AB76BB76CB76DCBEBB76EB76FB770B771B772B773B774B775B776B777B778B779B77AB77BB77CB77DB77EB780B781B782B783B784B785B786F0A6B787B788B789D1A8B78ABEBFC7EEF1B6F1B7BFD5B78BB78CB78DB78EB4A9F1B8CDBBB78FC7D4D5ADB790F1B9B791F1BAB792B793B794B795C7CFB796B797B798D2A4D6CFB799B79AF1BBBDD1B4B0BEBDB79BB79CB79DB4DCCED1B79EBFDFF1BDB79FB7A0B840B841BFFAF1BCB842F1BFB843B844B845F1BEF1C0B846B847B848B849B84AF1C1B84BB84CB84DB84EB84FB850B851B852B853B854B855C1FEB856B857B858B859B85AB85BB85CB85DB85EB85FB860C1A2B861B862B863B864B865B866B867B868B869B86ACAFAB86BB86CD5BEB86DB86EB86FB870BEBABEB9D5C2B871B872BFA2B873CDAFF1B5B874B875B876B877B878B879BDDFB87AB6CBB87BB87CB87DB87EB880B881B882B883B884D6F1F3C3B885B886F3C4B887B8CDB888B889B88AF3C6F3C7B88BB0CAB88CF3C5B88DF3C9CBF1B88EB88FB890F3CBB891D0A6B892B893B1CAF3C8B894B895B896F3CFB897B5D1B898B899F3D7B89AF3D2B89BB89CB89DF3D4F3D3B7FBB89EB1BFB89FF3CEF3CAB5DAB8A0F3D0B940B941F3D1B942F3D5B943B944B945B946F3CDB947BCE3B948C1FDB949F3D6B94AB94BB94CB94DB94EB94FF3DAB950F3CCB951B5C8B952BDEEF3DCB953B954B7A4BFF0D6FECDB2B955B4F0B956B2DFB957F3D8B958F3D9C9B8B959F3DDB95AB95BF3DEB95CF3E1B95DB95EB95FB960B961B962B963B964B965B966B967F3DFB968B969F3E3F3E2B96AB96BF3DBB96CBFEAB96DB3EFB96EF3E0B96FB970C7A9B971BCF2B972B973B974B975F3EBB976B977B978B979B97AB97BB97CB9BFB97DB97EF3E4B980B981B982B2ADBBFEB983CBE3B984B985B986B987F3EDF3E9B988B989B98AB9DCF3EEB98BB98CB98DF3E5F3E6F3EAC2E1F3ECF3EFF3E8BCFDB98EB98FB990CFE4B991B992F3F0B993B994B995F3E7B996B997B998B999B99AB99BB99CB99DF3F2B99EB99FB9A0BA40D7ADC6AABA41BA42BA43BA44F3F3BA45BA46BA47BA48F3F1BA49C2A8BA4ABA4BBA4CBA4DBA4EB8DDF3F5BA4FBA50F3F4BA51BA52BA53B4DBBA54BA55BA56F3F6F3F7BA57BA58BA59F3F8BA5ABA5BBA5CC0BABA5DBA5EC0E9BA5FBA60BA61BA62BA63C5F1BA64BA65BA66BA67F3FBBA68F3FABA69BA6ABA6BBA6CBA6DBA6EBA6FBA70B4D8BA71BA72BA73F3FEF3F9BA74BA75F3FCBA76BA77BA78BA79BA7ABA7BF3FDBA7CBA7DBA7EBA80BA81BA82BA83BA84F4A1BA85BA86BA87BA88BA89BA8AF4A3BBC9BA8BBA8CF4A2BA8DBA8EBA8FBA90BA91BA92BA93BA94BA95BA96BA97BA98BA99F4A4BA9ABA9BBA9CBA9DBA9EBA9FB2BEF4A6F4A5BAA0BB40BB41BB42BB43BB44BB45BB46BB47BB48BB49BCAEBB4ABB4BBB4CBB4DBB4EBB4FBB50BB51BB52BB53BB54BB55BB56BB57BB58BB59BB5ABB5BBB5CBB5DBB5EBB5FBB60BB61BB62BB63BB64BB65BB66BB67BB68BB69BB6ABB6BBB6CBB6DBB6EC3D7D9E1BB6FBB70BB71BB72BB73BB74C0E0F4CCD7D1BB75BB76BB77BB78BB79BB7ABB7BBB7CBB7DBB7EBB80B7DBBB81BB82BB83BB84BB85BB86BB87F4CEC1A3BB88BB89C6C9BB8AB4D6D5B3BB8BBB8CBB8DF4D0F4CFF4D1CBDABB8EBB8FF4D2BB90D4C1D6E0BB91BB92BB93BB94B7E0BB95BB96BB97C1B8BB98BB99C1BBF4D3BEACBB9ABB9BBB9CBB9DBB9EB4E2BB9FBBA0F4D4F4D5BEABBC40BC41F4D6BC42BC43BC44F4DBBC45F4D7F4DABC46BAFDBC47F4D8F4D9BC48BC49BC4ABC4BBC4CBC4DBC4EB8E2CCC7F4DCBC4FB2DABC50BC51C3D3BC52BC53D4E3BFB7BC54BC55BC56BC57BC58BC59BC5AF4DDBC5BBC5CBC5DBC5EBC5FBC60C5B4BC61BC62BC63BC64BC65BC66BC67BC68F4E9BC69BC6ACFB5BC6BBC6CBC6DBC6EBC6FBC70BC71BC72BC73BC74BC75BC76BC77BC78CEC9BC79BC7ABC7BBC7CBC7DBC7EBC80BC81BC82BC83BC84BC85BC86BC87BC88BC89BC8ABC8BBC8CBC8DBC8ECBD8BC8FCBF7BC90BC91BC92BC93BDF4BC94BC95BC96D7CFBC97BC98BC99C0DBBC9ABC9BBC9CBC9DBC9EBC9FBCA0BD40BD41BD42BD43BD44BD45BD46BD47BD48BD49BD4ABD4BBD4CBD4DBD4EBD4FBD50BD51BD52BD53BD54BD55BD56BD57BD58BD59BD5ABD5BBD5CBD5DBD5EBD5FBD60BD61BD62BD63BD64BD65BD66BD67BD68BD69BD6ABD6BBD6CBD6DBD6EBD6FBD70BD71BD72BD73BD74BD75BD76D0F5BD77BD78BD79BD7ABD7BBD7CBD7DBD7EF4EABD80BD81BD82BD83BD84BD85BD86BD87BD88BD89BD8ABD8BBD8CBD8DBD8EBD8FBD90BD91BD92BD93BD94BD95BD96BD97BD98BD99BD9ABD9BBD9CBD9DBD9EBD9FBDA0BE40BE41BE42BE43BE44BE45BE46BE47BE48BE49BE4ABE4BBE4CF4EBBE4DBE4EBE4FBE50BE51BE52BE53F4ECBE54BE55BE56BE57BE58BE59BE5ABE5BBE5CBE5DBE5EBE5FBE60BE61BE62BE63BE64BE65BE66BE67BE68BE69BE6ABE6BBE6CBE6DBE6EBE6FBE70BE71BE72BE73BE74BE75BE76BE77BE78BE79BE7ABE7BBE7CBE7DBE7EBE80BE81BE82BE83BE84BE85BE86BE87BE88BE89BE8ABE8BBE8CBE8DBE8EBE8FBE90BE91BE92BE93BE94BE95BE96BE97BE98BE99BE9ABE9BBE9CBE9DBE9EBE9FBEA0BF40BF41BF42BF43BF44BF45BF46BF47BF48BF49BF4ABF4BBF4CBF4DBF4EBF4FBF50BF51BF52BF53BF54BF55BF56BF57BF58BF59BF5ABF5BBF5CBF5DBF5EBF5FBF60BF61BF62BF63BF64BF65BF66BF67BF68BF69BF6ABF6BBF6CBF6DBF6EBF6FBF70BF71BF72BF73BF74BF75BF76BF77BF78BF79BF7ABF7BBF7CBF7DBF7EBF80F7E3BF81BF82BF83BF84BF85B7B1BF86BF87BF88BF89BF8AF4EDBF8BBF8CBF8DBF8EBF8FBF90BF91BF92BF93BF94BF95BF96BF97BF98BF99BF9ABF9BBF9CBF9DBF9EBF9FBFA0C040C041C042C043C044C045C046C047C048C049C04AC04BC04CC04DC04EC04FC050C051C052C053C054C055C056C057C058C059C05AC05BC05CC05DC05EC05FC060C061C062C063D7EBC064C065C066C067C068C069C06AC06BC06CC06DC06EC06FC070C071C072C073C074C075C076C077C078C079C07AC07BF4EEC07CC07DC07EE6F9BEC0E6FABAECE6FBCFCBE6FCD4BCBCB6E6FDE6FEBCCDC8D2CEB3E7A1C080B4BFE7A2C9B4B8D9C4C9C081D7DDC2DAB7D7D6BDCEC6B7C4C082C083C5A6E7A3CFDFE7A4E7A5E7A6C1B7D7E9C9F0CFB8D6AFD6D5E7A7B0EDE7A8E7A9C9DCD2EFBEADE7AAB0F3C8DEBDE1E7ABC8C6C084E7ACBBE6B8F8D1A4E7ADC2E7BEF8BDCACDB3E7AEE7AFBEEED0E5C085CBE7CCD0BCCCE7B0BCA8D0F7E7B1C086D0F8E7B2E7B3B4C2E7B4E7B5C9FECEACC3E0E7B7B1C1B3F1C087E7B8E7B9D7DBD5C0E7BAC2CCD7BAE7BBE7BCE7BDBCEAC3E5C0C2E7BEE7BFBCA9C088E7C0E7C1E7B6B6D0E7C2C089E7C3E7C4BBBAB5DEC2C6B1E0E7C5D4B5E7C6B8BFE7C8E7C7B7ECC08AE7C9B2F8E7CAE7CBE7CCE7CDE7CEE7CFE7D0D3A7CBF5E7D1E7D2E7D3E7D4C9C9E7D5E7D6E7D7E7D8E7D9BDC9E7DAF3BEC08BB8D7C08CC8B1C08DC08EC08FC090C091C092C093F3BFC094F3C0F3C1C095C096C097C098C099C09AC09BC09CC09DC09EB9DECDF8C09FC0A0D8E8BAB1C140C2DEEEB7C141B7A3C142C143C144C145EEB9C146EEB8B0D5C147C148C149C14AC14BEEBBD5D6D7EFC14CC14DC14ED6C3C14FC150EEBDCAF0C151EEBCC152C153C154C155EEBEC156C157C158C159EEC0C15AC15BEEBFC15CC15DC15EC15FC160C161C162C163D1F2C164C7BCC165C3C0C166C167C168C169C16AB8E1C16BC16CC16DC16EC16FC1E7C170C171F4C6D0DFF4C7C172CFDBC173C174C8BAC175C176F4C8C177C178C179C17AC17BC17CC17DF4C9F4CAC17EF4CBC180C181C182C183C184D9FAB8FEC185C186E5F1D3F0C187F4E0C188CECCC189C18AC18BB3E1C18CC18DC18EC18FF1B4C190D2EEC191F4E1C192C193C194C195C196CFE8F4E2C197C198C7CCC199C19AC19BC19CC19DC19EB5D4B4E4F4E4C19FC1A0C240F4E3F4E5C241C242F4E6C243C244C245C246F4E7C247BAB2B0BFC248F4E8C249C24AC24BC24CC24DC24EC24FB7ADD2EDC250C251C252D2ABC0CFC253BFBCEBA3D5DFEAC8C254C255C256C257F1F3B6F8CBA3C258C259C4CDC25AF1E7C25BF1E8B8FBF1E9BAC4D4C5B0D2C25CC25DF1EAC25EC25FC260F1EBC261F1ECC262C263F1EDF1EEF1EFF1F1F1F0C5D5C264C265C266C267C268C269F1F2C26AB6FAC26BF1F4D2AEDEC7CBCAC26CC26DB3DCC26EB5A2C26FB9A2C270C271C4F4F1F5C272C273F1F6C274C275C276C1C4C1FBD6B0F1F7C277C278C279C27AF1F8C27BC1AAC27CC27DC27EC6B8C280BEDBC281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EF1F9B4CFC28FC290C291C292C293C294F1FAC295C296C297C298C299C29AC29BC29CC29DC29EC29FC2A0C340EDB2EDB1C341C342CBE0D2DEC343CBC1D5D8C344C8E2C345C0DFBCA1C346C347C348C349C34AC34BEBC1C34CC34DD0A4C34ED6E2C34FB6C7B8D8EBC0B8CEC350EBBFB3A6B9C9D6ABC351B7F4B7CAC352C353C354BCE7B7BEEBC6C355EBC7B0B9BFCFC356EBC5D3FDC357EBC8C358C359EBC9C35AC35BB7CEC35CEBC2EBC4C9F6D6D7D5CDD0B2EBCFCEB8EBD0C35DB5A8C35EC35FC360C361C362B1B3EBD2CCA5C363C364C365C366C367C368C369C5D6EBD3C36AEBD1C5DFEBCECAA4EBD5B0FBC36BC36CBAFAC36DC36ED8B7F1E3C36FEBCAEBCBEBCCEBCDEBD6E6C0EBD9C370BFE8D2C8EBD7EBDCB8ECEBD8C371BDBAC372D0D8C373B0B7C374EBDDC4DCC375C376C377C378D6ACC379C37AC37BB4E0C37CC37DC2F6BCB9C37EC380EBDAEBDBD4E0C6EAC4D4EBDFC5A7D9F5C381B2B1C382EBE4C383BDC5C384C385C386EBE2C387C388C389C38AC38BC38CC38DC38EC38FC390C391C392C393EBE3C394C395B8ACC396CDD1EBE5C397C398C399EBE1C39AC1B3C39BC39CC39DC39EC39FC6A2C3A0C440C441C442C443C444C445CCF3C446EBE6C447C0B0D2B8EBE7C448C449C44AB8AFB8ADC44BEBE8C7BBCDF3C44CC44DC44EEBEAEBEBC44FC450C451C452C453EBEDC454C455C456C457D0C8C458EBF2C459EBEEC45AC45BC45CEBF1C8F9C45DD1FCEBECC45EC45FEBE9C460C461C462C463B8B9CFD9C4E5EBEFEBF0CCDACDC8B0F2C464EBF6C465C466C467C468C469EBF5C46AB2B2C46BC46CC46DC46EB8E0C46FEBF7C470C471C472C473C474C475B1ECC476C477CCC5C4A4CFA5C478C479C47AC47BC47CEBF9C47DC47EECA2C480C5F2C481EBFAC482C483C484C485C486C487C488C489C9C5C48AC48BC48CC48DC48EC48FE2DFEBFEC490C491C492C493CDCEECA1B1DBD3B7C494C495D2DCC496C497C498EBFDC499EBFBC49AC49BC49CC49DC49EC49FC4A0C540C541C542C543C544C545C546C547C548C549C54AC54BC54CC54DC54EB3BCC54FC550C551EAB0C552C553D7D4C554F4ABB3F4C555C556C557C558C559D6C1D6C2C55AC55BC55CC55DC55EC55FD5E9BECAC560F4A7C561D2A8F4A8F4A9C562F4AABECBD3DFC563C564C565C566C567C9E0C9E1C568C569F3C2C56ACAE6C56BCCF2C56CC56DC56EC56FC570C571E2B6CBB4C572CEE8D6DBC573F4ADF4AEF4AFC574C575C576C577F4B2C578BABDF4B3B0E3F4B0C579F4B1BDA2B2D5C57AF4B6F4B7B6E6B2B0CFCFF4B4B4ACC57BF4B5C57CC57DF4B8C57EC580C581C582C583F4B9C584C585CDA7C586F4BAC587F4BBC588C589C58AF4BCC58BC58CC58DC58EC58FC590C591C592CBD2C593F4BDC594C595C596C597F4BEC598C599C59AC59BC59CC59DC59EC59FF4BFC5A0C640C641C642C643F4DEC1BCBCE8C644C9ABD1DEE5F5C645C646C647C648DCB3D2D5C649C64ADCB4B0ACDCB5C64BC64CBDDAC64DDCB9C64EC64FC650D8C2C651DCB7D3F3C652C9D6DCBADCB6C653DCBBC3A2C654C655C656C657DCBCDCC5DCBDC658C659CEDFD6A5C65ADCCFC65BDCCDC65CC65DDCD2BDE6C2ABC65EDCB8DCCBDCCEDCBEB7D2B0C5DCC7D0BEDCC1BBA8C65FB7BCDCCCC660C661DCC6DCBFC7DBC662C663C664D1BFDCC0C665C666DCCAC667C668DCD0C669C66ACEADDCC2C66BDCC3DCC8DCC9B2D4DCD1CBD5C66CD4B7DCDBDCDFCCA6DCE6C66DC3E7DCDCC66EC66FBFC1DCD9C670B0FAB9B6DCE5DCD3C671DCC4DCD6C8F4BFE0C672C673C674C675C9BBC676C677C678B1BDC679D3A2C67AC67BDCDAC67CC67DDCD5C67EC6BBC680DCDEC681C682C683C684C685D7C2C3AFB7B6C7D1C3A9DCE2DCD8DCEBDCD4C686C687DCDDC688BEA5DCD7C689DCE0C68AC68BDCE3DCE4C68CDCF8C68DC68EDCE1DDA2DCE7C68FC690C691C692C693C694C695C696C697C698BCEBB4C4C699C69AC3A3B2E7DCFAC69BDCF2C69CDCEFC69DDCFCDCEED2F0B2E8C69EC8D7C8E3DCFBC69FDCEDC6A0C740C741DCF7C742C743DCF5C744C745BEA3DCF4C746B2DDC747C748C749C74AC74BDCF3BCF6DCE8BBC4C74CC0F3C74DC74EC74FC750C751BCD4DCE9DCEAC752DCF1DCF6DCF9B5B4C753C8D9BBE7DCFEDCFDD3ABDDA1DDA3DDA5D2F1DDA4DDA6DDA7D2A9C754C755C756C757C758C759C75ABAC9DDA9C75BC75CDDB6DDB1DDB4C75DC75EC75FC760C761C762C763DDB0C6CEC764C765C0F2C766C767C768C769C9AFC76AC76BC76CDCECDDAEC76DC76EC76FC770DDB7C771C772DCF0DDAFC773DDB8C774DDACC775C776C777C778C779C77AC77BDDB9DDB3DDADC4AAC77CC77DC77EC780DDA8C0B3C1ABDDAADDABC781DDB2BBF1DDB5D3A8DDBAC782DDBBC3A7C783C784DDD2DDBCC785C786C787DDD1C788B9BDC789C78ABED5C78BBEFAC78CC78DBACAC78EC78FC790C791DDCAC792DDC5C793DDBFC794C795C796B2CBDDC3C797DDCBB2A4DDD5C798C799C79ADDBEC79BC79CC79DC6D0DDD0C79EC79FC7A0C840C841DDD4C1E2B7C6C842C843C844C845C846DDCEDDCFC847C848C849DDC4C84AC84BC84CDDBDC84DDDCDCCD1C84EDDC9C84FC850C851C852DDC2C3C8C6BCCEAEDDCCC853DDC8C854C855C856C857C858C859DDC1C85AC85BC85CDDC6C2DCC85DC85EC85FC860C861C862D3A9D3AADDD3CFF4C8F8C863C864C865C866C867C868C869C86ADDE6C86BC86CC86DC86EC86FC870DDC7C871C872C873DDE0C2E4C874C875C876C877C878C879C87AC87BDDE1C87CC87DC87EC880C881C882C883C884C885C886DDD7C887C888C889C88AC88BD6F8C88CDDD9DDD8B8F0DDD6C88DC88EC88FC890C6CFC891B6ADC892C893C894C895C896DDE2C897BAF9D4E1DDE7C898C899C89AB4D0C89BDDDAC89CBFFBDDE3C89DDDDFC89EDDDDC89FC8A0C940C941C942C943C944B5D9C945C946C947C948DDDBDDDCDDDEC949BDAFDDE4C94ADDE5C94BC94CC94DC94EC94FC950C951C952DDF5C953C3C9C954C955CBE2C956C957C958C959DDF2C95AC95BC95CC95DC95EC95FC960C961C962C963C964C965C966D8E1C967C968C6D1C969DDF4C96AC96BC96CD5F4DDF3DDF0C96DC96EDDECC96FDDEFC970DDE8C971C972D0EEC973C974C975C976C8D8DDEEC977C978DDE9C979C97ADDEACBF2C97BDDEDC97CC97DB1CDC97EC980C981C982C983C984C0B6C985BCBBDDF1C986C987DDF7C988DDF6DDEBC989C98AC98BC98CC98DC5EEC98EC98FC990DDFBC991C992C993C994C995C996C997C998C999C99AC99BDEA4C99CC99DDEA3C99EC99FC9A0CA40CA41CA42CA43CA44CA45CA46CA47CA48DDF8CA49CA4ACA4BCA4CC3EFCA4DC2FBCA4ECA4FCA50D5E1CA51CA52CEB5CA53CA54CA55CA56DDFDCA57B2CCCA58CA59CA5ACA5BCA5CCA5DCA5ECA5FCA60C4E8CADFCA61CA62CA63CA64CA65CA66CA67CA68CA69CA6AC7BEDDFADDFCDDFEDEA2B0AAB1CECA6BCA6CCA6DCA6ECA6FDEACCA70CA71CA72CA73DEA6BDB6C8EFCA74CA75CA76CA77CA78CA79CA7ACA7BCA7CCA7DCA7EDEA1CA80CA81DEA5CA82CA83CA84CA85DEA9CA86CA87CA88CA89CA8ADEA8CA8BCA8CCA8DDEA7CA8ECA8FCA90CA91CA92CA93CA94CA95CA96DEADCA97D4CCCA98CA99CA9ACA9BDEB3DEAADEAECA9CCA9DC0D9CA9ECA9FCAA0CB40CB41B1A1DEB6CB42DEB1CB43CB44CB45CB46CB47CB48CB49DEB2CB4ACB4BCB4CCB4DCB4ECB4FCB50CB51CB52CB53CB54D1A6DEB5CB55CB56CB57CB58CB59CB5ACB5BDEAFCB5CCB5DCB5EDEB0CB5FD0BDCB60CB61CB62DEB4CAEDDEB9CB63CB64CB65CB66CB67CB68DEB8CB69DEB7CB6ACB6BCB6CCB6DCB6ECB6FCB70DEBBCB71CB72CB73CB74CB75CB76CB77BDE5CB78CB79CB7ACB7BCB7CB2D8C3EACB7DCB7EDEBACB80C5BACB81CB82CB83CB84CB85CB86DEBCCB87CB88CB89CB8ACB8BCB8CCB8DCCD9CB8ECB8FCB90CB91B7AACB92CB93CB94CB95CB96CB97CB98CB99CB9ACB9BCB9CCB9DCB9ECB9FCBA0CC40CC41D4E5CC42CC43CC44DEBDCC45CC46CC47CC48CC49DEBFCC4ACC4BCC4CCC4DCC4ECC4FCC50CC51CC52CC53CC54C4A2CC55CC56CC57CC58DEC1CC59CC5ACC5BCC5CCC5DCC5ECC5FCC60CC61CC62CC63CC64CC65CC66CC67CC68DEBECC69DEC0CC6ACC6BCC6CCC6DCC6ECC6FCC70CC71CC72CC73CC74CC75CC76CC77D5BACC78CC79CC7ADEC2CC7BCC7CCC7DCC7ECC80CC81CC82CC83CC84CC85CC86CC87CC88CC89CC8ACC8BF2AEBBA2C2B2C5B0C2C7CC8CCC8DF2AFCC8ECC8FCC90CC91CC92D0E9CC93CC94CC95D3DDCC96CC97CC98EBBDCC99CC9ACC9BCC9CCC9DCC9ECC9FCCA0B3E6F2B0CD40F2B1CD41CD42CAADCD43CD44CD45CD46CD47CD48CD49BAE7F2B3F2B5F2B4CBE4CFBAF2B2CAB4D2CFC2ECCD4ACD4BCD4CCD4DCD4ECD4FCD50CEC3F2B8B0F6F2B7CD51CD52CD53CD54CD55F2BECD56B2CFCD57CD58CD59CD5ACD5BCD5CD1C1F2BACD5DCD5ECD5FCD60CD61F2BCD4E9CD62CD63F2BBF2B6F2BFF2BDCD64F2B9CD65CD66F2C7F2C4F2C6CD67CD68F2CAF2C2F2C0CD69CD6ACD6BF2C5CD6CCD6DCD6ECD6FCD70D6FBCD71CD72CD73F2C1CD74C7F9C9DFCD75F2C8B9C6B5B0CD76CD77F2C3F2C9F2D0F2D6CD78CD79BBD7CD7ACD7BCD7CF2D5CDDCCD7DD6EBCD7ECD80F2D2F2D4CD81CD82CD83CD84B8F2CD85CD86CD87CD88F2CBCD89CD8ACD8BF2CEC2F9CD8CD5DDF2CCF2CDF2CFF2D3CD8DCD8ECD8FF2D9D3BCCD90CD91CD92CD93B6EACD94CAF1CD95B7E4F2D7CD96CD97CD98F2D8F2DAF2DDF2DBCD99CD9AF2DCCD9BCD9CCD9DCD9ED1D1F2D1CD9FCDC9CDA0CECFD6A9CE40F2E3CE41C3DBCE42F2E0CE43CE44C0AFF2ECF2DECE45F2E1CE46CE47CE48F2E8CE49CE4ACE4BCE4CF2E2CE4DCE4EF2E7CE4FCE50F2E6CE51CE52F2E9CE53CE54CE55F2DFCE56CE57F2E4F2EACE58CE59CE5ACE5BCE5CCE5DCE5ED3ACF2E5B2F5CE5FCE60F2F2CE61D0ABCE62CE63CE64CE65F2F5CE66CE67CE68BBC8CE69F2F9CE6ACE6BCE6CCE6DCE6ECE6FF2F0CE70CE71F2F6F2F8F2FACE72CE73CE74CE75CE76CE77CE78CE79F2F3CE7AF2F1CE7BCE7CCE7DBAFBCE7EB5FBCE80CE81CE82CE83F2EFF2F7F2EDF2EECE84CE85CE86F2EBF3A6CE87F3A3CE88CE89F3A2CE8ACE8BF2F4CE8CC8DACE8DCE8ECE8FCE90CE91F2FBCE92CE93CE94F3A5CE95CE96CE97CE98CE99CE9ACE9BC3F8CE9CCE9DCE9ECE9FCEA0CF40CF41CF42F2FDCF43CF44F3A7F3A9F3A4CF45F2FCCF46CF47CF48F3ABCF49F3AACF4ACF4BCF4CCF4DC2DDCF4ECF4FF3AECF50CF51F3B0CF52CF53CF54CF55CF56F3A1CF57CF58CF59F3B1F3ACCF5ACF5BCF5CCF5DCF5EF3AFF2FEF3ADCF5FCF60CF61CF62CF63CF64CF65F3B2CF66CF67CF68CF69F3B4CF6ACF6BCF6CCF6DF3A8CF6ECF6FCF70CF71F3B3CF72CF73CF74F3B5CF75CF76CF77CF78CF79CF7ACF7BCF7CCF7DCF7ED0B7CF80CF81CF82CF83F3B8CF84CF85CF86CF87D9F9CF88CF89CF8ACF8BCF8CCF8DF3B9CF8ECF8FCF90CF91CF92CF93CF94CF95F3B7CF96C8E4F3B6CF97CF98CF99CF9AF3BACF9BCF9CCF9DCF9ECF9FF3BBB4C0CFA0D040D041D042D043D044D045D046D047D048D049D04AD04BD04CD04DEEC3D04ED04FD050D051D052D053F3BCD054D055F3BDD056D057D058D1AAD059D05AD05BF4ACD0C6D05CD05DD05ED05FD060D061D0D0D1DCD062D063D064D065D066D067CFCED068D069BDD6D06AD1C3D06BD06CD06DD06ED06FD070D071BAE2E1E9D2C2F1C2B2B9D072D073B1EDF1C3D074C9C0B3C4D075D9F2D076CBA5D077F1C4D078D079D07AD07BD6D4D07CD07DD07ED080D081F1C5F4C0F1C6D082D4ACF1C7D083B0C0F4C1D084D085F4C2D086D087B4FCD088C5DBD089D08AD08BD08CCCBBD08DD08ED08FD0E4D090D091D092D093D094CDE0D095D096D097D098D099F1C8D09AD9F3D09BD09CD09DD09ED09FD0A0B1BBD140CFAED141D142D143B8A4D144D145D146D147D148F1CAD149D14AD14BD14CF1CBD14DD14ED14FD150B2C3C1D1D151D152D7B0F1C9D153D154F1CCD155D156D157D158F1CED159D15AD15BD9F6D15CD2E1D4A3D15DD15EF4C3C8B9D15FD160D161D162D163F4C4D164D165F1CDF1CFBFE3F1D0D166D167F1D4D168D169D16AD16BD16CD16DD16EF1D6F1D1D16FC9D1C5E1D170D171D172C2E3B9FCD173D174F1D3D175F1D5D176D177D178B9D3D179D17AD17BD17CD17DD17ED180F1DBD181D182D183D184D185BAD6D186B0FDF1D9D187D188D189D18AD18BF1D8F1D2F1DAD18CD18DD18ED18FD190F1D7D191D192D193C8ECD194D195D196D197CDCAF1DDD198D199D19AD19BE5BDD19CD19DD19EF1DCD19FF1DED1A0D240D241D242D243D244D245D246D247D248F1DFD249D24ACFE5D24BD24CD24DD24ED24FD250D251D252D253D254D255D256D257D258D259D25AD25BD25CD25DD25ED25FD260D261D262D263F4C5BDF3D264D265D266D267D268D269F1E0D26AD26BD26CD26DD26ED26FD270D271D272D273D274D275D276D277D278D279D27AD27BD27CD27DF1E1D27ED280D281CEF7D282D2AAD283F1FBD284D285B8B2D286D287D288D289D28AD28BD28CD28DD28ED28FD290D291D292D293D294D295D296D297D298D299D29AD29BD29CD29DD29ED29FD2A0D340D341D342D343D344D345D346D347D348D349D34AD34BD34CD34DD34ED34FD350D351D352D353D354D355D356D357D358D359D35AD35BD35CD35DD35EBCFBB9DBD35FB9E6C3D9CAD3EAE8C0C0BEF5EAE9EAEAEAEBD360EAECEAEDEAEEEAEFBDC7D361D362D363F5FBD364D365D366F5FDD367F5FED368F5FCD369D36AD36BD36CBDE2D36DF6A1B4A5D36ED36FD370D371F6A2D372D373D374F6A3D375D376D377ECB2D378D379D37AD37BD37CD37DD37ED380D381D382D383D384D1D4D385D386D387D388D389D38AD9EAD38BD38CD38DD38ED38FD390D391D392D393D394D395D396D397D398D399D39AD39BD39CD39DD39ED39FD3A0D440D441D442D443D444D445D446D447D448D449D44AD44BD44CD44DD44ED44FD450D451D452D453D454D455D456D457D458D459D45AD45BD45CD45DD45ED45FF6A4D460D461D462D463D464D465D466D467D468EEBAD469D46AD46BD46CD46DD46ED46FD470D471D472D473D474D475D476D477D478D479D47AD47BD47CD47DD47ED480D481D482D483D484D485D486D487D488D489D48AD48BD48CD48DD48ED48FD490D491D492D493D494D495D496D497D498D499D5B2D49AD49BD49CD49DD49ED49FD4A0D540D541D542D543D544D545D546D547D3FECCDCD548D549D54AD54BD54CD54DD54ED54FCAC4D550D551D552D553D554D555D556D557D558D559D55AD55BD55CD55DD55ED55FD560D561D562D563D564D565D566D567D568D569D56AD56BD56CD56DD56ED56FD570D571D572D573D574D575D576D577D578D579D57AD57BD57CD57DD57ED580D581D582D583D584D585D586D587D588D589D58AD58BD58CD58DD58ED58FD590D591D592D593D594D595D596D597D598D599D59AD59BD59CD59DD59ED59FD5A0D640D641D642D643D644D645D646D647D648D649D64AD64BD64CD64DD64ED64FD650D651D652D653D654D655D656D657D658D659D65AD65BD65CD65DD65ED65FD660D661D662E5C0D663D664D665D666D667D668D669D66AD66BD66CD66DD66ED66FD670D671D672D673D674D675D676D677D678D679D67AD67BD67CD67DD67ED680D681F6A5D682D683D684D685D686D687D688D689D68AD68BD68CD68DD68ED68FD690D691D692D693D694D695D696D697D698D699D69AD69BD69CD69DD69ED69FD6A0D740D741D742D743D744D745D746D747D748D749D74AD74BD74CD74DD74ED74FD750D751D752D753D754D755D756D757D758D759D75AD75BD75CD75DD75ED75FBEAFD760D761D762D763D764C6A9D765D766D767D768D769D76AD76BD76CD76DD76ED76FD770D771D772D773D774D775D776D777D778D779D77AD77BD77CD77DD77ED780D781D782D783D784D785D786D787D788D789D78AD78BD78CD78DD78ED78FD790D791D792D793D794D795D796D797D798DAA5BCC6B6A9B8BCC8CFBCA5DAA6DAA7CCD6C8C3DAA8C6FDD799D1B5D2E9D1B6BCC7D79ABDB2BBE4DAA9DAAAD1C8DAABD0EDB6EFC2DBD79BCBCFB7EDC9E8B7C3BEF7D6A4DAACDAADC6C0D7E7CAB6D79CD5A9CBDFD5EFDAAED6DFB4CADAB0DAAFD79DD2EBDAB1DAB2DAB3CAD4DAB4CAABDAB5DAB6B3CFD6EFDAB7BBB0B5AEDAB8DAB9B9EED1AFD2E8DABAB8C3CFEAB2EFDABBDABCD79EBDEBCEDCD3EFDABDCEF3DABED3D5BBE5DABFCBB5CBD0DAC0C7EBD6EEDAC1C5B5B6C1DAC2B7CCBFCEDAC3DAC4CBADDAC5B5F7DAC6C1C2D7BBDAC7CCB8D79FD2EAC4B1DAC8B5FDBBD1DAC9D0B3DACADACBCEBDDACCDACDDACEB2F7DAD1DACFD1E8DAD0C3D5DAD2D7A0DAD3DAD4DAD5D0BBD2A5B0F9DAD6C7ABDAD7BDF7C3A1DAD8DAD9C3FDCCB7DADADADBC0BEC6D7DADCDADDC7B4DADEDADFB9C8D840D841D842D843D844D845D846D847D848BBEDD849D84AD84BD84CB6B9F4F8D84DF4F9D84ED84FCDE3D850D851D852D853D854D855D856D857F5B9D858D859D85AD85BEBE0D85CD85DD85ED85FD860D861CFF3BBBFD862D863D864D865D866D867D868BAC0D4A5D869D86AD86BD86CD86DD86ED86FE1D9D870D871D872D873F5F4B1AAB2F2D874D875D876D877D878D879D87AF5F5D87BD87CF5F7D87DD87ED880BAD1F5F6D881C3B2D882D883D884D885D886D887D888F5F9D889D88AD88BF5F8D88CD88DD88ED88FD890D891D892D893D894D895D896D897D898D899D89AD89BD89CD89DD89ED89FD8A0D940D941D942D943D944D945D946D947D948D949D94AD94BD94CD94DD94ED94FD950D951D952D953D954D955D956D957D958D959D95AD95BD95CD95DD95ED95FD960D961D962D963D964D965D966D967D968D969D96AD96BD96CD96DD96ED96FD970D971D972D973D974D975D976D977D978D979D97AD97BD97CD97DD97ED980D981D982D983D984D985D986D987D988D989D98AD98BD98CD98DD98ED98FD990D991D992D993D994D995D996D997D998D999D99AD99BD99CD99DD99ED99FD9A0DA40DA41DA42DA43DA44DA45DA46DA47DA48DA49DA4ADA4BDA4CDA4DDA4EB1B4D5EAB8BADA4FB9B1B2C6D4F0CFCDB0DCD5CBBBF5D6CAB7B7CCB0C6B6B1E1B9BAD6FCB9E1B7A1BCFAEADAEADBCCF9B9F3EADCB4FBC3B3B7D1BAD8EADDD4F4EADEBCD6BBDFEADFC1DEC2B8D4DFD7CAEAE0EAE1EAE4EAE2EAE3C9DEB8B3B6C4EAE5CAEAC9CDB4CDDA50DA51E2D9C5E2EAE6C0B5DA52D7B8EAE7D7ACC8FCD8D3D8CDD4DEDA53D4F9C9C4D3AEB8D3B3E0DA54C9E2F4F6DA55DA56DA57BAD5DA58F4F7DA59DA5AD7DFDA5BDA5CF4F1B8B0D5D4B8CFC6F0DA5DDA5EDA5FDA60DA61DA62DA63DA64DA65B3C3DA66DA67F4F2B3ACDA68DA69DA6ADA6BD4BDC7F7DA6CDA6DDA6EDA6FDA70F4F4DA71DA72F4F3DA73DA74DA75DA76DA77DA78DA79DA7ADA7BDA7CCCCBDA7DDA7EDA80C8A4DA81DA82DA83DA84DA85DA86DA87DA88DA89DA8ADA8BDA8CDA8DF4F5DA8ED7E3C5BFF5C0DA8FDA90F5BBDA91F5C3DA92F5C2DA93D6BAF5C1DA94DA95DA96D4BEF5C4DA97F5CCDA98DA99DA9ADA9BB0CFB5F8DA9CF5C9F5CADA9DC5DCDA9EDA9FDAA0DB40F5C5F5C6DB41DB42F5C7F5CBDB43BEE0F5C8B8FADB44DB45DB46F5D0F5D3DB47DB48DB49BFE7DB4AB9F2F5BCF5CDDB4BDB4CC2B7DB4DDB4EDB4FCCF8DB50BCF9DB51F5CEF5CFF5D1B6E5F5D2DB52F5D5DB53DB54DB55DB56DB57DB58DB59F5BDDB5ADB5BDB5CF5D4D3BBDB5DB3ECDB5EDB5FCCA4DB60DB61DB62DB63F5D6DB64DB65DB66DB67DB68DB69DB6ADB6BF5D7BEE1F5D8DB6CDB6DCCDFF5DBDB6EDB6FDB70DB71DB72B2C8D7D9DB73F5D9DB74F5DAF5DCDB75F5E2DB76DB77DB78F5E0DB79DB7ADB7BF5DFF5DDDB7CDB7DF5E1DB7EDB80F5DEF5E4F5E5DB81CCE3DB82DB83E5BFB5B8F5E3F5E8CCA3DB84DB85DB86DB87DB88F5E6F5E7DB89DB8ADB8BDB8CDB8DDB8EF5BEDB8FDB90DB91DB92DB93DB94DB95DB96DB97DB98DB99DB9AB1C4DB9BDB9CF5BFDB9DDB9EB5C5B2E4DB9FF5ECF5E9DBA0B6D7DC40F5EDDC41F5EADC42DC43DC44DC45DC46F5EBDC47DC48B4DADC49D4EADC4ADC4BDC4CF5EEDC4DB3F9DC4EDC4FDC50DC51DC52DC53DC54F5EFF5F1DC55DC56DC57F5F0DC58DC59DC5ADC5BDC5CDC5DDC5EF5F2DC5FF5F3DC60DC61DC62DC63DC64DC65DC66DC67DC68DC69DC6ADC6BC9EDB9AADC6CDC6DC7FBDC6EDC6FB6E3DC70DC71DC72DC73DC74DC75DC76CCC9DC77DC78DC79DC7ADC7BDC7CDC7DDC7EDC80DC81DC82DC83DC84DC85DC86DC87DC88DC89DC8AEAA6DC8BDC8CDC8DDC8EDC8FDC90DC91DC92DC93DC94DC95DC96DC97DC98DC99DC9ADC9BDC9CDC9DDC9EDC9FDCA0DD40DD41DD42DD43DD44DD45DD46DD47DD48DD49DD4ADD4BDD4CDD4DDD4EDD4FDD50DD51DD52DD53DD54DD55DD56DD57DD58DD59DD5ADD5BDD5CDD5DDD5EDD5FDD60DD61DD62DD63DD64DD65DD66DD67DD68DD69DD6ADD6BDD6CDD6DDD6EDD6FDD70DD71DD72DD73DD74DD75DD76DD77DD78DD79DD7ADD7BDD7CDD7DDD7EDD80DD81DD82DD83DD84DD85DD86DD87DD88DD89DD8ADD8BDD8CDD8DDD8EDD8FDD90DD91DD92DD93DD94DD95DD96DD97DD98DD99DD9ADD9BDD9CDD9DDD9EDD9FDDA0DE40DE41DE42DE43DE44DE45DE46DE47DE48DE49DE4ADE4BDE4CDE4DDE4EDE4FDE50DE51DE52DE53DE54DE55DE56DE57DE58DE59DE5ADE5BDE5CDE5DDE5EDE5FDE60B3B5D4FEB9ECD0F9DE61E9EDD7AAE9EEC2D6C8EDBAE4E9EFE9F0E9F1D6E1E9F2E9F3E9F5E9F4E9F6E9F7C7E1E9F8D4D8E9F9BDCEDE62E9FAE9FBBDCFE9FCB8A8C1BEE9FDB1B2BBD4B9F5E9FEDE63EAA1EAA2EAA3B7F8BCADDE64CAE4E0CED4AFCFBDD5B7EAA4D5DEEAA5D0C1B9BCDE65B4C7B1D9DE66DE67DE68C0B1DE69DE6ADE6BDE6CB1E6B1E7DE6DB1E8DE6EDE6FDE70DE71B3BDC8E8DE72DE73DE74DE75E5C1DE76DE77B1DFDE78DE79DE7AC1C9B4EFDE7BDE7CC7A8D3D8DE7DC6F9D1B8DE7EB9FDC2F5DE80DE81DE82DE83DE84D3ADDE85D4CBBDFCDE86E5C2B7B5E5C3DE87DE88BBB9D5E2DE89BDF8D4B6CEA5C1ACB3D9DE8ADE8BCCF6DE8CE5C6E5C4E5C8DE8DE5CAE5C7B5CFC6C8DE8EB5FCE5C5DE8FCAF6DE90DE91E5C9DE92DE93DE94C3D4B1C5BCA3DE95DE96DE97D7B7DE98DE99CDCBCBCDCACACCD3E5CCE5CBC4E6DE9ADE9BD1A1D1B7E5CDDE9CE5D0DE9DCDB8D6F0E5CFB5DDDE9ECDBEDE9FE5D1B6BADEA0DF40CDA8B9E4DF41CAC5B3D1CBD9D4ECE5D2B7EADF42DF43DF44E5CEDF45DF46DF47DF48DF49DF4AE5D5B4FEE5D6DF4BDF4CDF4DDF4EDF4FE5D3E5D4DF50D2DDDF51DF52C2DFB1C6DF53D3E2DF54DF55B6DDCBECDF56E5D7DF57DF58D3F6DF59DF5ADF5BDF5CDF5DB1E9DF5EB6F4E5DAE5D8E5D9B5C0DF5FDF60DF61D2C5E5DCDF62DF63E5DEDF64DF65DF66DF67DF68DF69E5DDC7B2DF6AD2A3DF6BDF6CE5DBDF6DDF6EDF6FDF70D4E2D5DADF71DF72DF73DF74DF75E5E0D7F1DF76DF77DF78DF79DF7ADF7BDF7CE5E1DF7DB1DCD1FBDF7EE5E2E5E4DF80DF81DF82DF83E5E3DF84DF85E5E5DF86DF87DF88DF89DF8AD2D8DF8BB5CBDF8CE7DFDF8DDAF5DF8EDAF8DF8FDAF6DF90DAF7DF91DF92DF93DAFAD0CFC4C7DF94DF95B0EEDF96DF97DF98D0B0DF99DAF9DF9AD3CABAAADBA2C7F1DF9BDAFCDAFBC9DBDAFDDF9CDBA1D7DEDAFEC1DADF9DDF9EDBA5DF9FDFA0D3F4E040E041DBA7DBA4E042DBA8E043E044BDBCE045E046E047C0C9DBA3DBA6D6A3E048DBA9E049E04AE04BDBADE04CE04DE04EDBAEDBACBAC2E04FE050E051BFA4DBABE052E053E054DBAAD4C7B2BFE055E056DBAFE057B9F9E058DBB0E059E05AE05BE05CB3BBE05DE05EE05FB5A6E060E061E062E063B6BCDBB1E064E065E066B6F5E067DBB2E068E069E06AE06BE06CE06DE06EE06FE070E071E072E073E074E075E076E077E078E079E07AE07BB1C9E07CE07DE07EE080DBB4E081E082E083DBB3DBB5E084E085E086E087E088E089E08AE08BE08CE08DE08EDBB7E08FDBB6E090E091E092E093E094E095E096DBB8E097E098E099E09AE09BE09CE09DE09EE09FDBB9E0A0E140DBBAE141E142D3CFF4FAC7F5D7C3C5E4F4FCF4FDF4FBE143BEC6E144E145E146E147D0EFE148E149B7D3E14AE14BD4CDCCAAE14CE14DF5A2F5A1BAA8F4FECBD6E14EE14FE150F5A4C0D2E151B3EAE152CDAAF5A5F5A3BDB4F5A8E153F5A9BDCDC3B8BFE1CBE1F5AAE154E155E156F5A6F5A7C4F0E157E158E159E15AE15BF5ACE15CB4BCE15DD7EDE15EB4D7F5ABF5AEE15FE160F5ADF5AFD0D1E161E162E163E164E165E166E167C3D1C8A9E168E169E16AE16BE16CE16DF5B0F5B1E16EE16FE170E171E172E173F5B2E174E175F5B3F5B4F5B5E176E177E178E179F5B7F5B6E17AE17BE17CE17DF5B8E17EE180E181E182E183E184E185E186E187E188E189E18AB2C9E18BD3D4CACDE18CC0EFD6D8D2B0C1BFE18DBDF0E18EE18FE190E191E192E193E194E195E196E197B8AAE198E199E19AE19BE19CE19DE19EE19FE1A0E240E241E242E243E244E245E246E247E248E249E24AE24BE24CE24DE24EE24FE250E251E252E253E254E255E256E257E258E259E25AE25BE25CE25DE25EE25FE260E261E262E263E264E265E266E267E268E269E26AE26BE26CE26DE26EE26FE270E271E272E273E274E275E276E277E278E279E27AE27BE27CE27DE27EE280E281E282E283E284E285E286E287E288E289E28AE28BE28CE28DE28EE28FE290E291E292E293E294E295E296E297E298E299E29AE29BE29CE29DE29EE29FE2A0E340E341E342E343E344E345E346E347E348E349E34AE34BE34CE34DE34EE34FE350E351E352E353E354E355E356E357E358E359E35AE35BE35CE35DE35EE35FE360E361E362E363E364E365E366E367E368E369E36AE36BE36CE36DBCF8E36EE36FE370E371E372E373E374E375E376E377E378E379E37AE37BE37CE37DE37EE380E381E382E383E384E385E386E387F6C6E388E389E38AE38BE38CE38DE38EE38FE390E391E392E393E394E395E396E397E398E399E39AE39BE39CE39DE39EE39FE3A0E440E441E442E443E444E445F6C7E446E447E448E449E44AE44BE44CE44DE44EE44FE450E451E452E453E454E455E456E457E458E459E45AE45BE45CE45DE45EF6C8E45FE460E461E462E463E464E465E466E467E468E469E46AE46BE46CE46DE46EE46FE470E471E472E473E474E475E476E477E478E479E47AE47BE47CE47DE47EE480E481E482E483E484E485E486E487E488E489E48AE48BE48CE48DE48EE48FE490E491E492E493E494E495E496E497E498E499E49AE49BE49CE49DE49EE49FE4A0E540E541E542E543E544E545E546E547E548E549E54AE54BE54CE54DE54EE54FE550E551E552E553E554E555E556E557E558E559E55AE55BE55CE55DE55EE55FE560E561E562E563E564E565E566E567E568E569E56AE56BE56CE56DE56EE56FE570E571E572E573F6C9E574E575E576E577E578E579E57AE57BE57CE57DE57EE580E581E582E583E584E585E586E587E588E589E58AE58BE58CE58DE58EE58FE590E591E592E593E594E595E596E597E598E599E59AE59BE59CE59DE59EE59FF6CAE5A0E640E641E642E643E644E645E646E647E648E649E64AE64BE64CE64DE64EE64FE650E651E652E653E654E655E656E657E658E659E65AE65BE65CE65DE65EE65FE660E661E662F6CCE663E664E665E666E667E668E669E66AE66BE66CE66DE66EE66FE670E671E672E673E674E675E676E677E678E679E67AE67BE67CE67DE67EE680E681E682E683E684E685E686E687E688E689E68AE68BE68CE68DE68EE68FE690E691E692E693E694E695E696E697E698E699E69AE69BE69CE69DF6CBE69EE69FE6A0E740E741E742E743E744E745E746E747F7E9E748E749E74AE74BE74CE74DE74EE74FE750E751E752E753E754E755E756E757E758E759E75AE75BE75CE75DE75EE75FE760E761E762E763E764E765E766E767E768E769E76AE76BE76CE76DE76EE76FE770E771E772E773E774E775E776E777E778E779E77AE77BE77CE77DE77EE780E781E782E783E784E785E786E787E788E789E78AE78BE78CE78DE78EE78FE790E791E792E793E794E795E796E797E798E799E79AE79BE79CE79DE79EE79FE7A0E840E841E842E843E844E845E846E847E848E849E84AE84BE84CE84DE84EF6CDE84FE850E851E852E853E854E855E856E857E858E859E85AE85BE85CE85DE85EE85FE860E861E862E863E864E865E866E867E868E869E86AE86BE86CE86DE86EE86FE870E871E872E873E874E875E876E877E878E879E87AF6CEE87BE87CE87DE87EE880E881E882E883E884E885E886E887E888E889E88AE88BE88CE88DE88EE88FE890E891E892E893E894EEC4EEC5EEC6D5EBB6A4EEC8EEC7EEC9EECAC7A5EECBEECCE895B7B0B5F6EECDEECFE896EECEE897B8C6EED0EED1EED2B6DBB3AED6D3C4C6B1B5B8D6EED3EED4D4BFC7D5BEFBCED9B9B3EED6EED5EED8EED7C5A5EED9EEDAC7AEEEDBC7AFEEDCB2A7EEDDEEDEEEDFEEE0EEE1D7EAEEE2EEE3BCD8EEE4D3CBCCFAB2ACC1E5EEE5C7A6C3ADE898EEE6EEE7EEE8EEE9EEEAEEEBEEECE899EEEDEEEEEEEFE89AE89BEEF0EEF1EEF2EEF4EEF3E89CEEF5CDADC2C1EEF6EEF7EEF8D5A1EEF9CFB3EEFAEEFBE89DEEFCEEFDEFA1EEFEEFA2B8F5C3FAEFA3EFA4BDC2D2BFB2F9EFA5EFA6EFA7D2F8EFA8D6FDEFA9C6CCE89EEFAAEFABC1B4EFACCFFACBF8EFAEEFADB3FAB9F8EFAFEFB0D0E2EFB1EFB2B7E6D0BFEFB3EFB4EFB5C8F1CCE0EFB6EFB7EFB8EFB9EFBAD5E0EFBBB4EDC3AAEFBCE89FEFBDEFBEEFBFE8A0CEFDEFC0C2E0B4B8D7B6BDF5E940CFC7EFC3EFC1EFC2EFC4B6A7BCFCBEE2C3CCEFC5EFC6E941EFC7EFCFEFC8EFC9EFCAC7C2EFF1B6CDEFCBE942EFCCEFCDB6C6C3BEEFCEE943EFD0EFD1EFD2D5F2E944EFD3C4F7E945EFD4C4F8EFD5EFD6B8E4B0F7EFD7EFD8EFD9E946EFDAEFDBEFDCEFDDE947EFDEBEB5EFE1EFDFEFE0E948EFE2EFE3C1CDEFE4EFE5EFE6EFE7EFE8EFE9EFEAEFEBEFECC0D8E949EFEDC1ADEFEEEFEFEFF0E94AE94BCFE2E94CE94DE94EE94FE950E951E952E953B3A4E954E955E956E957E958E959E95AE95BE95CE95DE95EE95FE960E961E962E963E964E965E966E967E968E969E96AE96BE96CE96DE96EE96FE970E971E972E973E974E975E976E977E978E979E97AE97BE97CE97DE97EE980E981E982E983E984E985E986E987E988E989E98AE98BE98CE98DE98EE98FE990E991E992E993E994E995E996E997E998E999E99AE99BE99CE99DE99EE99FE9A0EA40EA41EA42EA43EA44EA45EA46EA47EA48EA49EA4AEA4BEA4CEA4DEA4EEA4FEA50EA51EA52EA53EA54EA55EA56EA57EA58EA59EA5AEA5BC3C5E3C5C9C1E3C6EA5CB1D5CECAB4B3C8F2E3C7CFD0E3C8BCE4E3C9E3CAC3C6D5A2C4D6B9EBCEC5E3CBC3F6E3CCEA5DB7A7B8F3BAD2E3CDE3CED4C4E3CFEA5EE3D0D1CBE3D1E3D2E3D3E3D4D1D6E3D5B2FBC0BBE3D6EA5FC0ABE3D7E3D8E3D9EA60E3DAE3DBEA61B8B7DAE2EA62B6D3EA63DAE4DAE3EA64EA65EA66EA67EA68EA69EA6ADAE6EA6BEA6CEA6DC8EEEA6EEA6FDAE5B7C0D1F4D2F5D5F3BDD7EA70EA71EA72EA73D7E8DAE8DAE7EA74B0A2CDD3EA75DAE9EA76B8BDBCCAC2BDC2A4B3C2DAEAEA77C2AAC4B0BDB5EA78EA79CFDEEA7AEA7BEA7CDAEBC9C2EA7DEA7EEA80EA81EA82B1DDEA83EA84EA85DAECEA86B6B8D4BAEA87B3FDEA88EA89DAEDD4C9CFD5C5E3EA8ADAEEEA8BEA8CEA8DEA8EEA8FDAEFEA90DAF0C1EACCD5CFDDEA91EA92EA93EA94EA95EA96EA97EA98EA99EA9AEA9BEA9CEA9DD3E7C2A1EA9EDAF1EA9FEAA0CBE5EB40DAF2EB41CBE6D2FEEB42EB43EB44B8F4EB45EB46DAF3B0AFCFB6EB47EB48D5CFEB49EB4AEB4BEB4CEB4DEB4EEB4FEB50EB51EB52CBEDEB53EB54EB55EB56EB57EB58EB59EB5ADAF4EB5BEB5CE3C4EB5DEB5EC1A5EB5FEB60F6BFEB61EB62F6C0F6C1C4D1EB63C8B8D1E3EB64EB65D0DBD1C5BCAFB9CDEB66EFF4EB67EB68B4C6D3BAF6C2B3FBEB69EB6AF6C3EB6BEB6CB5F1EB6DEB6EEB6FEB70EB71EB72EB73EB74EB75EB76F6C5EB77EB78EB79EB7AEB7BEB7CEB7DD3EAF6A7D1A9EB7EEB80EB81EB82F6A9EB83EB84EB85F6A8EB86EB87C1E3C0D7EB88B1A2EB89EB8AEB8BEB8CCEEDEB8DD0E8F6ABEB8EEB8FCFF6EB90F6AAD5F0F6ACC3B9EB91EB92EB93BBF4F6AEF6ADEB94EB95EB96C4DEEB97EB98C1D8EB99EB9AEB9BEB9CEB9DCBAAEB9ECFBCEB9FEBA0EC40EC41EC42EC43EC44EC45EC46EC47EC48F6AFEC49EC4AF6B0EC4BEC4CF6B1EC4DC2B6EC4EEC4FEC50EC51EC52B0D4C5F9EC53EC54EC55EC56F6B2EC57EC58EC59EC5AEC5BEC5CEC5DEC5EEC5FEC60EC61EC62EC63EC64EC65EC66EC67EC68EC69C7E0F6A6EC6AEC6BBEB8EC6CEC6DBEB2EC6EB5E5EC6FEC70B7C7EC71BFBFC3D2C3E6EC72EC73D8CCEC74EC75EC76B8EFEC77EC78EC79EC7AEC7BEC7CEC7DEC7EEC80BDF9D1A5EC81B0D0EC82EC83EC84EC85EC86F7B0EC87EC88EC89EC8AEC8BEC8CEC8DEC8EF7B1EC8FEC90EC91EC92EC93D0ACEC94B0B0EC95EC96EC97F7B2F7B3EC98F7B4EC99EC9AEC9BC7CAEC9CEC9DEC9EEC9FECA0ED40ED41BECFED42ED43F7B7ED44ED45ED46ED47ED48ED49ED4AF7B6ED4BB1DEED4CF7B5ED4DED4EF7B8ED4FF7B9ED50ED51ED52ED53ED54ED55ED56ED57ED58ED59ED5AED5BED5CED5DED5EED5FED60ED61ED62ED63ED64ED65ED66ED67ED68ED69ED6AED6BED6CED6DED6EED6FED70ED71ED72ED73ED74ED75ED76ED77ED78ED79ED7AED7BED7CED7DED7EED80ED81CEA4C8CDED82BAABE8B8E8B9E8BABEC2ED83ED84ED85ED86ED87D2F4ED88D4CFC9D8ED89ED8AED8BED8CED8DED8EED8FED90ED91ED92ED93ED94ED95ED96ED97ED98ED99ED9AED9BED9CED9DED9EED9FEDA0EE40EE41EE42EE43EE44EE45EE46EE47EE48EE49EE4AEE4BEE4CEE4DEE4EEE4FEE50EE51EE52EE53EE54EE55EE56EE57EE58EE59EE5AEE5BEE5CEE5DEE5EEE5FEE60EE61EE62EE63EE64EE65EE66EE67EE68EE69EE6AEE6BEE6CEE6DEE6EEE6FEE70EE71EE72EE73EE74EE75EE76EE77EE78EE79EE7AEE7BEE7CEE7DEE7EEE80EE81EE82EE83EE84EE85EE86EE87EE88EE89EE8AEE8BEE8CEE8DEE8EEE8FEE90EE91EE92EE93EE94EE95EE96EE97EE98EE99EE9AEE9BEE9CEE9DEE9EEE9FEEA0EF40EF41EF42EF43EF44EF45D2B3B6A5C7EAF1FCCFEECBB3D0EBE7EFCDE7B9CBB6D9F1FDB0E4CBCCF1FED4A4C2ADC1ECC6C4BEB1F2A1BCD5EF46F2A2F2A3EF47F2A4D2C3C6B5EF48CDC7F2A5EF49D3B1BFC5CCE2EF4AF2A6F2A7D1D5B6EEF2A8F2A9B5DFF2AAF2ABEF4BB2FCF2ACF2ADC8A7EF4CEF4DEF4EEF4FEF50EF51EF52EF53EF54EF55EF56EF57EF58EF59EF5AEF5BEF5CEF5DEF5EEF5FEF60EF61EF62EF63EF64EF65EF66EF67EF68EF69EF6AEF6BEF6CEF6DEF6EEF6FEF70EF71B7E7EF72EF73ECA9ECAAECABEF74ECACEF75EF76C6AEECADECAEEF77EF78EF79B7C9CAB3EF7AEF7BEF7CEF7DEF7EEF80EF81E2B8F7CFEF82EF83EF84EF85EF86EF87EF88EF89EF8AEF8BEF8CEF8DEF8EEF8FEF90EF91EF92EF93EF94EF95EF96EF97EF98EF99EF9AEF9BEF9CEF9DEF9EEF9FEFA0F040F041F042F043F044F7D0F045F046B2CDF047F048F049F04AF04BF04CF04DF04EF04FF050F051F052F053F054F055F056F057F058F059F05AF05BF05CF05DF05EF05FF060F061F062F063F7D1F064F065F066F067F068F069F06AF06BF06CF06DF06EF06FF070F071F072F073F074F075F076F077F078F079F07AF07BF07CF07DF07EF080F081F082F083F084F085F086F087F088F089F7D3F7D2F08AF08BF08CF08DF08EF08FF090F091F092F093F094F095F096E2BBF097BCA2F098E2BCE2BDE2BEE2BFE2C0E2C1B7B9D2FBBDA4CACEB1A5CBC7F099E2C2B6FCC8C4E2C3F09AF09BBDC8F09CB1FDE2C4F09DB6F6E2C5C4D9F09EF09FE2C6CFDAB9DDE2C7C0A1F0A0E2C8B2F6F140E2C9F141C1F3E2CAE2CBC2F8E2CCE2CDE2CECAD7D8B8D9E5CFE3F142F143F144F145F146F147F148F149F14AF14BF14CF0A5F14DF14EDCB0F14FF150F151F152F153F154F155F156F157F158F159F15AF15BF15CF15DF15EF15FF160F161F162F163F164F165F166F167F168F169F16AF16BF16CF16DF16EF16FF170F171F172F173F174F175F176F177F178F179F17AF17BF17CF17DF17EF180F181F182F183F184F185F186F187F188F189F18AF18BF18CF18DF18EF18FF190F191F192F193F194F195F196F197F198F199F19AF19BF19CF19DF19EF19FF1A0F240F241F242F243F244F245F246F247F248F249F24AF24BF24CF24DF24EF24FF250F251F252F253F254F255F256F257F258F259F25AF25BF25CF25DF25EF25FF260F261F262F263F264F265F266F267F268F269F26AF26BF26CF26DF26EF26FF270F271F272F273F274F275F276F277F278F279F27AF27BF27CF27DF27EF280F281F282F283F284F285F286F287F288F289F28AF28BF28CF28DF28EF28FF290F291F292F293F294F295F296F297F298F299F29AF29BF29CF29DF29EF29FF2A0F340F341F342F343F344F345F346F347F348F349F34AF34BF34CF34DF34EF34FF350F351C2EDD4A6CDD4D1B1B3DBC7FDF352B2B5C2BFE6E0CABBE6E1E6E2BED4E6E3D7A4CDD5E6E5BCDDE6E4E6E6E6E7C2EEF353BDBEE6E8C2E6BAA7E6E9F354E6EAB3D2D1E9F355F356BFA5E6EBC6EFE6ECE6EDF357F358E6EEC6ADE6EFF359C9A7E6F0E6F1E6F2E5B9E6F3E6F4C2E2E6F5E6F6D6E8E6F7F35AE6F8B9C7F35BF35CF35DF35EF35FF360F361F7BBF7BAF362F363F364F365F7BEF7BCBAA1F366F7BFF367F7C0F368F369F36AF7C2F7C1F7C4F36BF36CF7C3F36DF36EF36FF370F371F7C5F7C6F372F373F374F375F7C7F376CBE8F377F378F379F37AB8DFF37BF37CF37DF37EF380F381F7D4F382F7D5F383F384F385F386F7D6F387F388F389F38AF7D8F38BF7DAF38CF7D7F38DF38EF38FF390F391F392F393F394F395F7DBF396F7D9F397F398F399F39AF39BF39CF39DD7D7F39EF39FF3A0F440F7DCF441F442F443F444F445F446F7DDF447F448F449F7DEF44AF44BF44CF44DF44EF44FF450F451F452F453F454F7DFF455F456F457F7E0F458F459F45AF45BF45CF45DF45EF45FF460F461F462DBCBF463F464D8AAF465F466F467F468F469F46AF46BF46CE5F7B9EDF46DF46EF46FF470BFFDBBEAF7C9C6C7F7C8F471F7CAF7CCF7CBF472F473F474F7CDF475CEBAF476F7CEF477F478C4A7F479F47AF47BF47CF47DF47EF480F481F482F483F484F485F486F487F488F489F48AF48BF48CF48DF48EF48FF490F491F492F493F494F495F496F497F498F499F49AF49BF49CF49DF49EF49FF4A0F540F541F542F543F544F545F546F547F548F549F54AF54BF54CF54DF54EF54FF550F551F552F553F554F555F556F557F558F559F55AF55BF55CF55DF55EF55FF560F561F562F563F564F565F566F567F568F569F56AF56BF56CF56DF56EF56FF570F571F572F573F574F575F576F577F578F579F57AF57BF57CF57DF57EF580F581F582F583F584F585F586F587F588F589F58AF58BF58CF58DF58EF58FF590F591F592F593F594F595F596F597F598F599F59AF59BF59CF59DF59EF59FF5A0F640F641F642F643F644F645F646F647F648F649F64AF64BF64CF64DF64EF64FF650F651F652F653F654F655F656F657F658F659F65AF65BF65CF65DF65EF65FF660F661F662F663F664F665F666F667F668F669F66AF66BF66CF66DF66EF66FF670F671F672F673F674F675F676F677F678F679F67AF67BF67CF67DF67EF680F681F682F683F684F685F686F687F688F689F68AF68BF68CF68DF68EF68FF690F691F692F693F694F695F696F697F698F699F69AF69BF69CF69DF69EF69FF6A0F740F741F742F743F744F745F746F747F748F749F74AF74BF74CF74DF74EF74FF750F751F752F753F754F755F756F757F758F759F75AF75BF75CF75DF75EF75FF760F761F762F763F764F765F766F767F768F769F76AF76BF76CF76DF76EF76FF770F771F772F773F774F775F776F777F778F779F77AF77BF77CF77DF77EF780D3E3F781F782F6CFF783C2B3F6D0F784F785F6D1F6D2F6D3F6D4F786F787F6D6F788B1ABF6D7F789F6D8F6D9F6DAF78AF6DBF6DCF78BF78CF78DF78EF6DDF6DECFCAF78FF6DFF6E0F6E1F6E2F6E3F6E4C0F0F6E5F6E6F6E7F6E8F6E9F790F6EAF791F6EBF6ECF792F6EDF6EEF6EFF6F0F6F1F6F2F6F3F6F4BEA8F793F6F5F6F6F6F7F6F8F794F795F796F797F798C8FAF6F9F6FAF6FBF6FCF799F79AF6FDF6FEF7A1F7A2F7A3F7A4F7A5F79BF79CF7A6F7A7F7A8B1EEF7A9F7AAF7ABF79DF79EF7ACF7ADC1DBF7AEF79FF7A0F7AFF840F841F842F843F844F845F846F847F848F849F84AF84BF84CF84DF84EF84FF850F851F852F853F854F855F856F857F858F859F85AF85BF85CF85DF85EF85FF860F861F862F863F864F865F866F867F868F869F86AF86BF86CF86DF86EF86FF870F871F872F873F874F875F876F877F878F879F87AF87BF87CF87DF87EF880F881F882F883F884F885F886F887F888F889F88AF88BF88CF88DF88EF88FF890F891F892F893F894F895F896F897F898F899F89AF89BF89CF89DF89EF89FF8A0F940F941F942F943F944F945F946F947F948F949F94AF94BF94CF94DF94EF94FF950F951F952F953F954F955F956F957F958F959F95AF95BF95CF95DF95EF95FF960F961F962F963F964F965F966F967F968F969F96AF96BF96CF96DF96EF96FF970F971F972F973F974F975F976F977F978F979F97AF97BF97CF97DF97EF980F981F982F983F984F985F986F987F988F989F98AF98BF98CF98DF98EF98FF990F991F992F993F994F995F996F997F998F999F99AF99BF99CF99DF99EF99FF9A0FA40FA41FA42FA43FA44FA45FA46FA47FA48FA49FA4AFA4BFA4CFA4DFA4EFA4FFA50FA51FA52FA53FA54FA55FA56FA57FA58FA59FA5AFA5BFA5CFA5DFA5EFA5FFA60FA61FA62FA63FA64FA65FA66FA67FA68FA69FA6AFA6BFA6CFA6DFA6EFA6FFA70FA71FA72FA73FA74FA75FA76FA77FA78FA79FA7AFA7BFA7CFA7DFA7EFA80FA81FA82FA83FA84FA85FA86FA87FA88FA89FA8AFA8BFA8CFA8DFA8EFA8FFA90FA91FA92FA93FA94FA95FA96FA97FA98FA99FA9AFA9BFA9CFA9DFA9EFA9FFAA0FB40FB41FB42FB43FB44FB45FB46FB47FB48FB49FB4AFB4BFB4CFB4DFB4EFB4FFB50FB51FB52FB53FB54FB55FB56FB57FB58FB59FB5AFB5BC4F1F0AFBCA6F0B0C3F9FB5CC5B8D1BBFB5DF0B1F0B2F0B3F0B4F0B5D1BCFB5ED1ECFB5FF0B7F0B6D4A7FB60CDD2F0B8F0BAF0B9F0BBF0BCFB61FB62B8EBF0BDBAE8FB63F0BEF0BFBEE9F0C0B6ECF0C1F0C2F0C3F0C4C8B5F0C5F0C6FB64F0C7C5F4FB65F0C8FB66FB67FB68F0C9FB69F0CAF7BDFB6AF0CBF0CCF0CDFB6BF0CEFB6CFB6DFB6EFB6FF0CFBAD7FB70F0D0F0D1F0D2F0D3F0D4F0D5F0D6F0D8FB71FB72D3A5F0D7FB73F0D9FB74FB75FB76FB77FB78FB79FB7AFB7BFB7CFB7DF5BAC2B9FB7EFB80F7E4FB81FB82FB83FB84F7E5F7E6FB85FB86F7E7FB87FB88FB89FB8AFB8BFB8CF7E8C2B4FB8DFB8EFB8FFB90FB91FB92FB93FB94FB95F7EAFB96F7EBFB97FB98FB99FB9AFB9BFB9CC2F3FB9DFB9EFB9FFBA0FC40FC41FC42FC43FC44FC45FC46FC47FC48F4F0FC49FC4AFC4BF4EFFC4CFC4DC2E9FC4EF7E1F7E2FC4FFC50FC51FC52FC53BBC6FC54FC55FC56FC57D9E4FC58FC59FC5ACAF2C0E8F0A4FC5BBADAFC5CFC5DC7ADFC5EFC5FFC60C4ACFC61FC62F7ECF7EDF7EEFC63F7F0F7EFFC64F7F1FC65FC66F7F4FC67F7F3FC68F7F2F7F5FC69FC6AFC6BFC6CF7F6FC6DFC6EFC6FFC70FC71FC72FC73FC74FC75EDE9FC76EDEAEDEBFC77F6BCFC78FC79FC7AFC7BFC7CFC7DFC7EFC80FC81FC82FC83FC84F6BDFC85F6BEB6A6FC86D8BEFC87FC88B9C4FC89FC8AFC8BD8BBFC8CDCB1FC8DFC8EFC8FFC90FC91FC92CAF3FC93F7F7FC94FC95FC96FC97FC98FC99FC9AFC9BFC9CF7F8FC9DFC9EF7F9FC9FFCA0FD40FD41FD42FD43FD44F7FBFD45F7FAFD46B1C7FD47F7FCF7FDFD48FD49FD4AFD4BFD4CF7FEFD4DFD4EFD4FFD50FD51FD52FD53FD54FD55FD56FD57C6EBECB4FD58FD59FD5AFD5BFD5CFD5DFD5EFD5FFD60FD61FD62FD63FD64FD65FD66FD67FD68FD69FD6AFD6BFD6CFD6DFD6EFD6FFD70FD71FD72FD73FD74FD75FD76FD77FD78FD79FD7AFD7BFD7CFD7DFD7EFD80FD81FD82FD83FD84FD85B3DDF6B3FD86FD87F6B4C1E4F6B5F6B6F6B7F6B8F6B9F6BAC8A3F6BBFD88FD89FD8AFD8BFD8CFD8DFD8EFD8FFD90FD91FD92FD93C1FAB9A8EDE8FD94FD95FD96B9EAD9DFFD97FD98FD99FD9AFD9";
|
|
67
67
|
encodeToGb2312(D) {
|
|
68
68
|
for (var C = "", B = 0; B < D.length; B++) {
|
|
@@ -70,8 +70,8 @@ class uC {
|
|
|
70
70
|
if (F == " ")
|
|
71
71
|
C += "+";
|
|
72
72
|
else if (A >= 19968 && A <= 40869) {
|
|
73
|
-
let
|
|
74
|
-
C += "%" + this.z.substr(
|
|
73
|
+
let e = A - 19968;
|
|
74
|
+
C += "%" + this.z.substr(e * 4, 2) + "%" + this.z.substr(e * 4 + 2, 2);
|
|
75
75
|
} else
|
|
76
76
|
C += "%" + D.charCodeAt(B).toString(16);
|
|
77
77
|
}
|
|
@@ -89,11 +89,11 @@ class uC {
|
|
|
89
89
|
var A = D.charAt(B);
|
|
90
90
|
if (isNaN(parseInt(A)))
|
|
91
91
|
try {
|
|
92
|
-
var
|
|
92
|
+
var e = D.substr(B, 2) + D.substr(B + 3, 2);
|
|
93
93
|
B = B + 4;
|
|
94
|
-
for (var
|
|
95
|
-
if (
|
|
96
|
-
C += String.fromCharCode(
|
|
94
|
+
for (var t = -1; (t = this.z.indexOf(e, t + 1)) != -1; )
|
|
95
|
+
if (t % 4 == 0) {
|
|
96
|
+
C += String.fromCharCode(t / 4 + 19968);
|
|
97
97
|
break;
|
|
98
98
|
}
|
|
99
99
|
} catch {
|
|
@@ -111,12 +111,12 @@ class uC {
|
|
|
111
111
|
return C;
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
let P = new
|
|
115
|
-
class
|
|
114
|
+
let P = new cC();
|
|
115
|
+
class o {
|
|
116
116
|
static kOrigin;
|
|
117
117
|
imp;
|
|
118
118
|
constructor(D, C, B) {
|
|
119
|
-
this.imp = new
|
|
119
|
+
this.imp = new n.mxcadassemblyimp.MdGePoint3d(), D instanceof Object ? (this.imp.x = D.x, this.imp.y = D.y, this.imp.z = D.z) : (this.imp.x = D || 0, this.imp.y = C || 0, this.imp.z = B || 0);
|
|
120
120
|
}
|
|
121
121
|
toVector3() {
|
|
122
122
|
return new THREE.Vector3(this.imp.x, this.imp.y, this.imp.z);
|
|
@@ -143,7 +143,7 @@ class a {
|
|
|
143
143
|
return this.imp.isEqualTo(D.imp);
|
|
144
144
|
}
|
|
145
145
|
clone() {
|
|
146
|
-
return new
|
|
146
|
+
return new o(this.imp);
|
|
147
147
|
}
|
|
148
148
|
get x() {
|
|
149
149
|
return this.imp.x;
|
|
@@ -171,7 +171,7 @@ class y {
|
|
|
171
171
|
static kNegateZAxis;
|
|
172
172
|
imp;
|
|
173
173
|
constructor(D, C, B) {
|
|
174
|
-
this.imp = new
|
|
174
|
+
this.imp = new n.mxcadassemblyimp.MdGeVector3d(), D instanceof Object ? (this.imp.x = D.x, this.imp.y = D.y, this.imp.z = D.z) : (this.imp.x = D || 0, this.imp.y = C || 0, this.imp.z = B || 0);
|
|
175
175
|
}
|
|
176
176
|
copy(D) {
|
|
177
177
|
return this.imp.x = D.imp.x, this.imp.y = D.imp.y, this.imp.z = D.imp.z, this;
|
|
@@ -235,17 +235,17 @@ class y {
|
|
|
235
235
|
this.imp.z = D;
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
|
-
class
|
|
238
|
+
class v {
|
|
239
239
|
static kIdentity;
|
|
240
240
|
imp;
|
|
241
241
|
constructor(D) {
|
|
242
|
-
this.imp = new
|
|
242
|
+
this.imp = new n.mxcadassemblyimp.MdGeMatrix3d(), D instanceof Object && this.imp.copy(D);
|
|
243
243
|
}
|
|
244
244
|
copy(D) {
|
|
245
245
|
return this.imp.copy(D.imp), this;
|
|
246
246
|
}
|
|
247
247
|
clone() {
|
|
248
|
-
return new
|
|
248
|
+
return new v(this.imp);
|
|
249
249
|
}
|
|
250
250
|
setToIdentity() {
|
|
251
251
|
return this.imp.setToIdentity(), this;
|
|
@@ -278,7 +278,7 @@ class j {
|
|
|
278
278
|
return this.imp.setCoordSystem(D.imp, C.imp, B.imp, F.imp), this;
|
|
279
279
|
}
|
|
280
280
|
setToTranslation(D) {
|
|
281
|
-
return this.imp.
|
|
281
|
+
return this.imp.setToTranslation(D.imp), this;
|
|
282
282
|
}
|
|
283
283
|
setToRotation(D, C, B) {
|
|
284
284
|
return this.imp.setToRotation(D, C.imp, B.imp), this;
|
|
@@ -286,6 +286,9 @@ class j {
|
|
|
286
286
|
setToScaling(D, C) {
|
|
287
287
|
return this.imp.setToScaling(D, C.imp), this;
|
|
288
288
|
}
|
|
289
|
+
setMirror(D, C) {
|
|
290
|
+
return this.imp.setMirror(D.imp, C.imp), this;
|
|
291
|
+
}
|
|
289
292
|
scale() {
|
|
290
293
|
return this.imp.scale();
|
|
291
294
|
}
|
|
@@ -293,10 +296,10 @@ class j {
|
|
|
293
296
|
return this.imp.getData(D, C);
|
|
294
297
|
}
|
|
295
298
|
}
|
|
296
|
-
class
|
|
299
|
+
class SD {
|
|
297
300
|
imp;
|
|
298
301
|
constructor(D) {
|
|
299
|
-
this.imp = new
|
|
302
|
+
this.imp = new n.mxcadassemblyimp.MdGeLongArray(), D instanceof Object && this.imp.copy(D);
|
|
300
303
|
}
|
|
301
304
|
copy(D) {
|
|
302
305
|
return this.imp.copy(D.imp), this;
|
|
@@ -314,10 +317,10 @@ class lC {
|
|
|
314
317
|
this.imp.setAt(D, C);
|
|
315
318
|
}
|
|
316
319
|
}
|
|
317
|
-
class
|
|
320
|
+
class ID {
|
|
318
321
|
imp;
|
|
319
322
|
constructor(D) {
|
|
320
|
-
this.imp = new
|
|
323
|
+
this.imp = new n.mxcadassemblyimp.MdGeStringArray(), D instanceof Object && this.imp.copy(D);
|
|
321
324
|
}
|
|
322
325
|
copy(D) {
|
|
323
326
|
return this.imp.copy(D.imp), this;
|
|
@@ -340,10 +343,10 @@ class vD {
|
|
|
340
343
|
D(C ? P.decodeFromGb2312(this.imp.at(F)) : this.imp.at(F), F);
|
|
341
344
|
}
|
|
342
345
|
}
|
|
343
|
-
class
|
|
346
|
+
class mC {
|
|
344
347
|
imp;
|
|
345
348
|
constructor(D) {
|
|
346
|
-
this.imp = new
|
|
349
|
+
this.imp = new n.mxcadassemblyimp.MdGePoint3dArray(), D instanceof Object && this.imp.copy(D);
|
|
347
350
|
}
|
|
348
351
|
copy(D) {
|
|
349
352
|
return this.imp.copy(D.imp), this;
|
|
@@ -355,19 +358,19 @@ class cC {
|
|
|
355
358
|
return this.imp.length();
|
|
356
359
|
}
|
|
357
360
|
at(D) {
|
|
358
|
-
return new
|
|
361
|
+
return new o(this.imp.at(D));
|
|
359
362
|
}
|
|
360
363
|
setAt(D, C) {
|
|
361
364
|
this.imp.setAt(D, C.imp);
|
|
362
365
|
}
|
|
363
366
|
}
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
}),
|
|
367
|
-
class
|
|
367
|
+
const pC = new FinalizationRegistry((E) => {
|
|
368
|
+
n.App.DestroyObject(E);
|
|
369
|
+
}), dC = {};
|
|
370
|
+
class H {
|
|
368
371
|
imp = 0;
|
|
369
372
|
constructor(D) {
|
|
370
|
-
this.imp = D, this.imp &&
|
|
373
|
+
this.imp = D, this.imp && pC.register(this, D, dC);
|
|
371
374
|
}
|
|
372
375
|
getImp() {
|
|
373
376
|
return this.imp;
|
|
@@ -407,27 +410,27 @@ class R {
|
|
|
407
410
|
this.type == 1 ? h.getCurrentDraw().eraseMxEntity(this.id) : this.type == 0 && U.eraseEntity(this.id);
|
|
408
411
|
}
|
|
409
412
|
getMcDbObject() {
|
|
410
|
-
return this.type == 0 ?
|
|
413
|
+
return this.type == 0 ? n.App.ObjectIdToObject(this.id) : null;
|
|
411
414
|
}
|
|
412
415
|
getMcDbEntity() {
|
|
413
|
-
return this.type == 0 &&
|
|
416
|
+
return this.type == 0 && n.App.ObjectIdIsKindOf(this.id, "McDbEntity") ? n.App.ObjectIdToObject(this.id) : null;
|
|
414
417
|
}
|
|
415
418
|
getMcDbCurve() {
|
|
416
|
-
return this.type == 0 &&
|
|
419
|
+
return this.type == 0 && n.App.ObjectIdIsKindOf(this.id, "McDbCurve") ? n.App.ObjectIdToObject(this.id) : null;
|
|
417
420
|
}
|
|
418
421
|
clone() {
|
|
419
422
|
if (this.type == 0) {
|
|
420
|
-
let D =
|
|
423
|
+
let D = n.App.getImp().ObjectIdToMdObject(this.id);
|
|
421
424
|
if (!D)
|
|
422
425
|
return null;
|
|
423
426
|
let C = D.Clone();
|
|
424
|
-
return
|
|
427
|
+
return n.App.DestroyObject(D), n.App.CreateCloneObject(C);
|
|
425
428
|
}
|
|
426
429
|
return null;
|
|
427
430
|
}
|
|
428
431
|
getObjectName() {
|
|
429
432
|
if (this.type == 0)
|
|
430
|
-
return
|
|
433
|
+
return n.App.getImp().ObjectIdToObjectName(this.id);
|
|
431
434
|
if (this.type == 1) {
|
|
432
435
|
let D = h.getCurrentDraw().getMxEntity(this.id);
|
|
433
436
|
if (D)
|
|
@@ -439,7 +442,7 @@ class R {
|
|
|
439
442
|
return this.type == 1 ? h.getCurrentDraw().getMxEntity(this.id) : null;
|
|
440
443
|
}
|
|
441
444
|
}
|
|
442
|
-
class
|
|
445
|
+
class j extends H {
|
|
443
446
|
constructor(D) {
|
|
444
447
|
super(D);
|
|
445
448
|
}
|
|
@@ -451,28 +454,28 @@ class I extends K {
|
|
|
451
454
|
}
|
|
452
455
|
Clone() {
|
|
453
456
|
let D = this.imp.Clone();
|
|
454
|
-
return
|
|
457
|
+
return n.App.CreateCloneObject(D);
|
|
455
458
|
}
|
|
456
459
|
GetHandle() {
|
|
457
460
|
return this.imp.GetHandle();
|
|
458
461
|
}
|
|
459
462
|
GetDatabase() {
|
|
460
|
-
return new
|
|
463
|
+
return new hD(this.imp.GetDatabase());
|
|
461
464
|
}
|
|
462
465
|
GetOwnerID() {
|
|
463
466
|
return this.imp.GetOwnerID();
|
|
464
467
|
}
|
|
465
468
|
}
|
|
466
|
-
class
|
|
469
|
+
class aD {
|
|
467
470
|
aryVal = [];
|
|
468
471
|
constructor(D) {
|
|
469
472
|
if (D) {
|
|
470
473
|
let C = 0, B = D.length();
|
|
471
474
|
for (; C < B; C++) {
|
|
472
|
-
let F = D.release(C), A =
|
|
475
|
+
let F = D.release(C), A = n.App.CreateCloneObject(F);
|
|
473
476
|
A != null && this.aryVal.push(A);
|
|
474
477
|
}
|
|
475
|
-
|
|
478
|
+
n.App.DestroyObject(D);
|
|
476
479
|
}
|
|
477
480
|
}
|
|
478
481
|
forEach(D) {
|
|
@@ -487,7 +490,7 @@ class oD {
|
|
|
487
490
|
return this.aryVal.length == 0;
|
|
488
491
|
}
|
|
489
492
|
}
|
|
490
|
-
var
|
|
493
|
+
var uD;
|
|
491
494
|
((E) => {
|
|
492
495
|
((D) => {
|
|
493
496
|
D[D.kTextLeft = 0] = "kTextLeft", D[D.kTextCenter = 1] = "kTextCenter", D[D.kTextRight = 2] = "kTextRight", D[D.kTextAlign = 3] = "kTextAlign", D[D.kTextMid = 4] = "kTextMid", D[D.kTextFit = 5] = "kTextFit";
|
|
@@ -498,11 +501,11 @@ var aD;
|
|
|
498
501
|
})(E.AttachmentPoint || (E.AttachmentPoint = {})), ((D) => {
|
|
499
502
|
D[D.kLnWt000 = 0] = "kLnWt000", D[D.kLnWt005 = 5] = "kLnWt005", D[D.kLnWt009 = 9] = "kLnWt009", D[D.kLnWt013 = 13] = "kLnWt013", D[D.kLnWt015 = 15] = "kLnWt015", D[D.kLnWt018 = 18] = "kLnWt018", D[D.kLnWt020 = 20] = "kLnWt020", D[D.kLnWt025 = 25] = "kLnWt025", D[D.kLnWt030 = 30] = "kLnWt030", D[D.kLnWt035 = 35] = "kLnWt035", D[D.kLnWt040 = 40] = "kLnWt040", D[D.kLnWt050 = 50] = "kLnWt050", D[D.kLnWt053 = 53] = "kLnWt053", D[D.kLnWt060 = 60] = "kLnWt060", D[D.kLnWt070 = 70] = "kLnWt070", D[D.kLnWt080 = 80] = "kLnWt080", D[D.kLnWt090 = 90] = "kLnWt090", D[D.kLnWt100 = 100] = "kLnWt100", D[D.kLnWt106 = 106] = "kLnWt106", D[D.kLnWt120 = 120] = "kLnWt120", D[D.kLnWt140 = 140] = "kLnWt140", D[D.kLnWt158 = 158] = "kLnWt158", D[D.kLnWt200 = 200] = "kLnWt200", D[D.kLnWt211 = 211] = "kLnWt211", D[D.kLnWtByLayer = -1] = "kLnWtByLayer", D[D.kLnWtByBlock = -2] = "kLnWtByBlock", D[D.kLnWtByLwDefault = -3] = "kLnWtByLwDefault";
|
|
500
503
|
})(E.LineWeight || (E.LineWeight = {}));
|
|
501
|
-
})(
|
|
502
|
-
class
|
|
504
|
+
})(uD || (uD = {}));
|
|
505
|
+
class N {
|
|
503
506
|
imp;
|
|
504
507
|
constructor(D, C, B) {
|
|
505
|
-
this.imp = new
|
|
508
|
+
this.imp = new n.mxcadassemblyimp.MdCmColor(), D instanceof Object ? (this.imp.red = D.red, this.imp.green = D.green, this.imp.blue = D.blue, this.imp.method = D.method, this.imp.n = D.n, this.imp.colorIndex = D.colorIndex) : typeof D == "number" && typeof C == "number" && typeof B == "number" && this.imp.setRGB(D, C, B);
|
|
506
509
|
}
|
|
507
510
|
getImp() {
|
|
508
511
|
return this.imp;
|
|
@@ -511,7 +514,7 @@ class H {
|
|
|
511
514
|
return this.imp.red = D.imp.red, this.imp.green = D.imp.green, this.imp.blue = D.imp.blue, this.imp.method = D.imp.method, this.imp.n = D.imp.n, this.imp.colorIndex = D.imp.colorIndex, this;
|
|
512
515
|
}
|
|
513
516
|
clone() {
|
|
514
|
-
return new
|
|
517
|
+
return new N(this.imp);
|
|
515
518
|
}
|
|
516
519
|
setColorIndex(D) {
|
|
517
520
|
this.imp.setColorIndex(D);
|
|
@@ -556,9 +559,9 @@ class H {
|
|
|
556
559
|
this.imp.colorIndex = D;
|
|
557
560
|
}
|
|
558
561
|
}
|
|
559
|
-
class
|
|
562
|
+
class hC extends j {
|
|
560
563
|
constructor(D) {
|
|
561
|
-
super(D), D || this.initTempObject(new
|
|
564
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbLayerTableRecord());
|
|
562
565
|
}
|
|
563
566
|
get name() {
|
|
564
567
|
return this.imp.getName();
|
|
@@ -585,7 +588,7 @@ class dC extends I {
|
|
|
585
588
|
this.imp.setIsLocked(D);
|
|
586
589
|
}
|
|
587
590
|
get color() {
|
|
588
|
-
return new
|
|
591
|
+
return new N(this.imp.color());
|
|
589
592
|
}
|
|
590
593
|
set color(D) {
|
|
591
594
|
this.imp.setColor(D.getImp());
|
|
@@ -603,22 +606,22 @@ class dC extends I {
|
|
|
603
606
|
this.imp.setLineWeight(D);
|
|
604
607
|
}
|
|
605
608
|
}
|
|
606
|
-
class jD extends
|
|
609
|
+
class jD extends j {
|
|
607
610
|
constructor(D) {
|
|
608
611
|
super(D);
|
|
609
612
|
}
|
|
610
613
|
}
|
|
611
|
-
class
|
|
614
|
+
class GD extends j {
|
|
612
615
|
constructor(D) {
|
|
613
616
|
super(D);
|
|
614
617
|
}
|
|
615
618
|
}
|
|
616
|
-
class
|
|
619
|
+
class VD extends j {
|
|
617
620
|
constructor(D) {
|
|
618
621
|
super(D);
|
|
619
622
|
}
|
|
620
623
|
}
|
|
621
|
-
class
|
|
624
|
+
class hD extends H {
|
|
622
625
|
constructor(D) {
|
|
623
626
|
super(D);
|
|
624
627
|
}
|
|
@@ -626,16 +629,16 @@ class pD extends K {
|
|
|
626
629
|
return new jD(this.imp.GetLayerTable());
|
|
627
630
|
}
|
|
628
631
|
GetLinetypeTable() {
|
|
629
|
-
return new
|
|
632
|
+
return new GD(this.imp.GetLinetypeTable());
|
|
630
633
|
}
|
|
631
634
|
GetTextStyleTable() {
|
|
632
|
-
return new
|
|
635
|
+
return new VD(this.imp.GetTextStyleTable());
|
|
633
636
|
}
|
|
634
637
|
GetBlockTable() {
|
|
635
|
-
return new
|
|
638
|
+
return new zD(this.imp.GetBlockTable());
|
|
636
639
|
}
|
|
637
640
|
CurrentSpace() {
|
|
638
|
-
return new
|
|
641
|
+
return new eD(this.imp.CurrentSpace());
|
|
639
642
|
}
|
|
640
643
|
GetCurrentlyLineTypeScale() {
|
|
641
644
|
return this.imp.GetCurrentlyLineTypeScale();
|
|
@@ -660,7 +663,7 @@ class pD extends K {
|
|
|
660
663
|
this.imp.SetCurrentlyLayerName(C);
|
|
661
664
|
}
|
|
662
665
|
GetCurrentlyTrueColor() {
|
|
663
|
-
return new
|
|
666
|
+
return new N(this.imp.GetCurrentlyTrueColor());
|
|
664
667
|
}
|
|
665
668
|
GetCurrentlyDrawColor() {
|
|
666
669
|
let D = this.imp.GetCurrentlyDrawColor(), C = new THREE.Color();
|
|
@@ -694,7 +697,7 @@ class pD extends K {
|
|
|
694
697
|
return this.imp.SetModifyed(!1);
|
|
695
698
|
}
|
|
696
699
|
}
|
|
697
|
-
class
|
|
700
|
+
class UD extends H {
|
|
698
701
|
constructor(D) {
|
|
699
702
|
super(D);
|
|
700
703
|
}
|
|
@@ -711,9 +714,9 @@ class VD extends K {
|
|
|
711
714
|
return this.imp.step(D, C);
|
|
712
715
|
}
|
|
713
716
|
}
|
|
714
|
-
class
|
|
717
|
+
class eD extends j {
|
|
715
718
|
constructor(D) {
|
|
716
|
-
super(D), D || this.initTempObject(new
|
|
719
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbBlockTableRecord());
|
|
717
720
|
}
|
|
718
721
|
appendAcDbEntity(D) {
|
|
719
722
|
return new R(
|
|
@@ -723,19 +726,19 @@ class FD extends I {
|
|
|
723
726
|
}
|
|
724
727
|
newIterator(D = !0, C = !0) {
|
|
725
728
|
let B = this.imp.newIterator(D, C);
|
|
726
|
-
return new
|
|
729
|
+
return new UD(B);
|
|
727
730
|
}
|
|
728
731
|
get origin() {
|
|
729
|
-
return new
|
|
732
|
+
return new o(this.imp.origin());
|
|
730
733
|
}
|
|
731
734
|
set origin(D) {
|
|
732
735
|
this.imp.setOrigin(D.imp);
|
|
733
736
|
}
|
|
734
737
|
getBoundingBox() {
|
|
735
738
|
let D = this.imp.getBoundingBox();
|
|
736
|
-
return D.length() < 2 ? { minPt: new
|
|
737
|
-
minPt: new
|
|
738
|
-
maxPt: new
|
|
739
|
+
return D.length() < 2 ? { minPt: new o(), maxPt: new o(), ret: !1 } : {
|
|
740
|
+
minPt: new o(D.at(0)),
|
|
741
|
+
maxPt: new o(D.at(1)),
|
|
739
742
|
ret: !0
|
|
740
743
|
};
|
|
741
744
|
}
|
|
@@ -743,7 +746,7 @@ class FD extends I {
|
|
|
743
746
|
this.imp.invalidBoundingBoxBuffer();
|
|
744
747
|
}
|
|
745
748
|
}
|
|
746
|
-
class WD extends
|
|
749
|
+
class WD extends H {
|
|
747
750
|
constructor(D) {
|
|
748
751
|
super(D);
|
|
749
752
|
}
|
|
@@ -755,19 +758,19 @@ class WD extends K {
|
|
|
755
758
|
}
|
|
756
759
|
getRecord() {
|
|
757
760
|
let D = this.imp.getRecord();
|
|
758
|
-
return new
|
|
761
|
+
return new eD(D);
|
|
759
762
|
}
|
|
760
763
|
step(D = !0, C = !0) {
|
|
761
764
|
this.imp.start(D, C);
|
|
762
765
|
}
|
|
763
766
|
}
|
|
764
|
-
class
|
|
767
|
+
class zD extends j {
|
|
765
768
|
constructor(D) {
|
|
766
|
-
super(D), D || this.initTempObject(new
|
|
769
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbBlockTable());
|
|
767
770
|
}
|
|
768
771
|
getAt(D) {
|
|
769
772
|
let C = this.getAt(D);
|
|
770
|
-
return C && new
|
|
773
|
+
return C && new eD(C);
|
|
771
774
|
}
|
|
772
775
|
has(D) {
|
|
773
776
|
return this.imp.has(D);
|
|
@@ -780,16 +783,16 @@ class UD extends I {
|
|
|
780
783
|
return this.imp.add(D.getImp());
|
|
781
784
|
}
|
|
782
785
|
}
|
|
783
|
-
class
|
|
786
|
+
class V extends j {
|
|
784
787
|
constructor(D) {
|
|
785
788
|
super(D);
|
|
786
789
|
}
|
|
787
790
|
explode() {
|
|
788
791
|
let D = this.imp.explode();
|
|
789
|
-
return new
|
|
792
|
+
return new iD(D);
|
|
790
793
|
}
|
|
791
794
|
get trueColor() {
|
|
792
|
-
return new
|
|
795
|
+
return new N(this.imp.TrueColor());
|
|
793
796
|
}
|
|
794
797
|
set trueColor(D) {
|
|
795
798
|
this.imp.SetTrueColor(D.getImp());
|
|
@@ -852,130 +855,130 @@ class G extends I {
|
|
|
852
855
|
let D = this.imp.GetBoundingBox();
|
|
853
856
|
if (D) {
|
|
854
857
|
let C = {
|
|
855
|
-
minPt: new
|
|
856
|
-
maxPt: new
|
|
858
|
+
minPt: new o(D.AtPoint(0)),
|
|
859
|
+
maxPt: new o(D.AtPoint(1)),
|
|
857
860
|
ret: !0
|
|
858
861
|
};
|
|
859
|
-
return
|
|
862
|
+
return n.App.DestroyObject(D), C;
|
|
860
863
|
} else
|
|
861
|
-
return { minPt: new
|
|
864
|
+
return { minPt: new o(), maxPt: new o(), ret: !1 };
|
|
862
865
|
}
|
|
863
866
|
}
|
|
864
|
-
class
|
|
867
|
+
class z extends V {
|
|
865
868
|
constructor(D) {
|
|
866
869
|
super(D);
|
|
867
870
|
}
|
|
868
871
|
getStartParam() {
|
|
869
|
-
return { val: this.imp.getStartParam(), ret:
|
|
872
|
+
return { val: this.imp.getStartParam(), ret: n.getCallResult() };
|
|
870
873
|
}
|
|
871
874
|
getEndParam() {
|
|
872
|
-
return { val: this.imp.getEndParam(), ret:
|
|
875
|
+
return { val: this.imp.getEndParam(), ret: n.getCallResult() };
|
|
873
876
|
}
|
|
874
877
|
getDistAtParam(D) {
|
|
875
|
-
return { val: this.imp.getDistAtParam(D), ret:
|
|
878
|
+
return { val: this.imp.getDistAtParam(D), ret: n.getCallResult() };
|
|
876
879
|
}
|
|
877
880
|
getParamAtDist(D) {
|
|
878
|
-
return { val: this.imp.getParamAtDist(D), ret:
|
|
881
|
+
return { val: this.imp.getParamAtDist(D), ret: n.getCallResult() };
|
|
879
882
|
}
|
|
880
883
|
getDistAtPoint(D) {
|
|
881
|
-
return { val: this.imp.getDistAtPoint(D.imp), ret:
|
|
884
|
+
return { val: this.imp.getDistAtPoint(D.imp), ret: n.getCallResult() };
|
|
882
885
|
}
|
|
883
886
|
getPointAtDist(D) {
|
|
884
887
|
return {
|
|
885
|
-
val: new
|
|
886
|
-
ret:
|
|
888
|
+
val: new o(this.imp.getPointAtDist(D)),
|
|
889
|
+
ret: n.getCallResult()
|
|
887
890
|
};
|
|
888
891
|
}
|
|
889
892
|
getStartPoint() {
|
|
890
893
|
return {
|
|
891
|
-
val: new
|
|
892
|
-
ret:
|
|
894
|
+
val: new o(this.imp.getStartPoint()),
|
|
895
|
+
ret: n.getCallResult()
|
|
893
896
|
};
|
|
894
897
|
}
|
|
895
898
|
getEndPoint() {
|
|
896
899
|
return {
|
|
897
|
-
val: new
|
|
898
|
-
ret:
|
|
900
|
+
val: new o(this.imp.getStartPoint()),
|
|
901
|
+
ret: n.getCallResult()
|
|
899
902
|
};
|
|
900
903
|
}
|
|
901
904
|
getPointAtParam(D) {
|
|
902
905
|
return {
|
|
903
|
-
val: new
|
|
904
|
-
ret:
|
|
906
|
+
val: new o(this.imp.getPointAtParam(D)),
|
|
907
|
+
ret: n.getCallResult()
|
|
905
908
|
};
|
|
906
909
|
}
|
|
907
910
|
getParamAtPoint(D) {
|
|
908
911
|
return {
|
|
909
912
|
val: this.imp.getParamAtPoint(D.imp),
|
|
910
|
-
ret:
|
|
913
|
+
ret: n.getCallResult()
|
|
911
914
|
};
|
|
912
915
|
}
|
|
913
916
|
getFirstDeriv(D) {
|
|
914
917
|
return {
|
|
915
918
|
val: new y(this.imp.getFirstDeriv(D)),
|
|
916
|
-
ret:
|
|
919
|
+
ret: n.getCallResult()
|
|
917
920
|
};
|
|
918
921
|
}
|
|
919
922
|
getFirstDerivEx(D) {
|
|
920
923
|
return {
|
|
921
924
|
val: new y(this.imp.getFirstDerivEx(D.imp)),
|
|
922
|
-
ret:
|
|
925
|
+
ret: n.getCallResult()
|
|
923
926
|
};
|
|
924
927
|
}
|
|
925
928
|
getClosestPointTo(D, C) {
|
|
926
929
|
return {
|
|
927
|
-
val: new
|
|
928
|
-
ret:
|
|
930
|
+
val: new o(this.imp.getClosestPointTo(D.imp, C)),
|
|
931
|
+
ret: n.getCallResult()
|
|
929
932
|
};
|
|
930
933
|
}
|
|
931
934
|
offsetCurves(D, C) {
|
|
932
935
|
let B = this.imp.offsetCurves(D, C.imp);
|
|
933
|
-
return new
|
|
936
|
+
return new aD(B);
|
|
934
937
|
}
|
|
935
938
|
splitCurves(D) {
|
|
936
939
|
let C = this.imp.splitCurves(D);
|
|
937
|
-
return new
|
|
940
|
+
return new aD(C);
|
|
938
941
|
}
|
|
939
942
|
getArea() {
|
|
940
|
-
return { val: this.imp.getArea(), ret:
|
|
943
|
+
return { val: this.imp.getArea(), ret: n.getCallResult() };
|
|
941
944
|
}
|
|
942
945
|
getSamplePoints(D) {
|
|
943
946
|
let C = this.imp.getSamplePoints(D);
|
|
944
|
-
return new
|
|
947
|
+
return new iD(C);
|
|
945
948
|
}
|
|
946
949
|
getLength() {
|
|
947
|
-
return { val: this.imp.getLength(), ret:
|
|
950
|
+
return { val: this.imp.getLength(), ret: n.getCallResult() };
|
|
948
951
|
}
|
|
949
952
|
}
|
|
950
|
-
class
|
|
951
|
-
constructor(D, C, B, F, A,
|
|
952
|
-
D instanceof Object ? D instanceof
|
|
953
|
+
class BD extends z {
|
|
954
|
+
constructor(D, C, B, F, A, e) {
|
|
955
|
+
D instanceof Object ? D instanceof o ? (super(), this.initTempObject(new n.mxcadassemblyimp.MdDbLine()), C instanceof o && (this.startPoint = D, this.endPoint = C)) : super(D) : (super(), this.initTempObject(new n.mxcadassemblyimp.MdDbLine()), this.startPoint = new o(D, C, B), this.endPoint = new o(F, A, e));
|
|
953
956
|
}
|
|
954
957
|
get startPoint() {
|
|
955
|
-
return new
|
|
958
|
+
return new o(this.imp.startPoint());
|
|
956
959
|
}
|
|
957
960
|
set startPoint(D) {
|
|
958
961
|
this.imp.setStartPoint(D.imp);
|
|
959
962
|
}
|
|
960
963
|
get endPoint() {
|
|
961
|
-
return new
|
|
964
|
+
return new o(this.imp.endPoint());
|
|
962
965
|
}
|
|
963
966
|
set endPoint(D) {
|
|
964
967
|
this.imp.setEndPoint(D.imp);
|
|
965
968
|
}
|
|
966
969
|
}
|
|
967
|
-
class
|
|
970
|
+
class lD extends V {
|
|
968
971
|
constructor(D) {
|
|
969
|
-
super(D), D || this.initTempObject(new
|
|
972
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbText());
|
|
970
973
|
}
|
|
971
974
|
get position() {
|
|
972
|
-
return new
|
|
975
|
+
return new o(this.imp.position());
|
|
973
976
|
}
|
|
974
977
|
set position(D) {
|
|
975
978
|
this.imp.setPosition(D.imp);
|
|
976
979
|
}
|
|
977
980
|
get alignmentPoint() {
|
|
978
|
-
return new
|
|
981
|
+
return new o(this.imp.position());
|
|
979
982
|
}
|
|
980
983
|
set alignmentPoint(D) {
|
|
981
984
|
this.imp.setAlignmentPoint(D.imp);
|
|
@@ -1023,12 +1026,12 @@ class uD extends G {
|
|
|
1023
1026
|
this.imp.setVerticalMode(D);
|
|
1024
1027
|
}
|
|
1025
1028
|
}
|
|
1026
|
-
class
|
|
1029
|
+
class ED extends V {
|
|
1027
1030
|
constructor(D) {
|
|
1028
|
-
super(D), D || this.initTempObject(new
|
|
1031
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbMText());
|
|
1029
1032
|
}
|
|
1030
1033
|
get location() {
|
|
1031
|
-
return new
|
|
1034
|
+
return new o(this.imp.location());
|
|
1032
1035
|
}
|
|
1033
1036
|
set location(D) {
|
|
1034
1037
|
this.imp.setLocation(D.imp);
|
|
@@ -1064,15 +1067,15 @@ class CD extends G {
|
|
|
1064
1067
|
this.imp.setContents(P.encodeToGb2312(D));
|
|
1065
1068
|
}
|
|
1066
1069
|
}
|
|
1067
|
-
class
|
|
1070
|
+
class W extends z {
|
|
1068
1071
|
constructor(D, C, B, F) {
|
|
1069
|
-
D instanceof Object ? super(D) : (super(), this.initTempObject(new
|
|
1072
|
+
D instanceof Object ? super(D) : (super(), this.initTempObject(new n.mxcadassemblyimp.MdDbCircle()), typeof D == "number" && (this.imp.setCenter(new o(D, C, B).imp), this.imp.setRadius(F)));
|
|
1070
1073
|
}
|
|
1071
1074
|
setCenter(D, C, B) {
|
|
1072
|
-
this.imp.setCenter(new
|
|
1075
|
+
this.imp.setCenter(new o(D, C, B).imp);
|
|
1073
1076
|
}
|
|
1074
1077
|
get center() {
|
|
1075
|
-
return new
|
|
1078
|
+
return new o(this.imp.center());
|
|
1076
1079
|
}
|
|
1077
1080
|
set center(D) {
|
|
1078
1081
|
this.imp.setCenter(D.imp);
|
|
@@ -1084,9 +1087,9 @@ class V extends W {
|
|
|
1084
1087
|
this.imp.setRadius(D);
|
|
1085
1088
|
}
|
|
1086
1089
|
}
|
|
1087
|
-
class
|
|
1090
|
+
class FD extends z {
|
|
1088
1091
|
constructor(D) {
|
|
1089
|
-
super(D), D || this.initTempObject(new
|
|
1092
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbPolyline());
|
|
1090
1093
|
}
|
|
1091
1094
|
get isClosed() {
|
|
1092
1095
|
return this.imp.isClosed();
|
|
@@ -1102,8 +1105,8 @@ class BD extends W {
|
|
|
1102
1105
|
}
|
|
1103
1106
|
addVertexAt(D, C = 0, B = 0, F = 0, A = 0) {
|
|
1104
1107
|
if (D instanceof THREE.Vector3) {
|
|
1105
|
-
let
|
|
1106
|
-
return
|
|
1108
|
+
let e = new n.mxcadassemblyimp.MdGePoint3d();
|
|
1109
|
+
return e.x = D.x, e.y = D.y, e.z = D.z, this.imp.addVertexAt(A, e, C, B, F);
|
|
1107
1110
|
} else
|
|
1108
1111
|
return this.imp.addVertexAt(A, D.imp, C, B, F);
|
|
1109
1112
|
}
|
|
@@ -1114,7 +1117,7 @@ class BD extends W {
|
|
|
1114
1117
|
return this.imp.numVerts();
|
|
1115
1118
|
}
|
|
1116
1119
|
getPointAt(D) {
|
|
1117
|
-
return { val: this.imp.getPointAt(D), ret:
|
|
1120
|
+
return { val: this.imp.getPointAt(D), ret: n.getCallResult() };
|
|
1118
1121
|
}
|
|
1119
1122
|
getBulgeAt(D) {
|
|
1120
1123
|
return this.imp.getBulgeAt(D);
|
|
@@ -1123,7 +1126,7 @@ class BD extends W {
|
|
|
1123
1126
|
return {
|
|
1124
1127
|
val1: this.imp.getStartWidthsAt(D),
|
|
1125
1128
|
val2: this.imp.getEndWidthsAt(D),
|
|
1126
|
-
ret:
|
|
1129
|
+
ret: n.getCallResult()
|
|
1127
1130
|
};
|
|
1128
1131
|
}
|
|
1129
1132
|
setPointAt(D, C) {
|
|
@@ -1133,9 +1136,9 @@ class BD extends W {
|
|
|
1133
1136
|
return this.imp.setBulgeAt(D, C);
|
|
1134
1137
|
}
|
|
1135
1138
|
}
|
|
1136
|
-
class
|
|
1139
|
+
class cD extends V {
|
|
1137
1140
|
constructor(D) {
|
|
1138
|
-
super(D), D || this.initTempObject(new
|
|
1141
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbBlockReference());
|
|
1139
1142
|
}
|
|
1140
1143
|
get blockTableRecordId() {
|
|
1141
1144
|
return new R(this.imp.blockTableRecord(), k.kMxCAD);
|
|
@@ -1144,7 +1147,7 @@ class lD extends G {
|
|
|
1144
1147
|
this.imp.setBlockTableRecordId(D.id);
|
|
1145
1148
|
}
|
|
1146
1149
|
get position() {
|
|
1147
|
-
return new
|
|
1150
|
+
return new o(this.imp.position());
|
|
1148
1151
|
}
|
|
1149
1152
|
set position(D) {
|
|
1150
1153
|
this.imp.setPosition(D.imp);
|
|
@@ -1162,18 +1165,18 @@ class lD extends G {
|
|
|
1162
1165
|
this.imp.setRotation(D);
|
|
1163
1166
|
}
|
|
1164
1167
|
get blockTransform() {
|
|
1165
|
-
return new
|
|
1168
|
+
return new v(this.imp.blockTransform());
|
|
1166
1169
|
}
|
|
1167
1170
|
set blockTransform(D) {
|
|
1168
1171
|
this.imp.setBlockTransform(D.imp);
|
|
1169
1172
|
}
|
|
1170
1173
|
}
|
|
1171
|
-
class
|
|
1174
|
+
class yD extends V {
|
|
1172
1175
|
constructor(D) {
|
|
1173
1176
|
super(D);
|
|
1174
1177
|
}
|
|
1175
1178
|
get textPosition() {
|
|
1176
|
-
return new
|
|
1179
|
+
return new o(this.imp.textPosition());
|
|
1177
1180
|
}
|
|
1178
1181
|
set textPosition(D) {
|
|
1179
1182
|
this.imp.setTextPosition(D.imp);
|
|
@@ -1254,24 +1257,24 @@ class dD extends G {
|
|
|
1254
1257
|
this.imp.SetDimVarObjectId(D, C.id);
|
|
1255
1258
|
}
|
|
1256
1259
|
}
|
|
1257
|
-
class
|
|
1260
|
+
class mD extends yD {
|
|
1258
1261
|
constructor(D) {
|
|
1259
|
-
super(D), D || this.initTempObject(new
|
|
1262
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbAlignedDimension());
|
|
1260
1263
|
}
|
|
1261
1264
|
get xLine1Point() {
|
|
1262
|
-
return new
|
|
1265
|
+
return new o(this.imp.xLine1Point());
|
|
1263
1266
|
}
|
|
1264
1267
|
set xLine1Point(D) {
|
|
1265
1268
|
this.imp.setXLine1Point(D.imp);
|
|
1266
1269
|
}
|
|
1267
1270
|
get xLine2Point() {
|
|
1268
|
-
return new
|
|
1271
|
+
return new o(this.imp.xLine2Point());
|
|
1269
1272
|
}
|
|
1270
1273
|
set xLine2Point(D) {
|
|
1271
1274
|
this.imp.setXLine2Point(D.imp);
|
|
1272
1275
|
}
|
|
1273
1276
|
get dimLinePoint() {
|
|
1274
|
-
return new
|
|
1277
|
+
return new o(this.imp.dimLinePoint());
|
|
1275
1278
|
}
|
|
1276
1279
|
set dimLinePoint(D) {
|
|
1277
1280
|
this.imp.setDimLinePoint(D.imp);
|
|
@@ -1283,24 +1286,24 @@ class cD extends dD {
|
|
|
1283
1286
|
this.imp.setOblique(D);
|
|
1284
1287
|
}
|
|
1285
1288
|
}
|
|
1286
|
-
class
|
|
1289
|
+
class pD extends yD {
|
|
1287
1290
|
constructor(D) {
|
|
1288
|
-
super(D), D || this.initTempObject(new
|
|
1291
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbRotatedDimension());
|
|
1289
1292
|
}
|
|
1290
1293
|
get xLine1Point() {
|
|
1291
|
-
return new
|
|
1294
|
+
return new o(this.imp.xLine1Point());
|
|
1292
1295
|
}
|
|
1293
1296
|
set xLine1Point(D) {
|
|
1294
1297
|
this.imp.setXLine1Point(D.imp);
|
|
1295
1298
|
}
|
|
1296
1299
|
get xLine2Point() {
|
|
1297
|
-
return new
|
|
1300
|
+
return new o(this.imp.xLine2Point());
|
|
1298
1301
|
}
|
|
1299
1302
|
set xLine2Point(D) {
|
|
1300
1303
|
this.imp.setXLine2Point(D.imp);
|
|
1301
1304
|
}
|
|
1302
1305
|
get dimLinePoint() {
|
|
1303
|
-
return new
|
|
1306
|
+
return new o(this.imp.dimLinePoint());
|
|
1304
1307
|
}
|
|
1305
1308
|
set dimLinePoint(D) {
|
|
1306
1309
|
this.imp.setDimLinePoint(D.imp);
|
|
@@ -1318,15 +1321,15 @@ class mD extends dD {
|
|
|
1318
1321
|
this.imp.setRotation(D);
|
|
1319
1322
|
}
|
|
1320
1323
|
}
|
|
1321
|
-
class
|
|
1324
|
+
class AD extends z {
|
|
1322
1325
|
constructor(D) {
|
|
1323
|
-
super(D), D || this.initTempObject(new
|
|
1326
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.MdDbArc());
|
|
1324
1327
|
}
|
|
1325
1328
|
setCenter(D, C, B) {
|
|
1326
|
-
this.imp.setCenter(new
|
|
1329
|
+
this.imp.setCenter(new o(D, C, B).imp);
|
|
1327
1330
|
}
|
|
1328
1331
|
get center() {
|
|
1329
|
-
return new
|
|
1332
|
+
return new o(this.imp.center());
|
|
1330
1333
|
}
|
|
1331
1334
|
set center(D) {
|
|
1332
1335
|
this.imp.setCenter(D.imp);
|
|
@@ -1349,26 +1352,26 @@ class ED extends W {
|
|
|
1349
1352
|
set endAngle(D) {
|
|
1350
1353
|
this.imp.setEndAngle(D);
|
|
1351
1354
|
}
|
|
1352
|
-
computeArc(D, C, B, F, A,
|
|
1355
|
+
computeArc(D, C, B, F, A, e) {
|
|
1353
1356
|
return this.imp.computeArc(
|
|
1354
1357
|
D,
|
|
1355
1358
|
C,
|
|
1356
1359
|
B,
|
|
1357
1360
|
F,
|
|
1358
1361
|
A,
|
|
1359
|
-
|
|
1362
|
+
e
|
|
1360
1363
|
);
|
|
1361
1364
|
}
|
|
1362
1365
|
}
|
|
1363
|
-
class
|
|
1364
|
-
constructor(D, C, B, F, A, t,
|
|
1365
|
-
D instanceof Object ? super(D) : (super(), this.initTempObject(new
|
|
1366
|
+
class tD extends z {
|
|
1367
|
+
constructor(D, C, B, F, A, e, t, i, r) {
|
|
1368
|
+
D instanceof Object ? super(D) : (super(), this.initTempObject(new n.mxcadassemblyimp.MdDbEllipse()), typeof D == "number" && (t || (t = 1), typeof i != "number" && (i = 0), typeof r != "number" && (r = 6.283185307179586), this.imp.InitData(new o(D, C, B).imp, new y(F, A, e).imp, t, i, r)));
|
|
1366
1369
|
}
|
|
1367
1370
|
setCenter(D, C, B) {
|
|
1368
|
-
this.imp.setCenter(new
|
|
1371
|
+
this.imp.setCenter(new o(D, C, B).imp);
|
|
1369
1372
|
}
|
|
1370
1373
|
get center() {
|
|
1371
|
-
return new
|
|
1374
|
+
return new o(this.imp.center());
|
|
1372
1375
|
}
|
|
1373
1376
|
set center(D) {
|
|
1374
1377
|
this.imp.setCenter(D.imp);
|
|
@@ -1410,27 +1413,27 @@ class AD extends W {
|
|
|
1410
1413
|
this.imp.setEndAngle(D);
|
|
1411
1414
|
}
|
|
1412
1415
|
}
|
|
1413
|
-
class
|
|
1416
|
+
class wD extends V {
|
|
1414
1417
|
constructor(D, C, B) {
|
|
1415
|
-
D instanceof Object ? D instanceof
|
|
1418
|
+
D instanceof Object ? D instanceof o ? (super(), this.initTempObject(new n.mxcadassemblyimp.MdDbPoint()), this.imp.setPosition(D.imp)) : super(D) : (super(), this.initTempObject(new n.mxcadassemblyimp.MdDbPoint()), typeof D == "number" && this.imp.setPosition(new o(D, C, B).imp));
|
|
1416
1419
|
}
|
|
1417
1420
|
setPosition(D, C, B) {
|
|
1418
|
-
this.imp.setPosition(new
|
|
1421
|
+
this.imp.setPosition(new o(D, C, B).imp);
|
|
1419
1422
|
}
|
|
1420
1423
|
get position() {
|
|
1421
|
-
return new
|
|
1424
|
+
return new o(this.imp.position());
|
|
1422
1425
|
}
|
|
1423
1426
|
set position(D) {
|
|
1424
1427
|
this.imp.setPosition(D.imp);
|
|
1425
1428
|
}
|
|
1426
1429
|
}
|
|
1427
|
-
function
|
|
1430
|
+
function K(E = null) {
|
|
1428
1431
|
let D;
|
|
1429
|
-
return E == null ? D = new
|
|
1432
|
+
return E == null ? D = new n.mxcadassemblyimp.McDrawResbuf() : D = E.getImp(), D;
|
|
1430
1433
|
}
|
|
1431
|
-
class
|
|
1434
|
+
class iD extends H {
|
|
1432
1435
|
constructor(D) {
|
|
1433
|
-
super(D), D || this.initTempObject(new
|
|
1436
|
+
super(D), D || this.initTempObject(new n.mxcadassemblyimp.McDrawResbuf());
|
|
1434
1437
|
}
|
|
1435
1438
|
Clear() {
|
|
1436
1439
|
this.imp.Clear();
|
|
@@ -1439,16 +1442,16 @@ class tD extends K {
|
|
|
1439
1442
|
return this.imp.GetCount();
|
|
1440
1443
|
}
|
|
1441
1444
|
AtDouble(D) {
|
|
1442
|
-
return { val: this.imp.AtDouble(D), ret:
|
|
1445
|
+
return { val: this.imp.AtDouble(D), ret: n.getCallResult() };
|
|
1443
1446
|
}
|
|
1444
1447
|
Atlong(D) {
|
|
1445
|
-
return { val: this.imp.Atlong(D), ret:
|
|
1448
|
+
return { val: this.imp.Atlong(D), ret: n.getCallResult() };
|
|
1446
1449
|
}
|
|
1447
1450
|
AtObject(D) {
|
|
1448
1451
|
if (this.imp.AtObjectName(D) == "McDbMText") {
|
|
1449
1452
|
let B = this.imp.AtObjectMdDbMText(D);
|
|
1450
1453
|
if (B)
|
|
1451
|
-
return { val: new
|
|
1454
|
+
return { val: new ED(B), ret: n.getCallResult() };
|
|
1452
1455
|
}
|
|
1453
1456
|
return { val: void 0, ret: -1 };
|
|
1454
1457
|
}
|
|
@@ -1456,13 +1459,13 @@ class tD extends K {
|
|
|
1456
1459
|
this.imp.AddObject(D.getImp());
|
|
1457
1460
|
}
|
|
1458
1461
|
AtObjectId(D) {
|
|
1459
|
-
return { val: new R(this.imp.AtObjectId(D), k.kMxCAD), ret:
|
|
1462
|
+
return { val: new R(this.imp.AtObjectId(D), k.kMxCAD), ret: n.getCallResult() };
|
|
1460
1463
|
}
|
|
1461
1464
|
AtString(D, C = !0) {
|
|
1462
|
-
return C ? { val: P.decodeFromGb2312(this.imp.AtString(D)), ret:
|
|
1465
|
+
return C ? { val: P.decodeFromGb2312(this.imp.AtString(D)), ret: n.getCallResult() } : { val: this.imp.AtString(D), ret: n.getCallResult() };
|
|
1463
1466
|
}
|
|
1464
1467
|
AtPoint(D) {
|
|
1465
|
-
return { val: new
|
|
1468
|
+
return { val: new o(this.imp.AtPoint(D)), ret: n.getCallResult() };
|
|
1466
1469
|
}
|
|
1467
1470
|
ItemDataType() {
|
|
1468
1471
|
return this.imp.ItemDataType();
|
|
@@ -1492,7 +1495,7 @@ class tD extends K {
|
|
|
1492
1495
|
this.imp.Remove(D);
|
|
1493
1496
|
}
|
|
1494
1497
|
}
|
|
1495
|
-
class
|
|
1498
|
+
class KD {
|
|
1496
1499
|
imp;
|
|
1497
1500
|
constructor() {
|
|
1498
1501
|
}
|
|
@@ -1504,58 +1507,116 @@ class zD {
|
|
|
1504
1507
|
}
|
|
1505
1508
|
findEntAtPoint(D, C, B, F = -1, A = null) {
|
|
1506
1509
|
this.init();
|
|
1507
|
-
let
|
|
1508
|
-
return new R(
|
|
1510
|
+
let e = this.imp.findEntAtPoint(D, C, B, F, K(A));
|
|
1511
|
+
return new R(e, k.kMxCAD);
|
|
1509
1512
|
}
|
|
1510
1513
|
selectEnt(D, C = null, B = !0) {
|
|
1511
1514
|
return this.init(), new Promise(async (F) => {
|
|
1512
|
-
const A = new
|
|
1513
|
-
D && A.setMessage(D), A.setCursorType(
|
|
1514
|
-
let
|
|
1515
|
-
if (!
|
|
1515
|
+
const A = new O();
|
|
1516
|
+
D && A.setMessage(D), A.setCursorType(MD.kRect), A.setDisableOsnap(!0);
|
|
1517
|
+
let e = await A.go();
|
|
1518
|
+
if (!e) {
|
|
1516
1519
|
F([]);
|
|
1517
1520
|
return;
|
|
1518
1521
|
}
|
|
1519
1522
|
if (B)
|
|
1520
|
-
|
|
1521
|
-
let
|
|
1522
|
-
|
|
1523
|
-
|
|
1523
|
+
oD.findEntAtPoint(e).then((t) => {
|
|
1524
|
+
let i = [];
|
|
1525
|
+
t.forEach((s) => {
|
|
1526
|
+
i.push(new R(s, k.kMxDraw));
|
|
1524
1527
|
});
|
|
1525
|
-
let
|
|
1526
|
-
|
|
1528
|
+
let r = this.findEntAtPoint(e.x, e.y, e.z, -1, C);
|
|
1529
|
+
r.isValid() && i.push(r), F(i);
|
|
1527
1530
|
});
|
|
1528
1531
|
else {
|
|
1529
|
-
let
|
|
1530
|
-
|
|
1532
|
+
let t = [], i = this.findEntAtPoint(e.x, e.y, e.z, -1, C);
|
|
1533
|
+
i.isValid() && t.push(i), F(t);
|
|
1531
1534
|
}
|
|
1532
1535
|
});
|
|
1533
1536
|
}
|
|
1534
|
-
getCurrentSelect() {
|
|
1535
|
-
let
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
})
|
|
1539
|
-
|
|
1540
|
-
|
|
1537
|
+
getCurrentSelect(D = null) {
|
|
1538
|
+
let C = [];
|
|
1539
|
+
h.getCurrentDraw().getMxCurrentSelect().forEach((A) => {
|
|
1540
|
+
C.push(new R(A, k.kMxDraw));
|
|
1541
|
+
});
|
|
1542
|
+
let F = h.getCurrentDraw().getMxCADCurrentSelect();
|
|
1543
|
+
if (F.length <= 0)
|
|
1544
|
+
return C;
|
|
1545
|
+
if (D) {
|
|
1546
|
+
let A = new SD();
|
|
1547
|
+
F.forEach((r) => {
|
|
1548
|
+
A.append(r);
|
|
1549
|
+
});
|
|
1550
|
+
let e = new n.mxcadassemblyimp.McDrawSelSet(), t = e.getFilterEntity(A.imp, K(D));
|
|
1551
|
+
n.App.DestroyObject(e), F = [];
|
|
1552
|
+
let i = t.length();
|
|
1553
|
+
for (let r = 0; r < i; r++)
|
|
1554
|
+
F.push(t.at(r));
|
|
1555
|
+
}
|
|
1556
|
+
return F.forEach((A) => {
|
|
1557
|
+
C.push(new R(A, k.kMxCAD));
|
|
1558
|
+
}), C;
|
|
1559
|
+
}
|
|
1560
|
+
async userSelect(D, C = null) {
|
|
1561
|
+
let B = this.getCurrentSelect(C);
|
|
1562
|
+
if (B.length == 0) {
|
|
1563
|
+
let F = new _();
|
|
1564
|
+
await F.userSelect(D, C) && F.forEach((A) => {
|
|
1565
|
+
B.push(A);
|
|
1566
|
+
});
|
|
1567
|
+
}
|
|
1568
|
+
return new Promise((F) => {
|
|
1569
|
+
F(B);
|
|
1570
|
+
});
|
|
1541
1571
|
}
|
|
1542
1572
|
init() {
|
|
1543
|
-
this.imp || (this.imp = new
|
|
1573
|
+
this.imp || (this.imp = new n.mxcadassemblyimp.McDrawUtility());
|
|
1574
|
+
}
|
|
1575
|
+
async getCorner(D, C, B, F = !1) {
|
|
1576
|
+
let A = 0, e;
|
|
1577
|
+
for (; ; ) {
|
|
1578
|
+
if (!C) {
|
|
1579
|
+
let i = new G();
|
|
1580
|
+
D && i.setMessage(D), i.setDynamicInputType(dD.kDynTip), C = await i.go(), A = i.getDetailedResult();
|
|
1581
|
+
}
|
|
1582
|
+
if (!C)
|
|
1583
|
+
break;
|
|
1584
|
+
let t = await oD.getCorner(C.toVector3(), D, F, (i) => {
|
|
1585
|
+
A = i.detailedResult;
|
|
1586
|
+
});
|
|
1587
|
+
t && (e = new o(t));
|
|
1588
|
+
break;
|
|
1589
|
+
}
|
|
1590
|
+
return B && B(A), new Promise((t) => {
|
|
1591
|
+
A == Z.kEcsIn || A == Z.kNewCommadIn || A == Z.kUnknown ? t(null) : t(C && e ? { pt1: C, pt2: e } : null);
|
|
1592
|
+
});
|
|
1593
|
+
}
|
|
1594
|
+
getMcDbEntitysBoundingBox(D) {
|
|
1595
|
+
let C, B;
|
|
1596
|
+
if (D.forEach((F) => {
|
|
1597
|
+
let A = F.getMcDbEntity();
|
|
1598
|
+
if (A == null)
|
|
1599
|
+
return;
|
|
1600
|
+
let e = A.GetBoundingBox();
|
|
1601
|
+
!e.ret || (!C || !B ? (C = new THREE.Vector3(e.minPt.x, e.minPt.y, 0), B = new THREE.Vector3(e.maxPt.x, e.maxPt.y, 0)) : (C.x > e.minPt.x && (C.x = e.minPt.x), C.y > e.minPt.y && (C.y = e.minPt.y), B.x < e.maxPt.x && (B.x = e.maxPt.x), B.y < e.maxPt.y && (B.y = e.maxPt.y)));
|
|
1602
|
+
}), C && B)
|
|
1603
|
+
return { minPt: new o(C), maxPt: new o(B) };
|
|
1544
1604
|
}
|
|
1545
1605
|
}
|
|
1546
|
-
let U = new
|
|
1547
|
-
|
|
1606
|
+
let U = new KD();
|
|
1607
|
+
var HD = /* @__PURE__ */ ((E) => (E[E.kSelected = 0] = "kSelected", E[E.kNone = 1] = "kNone", E[E.kCanceled = 2] = "kCanceled", E[E.kRejected = 3] = "kRejected", E[E.kKeyword = 4] = "kKeyword", E))(HD || {});
|
|
1608
|
+
class _ extends H {
|
|
1548
1609
|
constructor() {
|
|
1549
|
-
super(), this.initTempObject(new
|
|
1610
|
+
super(), this.initTempObject(new n.mxcadassemblyimp.McDrawSelSet());
|
|
1550
1611
|
}
|
|
1551
1612
|
allSelect(D = null) {
|
|
1552
|
-
return this.imp.allSelect(
|
|
1613
|
+
return this.imp.allSelect(K(D));
|
|
1553
1614
|
}
|
|
1554
1615
|
pointSelect(D, C, B = null, F = -1) {
|
|
1555
|
-
return this.imp.pointSelect(D, C,
|
|
1616
|
+
return this.imp.pointSelect(D, C, K(B), F);
|
|
1556
1617
|
}
|
|
1557
1618
|
crossingSelect(D, C, B, F, A = null) {
|
|
1558
|
-
return this.imp.crossingSelect(D, C, B, F,
|
|
1619
|
+
return this.imp.crossingSelect(D, C, B, F, K(A));
|
|
1559
1620
|
}
|
|
1560
1621
|
count() {
|
|
1561
1622
|
return this.imp.count();
|
|
@@ -1575,28 +1636,30 @@ class $ extends K {
|
|
|
1575
1636
|
return D;
|
|
1576
1637
|
}
|
|
1577
1638
|
async userSelect(D, C = null) {
|
|
1578
|
-
let B = new
|
|
1579
|
-
D && B.setMessage(D), B.setCursorType(
|
|
1580
|
-
let F = 0;
|
|
1639
|
+
let B = new O();
|
|
1640
|
+
D && B.setMessage(D), B.setCursorType(MD.kRect), B.setDynamicInputType(dD.kDynTip), B.setDisableOsnap(!0);
|
|
1641
|
+
let F = 0, A = K(C);
|
|
1581
1642
|
for (; ; ) {
|
|
1582
|
-
let
|
|
1583
|
-
if (F = B.getDetailedResult(), !
|
|
1643
|
+
let e = await B.go();
|
|
1644
|
+
if (F = B.getDetailedResult(), !e)
|
|
1584
1645
|
break;
|
|
1585
|
-
|
|
1586
|
-
|
|
1646
|
+
if (this.imp.userPointSelect(e.x, e.y, A) == 0)
|
|
1647
|
+
continue;
|
|
1648
|
+
let t = await oD.getCorner(e, D, !0, (i) => {
|
|
1649
|
+
F = i.detailedResult;
|
|
1587
1650
|
});
|
|
1588
1651
|
if (!t)
|
|
1589
1652
|
break;
|
|
1590
|
-
this.imp.userSelect(
|
|
1653
|
+
this.imp.userSelect(e.x, e.y, t.x, t.y, A);
|
|
1591
1654
|
}
|
|
1592
|
-
return this.imp.highlightEntity(!1), F ==
|
|
1593
|
-
|
|
1594
|
-
}) : new Promise((
|
|
1595
|
-
|
|
1655
|
+
return this.imp.highlightEntity(!1), F == Z.kEcsIn || F == Z.kNewCommadIn || F == Z.kUnknown ? new Promise((e) => {
|
|
1656
|
+
e(!1);
|
|
1657
|
+
}) : new Promise((e) => {
|
|
1658
|
+
e(!0);
|
|
1596
1659
|
});
|
|
1597
1660
|
}
|
|
1598
1661
|
}
|
|
1599
|
-
class
|
|
1662
|
+
class q {
|
|
1600
1663
|
imp;
|
|
1601
1664
|
constructor(D) {
|
|
1602
1665
|
this.imp = D;
|
|
@@ -1621,7 +1684,7 @@ class N {
|
|
|
1621
1684
|
}
|
|
1622
1685
|
setUserDraw(D) {
|
|
1623
1686
|
this.imp.setUserDraw((C, B) => {
|
|
1624
|
-
D(new
|
|
1687
|
+
D(new o(C), B);
|
|
1625
1688
|
});
|
|
1626
1689
|
}
|
|
1627
1690
|
getDetailedResult() {
|
|
@@ -1663,26 +1726,32 @@ class N {
|
|
|
1663
1726
|
isDisableOsnap() {
|
|
1664
1727
|
return this.imp.isDisableOsnap();
|
|
1665
1728
|
}
|
|
1729
|
+
userInputControls() {
|
|
1730
|
+
return this.imp.userInputControls();
|
|
1731
|
+
}
|
|
1732
|
+
setUserInputControls(D) {
|
|
1733
|
+
this.imp.setUserInputControls(D);
|
|
1734
|
+
}
|
|
1666
1735
|
}
|
|
1667
|
-
class
|
|
1736
|
+
class G extends q {
|
|
1668
1737
|
constructor() {
|
|
1669
|
-
super(new
|
|
1738
|
+
super(new O());
|
|
1670
1739
|
}
|
|
1671
1740
|
go() {
|
|
1672
1741
|
return new Promise((D) => {
|
|
1673
1742
|
this.imp.go((C) => {
|
|
1674
|
-
C != 0 ? D(null) : D(new
|
|
1743
|
+
C != 0 ? D(null) : D(new o(this.imp.value()));
|
|
1675
1744
|
});
|
|
1676
1745
|
});
|
|
1677
1746
|
}
|
|
1678
1747
|
value() {
|
|
1679
|
-
return new
|
|
1748
|
+
return new o(this.imp.value());
|
|
1680
1749
|
}
|
|
1681
1750
|
getCADValue() {
|
|
1682
1751
|
return this.imp.getCADValue();
|
|
1683
1752
|
}
|
|
1684
1753
|
basePt() {
|
|
1685
|
-
return new
|
|
1754
|
+
return new o(this.imp.basePt());
|
|
1686
1755
|
}
|
|
1687
1756
|
setBasePt(D) {
|
|
1688
1757
|
this.imp.setBasePt(D.toVector3());
|
|
@@ -1691,15 +1760,15 @@ class z extends N {
|
|
|
1691
1760
|
this.imp.setUseBasePt(D);
|
|
1692
1761
|
}
|
|
1693
1762
|
}
|
|
1694
|
-
class
|
|
1763
|
+
class ND extends q {
|
|
1695
1764
|
constructor() {
|
|
1696
|
-
super(new
|
|
1765
|
+
super(new AC());
|
|
1697
1766
|
}
|
|
1698
1767
|
value() {
|
|
1699
1768
|
return this.imp.value();
|
|
1700
1769
|
}
|
|
1701
1770
|
basePt() {
|
|
1702
|
-
return new
|
|
1771
|
+
return new o(this.imp.basePt());
|
|
1703
1772
|
}
|
|
1704
1773
|
setBasePt(D) {
|
|
1705
1774
|
this.imp.setBasePt(D.toVector3());
|
|
@@ -1711,15 +1780,15 @@ class KD extends N {
|
|
|
1711
1780
|
return this.imp.go();
|
|
1712
1781
|
}
|
|
1713
1782
|
}
|
|
1714
|
-
class
|
|
1783
|
+
class yC extends q {
|
|
1715
1784
|
constructor() {
|
|
1716
|
-
super(new
|
|
1785
|
+
super(new eC());
|
|
1717
1786
|
}
|
|
1718
1787
|
value() {
|
|
1719
1788
|
return this.imp.value();
|
|
1720
1789
|
}
|
|
1721
1790
|
basePt() {
|
|
1722
|
-
return new
|
|
1791
|
+
return new o(this.imp.basePt());
|
|
1723
1792
|
}
|
|
1724
1793
|
setBasePt(D) {
|
|
1725
1794
|
this.imp.setBasePt(D.toVector3());
|
|
@@ -1731,9 +1800,9 @@ class hC extends N {
|
|
|
1731
1800
|
return this.imp.go();
|
|
1732
1801
|
}
|
|
1733
1802
|
}
|
|
1734
|
-
class
|
|
1803
|
+
class wC extends q {
|
|
1735
1804
|
constructor() {
|
|
1736
|
-
super(new
|
|
1805
|
+
super(new tC());
|
|
1737
1806
|
}
|
|
1738
1807
|
value() {
|
|
1739
1808
|
return this.imp.value();
|
|
@@ -1742,17 +1811,17 @@ class yC extends N {
|
|
|
1742
1811
|
return this.imp.go();
|
|
1743
1812
|
}
|
|
1744
1813
|
}
|
|
1745
|
-
class gC extends
|
|
1814
|
+
class gC extends q {
|
|
1746
1815
|
constructor() {
|
|
1747
|
-
super(new
|
|
1816
|
+
super(new iC());
|
|
1748
1817
|
}
|
|
1749
1818
|
go() {
|
|
1750
1819
|
return this.imp.go();
|
|
1751
1820
|
}
|
|
1752
1821
|
}
|
|
1753
|
-
class
|
|
1822
|
+
class fC extends q {
|
|
1754
1823
|
constructor() {
|
|
1755
|
-
super(new
|
|
1824
|
+
super(new rC());
|
|
1756
1825
|
}
|
|
1757
1826
|
value() {
|
|
1758
1827
|
return this.imp.value();
|
|
@@ -1761,7 +1830,7 @@ class wC extends N {
|
|
|
1761
1830
|
return this.imp.go();
|
|
1762
1831
|
}
|
|
1763
1832
|
}
|
|
1764
|
-
class
|
|
1833
|
+
class $ {
|
|
1765
1834
|
imp;
|
|
1766
1835
|
static currentFileName;
|
|
1767
1836
|
constructor(D) {
|
|
@@ -1776,18 +1845,20 @@ class q {
|
|
|
1776
1845
|
getImp() {
|
|
1777
1846
|
return this.imp;
|
|
1778
1847
|
}
|
|
1779
|
-
openWebFile(D, C, B = !0, F
|
|
1780
|
-
let A = this.imp.mxdrawObject,
|
|
1848
|
+
openWebFile(D, C, B = !0, F) {
|
|
1849
|
+
let A = this.imp.mxdrawObject, e = Math.round(Math.random() * 1e7);
|
|
1781
1850
|
if (C) {
|
|
1782
|
-
let
|
|
1783
|
-
A.removeEventFuction("openFileComplete",
|
|
1851
|
+
let i = (r, s) => {
|
|
1852
|
+
A.removeEventFuction("openFileComplete", i), e == s && C(r);
|
|
1784
1853
|
};
|
|
1785
|
-
A.addEvent("openFileComplete",
|
|
1854
|
+
A.addEvent("openFileComplete", i);
|
|
1786
1855
|
}
|
|
1787
|
-
|
|
1856
|
+
$.currentFileName = D.split("/").pop();
|
|
1857
|
+
let t = "";
|
|
1858
|
+
return F && (t = JSON.stringify(F)), this.imp.openWebFile(D, B, e, t);
|
|
1788
1859
|
}
|
|
1789
1860
|
getCurrentFileName() {
|
|
1790
|
-
return
|
|
1861
|
+
return $.currentFileName;
|
|
1791
1862
|
}
|
|
1792
1863
|
saveFileToUrl(D, C) {
|
|
1793
1864
|
const B = window;
|
|
@@ -1795,15 +1866,15 @@ class q {
|
|
|
1795
1866
|
C(A, F);
|
|
1796
1867
|
}, this.imp.saveFileToUrl(D);
|
|
1797
1868
|
}
|
|
1798
|
-
saveFile(D, C, B = !0, F = !0) {
|
|
1869
|
+
saveFile(D, C, B = !0, F = !0, A) {
|
|
1799
1870
|
D || (D = this.getCurrentFileName()), D.indexOf(".") == -1 && (D += ".mxweb");
|
|
1800
|
-
const
|
|
1801
|
-
|
|
1802
|
-
if (C && C(
|
|
1871
|
+
const e = window;
|
|
1872
|
+
e.mx_saveFile_call = (i) => {
|
|
1873
|
+
if (C && C(i), !!i) {
|
|
1803
1874
|
if (B) {
|
|
1804
|
-
let
|
|
1805
|
-
/^((?!chrome|android).)*safari/i.test(navigator.userAgent) ?
|
|
1806
|
-
blob:
|
|
1875
|
+
let r;
|
|
1876
|
+
/^((?!chrome|android).)*safari/i.test(navigator.userAgent) ? r = new Blob([i.buffer], { type: "application/octet-stream" }) : r = new Blob([i.buffer], { type: "application/octet-binary" }), F ? Q.saveAsFileDialog({
|
|
1877
|
+
blob: r,
|
|
1807
1878
|
filename: D,
|
|
1808
1879
|
types: [{
|
|
1809
1880
|
description: "mxweb File",
|
|
@@ -1811,14 +1882,16 @@ class q {
|
|
|
1811
1882
|
"application/octet-stream": [".mxweb"]
|
|
1812
1883
|
}
|
|
1813
1884
|
}]
|
|
1814
|
-
}) :
|
|
1885
|
+
}) : Q.downloadFile(r, D);
|
|
1815
1886
|
}
|
|
1816
|
-
|
|
1887
|
+
e.mx_saveFile_call = null;
|
|
1817
1888
|
}
|
|
1818
|
-
}
|
|
1889
|
+
};
|
|
1890
|
+
let t = "";
|
|
1891
|
+
return A && (t = JSON.stringify(A)), this.imp.saveFile(D, t);
|
|
1819
1892
|
}
|
|
1820
1893
|
GetDatabase() {
|
|
1821
|
-
return this.imp.McDbDatabase || (this.imp.McDbDatabase = new
|
|
1894
|
+
return this.imp.McDbDatabase || (this.imp.McDbDatabase = new hD(this.imp.GetDatabase())), this.imp.McDbDatabase;
|
|
1822
1895
|
}
|
|
1823
1896
|
GetSysVarString(D) {
|
|
1824
1897
|
return this.imp.GetSysVarString(D);
|
|
@@ -1839,7 +1912,7 @@ class q {
|
|
|
1839
1912
|
return this.imp.SetSysVarLong(D, C);
|
|
1840
1913
|
}
|
|
1841
1914
|
get DrawColor() {
|
|
1842
|
-
return new
|
|
1915
|
+
return new N(this.imp.GetDrawColor());
|
|
1843
1916
|
}
|
|
1844
1917
|
set DrawColor(D) {
|
|
1845
1918
|
this.imp.SetDrawColor(D.getImp());
|
|
@@ -1886,8 +1959,8 @@ class q {
|
|
|
1886
1959
|
AddLinetypeEx(D, C, B) {
|
|
1887
1960
|
this.imp.AddLinetypeEx(D, C, B);
|
|
1888
1961
|
}
|
|
1889
|
-
DrawLine(D, C, B, F, A,
|
|
1890
|
-
return this.imp.DrawLine(D, C, B, F, A,
|
|
1962
|
+
DrawLine(D, C, B, F, A, e) {
|
|
1963
|
+
return this.imp.DrawLine(D, C, B, F, A, e);
|
|
1891
1964
|
}
|
|
1892
1965
|
AddDimStyle(D, C, B, F, A) {
|
|
1893
1966
|
return this.imp.AddDimStyle(D, C, B, F, A);
|
|
@@ -1913,8 +1986,8 @@ class q {
|
|
|
1913
1986
|
DrawArc(D, C, B, F, A) {
|
|
1914
1987
|
return this.imp.DrawArc(D, C, B, F, A);
|
|
1915
1988
|
}
|
|
1916
|
-
DrawArc2(D, C, B, F, A,
|
|
1917
|
-
return this.imp.DrawArc2(D, C, B, F, A,
|
|
1989
|
+
DrawArc2(D, C, B, F, A, e) {
|
|
1990
|
+
return this.imp.DrawArc2(D, C, B, F, A, e);
|
|
1918
1991
|
}
|
|
1919
1992
|
DrawCircle(D, C, B) {
|
|
1920
1993
|
return this.imp.DrawCircle(D, C, B);
|
|
@@ -1922,35 +1995,35 @@ class q {
|
|
|
1922
1995
|
DrawEllipse(D, C, B, F, A) {
|
|
1923
1996
|
return this.imp.DrawEllipse(D, C, B, F, A);
|
|
1924
1997
|
}
|
|
1925
|
-
DrawEllipseArc(D, C, B, F, A,
|
|
1926
|
-
return this.imp.DrawEllipseArc(D, C, B, F, A,
|
|
1998
|
+
DrawEllipseArc(D, C, B, F, A, e, t) {
|
|
1999
|
+
return this.imp.DrawEllipseArc(D, C, B, F, A, e, t);
|
|
1927
2000
|
}
|
|
1928
2001
|
DrawPoint(D, C) {
|
|
1929
2002
|
return this.imp.DrawPoint(D, C);
|
|
1930
2003
|
}
|
|
1931
|
-
DrawSolid(D, C, B, F, A,
|
|
1932
|
-
return this.imp.DrawSolid(D, C, B, F, A,
|
|
2004
|
+
DrawSolid(D, C, B, F, A, e, t, i) {
|
|
2005
|
+
return this.imp.DrawSolid(D, C, B, F, A, e, t, i);
|
|
1933
2006
|
}
|
|
1934
|
-
DrawMText(D, C, B, F, A,
|
|
1935
|
-
return this.imp.DrawMText(D, C, B, F, A,
|
|
2007
|
+
DrawMText(D, C, B, F, A, e, t) {
|
|
2008
|
+
return this.imp.DrawMText(D, C, B, F, A, e, t);
|
|
1936
2009
|
}
|
|
1937
|
-
DrawText(D, C, B, F, A,
|
|
1938
|
-
return this.imp.DrawTextDrawText(D, C, B, F, A,
|
|
2010
|
+
DrawText(D, C, B, F, A, e, t) {
|
|
2011
|
+
return this.imp.DrawTextDrawText(D, C, B, F, A, e, t);
|
|
1939
2012
|
}
|
|
1940
2013
|
DrawBlockReference(D, C, B, F, A) {
|
|
1941
2014
|
return this.imp.DrawBlockReference(D, C, B, F, A);
|
|
1942
2015
|
}
|
|
1943
|
-
DrawDimAligned(D, C, B, F, A,
|
|
1944
|
-
return this.imp.DrawDimAligned(D, C, B, F, A,
|
|
2016
|
+
DrawDimAligned(D, C, B, F, A, e) {
|
|
2017
|
+
return this.imp.DrawDimAligned(D, C, B, F, A, e);
|
|
1945
2018
|
}
|
|
1946
|
-
DrawDimAngular(D, C, B, F, A,
|
|
1947
|
-
return this.imp.DrawDimAngular(D, C, B, F, A,
|
|
2019
|
+
DrawDimAngular(D, C, B, F, A, e, t, i) {
|
|
2020
|
+
return this.imp.DrawDimAngular(D, C, B, F, A, e, t, i);
|
|
1948
2021
|
}
|
|
1949
2022
|
DrawDimDiametric(D, C, B, F, A) {
|
|
1950
2023
|
return this.imp.DrawDimDiametric(D, C, B, F, A);
|
|
1951
2024
|
}
|
|
1952
|
-
DrawDimRotated(D, C, B, F, A,
|
|
1953
|
-
return this.imp.DrawDimRotated(D, C, B, F, A,
|
|
2025
|
+
DrawDimRotated(D, C, B, F, A, e, t) {
|
|
2026
|
+
return this.imp.DrawDimRotated(D, C, B, F, A, e, t);
|
|
1954
2027
|
}
|
|
1955
2028
|
DrawDimOrdinate(D, C, B, F, A) {
|
|
1956
2029
|
return this.imp.DrawDimOrdinate(D, C, B, F, A);
|
|
@@ -1986,28 +2059,28 @@ class q {
|
|
|
1986
2059
|
return this.imp.DrawEntity(D.getImp());
|
|
1987
2060
|
}
|
|
1988
2061
|
ObjectIdToObject(D) {
|
|
1989
|
-
return
|
|
2062
|
+
return n.App.ObjectIdToObject(D);
|
|
1990
2063
|
}
|
|
1991
2064
|
DestroyObject(D) {
|
|
1992
|
-
!D ||
|
|
2065
|
+
!D || n.App.getImp().DestroyObject(D);
|
|
1993
2066
|
}
|
|
1994
2067
|
GetAllLayoutName() {
|
|
1995
|
-
return new
|
|
2068
|
+
return new ID(this.imp.GetAllLayoutName());
|
|
1996
2069
|
}
|
|
1997
2070
|
SetCurrentLayout(D) {
|
|
1998
2071
|
this.imp.SetCurrentLayout(P.encodeToGb2312(D));
|
|
1999
2072
|
}
|
|
2000
2073
|
GetMxCpp() {
|
|
2001
|
-
return
|
|
2074
|
+
return n;
|
|
2002
2075
|
}
|
|
2003
2076
|
docCoord2Cad(D) {
|
|
2004
|
-
return new
|
|
2077
|
+
return new o(this.imp.mxdrawObject.docCoord2Cad(D.x, D.y, D.z));
|
|
2005
2078
|
}
|
|
2006
2079
|
}
|
|
2007
|
-
class
|
|
2080
|
+
class _D {
|
|
2008
2081
|
imp;
|
|
2009
2082
|
init(D) {
|
|
2010
|
-
this.imp = D, y.kZAxis = new y(0, 0, 1), y.kNegateZAxis = new y(0, 0, -1), y.kXAxis = new y(1, 0, 0), y.kYAxis = new y(0, 1, 0),
|
|
2083
|
+
this.imp = D, y.kZAxis = new y(0, 0, 1), y.kNegateZAxis = new y(0, 0, -1), y.kXAxis = new y(1, 0, 0), y.kYAxis = new y(0, 1, 0), o.kOrigin = new o(0, 0, 0), v.kIdentity = new v();
|
|
2011
2084
|
}
|
|
2012
2085
|
getImp() {
|
|
2013
2086
|
return this.imp;
|
|
@@ -2016,15 +2089,15 @@ class HD {
|
|
|
2016
2089
|
return this.imp.getLastCallResult();
|
|
2017
2090
|
}
|
|
2018
2091
|
CreateMxCAD(D, C, B, F, A) {
|
|
2019
|
-
let
|
|
2020
|
-
return new
|
|
2092
|
+
let e = this.imp.CreateMxDraw(D, C, B, F, A);
|
|
2093
|
+
return new $(e);
|
|
2021
2094
|
}
|
|
2022
2095
|
DestroyObject(D) {
|
|
2023
2096
|
this.imp.DestroyObject(D);
|
|
2024
2097
|
}
|
|
2025
2098
|
GetCurrentMxCAD() {
|
|
2026
2099
|
let D = this.imp.GetCurrentMxDraw();
|
|
2027
|
-
return D.McObject || (D.McObject = new
|
|
2100
|
+
return D.McObject || (D.McObject = new $(this.imp.GetCurrentMxDraw())), D.McObject;
|
|
2028
2101
|
}
|
|
2029
2102
|
mcedRGB2Index(D, C, B, F = !0) {
|
|
2030
2103
|
return this.imp.mcedRGB2Index(D, C, B, F);
|
|
@@ -2038,53 +2111,53 @@ class HD {
|
|
|
2038
2111
|
let C = this.imp.ObjectIdToObjectName(D);
|
|
2039
2112
|
if (C == "McDbLine") {
|
|
2040
2113
|
let B = this.imp.ObjectIdToMdDbLine(D);
|
|
2041
|
-
return new
|
|
2114
|
+
return new BD(B);
|
|
2042
2115
|
} else if (C == "McDbText") {
|
|
2043
2116
|
let B = this.imp.ObjectIdToMdDbText(D);
|
|
2044
|
-
return new
|
|
2117
|
+
return new lD(B);
|
|
2045
2118
|
} else if (C == "McDbPolyline") {
|
|
2046
2119
|
let B = this.imp.ObjectIdToMdDbPolyline(D);
|
|
2047
|
-
return new
|
|
2120
|
+
return new FD(B);
|
|
2048
2121
|
} else if (C == "McDbCircle") {
|
|
2049
2122
|
let B = this.imp.ObjectIdToMdDbCircle(D);
|
|
2050
|
-
return new
|
|
2123
|
+
return new W(B);
|
|
2051
2124
|
} else if (C == "McDbArc") {
|
|
2052
2125
|
let B = this.imp.ObjectIdToMdDbArc(D);
|
|
2053
|
-
return new
|
|
2126
|
+
return new AD(B);
|
|
2054
2127
|
} else if (C == "McDbBlockReference") {
|
|
2055
2128
|
let B = this.imp.ObjectIdToMdDbBlockReference(D);
|
|
2056
|
-
return new
|
|
2129
|
+
return new cD(B);
|
|
2057
2130
|
} else if (C == "McDbAlignedDimension") {
|
|
2058
2131
|
let B = this.imp.ObjectIdToMdDbAlignedDimension(D);
|
|
2059
|
-
return new
|
|
2132
|
+
return new mD(B);
|
|
2060
2133
|
} else if (C == "McDbRotatedDimension") {
|
|
2061
2134
|
let B = this.imp.ObjectIdToMdDbRotatedDimension(D);
|
|
2062
|
-
return new
|
|
2135
|
+
return new pD(B);
|
|
2063
2136
|
} else if (C == "McDbMText") {
|
|
2064
2137
|
let B = this.imp.ObjectIdToMdDbMText(D);
|
|
2065
|
-
return new
|
|
2138
|
+
return new ED(B);
|
|
2066
2139
|
} else if (C == "McDbEllipse") {
|
|
2067
2140
|
let B = this.imp.ObjectIdToMdDbEllipse(D);
|
|
2068
|
-
return new
|
|
2141
|
+
return new tD(B);
|
|
2069
2142
|
} else if (C == "McDbPoint") {
|
|
2070
2143
|
let B = this.imp.ObjectIdToMdDbPoint(D);
|
|
2071
|
-
return new
|
|
2144
|
+
return new wD(B);
|
|
2072
2145
|
} else if (this.imp.ObjectIdIsKindOf(D, "McDbCurve")) {
|
|
2073
2146
|
let B = this.imp.ObjectIdToMdDbCurve(D);
|
|
2074
|
-
return new
|
|
2147
|
+
return new z(B);
|
|
2075
2148
|
} else if (this.imp.ObjectIdIsKindOf(D, "McDbEntity")) {
|
|
2076
2149
|
let B = this.imp.ObjectIdToMdDbEntity(D);
|
|
2077
|
-
return new
|
|
2150
|
+
return new V(B);
|
|
2078
2151
|
} else {
|
|
2079
2152
|
let B = this.imp.ObjectIdToMdObject(D);
|
|
2080
|
-
return new
|
|
2153
|
+
return new j(B);
|
|
2081
2154
|
}
|
|
2082
2155
|
}
|
|
2083
2156
|
CreateCloneObject(D) {
|
|
2084
2157
|
if (!D)
|
|
2085
2158
|
return null;
|
|
2086
2159
|
let C = D.getObjectName(), B = null;
|
|
2087
|
-
return C == "McDbLine" ? B = new
|
|
2160
|
+
return C == "McDbLine" ? B = new BD() : C == "McDbText" ? B = new lD() : C == "McDbPolyline" ? B = new FD() : C == "McDbCircle" ? B = new W() : C == "McDbArc" ? B = new AD() : C == "McDbBlockReference" ? B = new cD() : C == "McDbAlignedDimension" ? B = new mD() : C == "McDbRotatedDimension" ? B = new pD() : C == "McDbMText" ? B = new ED() : D.isKindOf("McDbCurve") ? (B = new z(), B.initTempObject(new n.mxcadassemblyimp.MdDbCurve())) : D.isKindOf("McDbEntity") && (B = new V(), B.initTempObject(new n.mxcadassemblyimp.MdDbEntity())), B ? (B.getImp().ConnectionTempObject(D), n.App.DestroyObject(D), B) : new j(D);
|
|
2088
2161
|
}
|
|
2089
2162
|
setFontFilePath(D) {
|
|
2090
2163
|
this.imp.setFontFilePath(D);
|
|
@@ -2095,9 +2168,9 @@ class HD {
|
|
|
2095
2168
|
});
|
|
2096
2169
|
}
|
|
2097
2170
|
}
|
|
2098
|
-
class
|
|
2171
|
+
class qD {
|
|
2099
2172
|
mxcadassemblyimp;
|
|
2100
|
-
App = new
|
|
2173
|
+
App = new _D();
|
|
2101
2174
|
getCallResult() {
|
|
2102
2175
|
return this.App.getLastCallResult();
|
|
2103
2176
|
}
|
|
@@ -2106,7 +2179,7 @@ class ND {
|
|
|
2106
2179
|
let F = D.z || 0;
|
|
2107
2180
|
D = h.getCurrentDraw().docCoord2Cad(D.x, D.y, F);
|
|
2108
2181
|
}
|
|
2109
|
-
let B = new
|
|
2182
|
+
let B = new o();
|
|
2110
2183
|
return D && D.x && D.y && (B.x = D.x, B.y = D.y, D.z && (B.y = D.z)), B;
|
|
2111
2184
|
}
|
|
2112
2185
|
GetCurrentMxCAD() {
|
|
@@ -2116,43 +2189,43 @@ class ND {
|
|
|
2116
2189
|
return this.App.GetCurrentMxCAD().GetDatabase();
|
|
2117
2190
|
}
|
|
2118
2191
|
}
|
|
2119
|
-
const
|
|
2192
|
+
const gD = "1.0.82", xC = "SharedArrayBuffer" in window, rD = document.currentScript && /unpkg\.com\/mxcad/.test(document.currentScript.src), bC = (E, D = self.location.href) => rD ? `https://unpkg.com/mxcad@${gD}/dist/wasm/2d-st/${E}` : D + E, MC = (E, D = self.location.href) => rD ? `https://unpkg.com/mxcad@${gD}/dist/wasm/2d/${E}` : D + E, PC = (E, D = self.location.href) => rD ? `https://unpkg.com/mxcad@${gD}/dist/wasm/3d/${E}` : D + E, ZD = (E) => new Promise((D, C) => {
|
|
2120
2193
|
const B = document.createElement("script");
|
|
2121
2194
|
B.src = E, B.type = "text/javascript", B.crossOrigin = "anonymous", document.body.appendChild(B), B.onload = () => {
|
|
2122
2195
|
D();
|
|
2123
2196
|
}, B.onerror = (F) => {
|
|
2124
2197
|
C(F);
|
|
2125
2198
|
};
|
|
2126
|
-
}),
|
|
2199
|
+
}), TC = async (E, D, C) => {
|
|
2127
2200
|
const { locateFile: B } = C, F = B(E + ".js");
|
|
2128
|
-
return await
|
|
2201
|
+
return await ZD(F), await globalThis[D](C);
|
|
2129
2202
|
};
|
|
2130
|
-
let
|
|
2131
|
-
async function
|
|
2132
|
-
return new Promise(async (A,
|
|
2203
|
+
let n;
|
|
2204
|
+
async function $D(E, D = xC || !rD ? bC : MC, C, B, F) {
|
|
2205
|
+
return new Promise(async (A, e) => {
|
|
2133
2206
|
try {
|
|
2134
|
-
if (
|
|
2135
|
-
return E && E(
|
|
2136
|
-
const
|
|
2207
|
+
if (n || (n = new qD()), n.mxcadassemblyimp)
|
|
2208
|
+
return E && E(n), A(n);
|
|
2209
|
+
const i = await TC("mxdrawassembly_min", "mxdrawassembly", {
|
|
2137
2210
|
locateFile: D,
|
|
2138
2211
|
wasmBinary: C
|
|
2139
2212
|
});
|
|
2140
|
-
|
|
2141
|
-
let
|
|
2142
|
-
B &&
|
|
2143
|
-
} catch (
|
|
2144
|
-
t
|
|
2213
|
+
n.mxcadassemblyimp = i;
|
|
2214
|
+
let r = new i.McApp();
|
|
2215
|
+
B && r.setFontFilePath(B), r.Init(), n.App.init(r), F && n.App.addNetworkLoadingFont(F), E && E(n), A(n);
|
|
2216
|
+
} catch (t) {
|
|
2217
|
+
e(t);
|
|
2145
2218
|
}
|
|
2146
2219
|
});
|
|
2147
2220
|
}
|
|
2148
|
-
const
|
|
2221
|
+
const kC = (E) => {
|
|
2149
2222
|
let D = null;
|
|
2150
2223
|
if (typeof E == "string" ? D = document.querySelector(E) : E instanceof HTMLCanvasElement && (D = E), !!D)
|
|
2151
2224
|
return D.id || (D.id = Math.random().toString(16).slice(2)), D.id;
|
|
2152
|
-
},
|
|
2225
|
+
}, RC = (E, D) => new Promise((C, B) => {
|
|
2153
2226
|
try {
|
|
2154
2227
|
h.createMxObject({
|
|
2155
|
-
canvasId:
|
|
2228
|
+
canvasId: kC(E),
|
|
2156
2229
|
isCPPMxCAD: !0,
|
|
2157
2230
|
userIdentitySign: D,
|
|
2158
2231
|
callback(F) {
|
|
@@ -2164,28 +2237,28 @@ const TC = (E) => {
|
|
|
2164
2237
|
} catch (F) {
|
|
2165
2238
|
B(F);
|
|
2166
2239
|
}
|
|
2167
|
-
}),
|
|
2168
|
-
PD.state.MxFun || await
|
|
2169
|
-
const { multipleSelect: D, openParameter: C, networkFonts: B, fontspath: F, locateFile: A, wasmBinary:
|
|
2240
|
+
}), OC = async (E) => {
|
|
2241
|
+
PD.state.MxFun || await nC();
|
|
2242
|
+
const { multipleSelect: D, openParameter: C, networkFonts: B, fontspath: F, locateFile: A, wasmBinary: e, canvas: t, userIdentitySign: i, onOpenFileComplete: r, fileUrl: s, onInit: u = () => {
|
|
2170
2243
|
h.setIniset({
|
|
2171
2244
|
EnableIntelliSelect: !0,
|
|
2172
2245
|
IntelliSelectType: 1,
|
|
2173
2246
|
multipleSelect: !!D
|
|
2174
2247
|
});
|
|
2175
2248
|
} } = E || {};
|
|
2176
|
-
await
|
|
2177
|
-
}, A,
|
|
2178
|
-
let l = await
|
|
2179
|
-
const
|
|
2180
|
-
let
|
|
2181
|
-
l.getRenderer().getSize(
|
|
2182
|
-
const
|
|
2183
|
-
return l.initMxCpp(
|
|
2184
|
-
|
|
2185
|
-
}),
|
|
2249
|
+
await $D(() => {
|
|
2250
|
+
}, A, e, F, B), u();
|
|
2251
|
+
let l = await RC(t, i);
|
|
2252
|
+
const c = h.getMxFunTHREE();
|
|
2253
|
+
let a = new c.Vector2();
|
|
2254
|
+
l.getRenderer().getSize(a);
|
|
2255
|
+
const m = n.App.CreateMxCAD(a.width, a.height, l.getCanvas().id, l.isWebgl2(), l.getId());
|
|
2256
|
+
return l.initMxCpp(m), l.addEvent("openFileComplete", () => {
|
|
2257
|
+
r && r();
|
|
2258
|
+
}), s && m.openWebFile(s, void 0, !0, C), m;
|
|
2186
2259
|
};
|
|
2187
|
-
async function
|
|
2188
|
-
const E = new
|
|
2260
|
+
async function LC() {
|
|
2261
|
+
const E = new O();
|
|
2189
2262
|
E.setMessage(`
|
|
2190
2263
|
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);
|
|
2191
2264
|
let D = await E.go();
|
|
@@ -2195,7 +2268,7 @@ async function SC() {
|
|
|
2195
2268
|
if (C.length <= 0)
|
|
2196
2269
|
return;
|
|
2197
2270
|
let B = h.screenCoordLong2Doc(50);
|
|
2198
|
-
C =
|
|
2271
|
+
C = Q.b64Encode(C);
|
|
2199
2272
|
const F = {
|
|
2200
2273
|
postx: D.x,
|
|
2201
2274
|
posty: D.y,
|
|
@@ -2204,86 +2277,86 @@ async function SC() {
|
|
|
2204
2277
|
};
|
|
2205
2278
|
h.call("Mx_Text", F);
|
|
2206
2279
|
}
|
|
2207
|
-
class
|
|
2280
|
+
class vC extends TD {
|
|
2208
2281
|
getGripPoints() {
|
|
2209
2282
|
const { x: D, y: C, z: B } = this.center;
|
|
2210
|
-
let F = new THREE.Vector3(D, C + this.radius, B), A = new THREE.Vector3(D, C - this.radius, B),
|
|
2211
|
-
return [this.center, F, A,
|
|
2283
|
+
let F = new THREE.Vector3(D, C + this.radius, B), A = new THREE.Vector3(D, C - this.radius, B), e = new THREE.Vector3(D - this.radius, C, B), t = new THREE.Vector3(D + this.radius, C, B);
|
|
2284
|
+
return [this.center, F, A, e, t];
|
|
2212
2285
|
}
|
|
2213
2286
|
moveGripPointsAt(D, C) {
|
|
2214
|
-
const [B, F, A,
|
|
2215
|
-
return D === 0 && (this.center = B.add(C)), D === 1 && (this.radius = F.add(C).distanceTo(this.center)), D === 2 && (this.radius = A.add(C).distanceTo(this.center)), D === 3 && (this.radius =
|
|
2287
|
+
const [B, F, A, e, t] = this.getGripPoints();
|
|
2288
|
+
return D === 0 && (this.center = B.add(C)), D === 1 && (this.radius = F.add(C).distanceTo(this.center)), D === 2 && (this.radius = A.add(C).distanceTo(this.center)), D === 3 && (this.radius = e.add(C).distanceTo(this.center)), D === 4 && (this.radius = t.add(C).distanceTo(this.center)), !0;
|
|
2216
2289
|
}
|
|
2217
2290
|
}
|
|
2218
|
-
const
|
|
2219
|
-
const [D, C, B] = E, { x: F, y: A, z:
|
|
2220
|
-
return new THREE.Vector3(
|
|
2291
|
+
const xD = (E) => {
|
|
2292
|
+
const [D, C, B] = E, { x: F, y: A, z: e } = D, { x: t, y: i, z: r } = C, { x: s, y: u, z: l } = B, c = A * r - i * e - A * l + u * e + i * l - u * r, a = -(F * r - t * e - F * l + s * e + t * l - s * r), m = F * i - t * A - F * u + s * A + t * u - s * i, w = -(F * i * l - F * u * r - t * A * l + t * u * e + s * A * r - s * i * e), f = 2 * (t - F), p = 2 * (i - A), d = 2 * (r - e), b = F * F + A * A + e * e - t * t - i * i - r * r, x = 2 * (s - F), g = 2 * (u - A), M = 2 * (l - e), S = F * F + A * A + e * e - s * s - u * u - l * l, Y = -(a * d * S - a * M * b - p * m * S + p * M * w + g * m * b - g * d * w) / (c * p * M - c * g * d - f * a * M + f * g * m + x * a * d - x * p * m), EC = (c * d * S - c * M * b - f * m * S + f * M * w + x * m * b - x * d * w) / (c * p * M - c * g * d - f * a * M + f * g * m + x * a * d - x * p * m), FC = -(c * p * S - c * g * b - f * a * S + f * g * w + x * a * b - x * p * w) / (c * p * M - c * g * d - f * a * M + f * g * m + x * a * d - x * p * m);
|
|
2293
|
+
return new THREE.Vector3(Y, EC, FC);
|
|
2221
2294
|
};
|
|
2222
|
-
function
|
|
2223
|
-
const E = new
|
|
2224
|
-
let D = new
|
|
2225
|
-
|
|
2295
|
+
function JD() {
|
|
2296
|
+
const E = new O();
|
|
2297
|
+
let D = new vC(), C = n.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2298
|
+
I.use(D), D.closed = !1, D.setColor(C);
|
|
2226
2299
|
let B = 0, F = "default", A = !0;
|
|
2227
|
-
const
|
|
2300
|
+
const e = () => {
|
|
2228
2301
|
E.setUserDraw(
|
|
2229
|
-
(
|
|
2230
|
-
D.radius = A ? D.center.distanceTo(
|
|
2302
|
+
(a, m) => {
|
|
2303
|
+
D.radius = A ? D.center.distanceTo(a) : D.center.distanceTo(a) / 2, m.drawCustomEntity(D), m.drawLine(D.center, a);
|
|
2231
2304
|
}
|
|
2232
2305
|
);
|
|
2233
|
-
},
|
|
2306
|
+
}, t = (a) => {
|
|
2234
2307
|
if (F === "default") {
|
|
2235
|
-
if (
|
|
2308
|
+
if (a === T.kOk) {
|
|
2236
2309
|
if (B === 0)
|
|
2237
2310
|
E.setMessage(`
|
|
2238
|
-
\u6307\u5B9A\u5706\u7684\u534A\u5F84:`), E.setKeyWords("[\u76F4\u5F84(D)]"), D.center = E.value(),
|
|
2311
|
+
\u6307\u5B9A\u5706\u7684\u534A\u5F84:`), E.setKeyWords("[\u76F4\u5F84(D)]"), D.center = E.value(), e();
|
|
2239
2312
|
else if (B === 1)
|
|
2240
|
-
return
|
|
2313
|
+
return n.GetCurrentMxCAD().DrawEntity(new W(D.center.x, D.center.y, 0, D.radius)), !0;
|
|
2241
2314
|
B++;
|
|
2242
2315
|
}
|
|
2243
|
-
|
|
2316
|
+
a === T.kKeyWord && E.isKeyWordPicked("D") && (A = !1, e(), E.setMessage(`
|
|
2244
2317
|
\u6307\u5B9A\u5706\u7684\u76F4\u5F84:`), E.setKeyWords(""));
|
|
2245
2318
|
}
|
|
2246
2319
|
};
|
|
2247
|
-
let
|
|
2248
|
-
const
|
|
2320
|
+
let i = [];
|
|
2321
|
+
const r = (a) => {
|
|
2249
2322
|
if (F === "3P" && (E.setMessage(`
|
|
2250
|
-
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E00\u4E2A\u70B9:`),
|
|
2251
|
-
if (B === 0 && (
|
|
2252
|
-
|
|
2323
|
+
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E00\u4E2A\u70B9:`), a === T.kOk)) {
|
|
2324
|
+
if (B === 0 && (i.push(E.value()), E.setUserDraw((m, w) => {
|
|
2325
|
+
w.drawLine(i[0], m);
|
|
2253
2326
|
}), E.setMessage(`
|
|
2254
|
-
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E8C\u4E2A\u70B9:`)), B === 1 && (
|
|
2255
|
-
const [
|
|
2256
|
-
D.center =
|
|
2257
|
-
|
|
2327
|
+
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E8C\u4E2A\u70B9:`)), B === 1 && (i.push(E.value()), E.setUserDraw((m, w) => {
|
|
2328
|
+
const [f, p] = i, d = m;
|
|
2329
|
+
D.center = xD([
|
|
2330
|
+
f,
|
|
2258
2331
|
p,
|
|
2259
2332
|
d
|
|
2260
|
-
]), D.radius = D.center.distanceTo(
|
|
2333
|
+
]), D.radius = D.center.distanceTo(f), w.drawCustomEntity(D);
|
|
2261
2334
|
}), E.setMessage(`
|
|
2262
2335
|
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E09\u4E2A\u70B9:`)), B === 2)
|
|
2263
|
-
return
|
|
2336
|
+
return i.push(E.value()), D.center = xD(i), D.radius = D.center.distanceTo(i[0]), n.GetCurrentMxCAD().DrawEntity(new W(D.center.x, D.center.y, 0, D.radius)), !0;
|
|
2264
2337
|
B++;
|
|
2265
2338
|
}
|
|
2266
2339
|
};
|
|
2267
|
-
let
|
|
2268
|
-
const u = (
|
|
2269
|
-
new THREE.Line3(
|
|
2270
|
-
}, l = (
|
|
2340
|
+
let s;
|
|
2341
|
+
const u = (a, m) => {
|
|
2342
|
+
new THREE.Line3(a, m).getCenter(D.center), D.radius = m.distanceTo(a) / 2;
|
|
2343
|
+
}, l = (a) => {
|
|
2271
2344
|
if (F === "2P" && (E.setMessage(`
|
|
2272
|
-
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E00\u4E2A\u7AEF\u70B9:`),
|
|
2273
|
-
if (B === 0 && (
|
|
2274
|
-
u(
|
|
2345
|
+
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E00\u4E2A\u7AEF\u70B9:`), a === T.kOk)) {
|
|
2346
|
+
if (B === 0 && (s = E.value(), E.setUserDraw((m, w) => {
|
|
2347
|
+
u(s, m), w.drawCustomEntity(D), w.drawLine(s, m);
|
|
2275
2348
|
}), E.setMessage(`
|
|
2276
2349
|
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E8C\u4E2A\u7AEF\u70B9:`)), B === 1)
|
|
2277
|
-
return u(
|
|
2350
|
+
return u(s, E.value()), n.GetCurrentMxCAD().DrawEntity(new W(D.center.x, D.center.y, 0, D.radius)), !0;
|
|
2278
2351
|
B++;
|
|
2279
2352
|
}
|
|
2280
|
-
},
|
|
2353
|
+
}, c = (a) => {
|
|
2281
2354
|
if (F === "T") {
|
|
2282
2355
|
if (E.setMessage(`
|
|
2283
|
-
\u6307\u5B9A\u5BF9\u8C61\u4E0E\u5706\u7684\u7B2C\u4E00\u4E2A\u5207\u70B9:`),
|
|
2356
|
+
\u6307\u5B9A\u5BF9\u8C61\u4E0E\u5706\u7684\u7B2C\u4E00\u4E2A\u5207\u70B9:`), a === T.kOk) {
|
|
2284
2357
|
if (B === 0) {
|
|
2285
|
-
const
|
|
2286
|
-
console.log(
|
|
2358
|
+
const m = E.value();
|
|
2359
|
+
console.log(m), h.getCurrentDraw();
|
|
2287
2360
|
}
|
|
2288
2361
|
B++;
|
|
2289
2362
|
}
|
|
@@ -2294,31 +2367,31 @@ function ZD() {
|
|
|
2294
2367
|
`
|
|
2295
2368
|
\u6307\u5B9A\u5706\u7684\u5706\u5FC3\u6216[\u4E09\u70B9(3P)/\u4E24\u70B9(2P)/\u5207\u70B9\u3001\u5207\u70B9\u3001\u534A\u5F84(T)]:`
|
|
2296
2369
|
), E.setKeyWords("3P 2P T"), E.goWhile(
|
|
2297
|
-
(
|
|
2298
|
-
if (
|
|
2370
|
+
(a) => {
|
|
2371
|
+
if (a === T.kKeyWord && (E.isKeyWordPicked("3P") ? F = "3P" : E.isKeyWordPicked("2P") ? F = "2P" : E.isKeyWordPicked("T") && (F = "T")), t(a))
|
|
2299
2372
|
return { exit: !0 };
|
|
2300
|
-
if (
|
|
2373
|
+
if (r(a))
|
|
2301
2374
|
return { exit: !0 };
|
|
2302
|
-
if (l(
|
|
2375
|
+
if (l(a))
|
|
2303
2376
|
return { exit: !0 };
|
|
2304
|
-
if (
|
|
2377
|
+
if (c(a))
|
|
2305
2378
|
return { exit: !0 };
|
|
2306
2379
|
},
|
|
2307
|
-
(
|
|
2308
|
-
|
|
2380
|
+
(a) => {
|
|
2381
|
+
a === T.kCancel && n.GetCurrentMxCAD().DrawEntity(new W(D.center.x, D.center.y, 0, D.radius));
|
|
2309
2382
|
}
|
|
2310
2383
|
);
|
|
2311
2384
|
}
|
|
2312
2385
|
h.on("init", () => {
|
|
2313
|
-
h.addCommand("Mx_Circle",
|
|
2386
|
+
h.addCommand("Mx_Circle", JD);
|
|
2314
2387
|
});
|
|
2315
2388
|
const bD = () => PD.state.MxFun.stopRunCommand();
|
|
2316
|
-
function
|
|
2389
|
+
function nD(E, D, C, B) {
|
|
2317
2390
|
const F = E - C, A = D - B;
|
|
2318
|
-
let
|
|
2319
|
-
return F == 0 ?
|
|
2391
|
+
let e = 0;
|
|
2392
|
+
return F == 0 ? e = Math.PI / 2 : e = Math.atan(Math.abs(A / F)), F < 0 && A >= 0 ? e = Math.PI - e : F < 0 && A < 0 ? e = Math.PI + e : F >= 0 && A < 0 && (e = Math.PI * 2 - e), e;
|
|
2320
2393
|
}
|
|
2321
|
-
const
|
|
2394
|
+
const L = (E, D, C) => {
|
|
2322
2395
|
const B = () => {
|
|
2323
2396
|
E.go((F) => {
|
|
2324
2397
|
if (F === T.kKeyWord && C() && B(), F === T.kOk && D() && B(), F === T.kNone && B(), F === T.kCancel)
|
|
@@ -2327,56 +2400,56 @@ const O = (E, D, C) => {
|
|
|
2327
2400
|
};
|
|
2328
2401
|
return B;
|
|
2329
2402
|
};
|
|
2330
|
-
async function
|
|
2331
|
-
const E = new
|
|
2332
|
-
let D = new
|
|
2403
|
+
async function YD() {
|
|
2404
|
+
const E = new O();
|
|
2405
|
+
let D = new CD(), C = n.GetCurrentDatabase().GetCurrentlyDrawColor(), B = [];
|
|
2333
2406
|
E.setMessage(`
|
|
2334
2407
|
\u6307\u5B9A\u7B2C\u4E00\u70B9:`);
|
|
2335
2408
|
let F = await E.go();
|
|
2336
2409
|
if (!F)
|
|
2337
2410
|
return;
|
|
2338
|
-
E.setUserDraw((
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
}),
|
|
2411
|
+
E.setUserDraw((e, t) => {
|
|
2412
|
+
t.setColor(C), B.forEach((i) => {
|
|
2413
|
+
i.color = C, t.drawCustomEntity(i);
|
|
2414
|
+
}), t.drawLine(F, e);
|
|
2342
2415
|
});
|
|
2343
2416
|
const A = () => {
|
|
2344
2417
|
E.setMessage(`
|
|
2345
2418
|
\u6307\u5B9A\u4E0B\u4E00\u4E2A\u70B9:`), B.length > 1 ? E.setKeyWords("[\u9000\u51FA(E)/\u95ED\u5408(C)/\u653E\u5F03(U)]") : E.setKeyWords("[\u9000\u51FA(E)/\u653E\u5F03(U)]");
|
|
2346
2419
|
};
|
|
2347
2420
|
A(), E.goWhile(
|
|
2348
|
-
(
|
|
2349
|
-
if (
|
|
2421
|
+
(e) => {
|
|
2422
|
+
if (e === T.kOk && (D = new CD(), I.use(D), D.pt1 = F, D.pt2 = E.value(), F = D.pt2.clone(), B.push(D), A()), e === T.kKeyWord) {
|
|
2350
2423
|
if (E.isKeyWordPicked("E"))
|
|
2351
2424
|
bD();
|
|
2352
2425
|
else if (E.isKeyWordPicked("C")) {
|
|
2353
|
-
const
|
|
2354
|
-
return
|
|
2426
|
+
const t = new CD();
|
|
2427
|
+
return t.pt1 = F.clone(), t.pt2 = B[0].pt1.clone(), I.use(t), B.push(t), F = t.pt2.clone(), bD(), { exit: !0 };
|
|
2355
2428
|
} else if (E.isKeyWordPicked("U")) {
|
|
2356
|
-
const
|
|
2357
|
-
|
|
2429
|
+
const t = B.pop();
|
|
2430
|
+
t && (F = t.pt1);
|
|
2358
2431
|
}
|
|
2359
2432
|
}
|
|
2360
2433
|
},
|
|
2361
|
-
(
|
|
2362
|
-
|
|
2434
|
+
(e) => (e != T.kCancel && B.forEach((t) => {
|
|
2435
|
+
n.GetCurrentMxCAD().DrawEntity(new BD(t.pt1.x, t.pt1.y, 0, t.pt2.x, t.pt2.y, 0));
|
|
2363
2436
|
}), { exit: !0 })
|
|
2364
2437
|
);
|
|
2365
2438
|
}
|
|
2366
|
-
async function
|
|
2367
|
-
let E = new
|
|
2439
|
+
async function SC() {
|
|
2440
|
+
let E = new G();
|
|
2368
2441
|
for (E.setMessage("\u6307\u5B9A\u70B9"); ; ) {
|
|
2369
2442
|
let D = await E.go();
|
|
2370
2443
|
if (D == null)
|
|
2371
2444
|
break;
|
|
2372
|
-
|
|
2445
|
+
n.GetCurrentMxCAD().DrawEntity(new wD(D));
|
|
2373
2446
|
}
|
|
2374
2447
|
}
|
|
2375
2448
|
h.on("init", () => {
|
|
2376
|
-
h.addCommand("Mx_Line",
|
|
2449
|
+
h.addCommand("Mx_Line", YD), h.addCommand("Mx_Point", SC);
|
|
2377
2450
|
});
|
|
2378
|
-
async function
|
|
2379
|
-
const E = new
|
|
2451
|
+
async function IC() {
|
|
2452
|
+
const E = new O();
|
|
2380
2453
|
E.setMessage(`
|
|
2381
2454
|
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);
|
|
2382
2455
|
let D = await E.go();
|
|
@@ -2387,7 +2460,7 @@ async function vC() {
|
|
|
2387
2460
|
if (C.length <= 0)
|
|
2388
2461
|
return;
|
|
2389
2462
|
let B = h.screenCoordLong2Doc(50);
|
|
2390
|
-
C =
|
|
2463
|
+
C = Q.b64Encode(C);
|
|
2391
2464
|
const F = {
|
|
2392
2465
|
postx: D.x,
|
|
2393
2466
|
posty: D.y,
|
|
@@ -2396,11 +2469,11 @@ async function vC() {
|
|
|
2396
2469
|
};
|
|
2397
2470
|
h.call("Mx_MText", F);
|
|
2398
2471
|
}
|
|
2399
|
-
async function
|
|
2400
|
-
const E = new
|
|
2401
|
-
let D =
|
|
2402
|
-
const C = new
|
|
2403
|
-
|
|
2472
|
+
async function QD() {
|
|
2473
|
+
const E = new O();
|
|
2474
|
+
let D = n.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2475
|
+
const C = new sC();
|
|
2476
|
+
I.use(C), C.color = D, E.setMessage(`
|
|
2404
2477
|
\u6307\u5B9A\u8D77\u70B9:`);
|
|
2405
2478
|
let B;
|
|
2406
2479
|
E.setUserDraw((F, A) => {
|
|
@@ -2416,59 +2489,59 @@ async function JD() {
|
|
|
2416
2489
|
},
|
|
2417
2490
|
(F) => {
|
|
2418
2491
|
if (F != T.kCancel) {
|
|
2419
|
-
let A =
|
|
2420
|
-
for (let
|
|
2421
|
-
|
|
2422
|
-
A.DrawEntity(
|
|
2492
|
+
let A = n.GetCurrentMxCAD(), e = new FD();
|
|
2493
|
+
for (let t = 0; t < C.points.length; t++)
|
|
2494
|
+
e.addVertexAt(C.points[t]);
|
|
2495
|
+
A.DrawEntity(e);
|
|
2423
2496
|
}
|
|
2424
2497
|
}
|
|
2425
2498
|
);
|
|
2426
2499
|
}
|
|
2427
2500
|
h.on("init", () => {
|
|
2428
|
-
h.addCommand("Mx_Pline",
|
|
2501
|
+
h.addCommand("Mx_Pline", QD);
|
|
2429
2502
|
});
|
|
2430
|
-
async function
|
|
2431
|
-
const E = new
|
|
2503
|
+
async function XD() {
|
|
2504
|
+
const E = new O();
|
|
2432
2505
|
E.setMessage(`
|
|
2433
2506
|
\u6307\u5B9A\u4E00\u70B9:`);
|
|
2434
|
-
let D = await E.go(), C = new
|
|
2507
|
+
let D = await E.go(), C = new W();
|
|
2435
2508
|
C.setCenter(D.x, D.y, D.z);
|
|
2436
|
-
let B = 5, F =
|
|
2437
|
-
E.setUserDraw((A,
|
|
2438
|
-
|
|
2439
|
-
let
|
|
2440
|
-
for (let
|
|
2441
|
-
let
|
|
2442
|
-
|
|
2509
|
+
let B = 5, F = n.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2510
|
+
E.setUserDraw((A, e) => {
|
|
2511
|
+
e.setColor(F), C.radius = D.distanceTo(A);
|
|
2512
|
+
let t = C.getEndParam().val, r = C.getDistAtParam(t).val / B, s = 0, u = new THREE.Vector3(), l = new THREE.Vector3();
|
|
2513
|
+
for (let c = 0; c < B; c++) {
|
|
2514
|
+
let a = C.getPointAtDist(s).val;
|
|
2515
|
+
s += r, c > 0 ? e.drawMcDbLine(a.x, a.y, a.z, u.x, u.y, u.z) : l = new THREE.Vector3(a.x, a.y, a.z), c == B - 1 && e.drawMcDbLine(a.x, a.y, a.z, l.x, l.y, l.z), u = new THREE.Vector3(a.x, a.y, a.z);
|
|
2443
2516
|
}
|
|
2444
2517
|
}), E.setMessage(`
|
|
2445
2518
|
\u6307\u5B9A\u4E8C\u70B9:`), await E.go(), E.drawReserve();
|
|
2446
2519
|
}
|
|
2447
|
-
h.addCommand("Mx_Polygon",
|
|
2520
|
+
h.addCommand("Mx_Polygon", XD);
|
|
2448
2521
|
function jC(E, D, C) {
|
|
2449
|
-
const B = E.x, F = D.x, A = C.x,
|
|
2450
|
-
return new THREE.Vector3(
|
|
2522
|
+
const B = E.x, F = D.x, A = C.x, e = E.y, t = D.y, i = C.y, r = B - F, s = e - t, u = B - A, l = e - i, c = (B * B - F * F + (e * e - t * t)) / 2, a = (B * B - A * A + (e * e - i * i)) / 2, m = s * u - r * l, w = -(l * c - s * a) / m, f = -(r * a - u * c) / m;
|
|
2523
|
+
return new THREE.Vector3(w, f, 0);
|
|
2451
2524
|
}
|
|
2452
|
-
function
|
|
2525
|
+
function GC(E, D) {
|
|
2453
2526
|
const C = E.x, B = E.y, F = D.x, A = D.y;
|
|
2454
2527
|
return Math.sqrt((C - F) * (C - F) + (B - A) * (B - A));
|
|
2455
2528
|
}
|
|
2456
|
-
function
|
|
2529
|
+
function VC(E, D, C) {
|
|
2457
2530
|
let B;
|
|
2458
2531
|
E < C ? B = C - E : B = C - E + 360;
|
|
2459
2532
|
let F;
|
|
2460
2533
|
return E < D ? F = D - E : F = D - E + 360, F > B;
|
|
2461
2534
|
}
|
|
2462
|
-
function
|
|
2463
|
-
const B = E.x, F = D.x, A = E.y,
|
|
2464
|
-
let
|
|
2465
|
-
return
|
|
2466
|
-
sin:
|
|
2467
|
-
cos:
|
|
2468
|
-
angle:
|
|
2535
|
+
function sD(E, D, C) {
|
|
2536
|
+
const B = E.x, F = D.x, A = E.y, e = D.y;
|
|
2537
|
+
let t, i, r;
|
|
2538
|
+
return t = (A - e) / C, i = (B - F) / C, i >= 0.99999 && (i = 0.99999), i <= -0.99999 && (i = -0.99999), r = Math.acos(i), r = r / Math.PI * 180, t < -0.05 && (r = 360 - r), {
|
|
2539
|
+
sin: t,
|
|
2540
|
+
cos: i,
|
|
2541
|
+
angle: r
|
|
2469
2542
|
};
|
|
2470
2543
|
}
|
|
2471
|
-
class
|
|
2544
|
+
class fD extends TD {
|
|
2472
2545
|
constructor() {
|
|
2473
2546
|
super(), this._propertyDbKeys = [...this._propertyDbKeys, "bulge"];
|
|
2474
2547
|
}
|
|
@@ -2476,24 +2549,24 @@ class gD extends TD {
|
|
|
2476
2549
|
return "MxDbCircle";
|
|
2477
2550
|
}
|
|
2478
2551
|
create() {
|
|
2479
|
-
return new
|
|
2552
|
+
return new fD();
|
|
2480
2553
|
}
|
|
2481
2554
|
getArcBulge(D, C, B) {
|
|
2482
2555
|
const F = D.distanceTo(C);
|
|
2483
|
-
let
|
|
2556
|
+
let t = 2 * new THREE.Line3(D, C).getCenter(
|
|
2484
2557
|
new THREE.Vector3()
|
|
2485
2558
|
).distanceTo(B) / F;
|
|
2486
|
-
return
|
|
2559
|
+
return t > 0.9999 && t < 1.0001 ? t = 1 : t < -0.9999 && t > -1.0001 ? t = -1 : Math.abs(t) < 1e-10 && (t = 0), t;
|
|
2487
2560
|
}
|
|
2488
2561
|
getArcMidPoint(D, C, B, F, A) {
|
|
2489
|
-
const
|
|
2490
|
-
let
|
|
2491
|
-
const
|
|
2492
|
-
|
|
2562
|
+
const e = D, t = B * Math.PI / 180;
|
|
2563
|
+
let i = F * Math.PI / 180;
|
|
2564
|
+
const r = new THREE.Vector3(), s = new THREE.Vector3();
|
|
2565
|
+
r.x = e.x + C * Math.cos(t), r.y = e.y + C * Math.sin(t), s.x = e.x + C * Math.cos(i), s.y = e.y + C * Math.sin(i);
|
|
2493
2566
|
const u = C;
|
|
2494
|
-
(A ? B < F : B > F) && (
|
|
2567
|
+
(A ? B < F : B > F) && (i += Math.PI * 2);
|
|
2495
2568
|
const l = new THREE.Vector3();
|
|
2496
|
-
return l.x =
|
|
2569
|
+
return l.x = e.x + u * Math.cos((t + i) / 2), l.y = e.y + u * Math.sin((t + i) / 2), [r, l, s, this.center];
|
|
2497
2570
|
}
|
|
2498
2571
|
getGripPoints() {
|
|
2499
2572
|
return this.getArcMidPoint(
|
|
@@ -2512,72 +2585,72 @@ class gD extends TD {
|
|
|
2512
2585
|
}
|
|
2513
2586
|
upDatePoints(D, C, B) {
|
|
2514
2587
|
D[C].add(B);
|
|
2515
|
-
const [F, A,
|
|
2516
|
-
this.center = jC(F,
|
|
2517
|
-
const
|
|
2518
|
-
this.clockwise =
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
), this.startAngle = THREE.MathUtils.degToRad(
|
|
2588
|
+
const [F, A, e] = D;
|
|
2589
|
+
this.center = jC(F, e, A), this.radius = GC(A, this.center);
|
|
2590
|
+
const t = sD(F, this.center, this.radius), i = sD(e, this.center, this.radius), r = sD(A, this.center, this.radius);
|
|
2591
|
+
this.clockwise = VC(
|
|
2592
|
+
i.angle,
|
|
2593
|
+
t.angle,
|
|
2594
|
+
r.angle
|
|
2595
|
+
), this.startAngle = THREE.MathUtils.degToRad(t.angle), this.endAngle = THREE.MathUtils.degToRad(i.angle);
|
|
2523
2596
|
}
|
|
2524
2597
|
}
|
|
2525
|
-
async function
|
|
2526
|
-
let E =
|
|
2527
|
-
const D = new
|
|
2598
|
+
async function DC() {
|
|
2599
|
+
let E = n.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2600
|
+
const D = new O();
|
|
2528
2601
|
D.setMessage(`
|
|
2529
2602
|
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`), D.setKeyWords("[\u5706\u5FC3(C)]");
|
|
2530
|
-
let C = new
|
|
2531
|
-
C.closed = !1,
|
|
2603
|
+
let C = new fD();
|
|
2604
|
+
C.closed = !1, I.use(C);
|
|
2532
2605
|
let B, F, A;
|
|
2533
|
-
const
|
|
2606
|
+
const e = L(
|
|
2534
2607
|
D,
|
|
2535
2608
|
() => {
|
|
2536
2609
|
B = D.value(), D.setMessage(`
|
|
2537
2610
|
\u6307\u5B9A\u5706\u5F27\u7684\u7B2C\u4E8C\u4E2A\u70B9:`), D.setKeyWords("[\u5706\u5FC3(C)/\u7AEF\u70B9(E)]"), D.setUserDraw((p, d) => {
|
|
2538
2611
|
d.setColor(E), d.drawLine(B, p);
|
|
2539
|
-
}),
|
|
2612
|
+
}), m();
|
|
2540
2613
|
},
|
|
2541
2614
|
() => {
|
|
2542
2615
|
if (D.isKeyWordPicked("C")) {
|
|
2543
|
-
const p = new
|
|
2616
|
+
const p = new DD();
|
|
2544
2617
|
p.color = E, C.center = D.value(), p.center = D.value(), D.setMessage(`
|
|
2545
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3:`), D.setKeyWords(""),
|
|
2618
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3:`), D.setKeyWords(""), i();
|
|
2546
2619
|
} else
|
|
2547
2620
|
return !0;
|
|
2548
2621
|
}
|
|
2549
2622
|
);
|
|
2550
|
-
let
|
|
2551
|
-
const
|
|
2623
|
+
let t;
|
|
2624
|
+
const i = L(
|
|
2552
2625
|
D,
|
|
2553
2626
|
() => {
|
|
2554
|
-
|
|
2627
|
+
t = D.value(), A = new DD(), A.closed = !1, I.use(A), A.color = E, A.center = t, C.center = t, D.setMessage(`
|
|
2555
2628
|
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`), D.setUserDraw((p, d) => {
|
|
2556
|
-
d.drawCustomEntity(A), d.setColor(E), d.drawLine(
|
|
2629
|
+
d.drawCustomEntity(A), d.setColor(E), d.drawLine(t, p);
|
|
2557
2630
|
}), u();
|
|
2558
2631
|
},
|
|
2559
2632
|
() => {
|
|
2560
2633
|
}
|
|
2561
2634
|
);
|
|
2562
|
-
let
|
|
2563
|
-
const u =
|
|
2635
|
+
let r, s;
|
|
2636
|
+
const u = L(
|
|
2564
2637
|
D,
|
|
2565
2638
|
() => {
|
|
2566
|
-
|
|
2639
|
+
r = D.value(), A.endPoint = r, D.setMessage(
|
|
2567
2640
|
`
|
|
2568
2641
|
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u89D2\u5EA6(A)/\u5F26\u957F(L)/\u4FEE\u6539\u534A\u5F84(R)]:`
|
|
2569
|
-
), D.setKeyWords("A L R"),
|
|
2570
|
-
A.startPoint = p,
|
|
2571
|
-
}),
|
|
2642
|
+
), D.setKeyWords("A L R"), s = new CD(), s.setDashLineDisplay(!0), s.setDashArray(0.05), s.setLineWidth(2), s.setColor("#ffd30d"), s.pt1 = A.center, D.setUserDraw((p, d) => {
|
|
2643
|
+
A.startPoint = p, s.pt2 = p, d.drawCustomEntity(A), d.drawCustomEntity(s);
|
|
2644
|
+
}), c();
|
|
2572
2645
|
},
|
|
2573
2646
|
() => {
|
|
2574
2647
|
}
|
|
2575
2648
|
);
|
|
2576
2649
|
let l;
|
|
2577
|
-
const
|
|
2650
|
+
const c = L(
|
|
2578
2651
|
D,
|
|
2579
2652
|
() => {
|
|
2580
|
-
l = D.value(), A.startPoint = l, A.endPoint =
|
|
2653
|
+
l = D.value(), A.startPoint = l, A.endPoint = r, w.DrawArc(A.center.x, A.center.y, A.radius, A.startAngle, A.endAngle);
|
|
2581
2654
|
},
|
|
2582
2655
|
() => {
|
|
2583
2656
|
if (D.isKeyWordPicked("A"))
|
|
@@ -2585,14 +2658,14 @@ async function QD() {
|
|
|
2585
2658
|
`
|
|
2586
2659
|
\u6307\u5B9A\u5706\u5F27\u7684\u5939\u89D2(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u4FEE\u6539\u534A\u5F84(R)]:`
|
|
2587
2660
|
), D.setKeyWords("R"), D.setUserDraw((p, d) => {
|
|
2588
|
-
A.startPoint = p, d.drawCustomEntity(A), d.drawCustomEntity(
|
|
2661
|
+
A.startPoint = p, d.drawCustomEntity(A), d.drawCustomEntity(s);
|
|
2589
2662
|
}), !0;
|
|
2590
2663
|
if (D.isKeyWordPicked("L"))
|
|
2591
2664
|
return D.setMessage(
|
|
2592
2665
|
`
|
|
2593
2666
|
\u6307\u5B9A\u5706\u5F27\u7684\u5939\u89D2(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u4FEE\u6539\u534A\u5F84(R)]:`
|
|
2594
2667
|
), D.setKeyWords("R"), D.setUserDraw((p, d) => {
|
|
2595
|
-
A.startPoint = p, d.drawCustomEntity(A), d.drawCustomEntity(
|
|
2668
|
+
A.startPoint = p, d.drawCustomEntity(A), d.drawCustomEntity(s);
|
|
2596
2669
|
}), !0;
|
|
2597
2670
|
if (D.isKeyWordPicked("R"))
|
|
2598
2671
|
D.setMessage(
|
|
@@ -2605,37 +2678,37 @@ async function QD() {
|
|
|
2605
2678
|
return !0;
|
|
2606
2679
|
}
|
|
2607
2680
|
);
|
|
2608
|
-
let
|
|
2609
|
-
const
|
|
2681
|
+
let a;
|
|
2682
|
+
const m = L(
|
|
2610
2683
|
D,
|
|
2611
2684
|
() => {
|
|
2612
|
-
|
|
2613
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9:`), F = new
|
|
2614
|
-
F.point1 = B, F.point3 =
|
|
2615
|
-
}),
|
|
2685
|
+
a = D.value(), D.setMessage(`
|
|
2686
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9:`), F = new oC(), F.color = E, F.autoClockwise = !0, F.closed = !1, I.use(F), D.setUserDraw((p, d) => {
|
|
2687
|
+
F.point1 = B, F.point3 = a, F.point2 = p, d.drawCustomEntity(F);
|
|
2688
|
+
}), f();
|
|
2616
2689
|
},
|
|
2617
2690
|
() => {
|
|
2618
2691
|
if (D.isKeyWordPicked("C"))
|
|
2619
|
-
A = new
|
|
2692
|
+
A = new DD(), A.closed = !1, I.use(A), A.color = E, D.setMessage(`
|
|
2620
2693
|
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`), D.setKeyWords(""), D.setUserDraw((p, d) => {
|
|
2621
2694
|
A.startPoint = B, d.drawLine(p, A.startPoint);
|
|
2622
|
-
}),
|
|
2695
|
+
}), i();
|
|
2623
2696
|
else if (D.isKeyWordPicked("E"))
|
|
2624
|
-
A = new
|
|
2697
|
+
A = new DD(), A.closed = !1, I.use(A), A.color = E, D.setMessage(`
|
|
2625
2698
|
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`), D.setKeyWords(""), D.setUserDraw((p, d) => {
|
|
2626
2699
|
A.startPoint = B, d.drawLine(p, A.startPoint);
|
|
2627
|
-
}),
|
|
2700
|
+
}), i();
|
|
2628
2701
|
else
|
|
2629
2702
|
return !0;
|
|
2630
2703
|
}
|
|
2631
2704
|
);
|
|
2632
|
-
let
|
|
2633
|
-
const
|
|
2705
|
+
let w = n.GetCurrentMxCAD();
|
|
2706
|
+
const f = L(
|
|
2634
2707
|
D,
|
|
2635
2708
|
() => {
|
|
2636
|
-
F.point1 = B, F.point2 = D.value(), F.point3 =
|
|
2637
|
-
let p = new
|
|
2638
|
-
p.computeArc(F.point1.x, F.point1.y, F.point3.x, F.point3.y, F.point2.x, F.point2.y),
|
|
2709
|
+
F.point1 = B, F.point2 = D.value(), F.point3 = a;
|
|
2710
|
+
let p = new AD();
|
|
2711
|
+
p.computeArc(F.point1.x, F.point1.y, F.point3.x, F.point3.y, F.point2.x, F.point2.y), w.DrawEntity(p);
|
|
2639
2712
|
},
|
|
2640
2713
|
() => {
|
|
2641
2714
|
if (D.isKeyWordPicked("C"))
|
|
@@ -2646,85 +2719,85 @@ async function QD() {
|
|
|
2646
2719
|
return !0;
|
|
2647
2720
|
}
|
|
2648
2721
|
);
|
|
2649
|
-
|
|
2722
|
+
e();
|
|
2650
2723
|
}
|
|
2651
2724
|
h.on("init", () => {
|
|
2652
|
-
h.addCommand("Mx_Arc",
|
|
2725
|
+
h.addCommand("Mx_Arc", DC);
|
|
2653
2726
|
});
|
|
2654
|
-
function
|
|
2655
|
-
const E = new
|
|
2656
|
-
D.closed = !1,
|
|
2727
|
+
function CC() {
|
|
2728
|
+
const E = new O(), D = new aC();
|
|
2729
|
+
D.closed = !1, I.use(D), E.setMessage(`
|
|
2657
2730
|
\u6307\u5B9A\u692D\u5706\u7684\u8F74\u7AEF\u70B9`), E.setKeyWords("[\u4E2D\u5FC3\u70B9(C)]");
|
|
2658
2731
|
let C, B = new THREE.Vector3();
|
|
2659
|
-
|
|
2732
|
+
L(
|
|
2660
2733
|
E,
|
|
2661
2734
|
() => {
|
|
2662
|
-
C = E.value(), E.setUserDraw((
|
|
2663
|
-
const u = new THREE.Line3(C,
|
|
2664
|
-
u.getCenter(B), D.center = B, D.xRadius = u.distance() / 2, D.yRadius = D.xRadius, D.rotation =
|
|
2735
|
+
C = E.value(), E.setUserDraw((r, s) => {
|
|
2736
|
+
const u = new THREE.Line3(C, r);
|
|
2737
|
+
u.getCenter(B), D.center = B, D.xRadius = u.distance() / 2, D.yRadius = D.xRadius, D.rotation = nD(r.x, r.y, B.x, B.y), s.drawLine(r, C);
|
|
2665
2738
|
}), E.setMessage(`
|
|
2666
2739
|
\u6307\u5B9A\u692D\u5706\u5F27\u8F74\u7684\u53E6\u4E00\u4E2A\u7AEF\u70B9:`), E.setKeyWords(""), A();
|
|
2667
2740
|
},
|
|
2668
2741
|
() => {
|
|
2669
2742
|
}
|
|
2670
2743
|
)();
|
|
2671
|
-
const A =
|
|
2744
|
+
const A = L(
|
|
2672
2745
|
E,
|
|
2673
2746
|
() => {
|
|
2674
|
-
E.setUserDraw((
|
|
2675
|
-
D.yRadius = B.distanceTo(
|
|
2747
|
+
E.setUserDraw((r, s) => {
|
|
2748
|
+
D.yRadius = B.distanceTo(r), s.drawLine(B, r), s.drawCustomEntity(D);
|
|
2676
2749
|
}), E.setMessage(`
|
|
2677
|
-
\u6307\u5B9A\u53E6\u4E00\u6761\u534A\u8F74\u957F\u5EA6`), E.setKeyWords(""),
|
|
2750
|
+
\u6307\u5B9A\u53E6\u4E00\u6761\u534A\u8F74\u957F\u5EA6`), E.setKeyWords(""), e();
|
|
2678
2751
|
},
|
|
2679
2752
|
() => {
|
|
2680
2753
|
}
|
|
2681
|
-
),
|
|
2754
|
+
), e = L(
|
|
2682
2755
|
E,
|
|
2683
2756
|
() => {
|
|
2684
2757
|
E.setMessage(`
|
|
2685
|
-
\u6307\u5B9A\u8D77\u59CB\u89D2\u5EA6`), E.setKeyWords(""), E.setUserDraw((
|
|
2686
|
-
D.startAngle =
|
|
2687
|
-
}),
|
|
2758
|
+
\u6307\u5B9A\u8D77\u59CB\u89D2\u5EA6`), E.setKeyWords(""), E.setUserDraw((r, s) => {
|
|
2759
|
+
D.startAngle = nD(r.x, r.y, B.x, B.y) - D.rotation, s.drawLine(B, r), s.drawCustomEntity(D);
|
|
2760
|
+
}), t();
|
|
2688
2761
|
},
|
|
2689
2762
|
() => {
|
|
2690
2763
|
}
|
|
2691
|
-
),
|
|
2764
|
+
), t = L(
|
|
2692
2765
|
E,
|
|
2693
2766
|
() => {
|
|
2694
|
-
E.setUserDraw((
|
|
2695
|
-
D.endAngle =
|
|
2767
|
+
E.setUserDraw((r, s) => {
|
|
2768
|
+
D.endAngle = nD(r.x, r.y, B.x, B.y) - D.rotation, s.drawLine(B, r), s.drawCustomEntity(D);
|
|
2696
2769
|
}), E.setMessage(`
|
|
2697
|
-
\u6307\u5B9A\u7EC8\u6B62\u89D2\u5EA6`), E.setKeyWords(""),
|
|
2770
|
+
\u6307\u5B9A\u7EC8\u6B62\u89D2\u5EA6`), E.setKeyWords(""), i();
|
|
2698
2771
|
},
|
|
2699
2772
|
() => {
|
|
2700
2773
|
}
|
|
2701
|
-
),
|
|
2774
|
+
), i = L(
|
|
2702
2775
|
E,
|
|
2703
2776
|
() => {
|
|
2704
|
-
let
|
|
2705
|
-
|
|
2777
|
+
let r = new y(D.xRadius, 0, 0);
|
|
2778
|
+
r.rotateBy(D.rotation, y.kZAxis), n.GetCurrentMxCAD().DrawEntity(new tD(D.center.x, D.center.y, 0, r.x, r.y, 0, D.yRadius / D.xRadius, D.startAngle, D.endAngle));
|
|
2706
2779
|
},
|
|
2707
2780
|
() => {
|
|
2708
2781
|
}
|
|
2709
2782
|
);
|
|
2710
2783
|
}
|
|
2711
|
-
function
|
|
2712
|
-
const E = new
|
|
2713
|
-
let B =
|
|
2784
|
+
function UC() {
|
|
2785
|
+
const E = new O(), D = new uC(), C = new lC();
|
|
2786
|
+
let B = n.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2714
2787
|
C.setColor(B), E.setMessage(`
|
|
2715
2788
|
\u70B9\u51FB\u5F00\u59CB\u7ED8\u5236\u692D\u5706:`), E.go(() => {
|
|
2716
2789
|
C.point1 = E.value(), D.setDraw((F) => {
|
|
2717
2790
|
C.point2 = F, D.drawCustomEntity(C);
|
|
2718
2791
|
}), E.setUserDraw(D), E.setMessage(`
|
|
2719
2792
|
\u518D\u6B21\u70B9\u51FB\u7ED3\u675F\u7ED8\u5236\u692D\u5706:`), E.go(() => {
|
|
2720
|
-
|
|
2793
|
+
n.GetCurrentMxCAD().DrawEntity(new tD(C.center.x, C.center.y, 0, C.xRadius, 0, 0, C.yRadius / C.xRadius));
|
|
2721
2794
|
});
|
|
2722
2795
|
});
|
|
2723
2796
|
}
|
|
2724
2797
|
h.on("init", () => {
|
|
2725
|
-
h.addCommand("Mx_EllipseArc",
|
|
2798
|
+
h.addCommand("Mx_EllipseArc", CC), h.addCommand("Mx_Ellipse", UC);
|
|
2726
2799
|
});
|
|
2727
|
-
async function
|
|
2800
|
+
async function BC() {
|
|
2728
2801
|
let E = U.getCurrentSelect();
|
|
2729
2802
|
if (E.length > 0) {
|
|
2730
2803
|
E.forEach((C) => {
|
|
@@ -2732,13 +2805,13 @@ async function DC() {
|
|
|
2732
2805
|
});
|
|
2733
2806
|
return;
|
|
2734
2807
|
}
|
|
2735
|
-
let D = new
|
|
2808
|
+
let D = new _();
|
|
2736
2809
|
!await D.userSelect(`
|
|
2737
2810
|
\u9009\u62E9\u5220\u9664\u5BF9\u8C61`) || D.forEach((C) => {
|
|
2738
2811
|
C.erase();
|
|
2739
2812
|
});
|
|
2740
2813
|
}
|
|
2741
|
-
function
|
|
2814
|
+
function X(E) {
|
|
2742
2815
|
let D, C;
|
|
2743
2816
|
if (E.forEach((B) => {
|
|
2744
2817
|
let F = B.getMcDbEntity();
|
|
@@ -2752,168 +2825,168 @@ function iD(E) {
|
|
|
2752
2825
|
async function WC() {
|
|
2753
2826
|
let E;
|
|
2754
2827
|
for (; E = U.getCurrentSelect(), !(E.length > 0); ) {
|
|
2755
|
-
let
|
|
2756
|
-
if (!await
|
|
2757
|
-
\u9009\u62E9\u590D\u5236\u5BF9\u8C61`) || (E =
|
|
2828
|
+
let e = new _();
|
|
2829
|
+
if (!await e.userSelect(`
|
|
2830
|
+
\u9009\u62E9\u590D\u5236\u5BF9\u8C61`) || (E = e.getIds(), E.length == 0))
|
|
2758
2831
|
return;
|
|
2759
2832
|
break;
|
|
2760
2833
|
}
|
|
2761
2834
|
let D, C;
|
|
2762
2835
|
if (E.length >= 10) {
|
|
2763
|
-
let
|
|
2764
|
-
|
|
2836
|
+
let e = X(E);
|
|
2837
|
+
e && (D = e.minPt, C = e.maxPt);
|
|
2765
2838
|
}
|
|
2766
|
-
let B = new
|
|
2839
|
+
let B = new G();
|
|
2767
2840
|
B.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2768
2841
|
let F = await B.go();
|
|
2769
2842
|
if (!F)
|
|
2770
2843
|
return;
|
|
2771
|
-
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((
|
|
2844
|
+
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((e, t) => {
|
|
2772
2845
|
if (D && C) {
|
|
2773
|
-
let
|
|
2774
|
-
|
|
2846
|
+
let i = e.x - F.x, r = e.y - F.y, s = new THREE.Vector3(D.x + i, C.y + r, 0), u = new THREE.Vector3(C.x + i, D.y + r, 0), l = new THREE.Vector3(s.x, u.y, 0), c = new THREE.Vector3(u.x, s.y, 0);
|
|
2847
|
+
t.drawLine(c, s), t.drawLine(s, l), t.drawLine(l, u), t.drawLine(u, c);
|
|
2775
2848
|
}
|
|
2776
|
-
for (let
|
|
2777
|
-
let
|
|
2778
|
-
!
|
|
2849
|
+
for (let i = 0; i < E.length && i < 10; i++) {
|
|
2850
|
+
let r = E[i].clone();
|
|
2851
|
+
!r || (r.Move(F, e), t.drawMcDbEntity(r));
|
|
2779
2852
|
}
|
|
2780
2853
|
});
|
|
2781
2854
|
let A = await B.go();
|
|
2782
2855
|
if (!!A)
|
|
2783
|
-
for (let
|
|
2784
|
-
let
|
|
2785
|
-
!
|
|
2856
|
+
for (let e = 0; e < E.length; e++) {
|
|
2857
|
+
let t = E[e].clone();
|
|
2858
|
+
!t || (t.Move(F, A), n.GetCurrentMxCAD().DrawEntity(t));
|
|
2786
2859
|
}
|
|
2787
2860
|
}
|
|
2788
|
-
async function
|
|
2861
|
+
async function zC() {
|
|
2789
2862
|
let E;
|
|
2790
2863
|
for (; E = U.getCurrentSelect(), !(E.length > 0); ) {
|
|
2791
|
-
let
|
|
2792
|
-
if (!await
|
|
2793
|
-
\u9009\u62E9\u79FB\u52A8\u5BF9\u8C61`) || (E =
|
|
2864
|
+
let e = new _();
|
|
2865
|
+
if (!await e.userSelect(`
|
|
2866
|
+
\u9009\u62E9\u79FB\u52A8\u5BF9\u8C61`) || (E = e.getIds(), E.length == 0))
|
|
2794
2867
|
return;
|
|
2795
2868
|
break;
|
|
2796
2869
|
}
|
|
2797
2870
|
let D, C;
|
|
2798
2871
|
if (E.length >= 10) {
|
|
2799
|
-
let
|
|
2800
|
-
|
|
2872
|
+
let e = X(E);
|
|
2873
|
+
e && (D = e.minPt, C = e.maxPt);
|
|
2801
2874
|
}
|
|
2802
|
-
let B = new
|
|
2875
|
+
let B = new G();
|
|
2803
2876
|
B.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2804
2877
|
let F = await B.go();
|
|
2805
2878
|
if (!F)
|
|
2806
2879
|
return;
|
|
2807
|
-
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((
|
|
2880
|
+
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((e, t) => {
|
|
2808
2881
|
if (D && C) {
|
|
2809
|
-
let
|
|
2810
|
-
|
|
2882
|
+
let i = e.x - F.x, r = e.y - F.y, s = new THREE.Vector3(D.x + i, C.y + r, 0), u = new THREE.Vector3(C.x + i, D.y + r, 0), l = new THREE.Vector3(s.x, u.y, 0), c = new THREE.Vector3(u.x, s.y, 0);
|
|
2883
|
+
t.drawLine(c, s), t.drawLine(s, l), t.drawLine(l, u), t.drawLine(u, c);
|
|
2811
2884
|
}
|
|
2812
|
-
for (let
|
|
2813
|
-
let
|
|
2814
|
-
!
|
|
2885
|
+
for (let i = 0; i < E.length && i < 10; i++) {
|
|
2886
|
+
let r = E[i].clone();
|
|
2887
|
+
!r || (r.Move(F, e), t.drawMcDbEntity(r));
|
|
2815
2888
|
}
|
|
2816
2889
|
});
|
|
2817
2890
|
let A = await B.go();
|
|
2818
2891
|
if (!!A)
|
|
2819
|
-
for (let
|
|
2820
|
-
let
|
|
2821
|
-
!
|
|
2892
|
+
for (let e = 0; e < E.length; e++) {
|
|
2893
|
+
let t = E[e].getMcDbObject();
|
|
2894
|
+
!t || t.Move(F, A);
|
|
2822
2895
|
}
|
|
2823
2896
|
}
|
|
2824
|
-
async function
|
|
2897
|
+
async function KC() {
|
|
2825
2898
|
let E;
|
|
2826
2899
|
for (; E = U.getCurrentSelect(), !(E.length > 0); ) {
|
|
2827
|
-
let l = new
|
|
2900
|
+
let l = new _();
|
|
2828
2901
|
if (!await l.userSelect(`
|
|
2829
2902
|
\u9009\u62E9\u65CB\u8F6C\u5BF9\u8C61`) || (E = l.getIds(), E.length == 0))
|
|
2830
2903
|
return;
|
|
2831
2904
|
break;
|
|
2832
2905
|
}
|
|
2833
|
-
let D, C, B =
|
|
2906
|
+
let D, C, B = X(E);
|
|
2834
2907
|
B && (D = B.minPt, C = B.maxPt);
|
|
2835
|
-
let F = new
|
|
2908
|
+
let F = new G();
|
|
2836
2909
|
F.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2837
2910
|
let A = await F.go();
|
|
2838
2911
|
if (A == null)
|
|
2839
2912
|
return;
|
|
2840
|
-
F.setMessage("\u6307\u5B9A\u65CB\u8F6C\u89D2\u5EA6"), F.setBasePt(A), F.setUseBasePt(!0), F.setUserDraw((l,
|
|
2841
|
-
let
|
|
2842
|
-
if (p.setToRotation(
|
|
2843
|
-
let d = new
|
|
2844
|
-
d.transformBy(p),
|
|
2913
|
+
F.setMessage("\u6307\u5B9A\u65CB\u8F6C\u89D2\u5EA6"), F.setBasePt(A), F.setUseBasePt(!0), F.setUserDraw((l, c) => {
|
|
2914
|
+
let a = l, m = A, f = a.sub(m).angleTo2(y.kXAxis, y.kNegateZAxis), p = new v();
|
|
2915
|
+
if (p.setToRotation(f, y.kZAxis, m), D && C) {
|
|
2916
|
+
let d = new o(D.x, C.y, 0), b = new o(C.x, D.y, 0), x = new o(d.x, b.y, 0), g = new o(b.x, d.y, 0);
|
|
2917
|
+
d.transformBy(p), b.transformBy(p), x.transformBy(p), g.transformBy(p), c.drawLine(g.toVector3(), d.toVector3()), c.drawLine(d.toVector3(), x.toVector3()), c.drawLine(x.toVector3(), b.toVector3()), c.drawLine(b.toVector3(), g.toVector3());
|
|
2845
2918
|
}
|
|
2846
|
-
|
|
2919
|
+
m = n.GetCurrentMxCAD().docCoord2Cad(m), p.setToRotation(f, y.kZAxis, m);
|
|
2847
2920
|
for (let d = 0; d < E.length && d < 10; d++) {
|
|
2848
|
-
let
|
|
2849
|
-
!
|
|
2921
|
+
let b = E[d].clone();
|
|
2922
|
+
!b || (b.TransformBy(p), c.drawMcDbEntity(b));
|
|
2850
2923
|
}
|
|
2851
2924
|
});
|
|
2852
|
-
let
|
|
2853
|
-
if (!
|
|
2925
|
+
let e = await F.go();
|
|
2926
|
+
if (!e)
|
|
2854
2927
|
return;
|
|
2855
|
-
let
|
|
2856
|
-
|
|
2928
|
+
let t = e, i = A, s = t.sub(i).angleTo2(y.kXAxis, y.kNegateZAxis), u = new v();
|
|
2929
|
+
i = n.GetCurrentMxCAD().docCoord2Cad(i), u.setToRotation(s, y.kZAxis, i);
|
|
2857
2930
|
for (let l = 0; l < E.length; l++) {
|
|
2858
|
-
let
|
|
2859
|
-
!
|
|
2931
|
+
let c = E[l].getMcDbObject();
|
|
2932
|
+
!c || c.TransformBy(u);
|
|
2860
2933
|
}
|
|
2861
2934
|
}
|
|
2862
|
-
async function
|
|
2935
|
+
async function HC() {
|
|
2863
2936
|
let E;
|
|
2864
2937
|
for (; E = U.getCurrentSelect(), !(E.length > 0); ) {
|
|
2865
|
-
let
|
|
2866
|
-
if (!await
|
|
2867
|
-
\u9009\u62E9\u7F29\u653E\u5BF9\u8C61`) || (E =
|
|
2938
|
+
let m = new _();
|
|
2939
|
+
if (!await m.userSelect(`
|
|
2940
|
+
\u9009\u62E9\u7F29\u653E\u5BF9\u8C61`) || (E = m.getIds(), E.length == 0))
|
|
2868
2941
|
return;
|
|
2869
2942
|
break;
|
|
2870
2943
|
}
|
|
2871
|
-
let D, C, B =
|
|
2944
|
+
let D, C, B = X(E);
|
|
2872
2945
|
if (!B)
|
|
2873
2946
|
return;
|
|
2874
2947
|
D = B.minPt, C = B.maxPt;
|
|
2875
|
-
let F = C.x - D.x, A = C.y - D.y,
|
|
2876
|
-
|
|
2877
|
-
let
|
|
2878
|
-
|
|
2879
|
-
let
|
|
2880
|
-
if (
|
|
2948
|
+
let F = C.x - D.x, A = C.y - D.y, e = (F + A) / 3;
|
|
2949
|
+
e < 1e-5 && (e = 1);
|
|
2950
|
+
let t = new G();
|
|
2951
|
+
t.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2952
|
+
let i = await t.go();
|
|
2953
|
+
if (i == null)
|
|
2881
2954
|
return;
|
|
2882
|
-
|
|
2883
|
-
let
|
|
2955
|
+
t.setMessage("\u6307\u5B9A\u6BD4\u4F8B\u56E0\u5B50"), t.setBasePt(i), t.setUseBasePt(!0), t.setUserDraw((m, w) => {
|
|
2956
|
+
let f = new o(m), p = new o(i), d = f.distanceTo(p);
|
|
2884
2957
|
if (d < 1e-5)
|
|
2885
2958
|
return;
|
|
2886
|
-
let
|
|
2887
|
-
|
|
2888
|
-
let x = new
|
|
2889
|
-
if (x.setToScaling(
|
|
2890
|
-
let
|
|
2891
|
-
|
|
2959
|
+
let b = d / e;
|
|
2960
|
+
b > 1e5 && (b = 1e5);
|
|
2961
|
+
let x = new v();
|
|
2962
|
+
if (x.setToScaling(b, p), D && C) {
|
|
2963
|
+
let g = new o(D.x, C.y, 0), M = new o(C.x, D.y, 0), S = new o(g.x, M.y, 0), Y = new o(M.x, g.y, 0);
|
|
2964
|
+
g.transformBy(x), M.transformBy(x), S.transformBy(x), Y.transformBy(x), w.drawLine(Y.toVector3(), g.toVector3()), w.drawLine(g.toVector3(), S.toVector3()), w.drawLine(S.toVector3(), M.toVector3()), w.drawLine(M.toVector3(), Y.toVector3());
|
|
2892
2965
|
}
|
|
2893
|
-
p =
|
|
2894
|
-
for (let
|
|
2895
|
-
let M = E[
|
|
2896
|
-
!M || (M.TransformBy(x),
|
|
2966
|
+
p = n.GetCurrentMxCAD().docCoord2Cad(p), x.setToScaling(b, p);
|
|
2967
|
+
for (let g = 0; g < E.length && g < 10; g++) {
|
|
2968
|
+
let M = E[g].clone();
|
|
2969
|
+
!M || (M.TransformBy(x), w.drawMcDbEntity(M));
|
|
2897
2970
|
}
|
|
2898
2971
|
});
|
|
2899
|
-
let
|
|
2900
|
-
if (!
|
|
2972
|
+
let r = await t.go();
|
|
2973
|
+
if (!r)
|
|
2901
2974
|
return;
|
|
2902
|
-
let
|
|
2975
|
+
let s = r, u = i, l = s.distanceTo(u);
|
|
2903
2976
|
if (l < 1e-5)
|
|
2904
2977
|
return;
|
|
2905
|
-
let
|
|
2906
|
-
|
|
2907
|
-
let
|
|
2908
|
-
u =
|
|
2909
|
-
for (let
|
|
2910
|
-
let
|
|
2911
|
-
!
|
|
2978
|
+
let c = l / e;
|
|
2979
|
+
c > 1e5 && (c = 1e5);
|
|
2980
|
+
let a = new v();
|
|
2981
|
+
u = n.GetCurrentMxCAD().docCoord2Cad(u), a.setToScaling(c, u);
|
|
2982
|
+
for (let m = 0; m < E.length; m++) {
|
|
2983
|
+
let w = E[m].getMcDbObject();
|
|
2984
|
+
!w || w.TransformBy(a);
|
|
2912
2985
|
}
|
|
2913
2986
|
}
|
|
2914
|
-
async function
|
|
2915
|
-
let E = new
|
|
2916
|
-
E.setDisableOsnap(!0), E.setMessage("\u70B9\u53D6\u7F29\u653E\u533A\u57DF"), E.setDynamicInputType(
|
|
2987
|
+
async function NC() {
|
|
2988
|
+
let E = new G();
|
|
2989
|
+
E.setDisableOsnap(!0), E.setMessage("\u70B9\u53D6\u7F29\u653E\u533A\u57DF"), E.setDynamicInputType(dD.kDynTip);
|
|
2917
2990
|
let D = await E.go();
|
|
2918
2991
|
if (D == null)
|
|
2919
2992
|
return;
|
|
@@ -2923,53 +2996,86 @@ async function HC() {
|
|
|
2923
2996
|
let C = await E.go();
|
|
2924
2997
|
C != null && h.getCurrentDraw().zoomW(D.toVector3(), C.toVector3());
|
|
2925
2998
|
}
|
|
2926
|
-
async function
|
|
2927
|
-
let E =
|
|
2999
|
+
async function _C() {
|
|
3000
|
+
let E = n.GetCurrentDatabase().CurrentSpace().getBoundingBox();
|
|
2928
3001
|
!E.ret || h.getCurrentDraw().zoomW(E.minPt.toVector3(), E.maxPt.toVector3());
|
|
2929
3002
|
}
|
|
2930
|
-
async function
|
|
2931
|
-
const E = new
|
|
3003
|
+
async function qC() {
|
|
3004
|
+
const E = new ND();
|
|
2932
3005
|
E.setMessage(`
|
|
2933
3006
|
\u6307\u5B9A\u504F\u79FB\u8DDD\u79BB\u6216:`);
|
|
2934
3007
|
let D = await E.go();
|
|
2935
3008
|
if (D == null)
|
|
2936
3009
|
return;
|
|
2937
|
-
let C = new
|
|
3010
|
+
let C = new iD();
|
|
2938
3011
|
C.AddMcDbEntityTypes("LINE,CIRCLE,LWPOLYLINE,ARC");
|
|
2939
3012
|
let B = await U.selectEnt(`
|
|
2940
3013
|
\u9009\u62E9\u504F\u79FB\u5BF9\u8C61`, C, !1);
|
|
2941
3014
|
if (B.length == 0)
|
|
2942
3015
|
return;
|
|
2943
|
-
const F = new
|
|
3016
|
+
const F = new G();
|
|
2944
3017
|
F.setMessage(`
|
|
2945
3018
|
\u6307\u5B9A\u8981\u504F\u79FB\u90A3\u4E00\u4FA7\u4E0A\u7684\u70B9:`), F.setDisableOsnap(!0);
|
|
2946
3019
|
let A = await F.go();
|
|
2947
3020
|
if (A == null)
|
|
2948
3021
|
return;
|
|
2949
|
-
let
|
|
2950
|
-
if (!
|
|
3022
|
+
let e = B[0].getMcDbCurve();
|
|
3023
|
+
if (!e)
|
|
2951
3024
|
return;
|
|
2952
|
-
let
|
|
2953
|
-
|
|
2954
|
-
|
|
3025
|
+
let t = e.offsetCurves(D, A);
|
|
3026
|
+
t.empty() || t.forEach((i) => {
|
|
3027
|
+
n.GetCurrentMxCAD().DrawEntity(i);
|
|
2955
3028
|
});
|
|
2956
3029
|
}
|
|
2957
|
-
function
|
|
2958
|
-
|
|
3030
|
+
function ZC() {
|
|
3031
|
+
n.GetCurrentMxCAD().getImp().regen();
|
|
3032
|
+
}
|
|
3033
|
+
async function $C() {
|
|
3034
|
+
let E = await U.userSelect("\u9009\u62E9\u955C\u50CF\u5BF9\u8C61");
|
|
3035
|
+
if (E.length == 0) {
|
|
3036
|
+
h.acutPrintf(`
|
|
3037
|
+
\u6CA1\u6709\u80FD\u955C\u50CF\u7684\u5BF9\u8C61`);
|
|
3038
|
+
return;
|
|
3039
|
+
}
|
|
3040
|
+
let D, C, B = X(E);
|
|
3041
|
+
B && (D = B.minPt, C = B.maxPt);
|
|
3042
|
+
let F = new G();
|
|
3043
|
+
F.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
3044
|
+
let A = await F.go();
|
|
3045
|
+
if (A == null)
|
|
3046
|
+
return;
|
|
3047
|
+
F.setMessage("\u6307\u5B9A\u955C\u5411\u70B9"), F.setBasePt(A), F.setUseBasePt(!0), F.setUserDraw((t, i) => {
|
|
3048
|
+
if (D && C) {
|
|
3049
|
+
let r = new v();
|
|
3050
|
+
r.setMirror(A, t);
|
|
3051
|
+
let s = new o(D.x, C.y, 0), u = new o(C.x, D.y, 0), l = new o(s.x, u.y, 0), c = new o(u.x, s.y, 0);
|
|
3052
|
+
s.transformBy(r), u.transformBy(r), l.transformBy(r), c.transformBy(r), i.drawLine(c.toVector3(), s.toVector3()), i.drawLine(s.toVector3(), l.toVector3()), i.drawLine(l.toVector3(), u.toVector3()), i.drawLine(u.toVector3(), c.toVector3());
|
|
3053
|
+
}
|
|
3054
|
+
for (let r = 0; r < E.length && r < 10; r++) {
|
|
3055
|
+
let s = E[r].clone();
|
|
3056
|
+
!s || (s.Mirror(A, t), i.drawMcDbEntity(s));
|
|
3057
|
+
}
|
|
3058
|
+
});
|
|
3059
|
+
let e = await F.go();
|
|
3060
|
+
if (!!e)
|
|
3061
|
+
for (let t = 0; t < E.length; t++) {
|
|
3062
|
+
let i = E[t].clone();
|
|
3063
|
+
!i || (i.Mirror(A, e), n.GetCurrentMxCAD().DrawEntity(i));
|
|
3064
|
+
}
|
|
2959
3065
|
}
|
|
2960
3066
|
h.on("init", () => {
|
|
2961
|
-
h.addCommand("Mx_Erase",
|
|
3067
|
+
h.addCommand("Mx_Erase", BC), h.addCommand("Mx_Copy", WC), h.addCommand("Mx_Move", zC), h.addCommand("Mx_Rotate", KC), h.addCommand("Mx_Scale", HC), h.addCommand("Mx_WindowZoom", NC), h.addCommand("Mx_ZoomE", _C), h.addCommand("Mx_Offset", qC), h.addCommand("Mx_Regen", ZC), h.addCommand("Mx_Mirror", $C);
|
|
2962
3068
|
});
|
|
2963
|
-
const
|
|
3069
|
+
const JC = async (E, D, C) => {
|
|
2964
3070
|
const { locateFile: B } = C, F = B(E + ".js");
|
|
2965
|
-
return await
|
|
3071
|
+
return await ZD(F), await globalThis[D](C);
|
|
2966
3072
|
};
|
|
2967
|
-
function
|
|
3073
|
+
function YC(E) {
|
|
2968
3074
|
return typeof ResizeObserver == "function" ? new ResizeObserver(E) : null;
|
|
2969
3075
|
}
|
|
2970
|
-
function
|
|
3076
|
+
function QC(E, D) {
|
|
2971
3077
|
const C = () => requestAnimationFrame(D);
|
|
2972
|
-
let B =
|
|
3078
|
+
let B = YC(C);
|
|
2973
3079
|
if (B) {
|
|
2974
3080
|
B.observe(E);
|
|
2975
3081
|
return;
|
|
@@ -2979,7 +3085,7 @@ function JC(E, D) {
|
|
|
2979
3085
|
return;
|
|
2980
3086
|
}
|
|
2981
3087
|
}
|
|
2982
|
-
function
|
|
3088
|
+
function XC(E, D) {
|
|
2983
3089
|
let C = null;
|
|
2984
3090
|
return function(...B) {
|
|
2985
3091
|
C || (C = setTimeout(() => {
|
|
@@ -2987,52 +3093,52 @@ function YC(E, D) {
|
|
|
2987
3093
|
}, D));
|
|
2988
3094
|
};
|
|
2989
3095
|
}
|
|
2990
|
-
class
|
|
3096
|
+
class J {
|
|
2991
3097
|
static onloadWasmMxDraw3dModel;
|
|
2992
3098
|
canvas;
|
|
2993
3099
|
constructor(D) {
|
|
2994
3100
|
const C = () => {
|
|
2995
3101
|
const u = this.canvas.parentElement?.clientWidth || window.innerWidth, l = this.canvas.parentElement?.clientHeight || window.innerHeight;
|
|
2996
|
-
let
|
|
2997
|
-
|
|
2998
|
-
const
|
|
2999
|
-
this.canvas.width =
|
|
3000
|
-
}, B =
|
|
3102
|
+
let c = Math.min(u, window.screen.availWidth), a = Math.min(l, window.screen.availHeight);
|
|
3103
|
+
c = Math.max(A, c), a = Math.max(e, a), this.canvas.style.width = c + 1 + "px", this.canvas.style.height = a + "px";
|
|
3104
|
+
const m = window.devicePixelRatio || 1;
|
|
3105
|
+
this.canvas.width = c * m, this.canvas.height = a * m;
|
|
3106
|
+
}, B = XC(C, 50), {
|
|
3001
3107
|
canvas: F,
|
|
3002
3108
|
minWidth: A = 300,
|
|
3003
|
-
minHeight:
|
|
3004
|
-
updateCanvasSize:
|
|
3005
|
-
...
|
|
3109
|
+
minHeight: e = 300,
|
|
3110
|
+
updateCanvasSize: t = B,
|
|
3111
|
+
...i
|
|
3006
3112
|
} = D;
|
|
3007
|
-
let
|
|
3008
|
-
|
|
3009
|
-
for (let u in
|
|
3010
|
-
this[u] =
|
|
3113
|
+
let r = typeof F == "string" ? document.querySelectorAll(F)[0] : F, s = r.getContext("webgl2", { alpha: !1, depth: !0, antialias: !1, preserveDrawingBuffer: !0 });
|
|
3114
|
+
s == null && (s = r.getContext("webgl", { alpha: !1, depth: !0, antialias: !1, preserveDrawingBuffer: !0 })), this.canvas = r, this.ctx = s, i.canvas = this.canvas;
|
|
3115
|
+
for (let u in i)
|
|
3116
|
+
this[u] = i[u];
|
|
3011
3117
|
if (this.canvas instanceof HTMLCanvasElement) {
|
|
3012
3118
|
const u = this.canvas.parentElement || document.body;
|
|
3013
|
-
|
|
3119
|
+
QC(u, t);
|
|
3014
3120
|
} else
|
|
3015
3121
|
console.error("createMxDraw3d canvas \u53C2\u6570\u4E0D\u6B63\u786E \u65E0\u6CD5\u83B7\u53D6\u5230canvas\u5143\u7D20");
|
|
3016
|
-
window.onresize = C, C(),
|
|
3017
|
-
|
|
3122
|
+
window.onresize = C, C(), JC("mxdraw3d_min", "mxdraw3d", this).then(() => {
|
|
3123
|
+
J.onloadWasmMxDraw3dModel && J.onloadWasmMxDraw3dModel(this), this.updateCanvasSize = t, this.open3DFile = (u) => {
|
|
3018
3124
|
const l = new FileReader();
|
|
3019
3125
|
l.onload = () => {
|
|
3020
3126
|
if (!!l.result && l.result instanceof ArrayBuffer) {
|
|
3021
|
-
var
|
|
3022
|
-
const
|
|
3023
|
-
this.HEAPU8.set(
|
|
3127
|
+
var c = new Uint8Array(l.result);
|
|
3128
|
+
const a = this._malloc(c.length);
|
|
3129
|
+
this.HEAPU8.set(c, a), this.openFromMemory(u.name, a, c.length, !0), this.displayGround(!0), this.canvas.focus();
|
|
3024
3130
|
}
|
|
3025
3131
|
}, l.readAsArrayBuffer(u);
|
|
3026
3132
|
};
|
|
3027
3133
|
});
|
|
3028
3134
|
}
|
|
3029
3135
|
}
|
|
3030
|
-
function
|
|
3136
|
+
function D9(E, D) {
|
|
3031
3137
|
return new Promise(async (C, B) => {
|
|
3032
3138
|
try {
|
|
3033
|
-
E.locateFile || (E.locateFile =
|
|
3034
|
-
const F = new
|
|
3035
|
-
|
|
3139
|
+
E.locateFile || (E.locateFile = PC);
|
|
3140
|
+
const F = new J(E);
|
|
3141
|
+
J.onloadWasmMxDraw3dModel = () => {
|
|
3036
3142
|
C(F), D && D(F);
|
|
3037
3143
|
};
|
|
3038
3144
|
} catch (F) {
|
|
@@ -3040,155 +3146,157 @@ function QC(E, D) {
|
|
|
3040
3146
|
}
|
|
3041
3147
|
});
|
|
3042
3148
|
}
|
|
3043
|
-
const
|
|
3149
|
+
const B9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
3044
3150
|
__proto__: null,
|
|
3045
3151
|
b64Encode: kD,
|
|
3046
3152
|
b64Decode: RD,
|
|
3047
|
-
saveAsFileDialog:
|
|
3048
|
-
downloadFile:
|
|
3049
|
-
downloadFileFromUrl:
|
|
3050
|
-
MxTools:
|
|
3051
|
-
McGePoint3d:
|
|
3153
|
+
saveAsFileDialog: OD,
|
|
3154
|
+
downloadFile: LD,
|
|
3155
|
+
downloadFileFromUrl: vD,
|
|
3156
|
+
MxTools: Q,
|
|
3157
|
+
McGePoint3d: o,
|
|
3052
3158
|
McGeVector3d: y,
|
|
3053
|
-
McGeMatrix3d:
|
|
3054
|
-
McGeLongArray:
|
|
3055
|
-
McGeStringArray:
|
|
3056
|
-
McGePoint3dArray:
|
|
3057
|
-
getFilterImp:
|
|
3058
|
-
MxCADResbuf:
|
|
3059
|
-
MxCADUtilityClass:
|
|
3159
|
+
McGeMatrix3d: v,
|
|
3160
|
+
McGeLongArray: SD,
|
|
3161
|
+
McGeStringArray: ID,
|
|
3162
|
+
McGePoint3dArray: mC,
|
|
3163
|
+
getFilterImp: K,
|
|
3164
|
+
MxCADResbuf: iD,
|
|
3165
|
+
MxCADUtilityClass: KD,
|
|
3060
3166
|
MxCADUtility: U,
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3167
|
+
MxCADSelectionSetStatus: HD,
|
|
3168
|
+
MxCADSelectionSet: _,
|
|
3169
|
+
MxCADUiPrBase: q,
|
|
3170
|
+
MxCADUiPrPoint: G,
|
|
3171
|
+
MxCADUiPrDist: ND,
|
|
3172
|
+
MxCADUiPrAngle: yC,
|
|
3173
|
+
MxCADUiPrInt: wC,
|
|
3067
3174
|
MxCADUiPrKeyWord: gC,
|
|
3068
|
-
MxCADUiPrString:
|
|
3069
|
-
McRxObject:
|
|
3175
|
+
MxCADUiPrString: fC,
|
|
3176
|
+
McRxObject: H,
|
|
3070
3177
|
McObjectIdType: k,
|
|
3071
3178
|
McObjectId: R,
|
|
3072
|
-
McDbObject:
|
|
3073
|
-
McDbObjectArray:
|
|
3179
|
+
McDbObject: j,
|
|
3180
|
+
McDbObjectArray: aD,
|
|
3074
3181
|
get McDb() {
|
|
3075
|
-
return
|
|
3182
|
+
return uD;
|
|
3076
3183
|
},
|
|
3077
|
-
McCmColor:
|
|
3078
|
-
McDbLayerTableRecord:
|
|
3184
|
+
McCmColor: N,
|
|
3185
|
+
McDbLayerTableRecord: hC,
|
|
3079
3186
|
McDbLayerTable: jD,
|
|
3080
|
-
McDbLinetypeTable:
|
|
3081
|
-
McDbTextStyleTable:
|
|
3082
|
-
McDbDatabase:
|
|
3083
|
-
McDbBlockTableRecordIterator:
|
|
3084
|
-
McDbBlockTableRecord:
|
|
3187
|
+
McDbLinetypeTable: GD,
|
|
3188
|
+
McDbTextStyleTable: VD,
|
|
3189
|
+
McDbDatabase: hD,
|
|
3190
|
+
McDbBlockTableRecordIterator: UD,
|
|
3191
|
+
McDbBlockTableRecord: eD,
|
|
3085
3192
|
McDbBlockTableIterator: WD,
|
|
3086
|
-
McDbBlockTable:
|
|
3087
|
-
McDbEntity:
|
|
3088
|
-
McDbCurve:
|
|
3089
|
-
McDbLine:
|
|
3090
|
-
McDbText:
|
|
3091
|
-
McDbMText:
|
|
3092
|
-
McDbCircle:
|
|
3093
|
-
McDbPolyline:
|
|
3094
|
-
McDbBlockReference:
|
|
3095
|
-
McDbDimension:
|
|
3096
|
-
McDbAlignedDimension:
|
|
3097
|
-
McDbRotatedDimension:
|
|
3098
|
-
McDbArc:
|
|
3099
|
-
McDbEllipse:
|
|
3100
|
-
McDbPoint:
|
|
3101
|
-
McObject:
|
|
3102
|
-
McAppType:
|
|
3103
|
-
MxCppType:
|
|
3193
|
+
McDbBlockTable: zD,
|
|
3194
|
+
McDbEntity: V,
|
|
3195
|
+
McDbCurve: z,
|
|
3196
|
+
McDbLine: BD,
|
|
3197
|
+
McDbText: lD,
|
|
3198
|
+
McDbMText: ED,
|
|
3199
|
+
McDbCircle: W,
|
|
3200
|
+
McDbPolyline: FD,
|
|
3201
|
+
McDbBlockReference: cD,
|
|
3202
|
+
McDbDimension: yD,
|
|
3203
|
+
McDbAlignedDimension: mD,
|
|
3204
|
+
McDbRotatedDimension: pD,
|
|
3205
|
+
McDbArc: AD,
|
|
3206
|
+
McDbEllipse: tD,
|
|
3207
|
+
McDbPoint: wD,
|
|
3208
|
+
McObject: $,
|
|
3209
|
+
McAppType: _D,
|
|
3210
|
+
MxCppType: qD,
|
|
3104
3211
|
get MxCpp() {
|
|
3105
|
-
return
|
|
3212
|
+
return n;
|
|
3106
3213
|
},
|
|
3107
|
-
loadMxCADassembly:
|
|
3108
|
-
createMxCad:
|
|
3109
|
-
drawText:
|
|
3110
|
-
drawCircle:
|
|
3111
|
-
drawLine:
|
|
3112
|
-
drawMText:
|
|
3113
|
-
drawPolyLine:
|
|
3114
|
-
drawPolygon:
|
|
3115
|
-
drawArc:
|
|
3116
|
-
drawEllipticalArc:
|
|
3117
|
-
Mx_Erase:
|
|
3118
|
-
MxDraw3d:
|
|
3119
|
-
loadMxCADassembly3d:
|
|
3214
|
+
loadMxCADassembly: $D,
|
|
3215
|
+
createMxCad: OC,
|
|
3216
|
+
drawText: LC,
|
|
3217
|
+
drawCircle: JD,
|
|
3218
|
+
drawLine: YD,
|
|
3219
|
+
drawMText: IC,
|
|
3220
|
+
drawPolyLine: QD,
|
|
3221
|
+
drawPolygon: XD,
|
|
3222
|
+
drawArc: DC,
|
|
3223
|
+
drawEllipticalArc: CC,
|
|
3224
|
+
Mx_Erase: BC,
|
|
3225
|
+
MxDraw3d: J,
|
|
3226
|
+
loadMxCADassembly3d: D9
|
|
3120
3227
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
3121
3228
|
export {
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3229
|
+
_D as McAppType,
|
|
3230
|
+
N as McCmColor,
|
|
3231
|
+
uD as McDb,
|
|
3232
|
+
mD as McDbAlignedDimension,
|
|
3233
|
+
AD as McDbArc,
|
|
3234
|
+
cD as McDbBlockReference,
|
|
3235
|
+
zD as McDbBlockTable,
|
|
3129
3236
|
WD as McDbBlockTableIterator,
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3237
|
+
eD as McDbBlockTableRecord,
|
|
3238
|
+
UD as McDbBlockTableRecordIterator,
|
|
3239
|
+
W as McDbCircle,
|
|
3240
|
+
z as McDbCurve,
|
|
3241
|
+
hD as McDbDatabase,
|
|
3242
|
+
yD as McDbDimension,
|
|
3243
|
+
tD as McDbEllipse,
|
|
3244
|
+
V as McDbEntity,
|
|
3138
3245
|
jD as McDbLayerTable,
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3246
|
+
hC as McDbLayerTableRecord,
|
|
3247
|
+
BD as McDbLine,
|
|
3248
|
+
GD as McDbLinetypeTable,
|
|
3249
|
+
ED as McDbMText,
|
|
3250
|
+
j as McDbObject,
|
|
3251
|
+
aD as McDbObjectArray,
|
|
3252
|
+
wD as McDbPoint,
|
|
3253
|
+
FD as McDbPolyline,
|
|
3254
|
+
pD as McDbRotatedDimension,
|
|
3255
|
+
lD as McDbText,
|
|
3256
|
+
VD as McDbTextStyleTable,
|
|
3257
|
+
SD as McGeLongArray,
|
|
3258
|
+
v as McGeMatrix3d,
|
|
3259
|
+
o as McGePoint3d,
|
|
3260
|
+
mC as McGePoint3dArray,
|
|
3261
|
+
ID as McGeStringArray,
|
|
3155
3262
|
y as McGeVector3d,
|
|
3156
|
-
|
|
3263
|
+
$ as McObject,
|
|
3157
3264
|
R as McObjectId,
|
|
3158
3265
|
k as McObjectIdType,
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3266
|
+
H as McRxObject,
|
|
3267
|
+
iD as MxCADResbuf,
|
|
3268
|
+
_ as MxCADSelectionSet,
|
|
3269
|
+
HD as MxCADSelectionSetStatus,
|
|
3270
|
+
yC as MxCADUiPrAngle,
|
|
3271
|
+
q as MxCADUiPrBase,
|
|
3272
|
+
ND as MxCADUiPrDist,
|
|
3273
|
+
wC as MxCADUiPrInt,
|
|
3166
3274
|
gC as MxCADUiPrKeyWord,
|
|
3167
|
-
|
|
3168
|
-
|
|
3275
|
+
G as MxCADUiPrPoint,
|
|
3276
|
+
fC as MxCADUiPrString,
|
|
3169
3277
|
U as MxCADUtility,
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3278
|
+
KD as MxCADUtilityClass,
|
|
3279
|
+
n as MxCpp,
|
|
3280
|
+
qD as MxCppType,
|
|
3281
|
+
J as MxDraw3d,
|
|
3282
|
+
Q as MxTools,
|
|
3283
|
+
BC as Mx_Erase,
|
|
3176
3284
|
RD as b64Decode,
|
|
3177
3285
|
kD as b64Encode,
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3286
|
+
OC as createMxCad,
|
|
3287
|
+
B9 as default,
|
|
3288
|
+
LD as downloadFile,
|
|
3289
|
+
vD as downloadFileFromUrl,
|
|
3290
|
+
DC as drawArc,
|
|
3291
|
+
JD as drawCircle,
|
|
3292
|
+
CC as drawEllipticalArc,
|
|
3293
|
+
YD as drawLine,
|
|
3294
|
+
IC as drawMText,
|
|
3295
|
+
QD as drawPolyLine,
|
|
3296
|
+
XD as drawPolygon,
|
|
3297
|
+
LC as drawText,
|
|
3298
|
+
K as getFilterImp,
|
|
3299
|
+
$D as loadMxCADassembly,
|
|
3300
|
+
D9 as loadMxCADassembly3d,
|
|
3301
|
+
OD as saveAsFileDialog
|
|
3194
3302
|
};
|