pax_global_header00006660000000000000000000000064145673254340014527gustar00rootroot0000000000000052 comment=e3678731ef14497c720ee7017a14450eba2602d2 libMeshb-7.80/000077500000000000000000000000001456732543400132125ustar00rootroot00000000000000libMeshb-7.80/.gitignore000066400000000000000000000000341456732543400151770ustar00rootroot00000000000000build sources/libmeshb7.mod libMeshb-7.80/CMakeLists.txt000066400000000000000000000076051456732543400157620ustar00rootroot00000000000000 ################################ # GLOBAL CONFIGURATION VARIABLES ################################ cmake_minimum_required (VERSION 3.7.2) set (libMeshb_VERSION_MAJOR 7) set (libMeshb_VERSION_MINOR 80) project(libMeshb VERSION ${libMeshb_VERSION_MAJOR}.${libMeshb_VERSION_MINOR} LANGUAGES C) option(WITH_GMF_AIO "Use Unix low-level and asynchronous I/O for higher speed" OFF) option(WITH_GMF_CPACK "Enable cpack target to generate a zip file containing binaries" OFF) option(WITH_GMF_CTEST "Enable ctest ti run basic validation tests" OFF) include (CheckLanguage) check_language (Fortran) if(CMAKE_Fortran_COMPILER) enable_language(Fortran) set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/modules) endif() if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif () if (CMAKE_HOST_SYSTEM_NAME STREQUAL Linux) set (math_LIBRARIES "m") endif () if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) if (WIN32) set(CMAKE_INSTALL_PREFIX "$ENV{HOMEPATH}/cmakebuilds" CACHE PATH "..." FORCE) else () if (DEFINED ENV{OSTYPE} AND DEFINED ENV{MACHTYPE}) set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/cmakebuilds/$ENV{OSTYPE}-$ENV{MACHTYPE}" CACHE PATH "..." FORCE) else () set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/cmakebuilds" CACHE PATH "..." FORCE) endif () endif() endif () list (APPEND CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}") if(WITH_GMF_AIO) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWITH_GMF_AIO") IF(${CMAKE_SYSTEM_NAME} MATCHES Linux) set(AIO_LIBRARIES rt) endif() endif() ####################################### # SET FILES AND DIRECTORIES TO BE BUILT ####################################### include_directories (${PROJECT_SOURCE_DIR}/sources) include_directories (${PROJECT_SOURCE_DIR}/utilities) add_subdirectory (sources) add_subdirectory (examples) add_subdirectory (utilities) install (FILES LICENSE.txt copyright.txt DESTINATION share/libMeshb) install (DIRECTORY sample_meshes DESTINATION share/libMeshb) ###################################### # SET PACKAGE AND DEPLOYMENT VARIABLES ###################################### if(WITH_GMF_CTEST) enable_testing() include_directories(${PROJECT_SOURCE_DIR}/testing) add_subdirectory(testing) endif() if (WITH_GMF_CPACK) include (InstallRequiredSystemLibraries) set (CPACK_GENERATOR TXZ) set (CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/copyright.txt) set (CPACK_PACKAGE_VERSION_MAJOR ${libMeshb_VERSION_MAJOR}) set (CPACK_PACKAGE_VERSION_MINOR ${libMeshb_VERSION_MINOR}) set (CPACK_COMPONENTS_ALL applications examples libraries headers) include (CPack) endif () ################################## # EXPORT CMAKE PACKAGE INFORMATION ################################## include(CMakePackageConfigHelpers) file(WRITE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake "include(\${CMAKE_CURRENT_LIST_DIR}/meshb-target.cmake) include(\${CMAKE_CURRENT_LIST_DIR}/libMeshb-target.cmake) set(libMeshb_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include) set(libMeshb_LINK_DIRS ${CMAKE_INSTALL_PREFIX}/lib) set(libMeshb_LIBRARIES Meshb.7 ${AIO_LIBRARIES}) set(libMeshb_Fortran_LIBRARIES Meshbf.7 ${AIO_LIBRARIES}) set(libMeshb_FOUND TRUE) ") write_basic_package_version_file( "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion) install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" DESTINATION lib/cmake/${PROJECT_NAME}) ################################## # PRINT OPERATIONS TO BE CONDUCTED ################################## message("-- Build mode : " ${CMAKE_BUILD_TYPE}) message("-- cpack target enabled : " ${WITH_GMF_CPACK}) message("-- ctest target enabled : " ${WITH_GMF_CTEST}) message("-- Asynchronous IO : " ${WITH_GMF_AIO}) message("-- Install directory : " ${CMAKE_INSTALL_PREFIX}) libMeshb-7.80/Documentation/000077500000000000000000000000001456732543400160235ustar00rootroot00000000000000libMeshb-7.80/Documentation/fortran_api.md000066400000000000000000000076571456732543400206700ustar00rootroot00000000000000## GENERAL COMMENTS Default datatypes throughout the API are 4-byte integers and 8-byte reals except for the library's index, which is an 8-byte integer. All procedures' arguments are fixed and no more variable arguments are used. The API is provided to access vertices and some elements. Adding new elements if straightforward but other arbitrary keywords need a dedicated API. See corresponding C procedures in the main documentation for further information about what these procedures are doing. This readme file is only intended for argument’s description. ## GENERAL PURPOSE PROCEDURES ### gmfopenmeshf77( "filename", mode, version, dimension) Calls C GmfOpenMesh() with the same arguments. ### gmfclosemeshf77(lib) Calls C GmfCloseMesh() with the same arguments. ### gmfgotokwdf77(lib, kwd) Calls C GmfGotoKwd() with the same arguments. ### gmfstatkwdf77(lib, kwd, NmbTyp, SolSiz, TypTab, HOdeg, HOsiz) Calls C GmfStatKwd with the right arguments depending on whether the keyword is regular, HO or a solution. From Fortran you need to provide all arguments even if they are not needed. ### gmfsetkwdf77(lib, kwd, NmbTyp, SolSiz, TypTab, HOdeg, HOsiz) Calls C GmfSetKwd with the right arguments depending on whether the keyword is regular, HO or a solution. From Fortran you need to provide all arguments even if they are not needed. ### gmfsethonodesorderingf77(lib, kwd, source-ordering, destination-ordering) Calls C GmfSetHONodesOrdering() with the same arguments. ### gmfgetlinef77(lib, kwd, IntTab, RealTab, Ref) Reads a full line of a giver keyword's data. Right now, the default data kinds are integer*4 and real*8. Integer fields are stored in IntTab(), floating point values are stored in DblTab() and if the keyword includes a reference (GmfVertices and all elements), it is stored in Ref. Note that even though some keywords don't need all the parameters, you need to provide them all to the function call, use dummy parameters if needed. ### gmfsetlinef77(lib, kwd, IntTab, RealTab, Ref) Writes a full line of a giver keyword's data. Right now, the default data kinds are integer*4 and real*8. Integer fields are stored in IntTab(), floating point values are stored in DblTab() and if the keyword includes a reference (GmfVertices and all elements), it is stored in Ref. Note that even though some keywords don't need all the parameters, you need to provide them all to the function call, use dummy parameters if needed. ### gmfget blockf77(lib, kwd, BegIdx, EndIdx, MapTyp, MapTab, BegInt, EndInt, BegReal, EndReal, BegRef, EndRef) Reads multiple data lines in a row. You need to provide tables big enough to store all the data in one huge memory area. BegIdx and EndIdx are the first and last line number to be read (1 .. NbElements reads the whole mesh). BegInt points to the first entity integer's data. EndInt points to the last entity integer's data. BegReal points to the first entity REAL*8's data. EndReal points to the last entity REAL*8's data. BegRef points to the first entity's reference EndRef points to the last entity's reference Like with gmgetlinef77(), some arguments may be useless depending on the keyword but you need to provide some dummy argument instead. ### gmfset blockf77(lib, kwd, BegIdx, EndIdx, MapTyp, MapTab, BegInt, EndInt, BegReal, EndReal, BegRef, EndRef) Writes multiple data lines in a row. You need to provide tables big enough to store all the data in one huge memory area. BegIdx and EndIdx are the first and last line number to be read (1 .. NbElements reads the whole mesh). BegInt points to the first entity integer's data. EndInt points to the last entity integer's data. BegReal points to the first entity REAL*8's data. EndReal points to the last entity REAL*8's data. BegRef points to the first entity's reference EndRef points to the last entity's reference Like with gmsetlinef77(), some arguments may be useless depending on the keyword but you need to provide some dummy argument instead. libMeshb-7.80/Documentation/libMeshb7.pdf000066400000000000000000010045121456732543400203350ustar00rootroot00000000000000%PDF-1.5 % 4 0 obj << /Length 433 /Filter /FlateDecode >> stream xuRMo0WёȬg.¢A ZtVPxfwPѳGU-hV}{xWɵjKvj6m?2doCx8>̬ah33Z.8)8o@Ǐ1R6lV0z#0pU|)Vi2z1#C53溏ۛ]*nHZv|oy ˫O j'u}v VI`rӏ2.6>>V'j2Fu<y$-wiFXwI)gQ[fV?Ƙm Փ6g/tYGc<a@Qt惈{Ƈi)5)~CE8i)h5ظ:' If.FIYЅ D endstream endobj 1 0 obj << /Type /XObject /Subtype /Image /Width 900 /Height 598 /BitsPerComponent 8 /Length 70710 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIF;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 75 C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222V" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?غԥxEߩ⠲P!{QIڔP1Ԁ–n?^vڮƁzwIؤXp)8 n]ذi gc&kUal] "[wTYmqVNъ6;˻|6R0֛;ژ탑֛W-Z׶:z0Up;gсtt?*ɻTkW@)W?eMZLsj#]ƎxX+5jzM~Xa;@iB텵ڥ܏RN?q.LH~kJF<ۙ a O~| o$c_.;h4`V?+XӀW ƙNO .ev"%wP#B PŬXO&eZ%?-gRqLIo 쵂Y <{ >c/c O OJ4 u_1icmg8N],\`GEu Z=;:ftxh] Vf5ɠR-OoGXœ(bjG O -5CV ;F?)o)-QceZ7mnom$P^Lj}VfgC99:w#]Lnx|5_"Oq$dS?a?; L?[Tu*k7a#Ez i~7g)}јn)؍O<\FAQۏ֥Ó[3|o\gӁRoҷdhq}n^:`i?ƚt Y vr}5┓@ⲊH.46tϭcA?Y$Elc?kYfPI9*G,L4M?:վ8t#"<*ApϽs0x} fVCZL 0u'lokn#V5&L.TrI 2w?)^u\\j-][9 K%Aԧo—B..x˵wUw `b)(z,z^Mc1kJ7=1|iGS۟ Kd ckwCYZwOp=ynEKt ?*7jmnPFYsQ`:î݃ɋ?•u@GO%?¹LΊ̂3e亩!9UJVC;3JF%Rjc[G~S*,1UH 3|dۿ >#?ߔ cxT‹l ۷ ēY8# /j^F|K_TEy 3}c?4Z/_𬲵^hUU+W_zlvj>VDas5_2Y|]0\V$Vz¦ So(Im6FV_ ?.ĥQ La,0sNn|.׿li@>cݓ&;ѧ`*[N_7xs6 Ž4[#K-n8t,l o%?¹FLfi|_T A!IO-I晴sE't;Lvx*%z ?\;PKZܺl=GhӘ;+H{\&OYU]F)nv&?AXVNgYGZlsOL.55:V.Wٿm5^f+Xex|~ְVr.-p*㫮 [9}*+CPx7ֵ]5z{< ` sSB.SV.rIjaŒjݱ(nc'Fezgˡ]_R_su`*c!ySahZFy}z֦K\oC8>l-kMAqϵvw4;r9ҭUFJ{"sz(]t% ߐHw2mpD)|ǹⅮLyEW* Gޫ%5&sT+4n*- J) u%-! P -h (H9rMjj, j`j¡+1 S6Um+Qnj.vK>B߭V hˡqTL>!p!M;iL{νTI©!^$!{41>80֪p{}5hh W|*y8C57)ں-qkOD·n$c?XmxrS>QEާ0"1MjXEm78OU$K,죃JJQNQM`;Dկ4k绱$+>Ʋ#%)ސQ[iWV94cn O^HMǛ.$s׽&IFf9&gF .p=)@.xPY8ib.@DjPS?NՈt)}#IW^;C%u1,7CogQW|WX=#ۺ;gҸ'؏O*"[Dx)]dž܅' Q/RƐJ.>sp"z֮ͦ8kJ[ ;;M>M4*N7onNcPhZw kĔeMд(C'$pYm/"Cy*I=R|SRX̩Aʧ7c0tz5G͌S25mW#(XhaV?Zșh6Yf޿I$yq͜g4qME0#"i (DgⱼA%SM_[*{{y#C,23L!x#I Gz/IULdk[y$5Z&8+n3PW'qS.c5,>TRkooGbcG7oΦІDҚj'CJOiPA?VIɩIzTb6ԁy%Ź5'fkL񈖝NNiÊVIYk駃ZB~MOưDv>|z׼m ̨=H{!?VU'xS?γ}ȫݯ-s'j3$cjo[Kұ4'7~?8X\GE\/j2XCҬ\G*f2(x$Ul@Wm(¤`!"FfYL,>tOj6blfW+6U ҭHk_2)ֻA r vp}acoB㢋#3@#UIU5\&xjp ]|4Q_ЇXWӦ+B@ˊna c [Q^,M*zuGjeI0(p@ A:djy)e6qj2:$ Oa˙SԐ@x9?SX,;iE6isEBvis@'ψ)Nk@5i:;-}KVgL${1F?>:.]P${BzR2^5l+cVT6LL gܷ76kK 7}4ZPgԟQ{TFc֘yk6T+}:aI ק^xDFW9l"zg[4 l1Ҩ.z94vӾ18;{c3čfX:27/3Y۴P͞RBʕW!2U&ȽSք,$¼#Ė[$T:=Jf8'֤:wn`!G⍃Qִ$ڴ?KYT{aЎ1ZQK\n2k?fs+/BԇP+)7-$gV5SkzQqjwֲEIH Ƞ~u'=Awi6A@E!Um|}8#J'?q}cO4v華U|XC^)X Űx5hٮ0fi3W p|ڷ H e+R1@Q(x#oЏf5$}*z@>"M|?ְdZ.~dQck Z#7^B{xM퇬ݬ'k* Z߫w?B?_RNC_7SB [ǘεBe &>kq>ahrйuⲞGIL}e_kCX6P%$K灎Ԗb5K}3=<Qcʨ%b=v0gCƸU=FsXO,B8*XỌ 'g?-y=iF=k""] 6DEyZܫMYrJjIMS].@y5)A%m$mچ묙,26A2=, m@I2*!֥ZEʒoT{)A@) ѱ+DZ*x5Eqؔc֤5䜚Y5'ZRyN#5P6H4 9zi0 >.3=*+jGWUGWlx.wm?Gvc4z:JFGS-g?7?מR@}9/ֺ W ~Rt.tyO"=d `JL &?j~ȇI晨HK c=5t'py#hk?W_t23з[[iBVJBЕc^jV*XYOqIei S튝oqf'Xy{Wh=ýͼvYf 5k9!rⲮ:FtkͿ3n7w/h_ $1Z) S8/>Tp@ 8Aִ1h-#C`9ɤ`Yz=],ڊ Fm#"Sny?\^%OH-v# :wuyQ\FlgEq2V>~q2jZVI&Vmʝ.(k5X`,ǹ2i+GGQmֲ̄kOEBjm-S\bd9 4Zל fmZ"Ӥ 'nIެ:M[*3}8ژr1C.#d*nWVӬ1$I %4}Oѭ 6u0s7x(F٫QX C7"m35V}J=VPyB7H?*ƳzIq*3HԊQJAA}ҳ=PŵQmnf`W)e\_2w.sz L"ɍŸ8 jQ^憎SO}U@ӅI$9UI$J{+M򍁉ڹ'xFX2k↾YJ}@P1'֔kE41In(|r=k-5IG )9[B*Vzi[1sҪ؁5fKyTïCN0m$nxך0%wb:YZ^t'cRkx6!Cw$.XⴗT3H!r OVk{yNc~Zȃh 2#ϘTh/5*j4n*SЫ1̆4剦@֗1GZSIAHe^V}5:V75ċMbFz8l)AjD#*`8UY!2˜*n'P9aPm QB'EЋi X쎿F^c dHո HFRj[|X{YILџFĆK2Hϡ_kmK%t~[hQKڊ2XSlz;#Tѫy~M:e=ey:5`xc[m*Tb5|RsT?4kT'>TCq٫IHN}( K<}n)lG?QwZ5hxnniówc*Ry= o tt,u]0svAr(_LknG|3Q)Qs֘GO=D?fH=T1崋0:Fu/j"Id;mT_Ri; / &ރ@?6?.5ۏ|b_ߏ^aKvVF>X{ɷZGɧI"#[[>㡯 ׁ?]\yW:|xqT:zsoOM::C޳-RHckg=zTE5пVS'?ңeE:B)z&oX4o SD?4Z7=ް} '>5 [C?z@Z,4\1 pt10#XAڗ?jj2]" @1!@P?g9zROQ3sZ`hqwx@kѥodּkw-+;[5OԐS[ I`8'5%mvm[=) N?Cn3F51zrЭ}TǁX2Ohg/4JK1ܚ|[{)e yԺBQs;#H1ZtR*-7?z c0^X^k;IkJSI$ `}){qLKr- 'JB[,Ou>gqIϩ9LyxՊIeBEU)LMi*{R>:Ҩ`ucVEAb(@1Ԍc$V{vɨZ LADN-*kb8bXs|{檵*/BP:S@犊9 + 2yCZ W;g$݇rTR %,=Q֑Zf1+a v{/X礂_mq^DZ+^莅 e(}JpH?ʋ6ԡ s9U?y=z:?=J[-ŧMV$^b C2-v 4h*=ҬbӐu*FYYu2߀&i$S@+'N;}iҗ#1}M2i0~u4B+c<f]RiUG\ױ~Mk1eKgx3{Io7AwEqIu5<:G^9 C{\\ Ѷ&njw59En*g%C诩ڣmQ'*I+?Kՠcm,\]Q/yf]Kgre9U$ 600s6 sk]C U@iY-"6#9#{q3sRdfD<]]sXesyVROlJX|BT 0E,;{> 91BP *@G}FGSCˈ'ȯKSy瀮SϵH*!@2X.|]cC4;~9мmIWQ9:Oc!Pp>a^=ei*fFB;׮Vޖ0=XץJGOJ@➲wjB%Ld漣ĿDڑ?|^NI3ω<%f87c@j|-H5rNw'@Ǩ iV= PlܵԄhV"l"I'8E)vY\'=*8 bRf&yW)r{dM1nQ搷%ox@n%cHz[?5 $GcqVU4TOCRE)V?Tߓ&$F,#aҲaP0+'XqYf?=ڏO'ұe#G}eJU9C4P:?ʼ٘׺&圓W-mv\۸Ts{xy3,'"`=mID 7ce$Vęd`Vu~RzQ#IR2 Ꝭ.V#)_{N &Hi'6cP:R=*6Mad˻&-ɨX9nNL=8i'mkl#&SM(Hhh'JX4o5U<6PlH ~u 6 Π +QW|+`)%=V8a{UFڜjE?qo^9޽@7_^/޴4{ӫRGji(NM,{֌'S&G(J9f?OAH9 oP)ڨC=N; sN}hI`oYYɵ\k@A6OXU{Фg0H?ET6q~aׯ|GkZ?ҽy~%B=OjJ%:wyd#5Ia7W;k>2N}'oGn=I9P9gX#8hr3t?6rqҀ-!Vo$oQQoLyXG p}E 0zԐׁV.7/~T e;3Z(1k-8OJUR)!vX$9GCc]֙K$3Sy$rpj+{q֔`6!ʟUkb,Dps=ֵ ht1 }b?+qU{{/NzEζ5jQe.\9Uv>簮2\Ԍ128@vc\2;Ӎ(pfNpހ{V}֜#BI9䚂*F.6Fr@feb=*2րK B&9Pk>LL[ q?Ƞ0*;{gJ[(2F*'lM0#l ZNzSGaPH or:ŰX;\hՔ\uTjFzgd?Z@97E(Dc σ뵏jX*E#U[ 697⚱_!C.3^q?i2I@jbb}@5`te?r;'6=7/*ힽ= RSKdrHX& {|9>b 9c]o݆EP&i;uLvF(8ψAN!)N^iA7.>_yk h@?'M5)Aoh_VHbZuZE5:}"8L'V EWzw  ~]4׺&Ze fx$upcLX,MI3t~zq7bO5,b2C "{OpNGbhM4x%-zJ^6mPZatcqMsҁH8RzTN.CXFpg )sdjyڛT7qշCӚRܽȤug4ڲgq*)ȮRv*+vq9TwP c)2iS(5-&'CAbM3[N~`[-jVU&]i+MR[v B)(eNQmqMwaJz̖q֑b~^)P4pҚfǵ1c3M]tchI1M!~ >H=mAOrl`{wʓ\*O73ֳs"07Lכ|]D9r]LןWbl 3Vo25+jʿJKf'{lqZшgk 5ye8#P=qGM88g5#DU[ 1<5DhN!"5'5f(& 4 @@l]}kOob]ϏξD?XK)ly:)s?ũc ܓN{Uxv[Gsd4vOV=*kT=#_U%Q|AlدlQ\e/Rȥc;kj="?ι 2%wGٴu‰{,(U=o8c$p*̹>Zqr!mrxiH9B G %`yJ[i-3 @FH :33P}E]19=M);!#y%@ץi‚Jk_sw7MgrraEt6ZVT9<(xkJuJ9FWk"ZCHf|mWDmx,ſwE@aXdN*x)R9=koﶹF^~I_C\[6H0}šV[)cn'5'UOTW,cEƢ >zM~{E?; SY9\<{&Y\߳HtMQԁfkה󸍽y7'RY9.OO C:q녣?&hyG"'NG|ⷉ4O#܏׆G{3cׅэ]QH)ElHKH~ԼRuM4d p?J==2Ii1I3H8?bouaѦ6'(cD]_ù6x8++Jt:]]JMe=!ESNץx{NdN@l^xe/kGj9d3P{#'жJ?֯;ⷈ&H@T$Fqls=GY]cqzcj1FCS@[<b5Ssѿj) {>lÌ~$!8 jsӶ{Ԫ\ͮwWq خ[ FI~u2:m#ǷN*TrN;L;zq.1d1{L'cD5qH e۷z0qzȷc6VIƄU8k5&#{`j gϴxx0)sW{!3)nj4XX\]kq" QMy}VN{Iյ[F+ ի'y"p2z l85gRO` ^1\ԝ~h= ʛKSǪ^)Tsү'~8n F+?Rx5b@kG~EQʏzB):Ҏc4=r҂>SHhv)G4\i5C|xaֹOM޸_kBǘ!?xR)'<+rNBjqꥨ%dR;;ȿUqUn?Jx8Fy&ݭ@=!?[F_&B9٭V Ee&r~6suGDwbbǓ3ɳ.ܱS3sڳ2S8֕Mb <j$GdmpE^L<>9F Åm`ݳH p@F@qFqYUӨNUl b;I^&]o^{Hb5PX%RvCnu\Dcl1p cگ6RiP(ݍCv jM?TGj+i[qEB~7S risEt姥Zv(i<=—0~_½k{Xh 7}}ΉۮW(~E?k-XIeWj-,`Xo֗t@d8yRmXGwc+oրi!r6׿v&U9{c]: 2s}K?-Y?L?#bﲯ/Ư\h3v_O'W43;ZR=OZrӣpe_SKTSG`gr~)Ӣv |_?{&/. rm BJ&xIևТT[ƣ/~5ϰUQlj\~"B@w7okĵR󪥻IK$;R0#zS%ȄN:6Zmp!y?5X|)541Z!3 [}(7)^oNrk8If(ԙGq~6m1ЃM[Q}MwX6ށԡj ]yC jq{1Y`pi-2GvVqR:k.^Z2T֫J&8&0 xk 23lHHg?Z`dҪ`+`YbX!"_ʋ2$H: <_ΧD~Tq?*@U,|R/܏zhB*\ NԮVJz$hX^\U8=jM0.?]] b8k3DگnvFu 2>+'C|RW}(`^ 0.j)n`|>'9@%AqmFx^h *^P;W1\N{=-~cW[1Y:UнDFW9,z0?*Q +{I%ɟ^ԴSrzY1Q_LDY:}Ǔ"$O!9ɪEf\W4 >02|Q|־LgX׶y1HqE=oT.L25VPrwjvf;qڪ +1,KOZ>}ޛ_WXltcBa@$]D.$0r'(qkm'?--?]i:r=JO)ss=hɞnOhc^[@&nRD^5iKxq! i\3p#8׭jl ~7/9k><:w_[$ SCƤe"ĢRUR{st}eA[-[G)_Z_%vcsxǼ txq:#[tqUOMQpU簠G_C2Pz~$ɪ9<^:h.K[%c''FZ,>i49J sZ+Ic R E-1 KEW{Xuk{y[lncTʲpr 躭A@[~?4V#O!y_#n{HEnc0\4R=eW+%vA 똼yzħ`i 1'{Py`r'jh#\Ƥlgޒn@QIE 4RfZMu5+0E,{UbM! ^o 9֯pĥFFOZaz ҼkWuU/]EެZMyum$TEkrC JE;ª~>b<-Z'Gt~ M`YTTe<_쯿v(:~$ZDGFJ XAkӓ=_ =)ԋ\7's{zR=ҡ؏\ߐPǮ20X+6l/6 dcR/#"S["Euxk^s-֟LzOk~XGOC!~L +85jJ"qLkixXA`9kx:uTb9r+uD{KهbuBV3XɦpcҴJ:ъP(%rMds?x(Z,ZJlG GbGvS9s>Iwzϙ $e-ӉzֽWHl{jdքqIOSDJyy:[$fI6eecXcar$c2IY7'4asffP-pqkoFZk Fz!O)y:z t,HR_-o`/iEEXudB EV kw#O5*' F÷D !%U7Nl0Sݏ5Z"⺘.(A_J?ں9$ؒA'Mh;r;JLgS\Mia!NF܁*iD&[m\ 5 G9nRx+CI\K+;BF+SRD1$0A9>_v Il㚔7bh8WLnH6ASQd֜'czT )f J]NIV)CH(T{ӒL7JNS`( E%RQE-'ZQ@[<9(sI$ZRd]ё@!OK骛H(`-hRpLJ0}(>Կ?!R> .iW@Z5g RjxP8{m͠AZwql\#\ÚHfi%3I7q5{65 \ks?誧0rkxLi+]r0U5G2m~'% 8)W*QTKIy6:n/ Ck}4|O/afEg{Wua7FT~']Nh`mi1OV>ϒ6k!y.g-ŏ~Vs֡76P?ZcAQz⧽c2Fp;n"nWM=з@Ѽ7 v4YǟÏk[{;r67²O4*L[4}_jՌwv3 e?\8Ap>+j6jѕ+{Vq۾ }kV>#alrrTRY~S [x텓=Qo{q ".m1\iZ\c*{+>(5b;Y{1t( s+5axMZӬe {8G&p=v|5GmÇ~νj8kש>vXYCon$O_ǭ_RnNXZO76_}o iF^O(O󾭪jW]]J!cڝ:noRv7CcYfknv c*}gQ[X+0,YTᴚ)ƺ؋k'sLPv3mt I7@]3-:sb9ó//$-IHE\Vj؂nR6r?T#ӵCJfb?uNTcAWɣI,cE6-n$#Q:qJMR[RHY^6 ʨxms@hqjo?[?ʽA P¸fZw)kEIg6>aQ^yk>}5ҕ'*s޽x81I +kt-$G5\8Fgiu?󨜹cqvv?+X6@K!f@<Ñ\ ͬ=)rBN^5 y,tÇvp/ʽݻ(5[OBԜ]kYI"zCy7|o뛢F-AG뷞#դrYȀ%3L[+.U*h, 5 y3eݤGNǿkdxIꩣkWu֨ x$T9*٦hUm ^Cv -e{Y/t'*Q^x Cx焟z'Ll(8hGk9smis(=W=H"=!\+\݃d)6q5 {])sD#< 1ZY>&K.QSx![e]|Lo=SC-ſCSُI MgVץkysH,fAYx)Y~ing?]|<#n+vd| X(T¯TaDR[,ҔH9 f]l `rvUnHd}fo&ذ?3|W1@?zZI=KbJڅV|(UV@K)4m{QD0@E\z!dvc4 EIG/9QRǖONdv=Wm”]avd?h0 p cpܒ1# r€"h'=*l'@y~y~7K|P>X0K|S=WAK砤+Δ}f s_3pOڐ~gÎxd/5u~$c\k;iٝ3:?*7Ә{)JW%T0ǧ'҅uܤ^Xt?R2k%y6h֨F=`\"z ]>.>ׯjDmq]o+/NeaZ|mwi9`:yґJ)M]!/`=VW6n, TnWzV1!՗v_G.2'~GP{Q/5|,sasoz&t(vBkHH0}NP .ԏT/4UB3HܚtٵKpI#g ̼mkS$e7SzVß onLi.d$uxJG̦=k5ϖJgcbWZλ 5b<.P?q _b>p[VLzMo\fw_2C@^ij#LG3LֵLw;TdXyTIVn;,hpz#Sȼ]>Sg0=5med'X b湸$CO$P\A^Xu'C =' wMҡ7z¾N5|@^ice+_kMS;Du}Kӭ7{vA #ޘ! ^mZXZ$:ׇ͍ÖrzW<:SA ~>Xb-& qYVr=AaqqPjzM͛|,l8t7z8)X j|Uxة3 񍰳}vk+Ћѓ"$UQN,J-WݏS5^nIFG?ҽ@;>"["P&}</G/sq q(1CG_WM S>: iǚIݕ0IgkvDwk GY%N:+ ;xQɫ>Λ͈<7oνW^."P$ s[iHx\:F;[LzhqvFMmŗ;Rڹ g18-_,27=A5_6؁] j:5X~^$5]EII!Z%#%$`y+3WEOѵĚ|Ѭ3'#*Wxf&կmTJ]Yy=ǽr~>PFqkS9lkQn4Hd"L?ϭ2(Z{Av |#)꤃[ 0aG2'עݕs;'"[wʹ9E\Lx!%YX{׎IuӸ?:˨rJHI95 ?RvYW I5R*' `sɦOkulo(SBOZHN.- '/uK~5 +5Dѓ)E"Ƞ:dRR5[#BN9V(IC?L.Z31rNҳl,<$|΀kn򱺺lvcnܫ4 l\sXŏSn$S ?TG.Moc)"9_qc^aW#/}Ć1JzLLCW4 0BE|8i0F#}dGW^v3J/ްş.4?SY_Nz[g5э3O͏k #&t9`?bp:ڭ5}؃C[>2' T~iZJfaAQ)[`G;eQU8ZypE?Z*u* ފ(H )h4PR(ɠQE-REfZ))h¶"Mmb0`}*1svt%BjF)'ҹ^3q?w1 S&CtK)+M6i<1}ў浢L8yd|IASjuh:zHC5ΞSᾖ,Gj_qEv qlZyK=kF֒a d U+b)ݒ>~O00R=S [ݎpE@چpZmT]0W3oCGĝBh>y^5.pKTmo"'̇i?:gi@TY ݣIg"#&1[> N[w֤ W2 z34J|yKӵ)cffUar+CveӚh2vHn,m6`9æ#^Hcw'?2'MN*_L%]?~Nkj 0q\c2ͥqMX^$?ayZ /5 H#S5/cڂ'8o5M"1#\6pXCBQFF ٿ|?կi6ws2!\4;DZWXcUF:}MKg]tM.[*OP-eV}mOq$m Gpkkmۀ5 o‡ w 7rd$wv T,j$^K-~}N+6XSV"(SҵUzoQ(φ[:6ua|@XOR@ }1á߇mLP.e(ꮥHPsiLh:mHѩP4YY?p?(X`> O\n~|J?€:~uKF2|[hOҽW2),pbI"`I|Gi P8Nr+ž!^xɝ!W'@8P:1~a5\cۧQ-==B't>ٶhMR0\N*q׬;5I| B1:C.*>p"ON1]=ǗOyZʛ\ň$"EKcՓQphn<=,mQT@`H=+.Vy~Ndg@Ps`ؗՏ?_v\ݷ)nknt&  3=MgD%Ry~B+ WoFVD:.Ҽ0^o|CW%4L[})٨nY!IRo]% Ǫ~]LGKaS-"u3+_Sl'J p7]ت|dRݐR]o,=H赯wmi1rKJؒM:m`\g'iȫcR3+NV弅D?/Jt w[3ұ,o"\ C8$/8ʽȮlX~$g$?RZEm$2b{Qllz W)*̀zniKDko¹MiAXzLp(˂4P+ORkɾ1O׬g񿋷!8 ?V~0{\i+ v uK@OKa+nTѠ+J3\ *?P?JA Du85xh`]Ea"3ҫ_1]>TcEoHT- Ҿ'*yT_qKki'*p"Qr)vfjnP=j4QѺFe$.xx62XEcMٕIn ԌZ# ƇsP)ZW`Ysu?n; ެUIktl=\wtv{L+?\·[RYfINdecj+xc;qE;<߽-%!KIK@ E-QIJ(M%PKEQKI@ ERE:iOVDžRm-Z>͢qӎMv:ߦ#U?qW"ܶ\OWcPkд#kGQ=o2埪[5`do>/νDc=[k h?NvijKva=*yw@'rGP+:+5ʏ.QSgqO {ք2cO( ?/{#>)Ϫ\+@+MI\bM5}-] 0ԛ*؀O֖Rd}hl#[<ܒFH ۫4:q,ErzY6JmXj޷0b,Hy1I[(|/%MOW)YySZLj5m> @#A <.i#8'wT0–[#B"0J[WI5B זSVvɷ}xMij5yu1x1(U? ڂB: /ĺE<.=! SY_#F7a9<~5X,OlsI;n:SBuj#ګ%d^jyG;-J%>qib%^Cqm9BW~/R-#lwFw䵹bmm{}* Y]%yjvz_s"7\}V^@{Tnb Y\]]=j ;RU,oE iup{Z:s@mpZ I#1Y;j)t97C_GOd^t1iڞZ[Yӫ! o]eT秩y>mj^Y([+1OXוb7 (XKPHRZXw!#I[ t좺v薙POVCm@Aj%&; &㗯86{0ſ{XӖ),wwȥϦjR(ԉ7cpbwxmGz5i:EGgnۏ=Šm+AuJsYUr&L8ݸ+i6w Ӛk7O==Jy^OB~h8,G@ |Dj^0[)*} z.1_9;4rKMoB=E#׼*1gl=-W fϊtW}။hAW:ZX ֎oilA9s)ֺ Y4v<=|֙5?QJ;NRۮA̹3:+ 3\+ȋ}z(}e`RާBE1^P@ 9Tie|pGl % +&^h h3E]*t'>ECު.͛[m"%rPZ:$Ĉgk?Jtp:Tu?j08y0q(B+H$leJ Ҋmy%V((QEP)i)h$SE2xPZߠިB~~o [arsE$_UqqvzYTC?N?߇9x\?xz ~bI'QAʌ(펦.hr/>+9e^-H6sXfz?JA\$>r?CT *U6O =Zuyt{s6zwoZe9F M_ȑ=!a\O1FҞE:kTCL"Eru9q ~>$ΏwhC]~R>"Yaö=WPQgXOw-,d^_- ޑ+vۃ)Zf{g<Gsխ͢ظĊW;\27|I4ҏ.%,X ~oQZ~.#m"^7 ;X۲(uƧy|gq_ι?OJkZV |!ʌX㼄O5mͨ2Bv>!z$UED[N覮|Ze_[yFvW:i{h푇_RU >,nOWOs7y7|1NG֭uyPJCkOX_EOfӚ7E v۞kG8&ǽ-Tvq] <@{A^c"w@یv㟦vfa Y=Mg*KBY/~͓d I /+{Lv#1N>Vǵ1b%i:be''vZVt[ v(^Eki COk񷊭7;m,>WςYu B[/#wcܚڅ;f),\vDTi`WYw&=_?0I?k5{H>Ɲp>j@iLט0_&>bQ^P쎤W(3tUԴ=jK;ؼ_P{o"Ó X8;BxSIpcmXrGҪGJ)qǷʲ \IׁMYCi3 /W(.l/Eu`OֺUx>F3q׌Q%Rj/:>hJNk>l$q ׂ֩#<_F}^myaՇ ՏJ O}Q EuV+hEqx**g?\*i#`,N=M>qJ QFNN+"zoi7Ӆ- RmoY +Ga %x:Oܑ-+BD~B*rr4A|;)rzki q;A}WE_MΧ.+ֹS}NʩvJdrǺ[pUm7Ql^ҭ m8\㏇=ԗ %ƚ#>\@? R\֯/kLd٭oklB1WDktbq<. ~{NeR<|&c#bh|.W8%TW"O+<r7^5_,v?40+t]ʠRS]imQTJa -Iv)Z>l\zT#Z.x#ڰmpǥ@V zRq\'?.h}2=F.Ng!;U՗KuwW iKINEYv{?-WQWxxP9Oꟳ@?Jyvu/*@VHޮjkCJZb:CʧZ4(a"VoʏxV5fA"֔>$QRA nE !hQ@e{U0[6ˈU20ԷebwMW P'8QoSKoȥ~$"8|zӱj8W-A^(`uw8gsXt3O3!Hǥc- ZE6V(vo2fFREtQ@RъJ(QK@Q@QQKH(E}XgA€>qḇ q5NBW?S\sF&ؿ #SMt~I.m\ƅ{\2|hyj68u$rOփ+|F8fP m:ʓ`}E|iȮ/tuKMP=?A>RXF]rSE8H @k3G&7pkWrޟs4bU*O? v4͍1R|~SqH`l1N! P{ZxsT5 ZHkۘ@:'gŖWGx=*'d&: K UXa"ׅ]Kp͹$}MC=ķ21Ozm:JNW'PZp vkRGMi3FygB~aۭu ̚#.~&{oj:,eNGJEIY;P3E=Ow8J9Zn~/<57,rWxw>B}L@zW>W:ؗ d5"ɾ08C0oGALjߌVEH17̅pR0Ktڹ4F0 ?*PQ 8( rRyQ͎,l H$Euyi4W c0a'GQ{>,/RPzMjU4d9hup;ג_jWouy3;c[Ӡ嬶%ŭs[vTtA)mP[AnZ]i%2\M40%"I<yVHT9VS {o>%[ŧj,7IXe^7zC)>WqNf%q:dҫgzP6jC۟sP1DFyC<*úh#N)ܱsCN<.ҧ[›ª]x~O܎(hgsq q2$QSǿ_V4;,I{:}}2瞕Jؒ=y:Uq4Қ[ SLW:>.h8#:xA ĽDO{׹i՞f6S#S}+Bڵ4_jZȞᐃ~Ozd<#pb}x^u|Yӯ!U&d(OPʹߍkr9;|dzцw'=q@ 8>=)8ӰuʀK3`v!{h8U}wZ΅,$XZĿ5Mi^6V ~vWrx5YiߐC:'yKI\gcM6y4y5x[clϧ'.޴r??ZZ7k֯ ]B.- ~x޳M{6сz+{;z-ѾfYQcZwh=Yl$h)Ft"k4?E2r?"ʿֺl#UnCD>$ O^)=)@)AY SVaɉ L ?JPWF ,nA4cM,\0TSdQ #ڣߜnӷB)]S;mG\\WH&9CѺ5.;^j;|}DƙIUFV>sMzFp?ZxvmfLRpviZ9e-Nl +N6MV$pG5.(Q@ KZ:fk #YC1uG,q !!FH,`ъݟݴFYl@@ӏ5R ˸"݋,ddÑLzԻY3lbh]--l+?b1T1\I'5{HPq˸=@u.?hObk)4fVl-T4&>2ce?w{b1F +XN +W1b1r-ekV}o$134{c۟ȿޮ6([lO ,z5 ,Zo֢uQnZGd[ F~W]A\Ib3^ϯÝ>O^z۩\hkz/r$QkiX%x^Ai_Iyp?E7l:s[8nM-~5s~>4yZRV~gl]"F=>.Y-h{ƹo]tfXou)׷2!'bjR{T8V$lqjZh4њhdѓm-.h_zCFMC$$dJ4jG4Jf`Yjc#]m-j(O^|Nj35e3=e>4>sj2:yNhOcTv3;CLjX ?5_wڜ[nF&]-JUqc+Wa 7-NU 0 P3FEGϭ4&i)s@-74w&$k"֝ɢ(l41R +C/nӃ@o!cZAUߨmcLFxSϽO..U\gBVFc+[h#](H7 6B@t-(1!z{TFk}9 q{=ց Q 6;( ,֚P!y.]-R0ƹI$1~e9R26K)#!Ӕ[IC.2ZoQךI:1 :~O|=/e.̎S{RϨ\2 ո!ڭҏ)[SgR0Ou*??G+hNC0} w^~<Qnijĵ ?Evt O)ک?hoDEt<o\oUDcAR^X[_Ÿ WM01w-W _ꇺA W|_”|9Տ*_Z1'-I3 W?W:S^jojLO)驟?t>G'):9)jf Fo'h` T_' 8ZPf|t٣ 8K.?/֥?',h`ЌxTXi?Oq@ؿ@u@GAOӇC-!iG0G-+}?x} =~g^-Qӻa'-K}?x?\G^Z?\?o`'-[}?x?\oOW:/i:4z?t P>¼G|?J>)_:j?x/t?TOčhVo,]gyiڠh_q??'+/??u;_4D֏߳4Zhh¾R½??*ٟӷ?Ewt*psrO7iVO,-wG,=wJCд4k[pv|=oqUH?^|{YbқՎa$yT"(xָ1lD7K>(2dzӮ[ j{k{ #]?-\T]GֻQ1a" om2Zy^H5T {«sL5nQ<\3]&ovL Ϡ?PHv53:KcoZ5BSM'&#Ҟj3OJL KklЩEPQKE%b (44jDyuw.xYsN;Cp W5E'Ξk7I 68%t"Ȁ!n޹)rG\u[B"O $?ֈuE<҅=+=L9Z;YGqj[j(nH )?(=W/Yax+|:?)\4_ ~i{^9j#=dD|g?ƏLQ-#ˉO~bFQj?(񎣞nW_*\Ot?S?1K)?Oj3DͲ K2/HZXS?0q^Q ~].Tr;2C6cB@O1Qa>Ӈ_*\OtH<O?B/ԁk?_L59xQ%? ??0Կ?Tr{"O@oQc>kcL>0p1z??0N?#DU/Hw -[/=[jO!~?/H_@z7)R7.װvWc?m/LQc=ZSfKQjyn-$pa#?m5;Gw fwA#W &xy?5RslAq)Y?>W?E ߳4Z=-4[%zh>z?Qgv?@|4o?4s-4L>Az??Ɠ礟Q?o|Q؟ 7E?G&ZO <4#h-笟ȣ=GOL/?礟 <)o`hOqn8CE>AerCC#*}79]+Ƕݶ7<܃l@^|x0{bpzO5L D=',+ tRWoC*Zoq@d:ˏKVzMX( AAЮ+Ne]]nWj+z㰬$P1^sSA 3^>0O)oTg'Pd J*Nvkth՛a'='A}VS$NoNq1zt9QHe1֜~!RJ_)B-KJcZ@@>9*;ly\֊ɭJ-&)qZbLQҖ (\Q@ E-ZJZ(-% jI~cWuq5nfFhk|jcֹ-g?α|FÒgoֵ'>k)=60+K<RMw GҐsKi_]<,-ñ=ƋcVw6Tdv-&y"Kr`&i1A]m?YЬML(z}k^ {vdxc]N%m 9tT`V'׊ߠZo"=&V1A9EG=zӠU?qC\t>H/D{DPȆ+lYR~dd[i&P-6RXfB(O($;v~ =0H#XȳLK&x͘ǻ8j}yl 4Q<ѡH$f5=G}CBޣ7Utn<ί ~OĞ./9p\ǂr N ȳG$7l̗1~CX5x(ض{V\M5̬<>"Lu81l1_ֺXEYVӥPN=둓iRzҩ|LObmR@LφuAAOiMXfa(4Pf,o*|*Z(Wm _Z e}UjC@͜`R+6n#C;?Jφ oyrmo||y^&&"1U_ )9QKx)1=u < Q̀/77 ]Ν4:'`=+*htL$|(}hCBebAv8Ud#u\{7cb(IkWv昁@H*8@bNS6NN3FhHE;wCVo/|!@ߐ~Kp3  ́զS2#e?ֳa?~ߟl( >qH >>R}aPQRfI36}<{VtMHLnw O@93ڏ4 Otux.O \#>yһg:Sgs!̧҅vv <]xsOKd%©`7duYXa@`{ iDF#d?tTʹbM瞣 Z~0.)sNnif(@!9$=)h- o10ʼl5Z'ΫQ,&8u[mp~DC޺?j#dc7puğ9N= rpn9%ByOw.U"b ohkJ[EnHu5-S p;pjH֐b,Jj&1G%c>V(`b8)lb6FqKP{Uiȧf2Tv'nC{SXy&]S E[9=.cqZ?/s;gz[ "mnоFʊ1y^MI6-?*oGu,.{D>^lj ר}z{T&|j[v&*1'}k»Hr+*{vm*KwWM#…VT#=*(&@wjv!rM.1|xڼv|{c_FRE5 pF*nj|'y>WrI 6'4zހRf4@yz "zfW ӡ[0g6OK;d|8+`wb#/n Zy1rk63t[-?VB>j0A,+άzk[D7%D?s^}zx/h?č;QYXY[]2IFTQf @mND|= Ʋu]6Alѐ HZm++PҢCڝw* J@|5u dX`]o$3 f^~) *z њ:Rf9fiҀ3O0r?4g@]88yڹ<,rqS-lb!L0##56?ǚh?C7ce ؐ=5 [#ѧx qRfGCVLoO9ݛ2?½ZOGk#زJayp~z ÃoKv㿭.`<"&)Kj}7i6X[y $1!ps^-v3LjO;-@:T/T#0pE4nQ@%6- ֿu뭯 H}#5_xҏWQ\8gnȿYa?.Z_a[sv=oJfhFu?ԻeѹO]&~cҼX}Vu뙯 hrdoZR&TM"8, mrH)Tၤ<4nn)K cژ>h!  Q"E:(Ji_[DO86JR HEޔg%}QH(-&))ԄIKM0IE%)PE8F %GSMPF(:RRh@v 61}AN:7e&ڌ_w^q>?jv9*Q1VeUفk #J}O3mшs֧o'O޶9<0 c[_+|,3\n\H&k23? ,sPkB=Bd,OiTG4"=3U ;Vu{2Y͜Goie;A0:iQV4ЎvKo/8Ϧ)ldZ҆}r}WHX,O^+=AjUOY{ /2HUsӹ"4ȺsM E%fIE9dEb8nRQ҅W?NGoz>"N"Ǚ"!q\r?ܹ]랿Һ/?vB<>Ingѥm}὎hIVBzsV>ޕ"HT9}4p #qP?J(O|M~W'/!W')bE֨LIEst4"iM_SZZJZC@ih(B#H(k¦s_5sB *8Lw5Ӵwix~";g@}iwJp1xEOEY.?猟ɤfO׺PrPk]&1޼{nh\Hc7Mz7wc.5?Y]2<'4\oʽ#xMG?n? Y]} ?O^ . }qynlWxƩVȗMsMU yn)q^ S?K?ھye-z_ߓ =?Zh)崼Wjx(jլZj)آC?c|<7XT{_ 9ϳqfOs=DŽ-Ϙ{:t(Q[J%5^=V𠟥WBwR2''{g{Ug~+;#>'~)xcoxSBR#`t B-/KYk47Zqk+$Jq]8j?>0-u_1\]-MdOMF~鏺ZxڣEZ(X9cXk+W]QVJS 4ު%-'Fh3*1!zڛE-p ].<? 델U=:/KL d~f!_^G$%Nvmt, <>b>?ʑj(1?+~r QrR5x5?!\Mtb=h֨JZJ\@ /К@~cK!,IKIEHg!'#un+r1XHl :l4t_˹KDN s*u&+⯲` k'޳Q@t^?O\t2(k VُNo6n-dц_:_Y mGݹJi㐼Ї3aZr߾:#?ʼYG^rV) TL'5%w1W2*#֘NBF84u"CW~/w*_'i!r,zΏC=Gkh)=GG!w>M/GQ}Z<='!ӎw^UHr?Aǩ*ܺG|}:o!B:{x~T`c! }U,G2>sMpf&;8?c뛟Ov끟bEWU6w)ZkE+$+ Ye{1ӵtvyZ<:\޳+:ڢyu9Y~XfT:ף=—);B]Q\s]8_֔7&Qݟi5fGҜ5&i3l>pfetUsiGq+RKZO>`w5hE+ QQ_*ީ7^k1~鮗TY#׊CQM[tG qi߅X;bQ@%PKH ^ !U'3.N2]/0~:oBWmTԎ@}kép::q-88YS995^3·+nO pL{T5+7?9** ފ3J( SE!( ?s]pC C4x́ԠQkoxmJ+wT٫Ojqn=ibGA#V,?V{/rzƍpI?Zgw M Qָאw-mObYhMFNK߆AO #֤KZZ?}h34d;Gր#ɫrςF5}jpʣձTO@Zgci?^+5/]6RXұa\y9`==x^cEnAGk[ۏR Jqwy{Ĺ?*_+\uC[wJfՄ4hߚׇdE,^6?GWd)FJQqZxȎxF!lF*Yñ+;d! m~pNqju\ku 2;3Q'v4UzEOg\t^ l4h7[H+JjM"h6<=FtcDRXw9䚮ew!HQOPʇ)TXxN|G|3W-(= sW2zө0%4 %)99uE•E M;iئF(iԀn)@w@F;QyV\i)ɫbhCӶTsRcW)MQv'PD0iqI?u //ZLh Ƣnao5>?j*'ֱ9]t~e=%/5!tadW5t~+4X a?/,ssZ^R- :uw #`z›[*³l; t1jYѣ;aFMm^§N;X1!?"PxX5"Qq4{ko=hG ܚd&(@E}Ŕb=jK;%yAIKczvqޟsr!]$9洠$g_<$d{v^9jcsvk @ &))X<FҺ29 / Zd-G58C^>z}'qY#I06zYegT(t]oʼ{O4^{ŽE S^2А妼?wul3X;|GI+&k[WRzWBzvV"cw9 kX!1%9΢K7A?%-%JZZZ@%!4@}W{.,ˋ~uݬݟhk<*֢۵++:]0QfJU-xVR:=?$Օ?-WS Y$qF2qڡ}6w\=Mcw%ik>LWOc*VTJ!dq\ޝs`2=GJu)^DzoQxSl 8?k [ym2N9W%XTdgkjV_eG3?!ZHs`5VG!7]4*<{~յU_4.{=c( qS6^կvjC~FhzʜG@KTG 4sGX<?**𶫟ߑhKJ50o@=F">_JV#M./Epm`i$HQp+i+hȱƽYs;[r0?崀S\^y/!TQ9-i=\|;{w}Lei=v#+bXZg* b/{P;.S}_~6CP9n7erȣt?z O;)~ݏP /n3ޭ*]?wUt?B9ܿD7d:ydU]NNAL1O׻أP'?lO֘~f:sؠGלcj9W^Wh? b2"lfJ5 W?VF˾2}(:(%-Teb<ОZEܢҼo r34܊,ܴQ1+L2,"Yzԛ?"Ɨz_FzS/M<e[Go?V ?~0u*~T0kѯNHqzUX8P=𦱑H%m ԡZ EQO#g3;H}iWtDh:l;;)~ޫ} >h٘OPmfOUaќր(}У btҀ)}FOꊹ?\b)D"lRPh1L )8wt3TlI|zt.K1p ?ksXH# UNVZ GT.+2O$-#1?ZcNdrW+phw@~U$v>'@q|>fˢ@INA4ՇΊa 5\']ty3S1-14^ÏkKM8?N_ ir,/w7Άæz-^bWB|!riFsy@[? _hdgiYC03LyE.ayb?Q[量G\?E]v0ΟOAOVG<GӟRiiQ}70d#GzQvk Ϸ>G o?]v1Ή7?TӠh]մ| 4zh5;Wc8x{GzG}生ǠIjWx1;d=7]#[vSA4a+cA?a@O\I?/a0OoDt&IM{?;Jm ^?z}|G4)n(SG4l?U;}:_^]h;i~'!a?zV!x&aQҎy8{B?H|I:> soig5t6G=O J? c׊? BwcBzzc/O4( ӿ]!?.㾩}}Sp;!ZG!Zw2 _TໃSOF\؂8!f햹cEnRˏ _g\p;Xgm(> V!w?}}Shv0-N #J>ofߣco)ǝp~?7~A+&S1+i? Cf=+x3N?[Io_B$=u  OQU+{o? W/i? C|c=?JOC,?+%{}LG.~'(&~'+wIT-!V_7H|d?ߥo(^C?%{}'hv0? <x6{V\AdqZ/CqcImiɿ%{}7o=vc>iK4 mVdj7JFe<δ_"Gg䉿?B z>W.i8-!i\'PLO#J!F/3iZdSĊ_cl5)/xnvZ#4FgAM-n^tPYUkQ+E}e8(f3+gVaZHCO~!|`~,!>"i%ZvTNNAr*OK,1?S񎵍m#- *_5k!p#cL= iy4%#/qր.wwG4)fNh;~H=)|H aT|sE05J$Qq@-֏0z<z=h=k7iiy֗xZMVZgMN9thHַ#Sb>V?8ۅ 147COV|e4l>Mn~uX.~)dv99.%TE$ڬ N.A<Ơ[_UHğ=2lc+R~!E…EZLT~'J?\Wj@d+ޔ׾Xc/) 5k:uqm`goJeJt~ѓԫ-=kSo$Td {T4.V7??~F5/ VDZW|}Cw52˶|?'JΎkvX^n.;H?ZN(ٝԁbO s#]v՗\~o% ykA_/U{0GMc?1TY~W[\Z[NyK{]'Q^i`"\GduYNV09 ȼͦk Q³"+Sl9})>=+Ki#G3u+Z.TFV6$%'*d8,:YqmI=KsM.ucYs)X#>ari쿭4wNazwֵ'|_Хֶ\>4ÚwǍ֍V{} _;rGcriF?y7hӸ'Z} QFBFq4Xc?iGm"~b_??1\?#V?ݗ45e/ht5hA꟝pYoi?^ҋ}W_M /#ߟ,\}h\^xvzOMIeqwΗqW |;o=n?qM]^J. |;G`hr.cﶏ\/#{hr{N˸\Dc7Q\),}?QGc??_G-4YwDG_Γ\7#{h>{\Epy?U7種#sM'#|\E@ڵV݊z wUb$ws]%+@+YlԺePGS Z3N!z f¨9Ji(KI@ 搃Ji3@Ah4PE4hh341<撗43Eh٢K^ihxA4Ҁ*=Ys*UPE0՗ᑲK_7xV^j .h@t z <R?8$z^ #?"v9QiK9=uIKE0=sOY]5r_>Ǥ?uב[[!ݪ/Ҧqq!92Fxip>1A|;xS)2S$u‚8X@Enϔ=qLD=֬3dkDH}R&t1I@!18Zgn%gh '>"p血W8' nџ FTNV?Ѷ2oUd _cz~Kw^ء}* IMl88exYMMF+3UUŹ':?µ"A 5IDh9])PFrm3NEWn3ai"]iPq|Qy ZĈ~F>\?m}:G`V֦[?#[~{/G\(h9Ϥ\ I]أye`c+2wc^}AVLzޜiǚrO2 42%S?ct*H=))#Gy 1ZEۿ EO]G9{.XGymE&qzsz5SòZKNsI!؄]ێ^n#pw6~ǯ8ᔕ&U]3z4i ԂV;OH8OºSv򴍑jgPQ·9}_?'zc/kq|>5v/ :Ɯ,Ra3/Oº[3sWU6zw=ɨN1d:` ,j-VLy}kԱ4yhG@Eu[3m@9c ֊&[3 Zӆn ڮ鋙 9 =Tb nڹZ6 u M'Bp} Oy:{y:RBQe}Ϳ2j+&Q72(8~`VcE!fLnh4ƀ4RRPLMhow _߳ENp^畩O煱k4_}ʋl_x˝]bEE_ |]E(? .TخqtSM_syjx ~Igtl߲GN@p75u,'FmS=+č{UfW7qXZ&qf[7jʫNtSJ` 漫lj^SֽPk~ ,{ut$)lq֣5#uES~tIvB@p %i6]nkʯFtGd8UyE595~#E? |IַWX;Lr?u'l ?ݓh*1ckQfj6{: ,#Uީ *?Oƀ8j{z8u*JOVMV~t-u?ֻ~\K:Gwopt&jVHe><_ZtP2X`8|BwGvT|Ey-xiW".1qUuQ{H7c,\}"1^yfCbszVK$>wc,pyϽM)qtטcV>h\83]|}Oq]zPfSM$17,I>A@y/(?]g9 "3K TH,DdRxˆb|R}BrxVCOS4Za9k?Уp:\堶'io'zOC50} ? (z >jy4{kG5>=ONu1.w'z9?У{sSxxT d7&տRj?CQv@} 9Bźk'tEg9!FC ׏(3_yg;cxWI3۬3p¶ 49(}BҶ%kF1Qec7oCoRσBvM?]} ?B6?disYk ? sS>#9?M?gϟ<(3]1} 9wx~"j_š~!_f5Ow}(+]Eů>u-Է$ϻd!w?اk]5R+3ek M%']7 }?׿?kfs8TrmСɧp_w^t$ݻ`>W>"e. 3V@5<ƍIzh8z`#` q +2OP*DLW}{\kGO\5KL|ZhZވidP ۥ73oR[s{lWTXmF'WSJdV N pob{њb&ZC@ a9Ki9@ϽRҀh 1piyHe{ҋUySg֗ѓ@}i~}jh[A75S4-M3I@>Ԟy ~y7Jc ,!us\Tz֊Piө󯈩V ?z <~kF5t$'GR5FkJJZ(>o?w5_'Cws^f!~PsT桟²[Z1[rN3ЭȿtQdz6zoA\֬O=GփV~ͯ{5FΟMЎl!\V4 8pm¶"5V?}ox)&a\fkݗ'XT۷0{?YgrZX\Osb c`U61Ikj(Kim89R}k:fztI-ubѽ,D#Ҵ]cү>?*3E#)I3/imi/Lş($)IZ> 0O}OZYY) ݤ5D>E(7 : Kl>qQp2¸#ч?jbQ} 2\w?kbAHD{_xuAK=/:S֞=Qp304a:,'f:L?Z{a>a\ ?f4ε6CF}SHCε6CIfaM!W?jڍemSSZbӏZ].Vhε F}[_taOZ"7lC\ ݯUOZbI/j.QB{Q 9DY7!k< A6҇:S@'z HzR 9=m"3^O<}Cta׾D=0b2}.wKcV:x2aYiֵH{V-ɺL/?ZV;4[1VbkFi:{kO-WGi=E] gRS 5>k)lQLϽ.}1h&2}h4IfAZoZZoZ\ZL(Ԕgg4LџZ)1@ M%!R Z^{uBbh*X֑M- "5d\w%Ιc|HOcZ5#t1RSxn0Zn^lkr~'Jq+ ?BnI#:ܲrryJAη-6{WMs#cU(?0?ή~sJ i\% jǩ7ZO`EcGZ7 }:؛3ozZGŃFvT/ָc?%Z˨5{M{"?5KֽqKsaƐdt&4f oΗsg7Mߝ;s}:4hE:+|tY.W+xFUAU9 A$?ԾDq; MWak_OֶE#0"c] ZNb}H\خZ>p7Gw84:*h\̡9y&5gxuҔ+n[-(=)C,oΏ>oj @KҤO>oi<硦E?ϛzO:a- 74fgI= 6w7t曓@?7JzpO8'jD#Jq5V sMVRHUVDyIaW&lY\Tg?~xGʟe?R5ȸҧ'wƧ١20)?4j)p}}bv&ONT1Ɏ$54տ:>шrќ#p1eBO81 sLߥ#rcj+ӻWx7EM*!kjvciGҵ2XҶ}ڰh++č$VEbxƾ(ah72kW3}+u*f:F&+BYϰ(E;4֎+2Ri&4L`0џU?&>Pv;sHMH.j0irh\!\ъLњ\Sy%(z3Ek$mښ˭FV*8(J r=]}S+$4yQQv 4:_>(L+^I6x0 z9$SIgnbos"AF'ү}N6jٱf!ȏ>Յmy Q٫.~R/7Ҫ{; cTz$4:5#= A?蒃[H~SKXΘS@ʣ*dRi%pE}kF5'һ2pGXL2Jr"tZIΟfʶk GK"JóKI3RњLњ`;4f?+F+|^q Զ"C=(yɤ'ڵ$<_=Eڴ :sqN/ }YmNxd\", =jOOso<$97f}cSonT":C]skmkrSȍn< G5ڍgeq8͚ M 7S_ȩOwy |"j~1a:3AINWhTz?gK"k*GʙR|v}rMh#lc`YG^#@Φ[ ~B٦si5B_ڶsm@~l` dVt芓H85#QަpaO;9_kI{wn5*Flv~Ҍזi:Ƶ_-nW*NTo'8_mn=6뒓 Ǒj>GR 5[[]MCH3n84.5bMen82 iwhF'3^u-ֲezX29YV!֮g&O$VpZfq\j.܌T?xУ>e9y ^Ou+K+;|k ^.ŭu&WUJaVSUz"@q֚' qk{r.Hx#ʓm*85l%rXyBv:M{-RKN9^Vl8&Цao"s,b5dwiiqk65 O_׵]CHൂkDPdf8~"ZiZeag}U F/3(*OOteńm2)D7*@6L"1&ݻ2OASbEq ͦ3"e#'5CD&y'P#ji]}陮~i{s3L'_ޟI1W^Cn:¯yء[vB[/-v0y'jܲ}ɬD)6`ֺ-O}֜wtV0!dTT}PT_Vcr.'VdxKhw[x7QYv @ fq84ZuN:[zlG=f;a az}lЖH z;3\1Z%ήAoϊU((cx*@b]I3GZnњ~q@4ўf3L m'⸩ݖhTZēzdr`>HkZnĵsӏ~-}⋬tgM'J__2)SΑ^EOrqY:t?~}x+ñ%sVcc#9)K#)> Bɇm%`~dȊ(#踫iu]]zY?}嚙5KJ=95MT xu싟o?ey24fɽZ. euw5]N+ c94fQكIr?vmb0NG5f5~ڧry/lʑЌRh5fw"9h/}tJ?_Yn+T.DrV2#uQ™ vY?mSr#{e O sF};"(ZlzNq;:'su95rLo]YIXN z4P[n9?* UjCW3 "LPouj)4sH, 24Ƽ#GzgHM,Q'H=Oc?pjv jج 1"δEOtUl==bV5R+ nx΃ hϽ1O;5B繤'Bit}zV?_ @k;sՅZ* ["WLf<żJA] P!s-%҃Iњ@is@ 3Fi3@ W5@HywCS[//N9kCztej=:kKIjSm:`?icGR14эDke%-%'ɽ_H`PROQ^3]y@|މɬ1f=/xPo"apBmd˾_sj:^fzBlN՛pR8(/b?/E9TÙ/,amŰFGLpGrZg%)u_ʏfPGK(3bfkֿI*Q^~T{92;;[P]*1܊l/n5 ruߜuS i$g^I3uͺ+K3?*"˼K +w_g+.Z\٭m6Af <7Vf\O$u_I S={ QX?tr0 c=H/N&{/Kθ7.G!Ӈa\ѾOI!?${){6:␸W8:OH}QF"{'@C['G# Xz W+ _?:o[8tE_Ο#I޹oHC֯G#F!zG$QUasZME_RE_ΎF:oG _1G# Az]G_Γ(tr0o?C_Sasr?b?쿘Ψ=i\:OHNHtEPޗrE=>!?󣑅Ψ0=k>!{>Hb:t %,gl^BNI5j"WsȻxJqNUF3*z!+f_oEڵW@FJ{Vr\o:㲁]'\mڴ\Uf6U`QL jl[gB6QYhߵnj7 74gu!">M;4ZZJ3I(<(҃Ew(-%P1A)EP!E(6QhxyiQc4QCU[l( G?Ϋ(ձIE*=N+4;Hl$o`GŽ#P[[i$/4Q^}kTf((~8(ҋXIh6QuB9aa~AGtF(mt@t."yE6_xOaPtheEQv+ });g="EϢ(vmTSA )݊ȮEm D"6b)ݍw/_/(mOGX"iY( !XDXcgvB5b'#6??ʊ(q4b*iIQEB XR~ Xhyw !?ZiO֊(pxZy'BZ)EOq[¶ ~¶?Z(qYiO,?~QBHg"Y'OVxE,RS+c<\xVÏܧK9,?,!)?|<ƞ"1TQI]$XL/"??ʊ(pN^ǁQE.yw*EGbxQE>ywT/#6$gɏ?Ji͗99PYibQG4, )`Ȣ\ϸY8mS1MqQ^ Nz$[tQZȔ[~~Z(^4p˪4̪Xsڊ*>f:(f>]~܁(H^ԧ(RQE,An%Rň5cJ(FwʔَNҊ(ƭ(yڅV=1QE# endstream endobj 12 0 obj << /Length 1148 /Filter /FlateDecode >> stream xMo6>R^ڻɦ۴==(6ߗ%%q], ͈;3 adpP9̗?Sb9(0NRgX8%983L,k"`x5ьҼ],!rU8?@p]8pRE|Y٫D`Pu7'D$eP)^hO-ǭ?WuxVWq: f,EaUr/iV/2YTeuYR_$Moܯ#+vDgI> nm.TW +u݆PZF^#e|DT!`EY-c]]X=o Lv);Es XWy@}XqMnQIs%Mw:"p"dokmbCp>O^]u|pl/?_@*$ji}}>}^4y[U1; .{WrHwagVVE0r> stream xڍXKo6W{Ԫ^[@nEDH)9΋rU p43 Z)WwNOʼnVwH]J趿T4z csNnq)*HV봎5qLXyL&どu ~zT\ż[RnwgE4ua1)~yb^3=fĩLaf6''/ۓTU]dH%*,m]c`ָtHj tփ's 8[CC<:XH:o{r!њI$4ioΟw$qY"Y3=Aj:!UF$i86f2y 0:ߓh/?tL=$ky>l9E <LjkTZEv ZQbֻONb-mi њf T v&Idx؂UpMlN%2l0vրZnm.b(ea-肖+K J޳F=s:.^ddf8Z4z"&8Y H h1uh)s f)K̍;F<9K@9{SyWO֐צg/azP.݄8y"ct$F^i9P\ ;nKtf|xֶ0wĴC#(a,~WhwR$(7<ӲhsPR@<˂Y8v ߸> xr . K8#X<퉅_edlN$xb>NZxĹ˾Y:$P Ds/%Fp8Ƶu;!$v۵C63S0[~  dvkG pĎ4]#] %Bz&`K%fpY@Nw CP!;.ڐEe/st iB IZF?f\% F;wv1&Ky&jĵh&$*ez [@"(J)7tޙ>d qY?6dsKAvJ00*_ש^9s_!o[i7!c^K?iNM|\?l*p>5WC'LDloڅ7ZO.GZ?si@xZ s4QDƛ_?2w*8T!DRo Ұ<)DJHCoNUtӶK;eS=0{ mI=ܴCay}-^, Е?9n(xDNC5lYv^yGR\xw+HV 8j]Oj#RD* ծ>\q . ʒ:`!Ww;nٵ1zn q>I'&xwK[G$o*h.+sJ)ȝK<\Ӂ6QaH.Nt3N!2 j> 6Pzcڥ_[I ?g~7z߇gOh8&Ҵ ֥fcP^:H{> endstream endobj 20 0 obj << /Length 2333 /Filter /FlateDecode >> stream xڭ]o6=/V>ݷntM-16YrE9;_<}xċ8WYB/"Y׋߂8Lxy* _fyYPwrZťRamuCQ/ӆ8b  c4n9vi6Z< ޶b`խ⫻7D~;{˕E:mWɵI/| (N4E'py&YSD8h,,j xeוak[u> SyvY.zz|n ruJ;x&7 !a\d'PWkro#pNopZJ}"kVihЏ$,Luvs~JnVLIRYҲָzAi`)4u%n2ˤ8h[P\k$$hp"Jj:fEf'{ԱGI'VkTs 3x=sN43q=: !T vAa9DŽFI=AñSiԚIp'vFzCCR~x/L1tgF *p+|NS5bss"đO'[و#g[' @A[3|zc7z `9pHN`#9[NZ "=8K8,blu~>hTxSЬb5RN ƹ1G^1d!l@ާiv kL3t:m<y; R:qP'jݕ sGnQ\( $g b|e̟xH<\xyINk&Ż% n$IK,=ӴX@5Se, V2ϬS*LZc[&漣HAxMoFM|٘'Ӽmyc%JaajGUR:fL>8t]C-Z,; {&7M:D:`/h`a 5 5`ŒDF'2rm71- w ;rBce F`7t`KX 7 R8i$:rfd;&$0"tCCs}?72/*N2ńZ" *\HvldP\}KTA`ٺw?2{J 0Yj0DWNbY&JwsODHgЯ -(͵t 즵0az *?oX萖.A -iQ=@-sȺVt 'ᴇYk9 !WA[Dc1ѵ[YRzVF*m1i¨ 5^WǮu揃i ·OPi@n6)'30}`'J'ox).#q -x|l]qڣ 3|&:H . 0Ť=Gzk,yɅM"!I;I-* L'bb]{N2S("Z@4ZڄnJc7e264<e:% QIrcf.@3uqK.Kce$ {Si/Kw7GN?|?xξ(Nf>Dc0$|ʷ4vܑCqW_ӫ)>9Cӏ9k N=j lbF?Q1TG )`C Zы4C f7 /;7<(TjjhT@*d]? ^y1!j4g:u*xztξk uηZe*"0')LXl9_eRE|D[1},+zlq$Po`Ml\ou-G;׵(GK= np5|i@ L\?'@i*7y>VzD0}懌GgWQzzzC2FU^k(nD(vҋUH1邾Q0+RpdaioB endstream endobj 23 0 obj << /Length 2390 /Filter /FlateDecode >> stream xڭYYF~_!!$c l% ȑlα~)R53;a뫣|H3uH`Ek,b&tqv6 )9R^|D[1oLkYdeR/!Xy^sŻ s.3f<ܹ2,6ٜ&joDR- ԡDBd,HḦ́H+$2L$gE)S0[P5 АDl\pJdzy²Ws7aRXC&N^#˔b-ݴzn\+OJO&%vGj[osBL vkyo8òAO9}`4i`naF]8VmsjYՕu% TTE+.!dr/inHuwU_4-}W %l Wч=MjǛR|"Ɲ߱mQ{u6_%s:+c8 ۮIiS>K0Eʤ*Z Ы4[ogsdQ_Z[m4q˻ǯ{ڞwx6p'SE|'Gkf"PqqAz?x22Ư;<ɯ5ܶ#M 㸢4v"k8=+H*F-jMӦuJn5Q>c*HG-+$@ fJ#gWK H$Lon9 0qPO$*i[T"Q0-$-oPhAl1LpvkqHZ>*X29?SN:(!f-TۢZH%[!mX~wC ֹ8#zLAp24c6(9fG$h>nHEvNBQm9Ũ8f-'i2}s ްU* HmX@ok3 EDPhf TYf-f)z(\瓟ajW{[ \I 9:حѣCѬmِUO4KY[2n mgT"KbTS·6ĤXF ńtAnᏓ% I*=} +MK nK]4I'Cw4爆.O<ƊS7T<Ljɽpjr9(k4n .%\z{@k]GtlhIKCjiô69=oBr̃k O"eBG ْGDcdvGP"<@7.uieXrT*J"0#t-?pyYgʇ'M6KDIO&I/~0/^k6mVCU]p?{;4x/\0X\KIx2/sLޡ> 侯솈x9kKC6cнav骟-Xt W`[TBP!v#4a&xbweD/ӸLEC[c5eUnJ=39 q|+W E &Eظ]"ӡiFDY$aC'-T ` <1C?25#@mWUC8+pj6[Z ^Y1(a#!.pKa}U}D x.ڭU9C\c<ފ?:nJ qg [U隐q<!?/6Ę{ZS>%l_M;t0*Pu{%'Aw3@=Obڵ-~[od,MG+~ x+1q9獅ӗoͰ ~=Eq?VçͩiwއnWr >9sQ2gc' f\r{{ܚq|G! HE2>)@ETo endstream endobj 27 0 obj << /Length 1122 /Filter /FlateDecode >> stream xڕVYoF~RDsy@B_lȥ0uɕl^ ÀgDwEdOb~`&׎*tzOշ|]-d=/.ɶ7 k7N7?&d/'n U;qeC鋬wL>Za494&؉"?v7 J6&Qdjva!ˏYXeNyr_ шs?C7׺*gUy;@<2&jN7n1a?K T,:AbCEb祣EFB!-4)+}@<'EvGl*'>e_MJFu@ڊGն!j][h5}udq=5JPUfRMT0 8F^v[bCBeXkgQb^y.fjϧrkfd.1yy~EeFmNLOIJJ~Ƀm]=  l)0HU!d$Yևԭs,82y("Zk%+FA.jꋁiXN˃ };B,o`ƺ{lZ?FMFL* ?]`}>66Geuj<4M9|#gnJ"LsRK 'g}#]I^*ۘk G7tj+ŷcW?5xR\VL{fw5jb:>TfGDqy++YZ?l QB:1\W'h^ ,pS q-?l6(=EfWI֜*l="/lcV/"<ş#_/ȿ]-T˔B~>guui~t_|z闉/(]. Bγr= endstream endobj 31 0 obj << /Length 1119 /Filter /FlateDecode >> stream xڥVo6~_aaRK%JeESkcyHA蘨,cgw#eIKX"{s z/6~`ؠšUURc%:D*F ?OS<ғf3#'Fk)!`Hmk=Qshv=od 祳:^,:Cd 5 Ovѥ)筁;]\E8|$Yp6W e'3lvF,``%SLE=J|4h Or.Rw nfX-B!3'/>.H endstream endobj 35 0 obj << /Length 967 /Filter /FlateDecode >> stream xڥVK6P|dg-zC_)m1(h^)/E"?3PI$q8蛗]\^'X0O[l<0 (kxԿGۼ FauF\[3FݎЛF7<"?J/zSg I3oʒ IRk%NҠpN>XwzoO>6dHQ( يJD`2+,+Q [? 7F`*%^nξwkeYJ;Ԣ g5yskAPKN!/R!MbrcJ*#tXdv!;qJ wHv}Ӧ%[5W:8L>aAa!\=6r$_BK(0̐3 9Gxy 滲3mdIIL̑q UJޠ.a IeI6+x侸:c檆Baף@1Xɝ&Pr*%ḕl.+}`" 1?CH|sɒ?{So n/}*YMR'TndmJ 'OcCeSVk //lFa4jF_nXj pL4!L sv`o#ۿ@ |ھm<ú_C'pa8)-]pviğ%ګI _n7Rp7{ɀ]Mh;TUH৊N[TM>DПn@(ʂ4,ob'GͫW5 endstream endobj 38 0 obj << /Length 614 /Filter /FlateDecode >> stream xڭUo0~_0%m`,/ڪ[j <pK8ʹjؐ:m"w}w[ko`FC wi 02Ƭ-NN{"z9 ~ymee) =NS/ ;sa]l#JI\{a"_Y\8_4^8q\+@h8"@'7~^ >є3fup; {=+7_Q ?3YX٪ޗ,6GnbMQ2NssE1y,&2mKQ;5=g\E(ϋu@/]t޷-z8lsPII!׋`%"o#yTɊ]{JmUC눥biڷ\G1ß㝬T&2rm$)<%eѣ&d*,NUɔyc(Sri-h2Dn Zq?)T zU [Zo0L6Z+*uZ +BL8ÙlTw s1`TZcQSۚLUivurTݪPSV?2SlB^֕J" endstream endobj 41 0 obj << /Length 1405 /Filter /FlateDecode >> stream xWY6~H kFt$˶ImCA![t,T+n}g8l*I 9~sr|^<#y&Vz$~E E1B?u7Ed*(+DIq'zX$M$,si= ㄄_$\)-62Dݵ-:e8<ԕ_,Wòy j[, s {r CW%{k=Xn4 {DAJdUgc׀>okC|(ۆZ08-p  WFTX0ʫp8u4a@NԺWd;G{01=wLV Q/!VRe %m#$p;:~/y ACOsH=A1[Emxp=`4 Bp圇V#KGy/ ej:K= h5F#,Ţ+$X5yhrp4n(hg):dM܂Am^#{d]^/^p# %RǸ^|dY@2oKSq2.b%Y&]s5 l0c+KFC T@&XXKm$;MQXI|XbED3C9Uu!B/Kü::`׵ٻC*kӶ)vg3U|(fL9SdJeqؤ>Twvu=`O@m-yϡCcĞi^AٖTdpnj=Ulqw7woP R9?>'r͹=\C5r2X);QS;dN6)AU?cUo0'g3z&ob:y s;Y-F94sUZ]%Hyi83y槓Pwwxhآ IQ:5?Xȟ܃Q0z5zBt5T:}d+jwWbY=oth-xZ> stream xڵWY6~_aI."xjч9ه$(VQPja!97_.._Ka(",bU,{q&>"nڲ+/6^W?_VI(ʺԟl;]CH |ҿg[ ^p2Spp1ۃOpӭ)L/˭H( X3mĮ0 lYMi g֚ۥHt4A {]VD6HzY]m4AF9Mnbt 9 ūŧ z 0T,#0$|{c(`d,u,F⏋L=KYVY@;Gٽw\Cp8:&#18jj] E-}jĞю5.rgOzAD`'LTWȳkQ2!4[uN!VÉSD]\YACvb !S.ғ@U6@ƨ_j@ @n޺L…Mb^]'D۷ &Ҡ/xyʪG,M #s8f8*B?:n@2MMTgLfUA8;@ʼn<,kZsҹ?pƬe'E=.4WUaJX!o[pok cK}/R OTT8ũZFzԦUήSE ku^Cڷq.i } ꋐI@Xgz| ڄͳU GRaC/lڦnzzw4;COD9ݜu `Y|f6aNˁ*0 E R84'&ıťA`J\#0@Zk3 ey14 s[ -`:u;Ɲ &~?cl;.cʓ3ש3 "NGktf܂UؓCC,!_fU?f-GG05jqᾦm6 MqL HL G3i3G )4翼Z^LB-8r+|ڊMoI٣ˆ UE \(aH2R~8BP.cA$MvfOIE,cWm7+.t~ғk[~-)=dn٪ yMB ͯ LI~1Ip,zhNb !749r,y-ha'4 I6oՕΌ;f,  JK100G%\XJYT`O=~ڽrru,'_[;X*h芖vF8, :zAj8OڙS'mgⱝ iz`PEOOPop\yMu싯-,Ȧ5^E5h=H%mO0:B cDjF5Ql9V]OrYWq )c۷euC xvyBU=K`8u endstream endobj 47 0 obj << /Length 1129 /Filter /FlateDecode >> stream xVKo6W,  )բIm[]򊲉hv3J+mqCNKr8~F?m޾sDZlM*YFm݋Xĸp.bg-?}/pxSmz?9xW>})8$1'O#_S7hygL•.'K{ _0  h C0܅5y|~$ Y s zpxMc굪R-WfJ!Hlտ{q5$c"J'Nr'< 9 1ъ"iaB;w34 2٩ݨ!C֑L~Rvb\pqOyZmP' =XU;Y.c::M$ظ[y|w=c}ټ,tZTc?NxVuOE69. |, eZޞ>iҘ }ט߸24W=SoUwr`C] lF0L/"%iaHejϓiZz8mR4Fv`01ّ$:ZN"FEM[xDx/ijy֥ $bzJzBU.L'.l#.5篹b^aQj7UA ZEۍ톃ʟĕ>zR ױKuI eMr0/5Xw7cu7=k[YOvv-Eô@na΁W1I<2LCqѾ>Ќ}-:Փ'AqB0Hx;<鼅{ŢTF7-+oXFqno#" )d4tO;)lRRQ4_ mWl}9Fj3nށ.3[Jm}yiSAV08?KHrDFj?Ծicuz cֽUGߕTH,Hw۫R endstream endobj 50 0 obj << /Length 1291 /Filter /FlateDecode >> stream xڥWmo6_a we@[]ڡ1M0)Cc{x'JnÀ ws< YFr0/I<|8K<(|a3 ~hvz68LW)=SV4 6|R֔3raeK}V*FSoSUa]&e, COY^aWlcՁ0J$33qIj ̓"+ZUiM\8Y>`0^7^I:kG$Njk#.H9$wP5_Ú],ɲ!`9&٣҅!07EѮ`eaw4t1ʥᴀ( + 0>[U9:燍4naS+i߯7b?MEtQ(pi2uV؏.HRHIriP%X#.҂ӰZby_2'Jc܅y^ ,b](wU{·RQ$d# 6J|PZwsA!A!/6 w2>UVrd܁L{^#o֢~ K %9JfF ?v5l3& ` Oˡmn;^x*\EthbfqQ1vnp+j sR궂`vlq+T>)wo:fd&@7U)e3 ,kXj I%ᖮ*zQЊEޙ .~8pd{p.v؞[\c#A4ix[hX +ݤ;eOc?2飙? Fx; endstream endobj 54 0 obj << /Length 1113 /Filter /FlateDecode >> stream xWߏ6 ~"ۀuڭj0b,Ա\ח%'p)G/ճX4OVnU$Ǣૺ]xƒ,m{+̫cSER,fj$ KKMgQG-nhR40)^FjG ä鈺J4y#-93r>Y F[7C]@,B8iN:Ѵ0$NEpnМ M*8iOy 9bFQpYpye:Q1GʻJY^d9ڋǐ3vȇɓ 7aY<תpˡwk*r8vGpbIO ~{1Yl6Fmfj/jGyx9$Q9haDz7ǜsW-ѐL>YnO"ٌm%¶`QWVYZ1ϭ ,u벸S[oӐI^`%~siF `:zjyHO\K{J$h=4xwgߘ!òye_#*o\:2`9/0!s<\c)O[MA̐||`T(D0NDU0R ԞGǻ@b2[ĭ0eC`^J< 9JݐIo{acftK8B jxM,^Ms;5HDžv+f#z Jrw=-_jYY>>Sݠv/{Sp1qV>Pw4THQڦ&씦I& ѻɑf|]eyҸ]q Ѝwy^֠D=^;6ɏ`KhZt*#\AJB}ƻO=Ct,6^`"u:pmnƦd? >~j1Cpcd}9D"v0ӥewg^Вɽ'[AkR೽`~/Gݽv.;շV,_9T$ǵ_/w endstream endobj 57 0 obj << /Length 1139 /Filter /FlateDecode >> stream xWK6iKbQ+A.-mb(d^%v;!*A[!ry}͋IE/EGntOK9Oċ(]-fOd=~ML"VťkY׀ ӨZNCɑۧXL ,Q([Y5dM3YYs=L%"Jҏ6igG[-Џ&Oo'[*Nl`Dh4A=:S(^vm֦=sݪ!AE0vkl8MǃVߝ@DM v _kxr"Ӕ9`<:9^ 4iE< j{S sNPeT)ݼYk endstream endobj 60 0 obj << /Length 1579 /Filter /FlateDecode >> stream xڝWY6~ϯ[`:-h6MEkMQm +%>sr(kCr87^} Jnjw\%>)K._vQʏnߕf sXOotFqVwU01?cŋl(W%!%s_[8v4Ih'CGp@@#0u׌W+5-c<ƌHƚD,u"0IísT.Wb@%P@~#_Φu+q0ʬvfT/Ե8Sk޲Rt+մmD,e% U^ owҬ<ˇ;(gheTwtcIgI,/t`p0y@lb^ݱ}teFR8\c@ Iu%]M,qnZ/;wI,v8t*獁I$*i*!]_(x-ʍ=2 2(Tr D-Ic6Zy'!ȃ UOa0co>gXئE(Ēy '̓#~ J1ϞǞWGv zюG>Ag(vd.z%H́C{, nRS?B$NJ%1ŃZ.I;E幙.զԓI?ER2E*wHb-N4ߥD-݈E9W^A&1ͭcv]Q5D(T,oHRy%i ].ىMERBkxT.z{ PKF endstream endobj 63 0 obj << /Length 1531 /Filter /FlateDecode >> stream xڽXKs6W!g*JNM=tT_ 1 _]:zm}a7ト"UzHuu>?Rݻoネ9oxQZ(Yz.C8p:t:W-QtM,](,^խ6Vyd-Jέ-R$^ZQ]w2bu~2TXJ!kS $ @>yg$ν&=IFuv{2 cg]*Z)dJumȕwGLݪ4T0 b(Xp08s'̺#$mMU:VCk/VUG7  BAЯM)/S$â;$sY`<pXd 8ݿJ1Bce'r8~fp| )^xlQB0u`FYLGo~5mG<_p-چ{Z{NǦ1t$5Nl9f5B=x_zDo[noXDUBI0$LU".S* /S*.S*_(If$y*I?< h1 DY*~ f cqC,~|$ai$U ƫ38d@sp@ة4v6 W~+o!^FS (-zu,M=P\wՑvd ?#h~0;b8޵xMCcI۾Q:fd8jO2o d;(f'?1@FK.2zW>Qj>ɊVQ1 a_Z?JѼ&$roΖW-Gyg,ֶzC AbTwf/h#vV cDa:3M{|zE_ 1chB<zkl6k+Hv h$NubB$@D{O+L~g#MK Kt0LEHsTLr\BPؘ|,jѠ 5~|P5d6k ,:YBPBKV^e&HpWU endstream endobj 66 0 obj << /Length 1321 /Filter /FlateDecode >> stream xڝVKs6WhrPň$HJq}v6͡VӃ$(aL${߻]RӞi/$~[ώ>^Ӂ0|0a8ľ`07l8j8򃩣e!ScJ(MBs<$i7CVK,=G2ZE=uڻo/IF*o=d'=h36yq Wb\j GA8YbnSh$;0tf Y0$+Z7z*e2fhղi ?KP%5r.w0h1Q%B޾]NBkZPcߚt@К}5@aP$5A|6*UN,6GåIX/'"'"#btn0tWEQ|Ew7MCDNT݂{zgHH9pmb/!ʝʃ 1JB!٦%w7pz9_ +Cϑ-FHy>U I[D2.Be\xHĝL}…|漨{H*3&lJmXy\`̂}"8p'~,fX+r]1>x DdǨ578¹z~FmPPPC>cz|׋׿-7YIj@*JӿK!q=u*kCcH 0C-R2- V22$IYV[T9{MyH8̈b<+"ncT:]lIJ2t1I(~ZeMVDn d #SkeآMUO] QGB)*ҰF$1]w2,jDRC ]WHc"W׍Au.x;yaĞVfُڮ @kW~{kzn+b* .䧾[E?RŦ{$B$pxH-LvV-m'GY.fM7ӞeNǜ3ejhW 7y *0 pbfWqvRދ6'1uu- g1w 8ѝX6O:u?ƓmpVmnGlkZAqX3ש 8U>t^[0}w޾A`{!m/WtG~F+&SŸbv/YF endstream endobj 69 0 obj << /Length 1575 /Filter /FlateDecode >> stream xڍWYoF~ϯP_ *@p("&jޙ!TԀ17OLDrb ?z?[ w7_ !CUK?T/T7u물_xR&3!$ "oQLzֻ/*q6UQ2%-N'x7if]DrY'@i[vI'\BΗP|$kh lؗݗa;oY@s1EyRVW ݑt-xYOwkK Bv.U25 ΛLN w}7JƇ%)l**uH"![$GA)+eh;x &SCdw4} }Oc`* ̋f X/hfd3U^#]^#xD( u;2&$c @=rZ"8g\v Lq|;:q*le`POSWcXB7ɠ9쉗cxZW(}RݓV=+aܰU4o4ܗ?R]z!<2`W2OhlA)Si->MQR=_3[wձ/\Ԭ<'@f-|ኘӃA>6Ua`_„\u#9cV ܹo8H;u'MaddI@扉IkbFQYH$ƄZӻ<+;~IUhDUyqg^ >DiV* :­qhì !d tMI B*I@F;h>dSmaX#[^<6ק!{3Tv9v>JsWic̠D8/xYbzջte(rViX"Yvm (8,W&!y:nڗ>3GAdܲ@s4)NJ|" Uhl> stream xW_oF ϧ N`)t\uɒ!ۏo]kM8HٶZ)f߿a k|llgEF2DkCsHA%˔QDjN^ʳb{Pq|C{ߋBn`˧^s>gd$?Ҿu` NA-d [D邾SծKfi`tgj¦ęޅKej;طF r]^9D=V$'4HU }@K $fm#e+_"}lgo4դǢi?S0/7x{.I,ۄ^n7cEUO#(FgԲ`Y;r hw>ۡ4 81*nHO3ㆉw=alvxQ4NyA o@z. V֑μuwwE7C^ n!rĴgjծd XˈU!oA=An;--'k^MCuНBʙ9VehA ݏhMZypJ?[U$!VeqdpΉ崦1fcj:0/F2gP"߆;» ~~,3d1חH_F endstream endobj 76 0 obj << /Length 624 /Filter /FlateDecode >> stream xUmo0_D5 6"` b%"$sιYڕ?wyŽ-7EB)mq0f"*;dGzËT"Js|4q"&]ߘg/fęqr1#iPۻ85Jpw=aD 1 E`$,L!K?\f©&=uz_r:S 5tcr+ tI7̀(qvoVFipN0sCfc%lYJX(7U@Zw@D|sF}u;(X9 0Aȕii7~"n ~0 MPjA6Jцu Еs<w\tp (`̃ oP+aXq:G$yie]ȃ$M׬UHˀzBb14 }mߵͥAMOGyl `>iȋfkbC'< dp{r> n~$ _z/-S3ZF-20y7ޕW endstream endobj 79 0 obj << /Length 2156 /Filter /FlateDecode >> stream xڭZK6\)jn;AMA\9%v[-HCZnh(IXXU,>>N74%J97zj6t{*ryjo☶ ąQ0.!׏'DL?M{qu0Eߴ3L("yPxo1 `0m!ls ĵbY$Zj ,T$@_ʠ P^PM`<tY9/}ʪTu WKiEDfQmUjҰO1 Tp:U̦JDgܓstjG+qhsy<`TAAyoJG5~ =a,B9Pڼb{tE[y>+t(O= sH6t*p5Ffhp2?M e`Zgz@oO$"*P5H5Мƺؾ,d""1,,!Z1{IΈ1Ioվnk?, 6 !K06ڂL*_6ۼM۹oU].)зyuC|s%7ThJFD;Lq*p[>`mN`{$(:MdPJ'vX9fM1"D0Ɖa{bqJaMkClѶ!hHo ^|͏l4&ѻ^Z41=Ϥ,ْ%l)MX{ [.l8 :~!h L}:%RR,%T%0lBpp)[᭤3E5~jFG(vKC?@0B2%Zeq* c+٤o{ H K"$|G$7lzâqf0GRQoDh'ݱU&PV )QV_2É-/njwi?(7/O%lUr")T0gz~6JngS^)6?mW\CŎŰ,N#y-Mfvbjz?so'%İsKb*y1wUMAGlռtEly ԹB{ eˢݽe ~ />^ȴ+ xLyѕTOMPik:NJ c,{rM=8(PuzG{QQT~+v |BFݧKW}&2٬F ё}~O9كڇ->U 7Ra;F $rrflQD_wXsrB5\æ*%g)Ǧq&&NS^<ⱱ=6~> stream xڭ[Ms6W(Ue[rIfK#6$rLIf6P6T E~hbb$h!Q˓dTŠfσ/x_BPJa~Wu)ij_=/߱C |u;@@y"9CnG +$pC۬r@&/pr ^2EExfF8ni4l<@ L|8$ny%B> d6L&yBŘ؄2|\b<,IF%l8ՈiPsK^),y @ VbK >ڡޯQ~311 ՅH5$IFxDK644:SB i2%YB1-iG[)1#XBp2ȧ(.#'f {E崴kZ1pgSnp )-;ɴA mHUFLh,l}Jer1 n S1c2BU*|Dr\Qc #Nj\Zaa Gܮ6m|Cw|Wẃ?݄P(4K4V%{P y",oq)<hznH@H)LS0/$AF!͸E%8Ipi3ߖt0hS4T!u 2UH0ҤF"jL# {fb8JH]RAE8pi1 /\֝ !Uӻ P2O0TH2JP͈򄘋11*Һt B,a,3+,DR8n@QFɩNWbr?1MHy~%̂'ƌخ 7;LebL24.=&!E{%8ioiE` oXG,D]Xy/a{PxLr3UG $Su`PTG428M(y:P6&LcxMH9NDz>~Fhr{bkNB :  Jɹ3ؕ;9`wHgz=h/]v:-;> KM{B7},?y>FtjVZ_(6ݮz1Q ]c߰{_ĊY$^|N&|>'s2NjxΡj&Ty %cӋM(4rˇel%+_T~Bd.;z0.%H2/SErezԐlSL @0_SH݇nQ:٢ endstream endobj 85 0 obj << /Length 1873 /Filter /FlateDecode >> stream x[KoFW(vߏk@P j䠐k-ڤ4}PLIjhზ+zfgf Ra!qS)JU/>}U߽0bFWp/>^]. Gˀ1V_ՒPg![ol0&z# +DIID} CUqd}_2}a ._ڦ_2s*LJ c"p)_(; "ik;DVặ׶Yde" *iYHE\!OD}9i29`BL9eBŴEL'ɩ0P:L\wOqzci zܧv/q=m䗝QS6-/_iY x-6|w%7u"~nl:3wcF!\A5E^g#˄q"{+I4je9N6L:׆X@:GT JSQ&.o(0> G; {B#8`4 &A>9$:w10q/M]&CASHy<زN5L`4ce"q69m$P)_G'S'S}4SC~*9 ¯ 6'5e7>^\L(鼰ue{P~m6twW t3: !rmxJE T)D9%Cc<؁Cw딌zvi +&TfBh@Rr@I&Ā \\uCPȳ$UVRS%% rb`BLIAHy BԉIk:9/`ݟm -E|E@UFIE%"1DW 2!b␢N;M3ř-smxjS2" Tv`T:'Wy"*'ݻIޤU `:9GPk<3Ez,8G]%Pl{'U Y  ^ѼuI6[$&Q 7lb`\Uh 6c endstream endobj 88 0 obj << /Length 1959 /Filter /FlateDecode >> stream xZKo6Wj5@"(5zIsPVf%9;|HZrd@Q(;~f0LIĸHkmo>~Y c2كyqA{~n*Cp)erIsD8'j2BfHQ4*(l]WmoM.W|xwbq^B 3jRȰ(Kő/,n"RLxnyPUbVi\Lqjn&B[MH^VeVוow} 훪- Tmڶn7簶f_0*AsA gP ^e݇_ofs.DW5Gt\fn۠NN&YǙT1!LX(IBRR9FӼjz[MymyDՙ"!qFpK 1 ep49jfpoPp ' K-lbv ۆsLj wMX"S;% dd' {<' kyv)&|P?gYo+7] rGמT`r .um!(8ү`',α@J$%8FE溰/c՚"4qGʰs'i` MK]I D|.j.-"!Rő%IF$"F2N;EF`1}]Շi6*v;?gf؁mB1E_IE[ S2Nmͷhv#`g@oz?|Sǧ<\C~b fߺ]C~UeuolB)ԏHŝP" P HJ7'2HDHR^Pi_?CH T$T8|3 `\@0u)v;..;P:?)@DGXhK{pV47!LqHB3;ƐH S`u]`XU`H`2#e8(F$A)@ %Fj

> stream x[Ks6W(xt:ԙzzIrXtY)Ix2ćLfL} +Pќysx3mx}C|l$5xlp44r AnDw}ݬ4H||О#HY\Aކ,+B-ET&_%"w. Sw/Fϻ~2e)hBK]e Q^K `Ď{^W]cy@wvxzf{|SAN#wf"f1oB& '91&t<+'pv&M(UBW&hׄ>+„Ȯ|y#/̼yx1EvQFzO=ݿ}\Mxj7pa8&T2ʙbEBn$DГt% `'JQC%7>`s{EY_U =Hi4  +buR4Ljit]Jq&dE*M(*zEuezcb$7x2`C*7y)rLJ!ve|ljRsjS#K4Feý9 f'*[a%_BJP`%AHI;)07b8l?)*hB1Ul -8Q,2O[xn~5xyq؆9yϺȉw{C7g,8,g% .f( f4ݕib VrRj>|mbn]N!V ZP m8UF"aTeJ#-a0  # Jm8BN'C/gM3& FiR7@IK-)ԌHj8h%T 9i&Uַ3Ӧ|Rx((ІkRMjjՖ<O!V 2_a(VQ&TB]5# UFAQktt?mo<^vˌ{b瑙I"ؙ@hC2(A4UdF((Oٽ `erRj)qUSFUDc[]~e3*Vމɍ& t@W:s,ЈU)o"MHQȩBPSSc,,Jb؍HM= w1=c )TMn ME (LledXT"#XC28L(@9 l\WC^81i-tB G+$z14%E *ٗ]OPX% Z '>xv霖騣) ş,8քYLb=rS  ,tpϾr=N-f5X\ygDTڗbn_ʈJ/Hj^X VԆJe" UbG=7^#%k/3Q @) , Fl n&@w&(` "aV҉` 7a~LV8?4zQ Poʶ0,З:1 D:=H})[jÃ5`  1ejx1iƩvJi&+ej:h,"¤7@? " endstream endobj 97 0 obj << /Length 1627 /Filter /FlateDecode >> stream xڽMoF<ڇNw{C.uP߂L9M_!)֦<$w7 l &Ep4 3ŗY>5\ͯʇ8{狧]s]ps4PB]-$H+CHͲryݭkwǛT@ƥCXcq됢ǫߜ+.omƂIdžI0{m\ݶtx\_]/]{vmz WK9B62bAHdk?ëۭ́vPz/2C!C%"BBfbiƆuyq=Ъj ИՀw]֩=dx_㛨 L 5{0XtMY)zS>Ohl*.HxXO aRt'З;qf:-d Ct LT~`Aؘq=HzH"!GFX GX 745: pJ iC9iSNii.&vmGK MHXy' vbzQ;]N?n}v3[| u$aeM(1d3uh]P4UllIQ# W8H!NS:wBX4ool'ue 5LR@±,4\LTx~8rvr&p=$PHsRIkD⬃/S9+vP@ & ij Y#?F 6zp={Z)"gwv-NO-TI)ʀj i+*Bl( :dbcK侏32;o8+# `D-JDEDou|+u"$|TcHAvBi'7@֮wxoNZ#k#BH߻DC@23[| u$yI_*>ёt8?婦 endstream endobj 100 0 obj << /Length 1876 /Filter /FlateDecode >> stream xڽZnF}WQK$h}I@c%9$Y(Q&Ee{og$ɔDLQz{ {aČnm\cU쟳o} uD0`6G?AF_f"EEFF>-(Yrj+[7/ޞXPLjk% [Gǫ(׶qjp7^vXP8o:o aj@jYj@^ u].wW:@A MR5ë8qTi+O1,,:cЈVil< 7.7u8{m+mF{vsS ]p 7{#<\;C OsTNDG ɑ Qs2AKS3ë)GM.LN4Vr:!Y1@GKac_rI('&!iJp3y)&3B$z*ËJz<הA8IoR}M699aAD3N31.f rrE DP ;i.\}]2w /|l$A7Q^hx%=:6o9.ɢv0r\9pEW }i@QOAcq@\n>(ɋ>caBnf$I5w'6/la(dxvEu/e0mcɺ{$N.^Tmy]E"orבZ&r[Vy8&7qi jip^<qWmEeb;/:Vwau]*3.%T're+Ot'P=|w>cur8K̺LJ5K]$i@9ͺʏ/-X:N_e`Zd8ǔv^:Eޔ@jKCu5-wq{+6u:؎"#ZM,+cKg NF no)) 1QdzڷFl_.b7!ȝSӍ ]d<#G4*F튨C P^EuA֍0&JrǸA.JЫ3}vc^ey;oB΀ʿ/}P/4g…'-p}B-ޖU6^'za~y4  K>n@WceQ{a\PęhQ ΈH?X" ۵,z/{>T6:/ Px$Rq$ədLݯwzr|1

> stream xZ]o6}ϯޜaEqKEBm+eٯ%)9v%ۑI@h>G\,4SҙhM݇<+oYNٽ@H`{]_!Tqy G-7/^1QJ,e-4*)w_OLM6_j6ͦ凛.^!!3sB\ΥR KRi8QLKgr򣻨Icŀ[1h"[9+&dY\§`ol 44>~pnʀ_D6Si{i q$$:N"MuJ% 'lcWSravܼ9Ѧ=Qq*4QJJ$ne4Od5;e'e]WXiWʨZa9YݶJWVKc1uB_}j1GJy\@bqy9ɕJ7hko1eSFh{nh,H ZO,AR>Zޖ$<&S̿ImMnuleuJt4$|rkCx]J?VG{ !tdBFF%@"MR(٭yV4@p&S҃aq'Ç ¥90ᣐ+vVNbKBs\9}ĎVvZ h`ض]rٍ3k]|hKby5uPs$':\Ãk+`VTH`9(í[lEe۾= 컥{}VzHi| *eh2oob:4zbÇB#DgM Ѻ)Fڳxc}wzSj$է0O@Z>k~tr!h3 ΈR&);4̌z3 iוKaSW(t:PE MTT#1\TA,H"D=Uܝ+"(P hm6Ȫ怒á mѱHv|&iwU] `L/?- cX27I XXvPQjQpMR$"+M@ʟ$Lq8ׂHMwEl%= *԰mn[]=F{lO9YmCt vASx3!Tmq/8"e_\@4zyNʓdȢ=Ư`pAbu$>:[%e(8\g]O^:}8S@ه3B<Oܛw= o31A<2q>&D1LЖ6y3ɉzGA{<\zy\#šxh䠦V{F'eKF##Q6rB~!qL Rǥ,Cd< q˪<)eyB>"/i E!XHq7+ΖIlٲ VFqTL"'g^=> stream xZ[o6~ϯޔaa;RKbbaJʲreKH( rxxx.>JrFHs"45-7g>%QsoDNr H"/]JH'0iAPA/YQJR)YtJE}qU>g:neyUV9{ziktPns ~2Q Vdpء`^-:G,%gK"ٮCO =D~2|J3*Gqe}4%d 62R)'IoLV_&Mh?7*Ƽ 6w^sGYYus}dD&er*wMQn v [7axO;TJܛ4^7+*D]s[۹Nb<{~[edK6&`6ݢDʍvf-F ڳ-xL)x6k_6wq|'g^@j^ UbZ3}يsBtJ% zR4cPZG~$ڣ]ԏPlZXKV8aSv:0h He]֕Komup%/X[گ.+?mk?DC- `]^ ShQ/QP?dTifa)YQ}687,Ml^eT%%E68uPbZ&pcPfR&K<bK RS'@~c8 IgєogOO,%QB҄yg'Y6oq9og*aDi F#ZmWϯmA8tt&S'fN9A&{G߾ՑŊ]2U=WYv4;=|ͨ7NN?PƘxcO Lu>0zjزhȃ pҏ{xFeq)F(S8ȍ%`bw4?PxZF#\eῆK"4.UP6d+0>C8 `'iIW0͹eےw ka^ Zr?KoW~58QzGrŸxЉ! B΂p hgG9ڊ/@j?'@R-IJ<tޒ1<-3x4%\a0KiZR1rtsbO> stream xŚK4+|ébޒP@LqUvv=jɱc'Ʀgn}jAd~"si3'Nfol}?fgL˸Pg𲯷F'j:T[jIV=mD VgGt΅V,e۞ ۺ?Khljl:i9(HR:3h&lk{8קc;PŐ*x~v~ W goA˯/^w.WlF _k{_] ˤQx߿_2ВCg7M;֜ Bb5@kY*t6q_9t^EDg }:+.Ύ茵XAކ!6r؞2:6;d3 IW|v\D B`hh 8+Ӈr{p|U2.Vն`Bu0%SZU E°I*3Ѿa"bUaHaM:ly0 M-|g=JCdeB.!=cM b a8Mw4=4Sb6L:NqDfha1y8 %C5{XVʸO+ginXu*c2.VU`i*PB2WQ"1YQ&. 0ką%&!ą ¾4/딩p{p$  `OdžL08<"TL7(}N'6:j&BhưƎ]HWT IwV&Dxq*Ip2zH"Y)gfMdYٌVpf(&ݾ7dl _.PTzBh%%`R5Ыh2&/@^jhir1BFL7нTBNu!Wɛfňi 843!9 LvD&csSU -e,BdhKdme(ծ¦ʔ4N%=J$wGXIo j VB6l=p[f҅2Ib{69_5*@VP"X)e{2nLvd b7H&[^ҌNPO>=xe>~q2|e"4Eb&O'J*43)PG'<;ZnGM&؁KN(_r37&p,^/ܢ̩uX.[pn_f$(,PD0u+7"=pfTo:M5CO\eK2!RFh {SÖ"STzzKWxP_$KO [T$^9~[` B.۠jx>Ùz *׎ [t6c.v`XY!:T]|]cnBXQpbÖRQ'> stream xڭZ]o6}ϯУ=,?7P`@{J"TIiKJbvd".!p2 ,3Hc3,eէ4BۻleRiBr}p0 }DJ=ꗷenn3UlYLv>><۶hhzS]fzͪ_ywf..a\ N 68yf(&k" lׂU[U7G9G$Kze!T ;k׌QږʦΫfMءݖ5Pn}1T6Pَla{~>L Nm_nǜZČh8NiÉP:SXj<W/7ۻX.v`Paic)9:!|"'RM^Ϯ]beinx]چrY6PWSX" ,|֑Bp)D8Go~_lc&qxF@̑08ЌSI4(\[&eҐ85/p7P;K(a!CK|S .`BHRa#5*8Q6D&Ʋ۲۝R0a#WHJayd^q \)|sLxdzG:|0D1ĐZ$-$VJW5[RBWxA#Ei1&/iS2JRZHW&Mw"8vy߆[%^(p( hg цKę4Rۛ嫢oe=&[bmxP$ڦ o%"—V%$4j~ݘ~BqO?O ?oLSLHhqhǴږy}Wjܑ9`GBg(rqyėQ/Ark&BŻϠUZ2j^XO|ۡT}9q.hBF~^I%_^$zͿxǩn ,x 'RBE(3/{eNI4]>9*EJXxSHV幄s;5,P<2$\5`U߽Wd sHnX7?x A1pKj@gKK",`N&!E"2J)J0eD4M(jMrR1$U2MQB2sC<6GԪUP+BмVG<)t$Di ? 00f!u`8,reDGZYvh1`> ̀p^Rȋ%-LSU=j#4&N]85>o> 5u/64n`}h)i"L!ifۮm+ܕ.jf>bI/!W}X+=h(UA7P2w#F~Ws endstream endobj 116 0 obj << /Length 2001 /Filter /FlateDecode >> stream xڵZKs6WVij#N44m|KrEHT"J.TPM$.v/gx)83I RDϖ۳Yej5gngsF~3pٗC aņhl٫+1Ҝj9Ҕ$!c9.f,oR/v}  A^ ė.DzӺ(TE&4ۼz9b:[B0ik˺Ph} rl/ %bT=Z7V^ֻj ӅP CƧ b&OB(D% Jܚ|K'޹4#Y`Z֛bqA2 QW 7xSo\6wqe*a0Y:g>/@0n} E翶|޷>OB 2- Xi`iL /Zs]b6ZTN)V*+95kcS!p"eBup*=jmS9丱 $o:<7mmMZ8ݍvO2̣'n#59ߚ: Z !?@Tnv^΁ia7r3*mYy+OqTS1$? cO2#ű9^"p\)`,/N/y x<52$OW?c0s`秌g<"/EQn d/g$WPn4HI JQxZh* J^׹m>5t9Zr6$-!ZIgL"Lxvoʷ0PQ݇6oxGb O7}5Uk oq1}x!+fr4a[ |bzYnͻA_:-0"iPr*3Dst q\;1C|ꩌ]CQ]΄ay(ZvA1|TiH~Ss쪫aWƚj;lU[ъPOC)HC4% Jbuզ[p~ {ke3<^ZUӂ5`7Hd$B Jd#][?t1nz~^7ңѫՔ@9~GIm M9<+G_@{MQR"wux'aB3c2^eRO? Z%z\f^v7om^VW0۷t}ui͞WH4N$lAǔ=IP֖&> stream xڌP Cpw!kpw ݃Cpw{p.sޫվzwMNL'dlgh"ngLD `b02322ÒX8[GKfdag GLa(kg r0ع8̌\1s]-);['Xr;{G 3s< 20qqq1q0d&6e;# g AklFqs4㧦Y8LL]MQmLMbn/!02upq56q|d(ۛX_7Dp+@##;{ /.CL ev- ) ى/ h_Z8}݃߇kekfdjakl c{U[ /89ع&w#sx؛dK`A jpvt1,`hbfa '_-ڌ`flgk#fWQQ7*^tl,:f6& q[S;׿Jv P{AKcrMT]o:"qkT2m,=m1.[ k T_+lgmu_ dkf6Z8[+X8k\%WkѬ-lM,ZtLG]FVׇL2XM)fkdgז1@XƏQbfcx1}S `sp|9ulDB? qD .#Ab0HA?.}d>AEGv?# `P>A|E\:Qai_38HXY?7ᣪ J_=_۹8"#jAUWۏ!ݟV|8T?ݟްTqM;.>?EL\MQև#џ~\Q &+g78|s?-χ?1G$O57rqtx?_Vw#إy;#`Bxnt|wS鼖;\3{WŨn^[Z۞_㔦w`0& ~өy:xXvI:p"*=K,[ Uܫf{)RPzNak(< yi\̐R^kl^vS3Dw,]ɄB}߻m"7 ]EOsPmDFe)eT遨Zl+uh<_P$:A5+"чA1J8B檿d("4drChiexa ~ѱ  MK<=ay5p_Oj^=~Qٍ L5BGcZPd$:S 44@T:޿4ӕBf@BHaB.2ɲe$ҝۮvBsz"b s] {ECYɒp `,~3D6~)' 4@3x֣(sI.^(Fe9H谱%n/bhhNSccJ(ڶUjECܜ<"{"%1C"#4]3 K3 WZX'U|;I&̛ZRM UwH$kN)6M1Px'xZmwKvRw um!Wa"HfuUR½Nٝ#_'@,w{h ;4aU%*\mlm/". 16; ^qCU_r7:S{hTuoIq XLaqPdru 0_T˰ܻW@BiUmlhZ<늧N=΃NӶ)㢱/-gtgd@oM;F+s 5zfB~/걄E&=A!YSP_j stg. iH¤ c'8c9kzcVT^}ܫi okt&RMIFs59/cN4~O NʵXY@ К1Ƿ+q3䢜H|Yŕ!Q!s(GcK{!<γp X;q4#["['9j2SisFq[u.3XrwmYKv"TYUx=+ksUr7")rF9LytY4Ja}k-e"/!dsDFU2>}.O!ufHVյ P,_uNmb{ENIJu W,=nQfd*W{ssN|#|.M7G hR\hCm2}9pe A?n&ِLE.}ʍG|X^sco۾*5wѣMEfN?ܯSy; v k܉؜Ă)Y̐rQ1'Soݟ8O;OH=2;%&)K˵EWڳNIg&7C^-%bؚwdZ5sge<&~nyߒg%(@_4['~qW{{IquM! KӲ)wmcKn)k+fDIZ^7A.=K9OP'F>UPo.a6R}@m;1<.ttU9$}tFx"&rz._oiKH@c.*{٫TnI.cxrIBAP_nnֈ胱O9G)`{fm~ǪWw#rYw_S&g0_+7 B!hs}/rpa.gJVyylwF?cڵnSW*Cb3)ꥉ+bM/nf9 mev5x3ἇ/ܰIFGX%Z9^~ .Lw 6Nw/ B lJpėj|"b6(ՠKT"Rw֍]3F'gyc#0qZ98f WC_c;6f'kbA=%O_r3寯$KfwCI/Cg -b> 5!!{&m9֊h쯐v%u,i/Z`o1!&EyePU~η ] 4}.J[Ψ6.r/Ĝy44~<-ڜZ*5m;I;%//hVуb7bS3L%1ʬWCYVF<2 σ4_ےitROgZpz9A$洑gM=94s#AQ)ۤJ%n|E|rerq:{|Ǫָ#a&4)+CaN-Xԁrc/׳'^|kHrA ۳~HrMv;MQԠ"'U'G1<-Qþvzw*3o#*!]uOrʑ^*aqN>%kl}s W5?=VL{[3jptB@'s{˖ldzq˭ ~1;q-9Fm}&(ӈ{Ua9:+DQ-i>#&2r+-„P*d&/h])7Cc ^uޑv&sLt,W]XHٹ ={쟝~_6dTc>1{ҙCAVׁ5rud jk=lhAn:fq'`+pC}ɖ D-ch.m?',a[v{f 򁀣JlTvuK&dSv%:׭nӕ B?oEP7ӵɥx?)?2(P 4ca:uAH=MtYB UI&$P<({L~Iw5(0L#\KY'ߤAK%{z<&$(N`R #D%5XQ +Mօ,d:G"e$b4m2S(!킔hQd:7Z71G/*.~GVN7 *)<)*Ym$,_]ȇp)Fm c Ҫ1űωqܒ"Rܑj%+b16>!*ORꗅ55KNvrn9QP=$Œ?W,ؽW {;A!]m,D1>#kwX*ۤBEeF5|@P6bSl FVpsQ7Aj7P e6M̙in IWeg1,{YIXQO1x9ϼt>OU M``Ɠzߢָ9 N6OUϾߠY9b~ԙF!6 H#_:mt":wˋy)VUd-;흚VR v$]Z!34r3Bez0v<ǰ.k\z\_O*W/,֊JE:}h;on4̑=cm6**%p-36Y_-Ҷ׆.XX]E=ڱL\ \ij0FK.}lM[@{Gi! ܄j~UB~G0.eqyPW _՝D 2ˋ|[.YdٮNC^ס+/6XBSpP<Vbدb-'QK}#k "]`-m wa8ݳ?ěp¹3(^%vR=0q; 9^KQlO wWucCuAດF4t,ElVR =B<As!W7U*MM-ƠÆYίQ|u-iaՆ ű_/~ 4ؼ.3 /}RsmvxZ4q/8EYu7`no b*C1-+5b"+;sӺeLD' 2ZXu:M%x_NlϕئhM0"=[l'jgVe]Jב/,^t()(>Ud_Xa)y¸YG2 Pm$+4yr~mwlU:DE7^bfX;;,SEy5(Y @jh-isLe)>3SErִ Յ#C_2k4#%T^N; c HXixKOwݰHO]D a^bQPW?6+Ti;KR/1I*~$ t)ZA"4u c`ɫ!KE[* 5E.d(x[-G(^jЯ9rZֳ`ezі,#7f#TpME$φ'1֤/9z[ޝE^aMQZzt+qOUyFLV Tq. eOz=x1ld>~iYUo˙@Q{&i"C>V*`2`K=$Eՠ}^ɓHj#gJ¿ J/wqqϴpZD56jW燇h=xsJ7zS?}10Y!ǡ>΂nF9$=Y8uC1Yt( 6?ګp@H)~|mbtuЦd3Sac9Zn 3eai,R{LSq\>D9 9].hBZj$}#Bڸe06-y@/7 r<YrrDh:9 ,#\untΈVYU]bƶiCdvd/头CuR%RZ}<}'y)q!jwtS*YU cy)6/lʨZجEC7)[oA?p|͍1-NExwf;M9coV]ϗ= 7 2+κ4UW &k5p oEp GSLeacΙFKJ^B`\b{pC[vӢtRx }<)(<5m\z ۅ׬]; {r0Ep5~2iNYz:E ߨZZe1i݂" 4YEKoؿI"Zb~W'_vr,ۉ^M7BƂ]JAhEe'܏tiNZ-ښŅZʦE΍ {*/~p r @Oubvu-p2b.@,5gp&*ע9f3{E)j8AdN7C3v&cߑ…7>i{MF @#7ud |VX!~*kӳ[S,Kd޿p eI?1֠"p"QWH[)) ܩ C[XdiQ=€߾̑&ր9+>54/ Hdut1v#yxI\m/ r1* ga]"*t/++aڧ OEE|h55gv  lϐj̡2,LڂA=.ԧ['M&3*,)3ңKk-cpvJsfO/2=Rʏs2j|mk+婊'u'8KV/HΉgzO{oMpJV#45n>SYݎAe0^5ʝy@m*?E%g LGg΅|0~0ZskakjmiFb)/k#,dzf)77(!hڨ\'4{oyi? r҉ Dw);hV{ ,rJ,Ռ1ۢCU !U,$!eJ@X ʛJ.v5X@WS% t ?kNCA,{hڠj%Z$fV0tQEFy*#"6 ES܋ˑA3<$v=a[pN #>kpfP6n{ g%u脶Ɋ-Ը{* n~ªglNznJv/m'k;w4tSI3*<x0<.1+7odch֪X'Þo ae#W0i 6N}R^b_;% T$FzBo>%ִc`Bhj 7yWHBydJUz2Y+|$ yeZa vn@}e[g$ʬȈ6. c܈4&M6xHbxw4Hq +-oK3cIx@#Zd#XU-N~fɑIE[$c<HodheKw8"qz<^wW X f !39-Ŷb)R-Cn3 vfF ōʑF!qtU$m vA sFp,?W|[|;VhWϽnΦV ]Ǿf,[jh |3s*|o40!&ͷY ThIڦމfS3%x޽}}lEZ~ɞg_JV}_0 pQyni{LӸXISZ$93zPHhhv|g[i.ǁ6vJ&xtܻI@Ez|ts$BlzN਼ݍ&-]Rslt%>=DTR1)7 <;>&n qd0ߓEP=ir|QtXS<g bS8ȩZyi,/CmWIQJiI}ߚϮ)r /:NSw>^]7 pe@ m[,(./FDӻ0u7&6ڡ!bzuo=2ʁY8ޟ. ,)p.TxSɸ[[(0ҿ(.b h"bEf{fR1V5,gPc;f P [6%c%BwFBz3ȏLTRə_~j|V>aȘT' IО:U*'"yӥ[o\.㖸jKU%6n;fҠ&x)&yyvOaB?,ψpi?yѨ0?ya[ } Qɺ/;~ 2ʹcE8:kd(EU(Ǜkx`MR +FDW x/QDmw[$RQS%\k }'" {('lвkh:jGQ15{?V''S'iQdWx S'>H~GVc1ѭsmdf(#aG2}p[`uH€ƽ) y5BY.Vم|H72[j$FF쪑" [%Rc ]W4zqqVdG<#FPLaT47'"-.+{-)W'N`I1?RR>&`h5Mb k7B{G }BJC* %<Ys_DQ ;z$)kQ\W?iv[DP^\rj 0שbgޅj~!?Kq͝d~:ÓEb**5sv( rH!nb,Y;(AxYaAD -@||ˀEg-P8xApe禓&$wp,6o;!]Vv{뫾a&KLVr+M0~M9k~)?ԄYDO-Ŵf.-}NlQ\A充VsWQIK.P@Qk"32zsʪ?-0-|RPx:vGBD!Z]}+`]^x3hInF:iܚFEfz- ?BOT%/x-Wp7('ά&"9bS)&"{'@."48)10 J? Z쉒}gIBkjfQ L,#%O>D\ߺΩ_{j~"3`(MgɵZ^fWI<ȉTjjY/f6&t6@w 8(5s^/HOkN I8=}~T|A z<)9\0ԥbl&RԕHǀR#ȝX90ґޱ"LXeԻ;Ĕ;&IC"+nBQȶAtKᎣ [J- _˥s kֻ+5^dyTy)+G;p ӱ.m;p=>zR$+YZ|eܩ> stream xڍtT6JRJ%%!ݱ, ,..% ]" H tJ4};Ξ33=su=:ܲp+")||<||P?>>axP>y^88PD'ȃ\5 8 g}w@@mP `bb"\ @(;`@BPQMruss9"y[)v.eІ !W5u#xYvP_ nP0MqYC:ʪ '/_.ߗٿ AaA`0 l6P@CQ`ֿ $6 :nZe  F@PH$^C!'E@r_n0,(.Nz0 DYo̭ _>[ '*" * 8 `;z8Aݷ3x{:6c@6?|O$@!\ ޞO XC( W[7/v;~@2sϊyUi{ @7/ }: }+Wfۋg׿IBYL~K]_L7>|*OwG.l87►.[oo/A.UFn 47PO/?uXkBQ`h_0& ح/o?#[n!o%6VTه >~!ay.xoej qn/ M #/xu^o_&o&o&?? ]am;?5KW6ҸqHb%s:F,褧M)Nu?9eOyT1T{fPܰez7~ηXSZq:l9zD'&]8q+m+דX E^5ӊ,iꭾ S>\r X~k¤"rVFes W}`ZyA2«RO+%g:jٌڔ_Q^1ڧoS5礬}D31ؾ񴖜Sm8Z]q:ȖeWRxN}17Ad, w^ (љw$`iXN\5 }ʹJD;VoU@H#R,'.>bi7ʋ׼V:6/#>0*lmPE@c}aeݠfedfqWC-C&gɢ '6ek~dy#T3*&OYBTЏ.lV?z,ux]s!ϖ#Jgd+*^iiX6%VXxhȰs֫x.CRk!pOD%q7;3e Ĕ5^lF+P*mNDmID(.<#UNh֝L5>pU+eg^K_P$ӪqL.zт:d<ƏhbBizoX|D^K<ͣE9jNL>2O#u+݋j85 [h|$*uN@L9Q@{q\dWZ1$BAw]FTkƾ?ʕ+e7{4ujf%(M;1 P00"8=ayzDhs6] l?0chkOGCaWc2h6Ig1[Zw $=+4o:A>i)'&.vf37;[%F`k+P.)۱mI5y9ƶ 匇U1 qGdRqS/y_⪷=4Y7pJBіjp [vdp֚=*hTa,G. oKY0r %Z0bw%p_@ #X\b'eDI *RZ+‡JDblmssG% R] Cw}EG^-R ~n]v N/k1e.Aj?96Ց\*"H .gpiS IEbC4=,z<ԴPݮ Y}^yYAEZ+)Ja]-,f'gu.:k$%1PьTZYy]&# Nޮ;Awzmpd;җ(ٹ+/gx^K1ɻ$êV\FD-F+?ᘛ9h\oZԇUb]NGA53%Bgm,ޑoJ՘Gt$pzViA’+6XB8A6.iq1Q<1rK[?=Cjw^0 9Sd5%\ːIc+:|=vLxP@hk:ⶽRjwD_oUQ>tzeԿ[wK `9d(WhK\ "nf1 01vZVGwԗ=D)i ?Mu^ϽqZU)wHnX :>^e{G|Taώo|QN׶HcE)iW&=["V<'⯏عլ?7 ]͓'P$;'ieT=!L_fm)ڇVk ӲGʖ4븈|1,z; F>%S]ajp'W|-h 뎦g-ife^Y 2qAuEvIoJ^Yz[f55:]Q\/JWOɬT2YF2|TR'vYw[o֯;pH 6XL~ºy?хw qd?;XQ`HiC]G+Z'fƽKsETƶRl&c>!,z/N z]v~^"!Mڲj4KQ R⋳1]86Y/hI>T\\L~KPGŻq$.pս0wZv8}){x gO"v{} _/-{4 K(?hc'7ծ)3/u_)B.ʍ/m:cS Gzh8D/vHh+iE%?h-o֓eBi=m3Yd8}YZpυ Nn:Ov@WM-*w"<ȡc&3j~/͡X- ~8[ b~|N6@o mCz#u<&T)PEhȢ)؆xLfd@f(2wQԗT4{}0 ]pɆTZ˫+`Y>~L{TQ i8΍zU634ۭr4١L+OK*xlNc9{O{?̉( k/^?ůx s ^]jY>E3jH^ѱ [k]PꙓHfeYpD(7%zѱUx>;uwv/4*:0Z`u\*漞?^5'V8\\-ۍcjw/ݗҰ"^pduG,ʋ :b#I㟽/YgpV6`axkƾ6(RLcfP8,ceZc'a-bO|13z 6I ժjyA!~ީWM ǝ '+uz?"bO ~)Uh*m$H6}3u{n\Uw&L q|l;Ns@!0B ab18lP$|/ܫ;< & ^~ѱ=d: v5BW4MMׂi#5?zdx=\/&M ^ީ e\&39 ~LRV %\u~i1&W/]HGVZOK*!zK8 \Dhk} 9>DX.FXT?Í7rРjUF4]#tc]ʍk':eq&>l/'5sbC.P)\Lx,(O[i^`ZEw3Qӄr=RAbYMW9Qg cyoYM/sa}ǑȶRtvmm3>'Uj-5ϭz/&=e=Z^.*++>q"@;Lv }ל{;LR|IL7Զ>ݸ/]ř066XPek˰FmAi} /uٰ7D~֗{X%o%7BS4+ة{h7;zmT!_b̓T2/*&|wؖ^y0OR{u![r [V Ⰼ#>*.79IԶGhWOr=ɂu1yHrNQB}V?sMfUm6{|Rb3ųL//-3gXҷ8qII2U~5 $1{I0Ykf.ěl(1oaή=zڤL+%$>(i1 o=}J.R]|t{FXUkky*Oڣn{DK}NJBקCH%24gtXS2wn IPPJϣd!fmYp6{q@#feW/F1SpvyNE#@HɦDBMI]WхDwfF<b,esDwW&h]$Xk6H_ǜ's K^ "[i&tATImߕ"U+3MSW.T֯WxE<${?O4%%m>!L&K7*8咖Idr A*:G *u8?Ĩ%z"rވ4)xt#WKTҹ9]̃@O N5GvG^59)_.]]NFniW|wDǵWno1J(/x1NekCCh67'%CCwYҟi1V-f{v5z9ǁĊWTǰZAo"dzK>S]hdpgKaS)IݯQҚW/f"Eb^pf{tmW0xzsչ~'?1;}BQj:sHKS]Z3Y:JS}Z5 v&B /, k!7Y1)7 X[EOK`/o0m HQu*ݗЕV dD)$a3#(gհG7'd+p5̨=T߄_yz4*?-fg4\~/Y8i @N <<=ʾxY8͍<s0ZSaVTPIZCRwsѳRreF@b۴(gi@H¥V֠ngE#T>ƮOu¾)F=XȁԶ凓K ;4~% W8 ϴD+y_7hXKuuxKޒ4[8Q nI # êD#5:/=H|*??Ad%$Djnm9,n'gAnpW`;5TebĿp"A_Š0$8 t62 ]f4F);ŦVS֏\)ERk̵=2wR\eb裟qPX/֖M],?|;z;E!G~E[(Wy:fS|!Za0bZf[gFv*)$7]F;xpӽV{{g6-4r?W*ioq75n/4 ͎C |i}XcLVSjaF>r%k:[ u LSŰÂӕmн>+2qdDŽ@vw#3[|k/tM8ɯ~֎$R?i[Xߜ^m=Uadt|r3Wk.-0#x6(@_G'9ǭ[Pp臕(CEjrfuYf#>Q⻾Ru!s[ǽ+9 8Lsv|ʷycb ε3X:hPu+{7ؤ7ْ3.huYeQ%x6 :jnj;8E|i-'Ē91$ko>R6$$ċD+lTI$7ټ6ҔkE=O^TL6n|@ ѦaɾۯŎhOj< Iȭ,y9ЩPbwl,X"}B]{Dcz~M4oEU)!A7ƻqz=HG6Tjf/D1^9,`P/Vڢ3>OtC3 Zje1%[okX9vEqvvKqC{-̮z6 endstream endobj 133 0 obj << /Length1 1445 /Length2 7146 /Length3 0 /Length 8135 /Filter /FlateDecode >> stream xڍtT6H)*B {^J$t齣Ҥ {t$4/s[Y͞gf<>D  h_nbv# DH@Ec}P4D=]`aXT@"=$P/@KDP H7_#Ϳ.[nX\\w:@"ZP#-о(%FI z{{ @]QHin>7Ѓ`^0;PW؟p> - fx"`}5M l`;jktu"|=Q@P/ Cp s(@YNx([%QW)+!0E?E{쾂nFevt4D=ajA.}040[G_ |`_nnH7=vX#GA`',?` 9WǺal{}AX_,C"\|_A=ME-c}?;&/  Dy\5=n{Nj/pn?i#f9~gNQWݐ0]|`Y*@ ⿡ư?Ղ=];b p,"㇣>0pҚ {D=.,bX:cBPVmˆa>H_@=<ثZ?P;ojH469` uA/o a]6Dm aM?ZI~e~`0- V2ܩ.Vޛ~ƩbKBt҄JSi#zW"~f-f+̵' 3dop $%BCZ~& KϛbrZR nk>_Zw!o>r|^~8,Qmk/`]Cm "9iRKfEH:N^L?ff(DOI!י2 ,1ZJJ5Z Y9(rǁ7_0gFݺko*˼Fi3-?U"L:efCL?n'GKg#rbPќ{!&bG͌84|-H#nR"YX Pv2rZQV6W/\LQLqaZ~~rNzFKCzW)'#LաxW~9:_Y#%srӜY=t{;[Z@D%1,^ng W"-ʔ-85Ÿ7H%ޗ\Ckie;%[2BlP8 ¯ &R*<ej҇ c(~rg_ D֫ \\W )Ѣثc !vD7ao6%PQ;o?*J+,r֚Fu g?s jZVPmtҶ ^!bء ھңymlm{哚 eKK/3 *Kol:KU =0 9!d0{$+،^5i~Fj/ΛAn^{GҔ;ZP}'>Քr}5#dӳNyYe5Bײk٨372 T{)9M$\OFN.ځIsh%+a֏'l Wx.J=*do_Mg~myg ܅/k9 Z %o>V423q>xG .%S$9(si[t犾v&V=if vO(FBì0:7VC-E^Y~m (dɑPn^9Mby6=ˈBIOW W*/ޓkڡ3 y"<%9rv##3P@ρBVWUv'fvw}y 4R {]TVL0:,g\hߗQRz)ML2,v~`e?4}xeKԽ 9K1eW`J3YXԏyTJ:Rrl9;u̩>[7̚?*֓})+ P~$^aXHPANyOPR'FrjS#Bz࣋9%a]e7d@ ooǥ'g3}'͏t>khrQ23T`?ƾPu?T1p%WlƱ^BLkY YQB:;zwXi4.0%^fIAwY~&u*"V nvS7%K~dmDC<.sS65:iz.gqIsl"4f;WxMI|q }2l]?wyt~Pf/SEh|qI0I(m|ѣ40a cUjJ+bXg/qn[)=_4REs1劉eaG82:o wNuƹQ4}7uݨ6nX?sK?dHM}eo_k/]2*Z/ׇ#B{g - 8K㋲)Af!}XM3WOOgROtnD]8 $gcdS~뚧,>8]0\z4baT2W{ {E7b<"188>~.H[+ OX- 'bVǰyc{23Ñ(["[jw?1, 2:c'w(Wd hbc9_4Q;h'r֒AIBԴc`әdG񵶧aOyom#{%h lf6ͯJHif7P1YxvpgSdc>-¼H e{9.8atF (>4=v/G}#7nbI`e,z] Ikk2)_NAs' MF߄/&=D^/a`]^=YH~΄ћ8|)AiK*ױFF)\7Na|^ɹ HI,}z]q#cϙ[!f6F.u/~[hGMV aa 4n ,LnJ~S+A~io<2 6qWy)[7@nb*>쒚p-eG[[˩TOUvDs1e[ݦKPEJH`==|gvo܍;fܬW} uQ^Nx^dJ\Rtݝ G9IHMc SrF{< {=iK7:f#vE>3&R.HvMܾ";o=!LMꈜ}aS ) Bf]Q.Ucpݕ9C[$"A 3U3 )4ZDD={ 5ŕŵȯ6E2! BԍeGp{ӗrqw< "'7^ž8qBlD붣{ZtHQ<0j2f"zQP /)>U ;AFqi8Dپsƃofi%pde}S Dq9ek` C"' qO}*TGdngLʐ^]p@Yc̢1$G纈I-JTy/g u#+Ro߻pPzL5%Fy5ƨf}d0sfx'.] Lh#~@'$$etf( _my¾$B=tv̽=E Wlk߱Qxn|_].cxio =UB3}[& l܌.xBϓcD5Fi/@\$8v;YBwh9k.箤9՜34]ӯu$HRUw]?/(4"vcS@u)YjQc0]sq3$hNM+q\9Z)OВ𩢩 qh< UQ@дʭށVC'李Y?kd<Twmy:p=ysw**I OdQ{N=Kct*Tǔ Z!+,u-yx wQg N+TLhD/}4uD.al̯ nrݿ_H)FBȤ LHc دyDÜ }}C h%Z>1[`[n6Cm q)pRJ6[{͗0~f X>72SFou͊%n* b@Eަ|/Iz$ amC&*jDwYijV_e`ʮKo p +Fg/OS*>7|Gɡܯy^WWx1/ɴ ?3tM*J,('S<#06vEP"2]uÊeZy_ID/]Xy?) J xV">wX) yen jrl e45{W~؉{F#R>8"=9&M &KsAB;ouo~LlMj9*:^,NzTWwѪYװ.o9e-m/sbIHsOؐtX䔯\+=3Kũ/bʾ1@$ Z?bEV*p;&x7C/'ʤi~.OS zF=y퉣.CG @M"EA;Z٘^{ k^S:(~N,EO.ӝskdJw^ilU-bA2Rl*N̊W>4peW%țf$ }MNCg30m0Fǒ2m)VY /%rVgaAPG2m> stream xڍP\[-  @-Hp-x.#wWuouU֘kv51PƉ `ffcdffEP9Y6#PhA6 s9člmV6 '/ /33mxF. S#@@!fk2pz_&4.?"@ @h@trNNvLLF֎4W@tphhd 3F /nm3mLj2%;_ #G!͟F&&vF6 s Pgtrs٘hdhob22~@RD`98AVG]189"O4yvwN dcjGvL6 {g!&l@'333hX0Q^{ޞvv& 3   d0lne~ >?ϗI\BDIUux23X9,(\3[_l߷-꿇ߵmU P#r=ff/g?D I:[YqYx(ؾ5 @S8( r*L,R_v? dTuqޏG.?]%%lLlM1VN;!#',1=ޞ70a qA$x#A> <[GgL,& +_ d/`|g |__?}N}['bl_wbv9ѻdm ;9wr,59 7d}gN_tK&c^@aaք/Ȳ:J+ΨŎwVGD5[ā[7‹/GjaCU bU'vDZ{Djz ԅw^4@-Ke̍q-VS42[)\2_8Mm1K @G~:}s;cX68-SgÌJ:c;9.! ~,ΜgQr/| Y*A6 ]?]XAT{17`8*aU6D`8d$o3]i0L&X䙬yL#k[5vx>گ 2܅$74 nuxk JX//&C8@ke0?/$r?C{\>l13pCwrdy]|.;Wl[FrEȩf;<ςM0=:;Mkj4 _5n:|Q؝X>nc<]Fkgb \/'T\9#Wd8adο_40tTTV5Ltۆ:WP6UJ)R"w[3]d'.$ ѨZ[#Ϯ%2T =r^ 4V*S!XFIf:Рy/QM>cknrddhbӪ\iKI2z&@j޸*RH3mv? %Jƌ)8z, +J_ϧ|ϴ~$npԫ^ż.k'_ 8}L1&bW15oTI1I27 S73z+ߗ$,S>Z fut҅*2D6IO4*qYJFj1Q0Y0.O.Οd]G33"Q$]I%9]/Ƚ*mUGF' }3XRjW,Wꪪ҄  uۮݔYfQ8S~5z;9=jARkʫ'oqf_}L(vٕ]Ht drj*zwM"K/d~h3 Gxr&w ~ A&dOj1.tH yJe"/QQt*1Oi&Wp([=<52MG"(Y)+=BdRm}Xq=VRB9iSi {:K'x~ u%`m蝛p**6}d~Be'֘7t;;&FmO"o:YgE)_T@ s\v]Ew,׍ ϶%]k !!TlQSI:$S~wλU$rQ ڥ+e1TUe}!@?U6K̳c:; Ɍ54Tк[Ak&7z٘y;4alwvZȒV Vy ?{\Oah8}W*Yo7.YA8E@_xg싘HC:+O|;l'˄AՏ^R"ڒ(h>c;>ϕaxr6}MM양)d %Fu} 7w,QqWH=uaRG9{lm߬+:2'ˣVHKff6^UXp}<8G/'9lPC;/q@ ) tQoP!RƋ̛ܰtT䗃9RS&";:iCWw3WK0 8Hٞ/xJe&3;=Dg~#3^f\qbq./@ceUg5vM38*q-ćW{HSH|K\е7W8$*F ~,J8?&Aj8e1\vfr;Z };@m\rg6ۏ"6v:0st[D Lმ\hrفAr;S ˦Q[\۩T쮈lbt\x_nt#5 |Ux8FkY x\5ږpނĭ H:hd1 `̓ցn ,Q|[ @_V 6;e9c(GPp*ír"cE^ń~ǩba@t}B`JVvWb+]iV3jוc%R#Z]W K"U~‡ $$v~-Yc_D+nM r B(k丢+TSfuӞoz0N-? #CF%5$r^#ϧgP#uTGQe֝(rߒuh)۞,Fm2~hSM/u֫w]P}r^Ka1IFNFOE(S$[[:fis}b(_n(O#Wsrn{5wr_ kSDޫK5HڔfAǛs4LcaXYD811O8F-_3]fuc`sG zivQ0~r?2t'әyoTzT frn8j nK7gk@wϵ# -"DJAY<=1Y,dx&SjlϪ|E#V:$W?øMp!.)V I OKCLҚ@ jfA&%{o} _ԩ~g~䏱h3d%/1`;m?/1"FNCPcAd+MRX J##j0Y)rqkýhW¥u~MU;Gix.L %i'=LMkM7ɗl<&zJ]O @v5Մf2"oQͰnPP֖*#⁊" U< ,6Ap+0 .ma+m9 aSpq|2{KrŢU7eR%bj%0lb[#ͰA(gKLXM2 % bƍ!@ʨ\ݽeb3ӄ$:)xLu7ZRPATqZ4'-ۺF(}D9 ˑ>鶳%7o|գ.(`KP,9Rp_O:.q3Sj0SD|MClk/a ɖ m=- ټ \+ d^|>gL)w{&HT~?3G8RipewTLpr`mbECy&}1}9xS.W2M){@(j?-X漿 q&Gq2F<>$N᧨X&[h]S6a-5'-o6Q(ŅʯϚjDmSyx+;IfVNRʙ@* n Չ)ru=jxaOr0'qAo;]s rǢg n8Ja\eDDִ@e~+]gǓonyM`U!W"NhHG %14MF%yMc<Ӆopj{CP'X~/,i7 j'qm֎k})=Ig}Ygln|/ UvL5_ګ)}<9\r4d۰Dfn+~Gl]ХQ`ހSnwV=4lʎM6((VB:W{'v Ogr"Näӕ%BM.Cͽz_if_T7͂ZV2mI 5[<&G8JfMwa|zt_i,)xm7}c3H:u$'m2Uc^h[].?.nK7*E&&\SZx'6Fu{|+c)%?KOU&Xl_5p nكZCT$^$vDOM0/,hIïea&63\?Jnj=Q(ޏӫ/ҿh=7.Aٛ:tEvl4V=EQoN:/P ,<2*Cߘύ10o1El,,`i:'_0-4g?:>Ye<@rض}@HYD*!s)==r=N.{"D[U}d}vA`G!-Cǐ7+eluu;|EU;%ۼ-%Fލr|a}} =9Ċe> f&]5F^c]/adZKL:5kZyO~4Ru5JYlI_fͽPoAU+m# g\Zh%e 'J-"l5eޤ]nP4I˺cVE^ʎ^ FTfd}0m5*?KF4~;!S.q]'7vVk/Õ]YFdR)[>J˳+4*GQܗb'6 cBo.6uEHKNvoKW!˻Il tBl#O i? x+//I0 1{?HV7-dvW [m}aR+-㛵M%n[<~ A~P=0 wثK\,ugg$ AQ)*'Wx hԲ͌ZGjt&!ۅ$ 8 zBTqլUr ~cǁrrRzO{,5lF2ELx-Ԇ`Ю?~  an.Јh3!>;a Lj6.= v]d*C0 Q[;N/i'SCS}ޯ&Hivd %w-ul;=|VT;GtRYsi,g~TPYʡl$z9"Ȗa3Te4˶ӓLMtON0ߣq|L2FDL-u 詋m@MF&]plNR qkf[R%彺N# bX.H1w%+^<=sQ ) GSphz1!D#?xNf6t@ g#p'6 Qt3]_>=c;2J7k)U43זuo:2t:U:? Sճ 6X8ess'/#hl>.n*K'#Zóll c uh##40)s^ ." cGhOg 5)qJlJxd߈ 1"x9f3ׂיU;k$| ^ imLkk̃\y ޣ;Dب3*';ҠZ&rULSv7INf:ѧp\p/@55 Љ,j5R&^64.|xӥo&^C?z"kp, G(F6il7s~ CAR4ۗӈ(C"f$ c/YJ$|xm1{qR!a>k2Qi C(pu1xjtBN(Hh?w޳FJ"K6abV'֐%(r5)Z$@!VM3H[ZUŅG(VbixgBv}¦g$& Rkյ|{PLdv~"!F\C4e%P?iލܛuβh8fO{;5``|m JiZ.>&NUk[0xf?ĵM J%Z^r5E]@2b$2Ɵ$دZ#p[]Ks[<ʁ#(4IviY4 u~Pa]`ia ikDa6AiA@I ]yymy(xI |u҂k fN&XNO(j=&6{˴t>giy:)V.ƗEBCJOJT]UavKCfTMsY#^ U.c},nہ\ ݒbVy݉/= ] \;!O%g`U䖄@`:j AI܅\i ZbD9}G,te#Ur- ?A46h*,WPA/ghD>a5V(M#OdʙqC\`稇r5U;~{,n;t1 gDN:PjTyx˶az㜟%(ɇQX0P$\AS'ܨ.R1E^o ɇTe x $E+֖ƙDܚBğ|}I' Re1pd-EH;TӣmyU2'ب}E(qb<4A< nNXCX d?D/TNQ8qj)SІTI){w|UR *Ǹ1a׃t8Bz'dݵ0D9|=fD2wi$™52Kaާ-O7>` ʂ*Bۻb6V-:V+4R߂mBS|%TwSccJmoZTvuY?-  +%MʎY#%DvAg VNhU 5l5%B |mkgn|emJp N{1I@Ṃ%tl+/e,SŌS*>8͔\P9' <7Gd/jݵgzS>AmE.FN'l(S0Lǣjg0uBi7Z`SwYB$7%G! wEڤ $."O# L3!Q;j3d\o`lMwhBȆ,nUl縟mPGdxaCއ%YrʴVfm">bt'GIu=JGdI7S*Q/N::B ڙdY46ѣzK.SU݄u_?~aD zrߎvck8bQ"k"<9vI#u;+{+`v7]JYc zU9_C, %kI$n5s?u5;BLV_~)Ȏ zaþ}Aabv8f"7Cڨ1T1[V`avQZ'YӟU4v~l)x@d_)7㒄XD.^K#lnf |+w!FüpiM.M+ {F% B3VfMRG}+PrЛN-+\ 5r 7 TZG"/"pY46&[-0 4my(-:$̏!UYޟuuI7BN^N],Q~XgK;sx jrQK={Zˌ^m[[^bJ}!rDy1mϧ{Rٓ}ʂ eN{ŗiLȠtdR+w3,M}H^8;OٱӼqnٚ=!p{N U O !Z8eIGSwC>qCif OacHk(?j@6XvX/v_m|w4LĐ$s|ևK(IM-\7B."Tѹ\BwٰVn-Vq)e@vu7 Eע py'OdkQ&NCHPM=ZYlc3@{i]|E\zցV8m^]2n5N_c W0Sϵ$:3u/2ǬwL~6 I,q S]-]AzNL 6?|"B{Yw1(fՅ6F{ӂ6gߛ}"Li1/Q"a<1t%|9sH&^%S+窍-Ů":!O<ːb]_;*Dž+|qVVa_=( 7cfߓtt8qBOo^X+䭇cvԎ#;O v%ac#)xn'uXE.ߚ5N#;".9 zҤG{BakR~L*+pou3(-TvWFvQHsiBi /HAyuk]o#z%˹,AqÔ)wcI|DBiתhѩU&4z o3%2 = bР*anTIO_|Hrw(3i%buEg>7L4:A͕^!hQ =>[>uOQa ΐ/Y,vڙLkCE'[}YzGl;&Ԟ%Y!_^ Zdr hٓէ?ĄLsf.#ڈVi>g%C~! FV2#cބon6SȖmҭSc#}ɼ~\ZHyXgD`o.i]cq'*aEVϐr.9mš8b0TDx/i>5c^OG9kz8aqr"B{'UKHMnBѢ10K.y[օ XٸSСZ&$^5{j0RCl9wH'VWqSCQٙ5a%3Z3NJGZ]MXT/襌W5&C`Ĕ|gG0zlSbkmXDIf[hӀ݅Tf->-ܔtMHgzGOmd$񅰭O~s)p|l%K,b)ռ}~~> !)*Yǖ 6Ŝ!R/'W mz)? Km]c顕Dhg1XQ!%XES&TWEY-:X9.,ѭ.fv8oÆham*jUs_GOF!ly;iA[)w_P8@YXa7FqJ65tffn\;AF3f|D/V_V+$GINka! >wXֈޣ?b[JDB*5 /Tۅa+sM;vzjM0ocMPX46K$ӡ,YA&ǖ٠I˰> stream xڌP\۶Ӹw 4 N^gsw_^u1kAC"ndqrtg`eTRss"h#h]@Noe 4sˤvJN{ vv';:Hy,J'G+~-| 3G dWz!ww7ll^^^fnN" / @tZ~7 P6s+ @\ A@G7%NАW86Vۀ8X9 ߁@9YX8989V { @EF۝`h oi73U@F\ `n?YX@[dY;G'/GwlZ L"?2k;Ot-l~q-w 7 Y_H~nf@0ߊ&$%`9"fỂ^N>:_65iI Y;G'! cpp|<쀀jO\ `w,e'vܐyr[Qo; KM6sWrm*-A[+n&Z-l^Z/=Tp/fY؁nK_N)hdq\]|_EK_; `cutr\~(/MoI!>I!?`C6? `C\6?+!pv?ήU!~pv?ή8i!p-Z\ע!pv?4rcnYC<`=x ['5a. i؛9\GrFmy~矔͝<\ l`/Ƿ x6>6@Ye_ݿ<3!xB| t;=M-<\ hd!n}_/NŲ7%.7tV<}34*ώfT'gd.x_K~7 "hkAw@)xa{ z7 UMD.E~eIЊ7 )`@@ Bu>s;U0J̄pU꧿əZ!5>) A_yD^C1-zB6hN28u oKs7fЫ=_:^cA<=n.c nzO)dA-ZtswaocpZLI;zsBiR{_(F{0_[8}۟tt 4Lii >L/Bf"k# %JJ.jQE61j̐Sw5t=tSU*^WSȟY(. *jkOXQ[ щ#tj>_M^ VZkH(ۧa$)}H!6hm'# Rh@ `5*rQy0ɥ _ǖ8gF/:݁ÓÈn!ʨ {;Nk2 zȀwo>~^iven3$u2Qa%:4c !X@6&8>pjAKc5² Jab_̅18bGȋ-XYʳ5>#UvYñ[$w.5O#.U障!rMh-Eu&JCJd[I̝G ;\kjʇ'*oǝw~V61w  Ri.e+ QY|]3[,LϢjir208 a n-IBP_g?0M[~38EN.3i=8cVi F/߫]x}L/@Ǵ@`CC{G\_J#(W'QF+{"k/}b](v9ءb[; M S﫢 ẪqIb_`}xnp /iٻ;˱B2X6s*g_Ž'(֭ա 5 H!N6E)?&(TpZcDhh+w&sekAu}? p;yRU)0mҏjk&)Y>A+D~E clCGsf4<ѠF{=O!f<L9W0y{ND6M`.raJ 5n}a yu;yMV=NBd"q\n"`E@sfQG6X/XT  U\|!;.:Ja96LU9.ޚ`=%fIphX3=40e 5I${CA w4P"=v[zbJmS:4Dj^\֤-Kǜ':8_PRn<>n\!ӼS&(pZ Ut P <ʯ ;ss{U Hh(q#Uzf rAxjiWB2tso,2CԽ ("-)zԑ!r[/ Bv 5j,R̩/#+3lx唣]jKUy6K 1틚#s_#UV T4X(Z{}t7{)|ŖX[+pQxNb YޥJ)6󘸮ָXձ( 8SIT[e|.9~sCѳ7p7N EEJ,%Qu0)FT-1_iG5<3*҈Qp-]J-QRvSg.[{b%};n1`Տj^ē0.}IZZġ(Q_5ErE;3>>;$bJ7B 3-Yqվ4VsmCƅ|{)`>~iu**;dpi Z'C%(dž[Z;mf+pȮi2 ZiiV {ɵ,>Fj% ##<Z)Z^]Ak*G(T/Gp˕Ly'24'No]P $èPdQJI}H=5ԖRG(m ^PnCI[#-ٜP%8k;.גu8Ђ)7u&.8Z #CޒH)Wl [{ONz4Kc(\/'J.%I"Li*7)yEZsA$+! 2خX\Z\?mEZ5WJ, =ed&b6E8Ν땲ː< Fc"r*QU` "@O/ˬtzE_Cc Hchs{о[ou:yb԰N bzH RCU=e"{ȥuu̶:?BWk=]Pm"c ( \S%1L=)y,`U1-EcG&2Pɭ;{a!DwB$" ~Q5s G@[v#,&.ELe0Tee'=[S\Ds[GlWJm,ěu(JCցwzJKzWk,{icԶp k&]{wR8EdJPԽFH}MכC SQ+P\OzHgaĶϚgeu+F3Y:J?R!<L@'0$ .ܓ/-54zjC*Ra-F54",B>ЖF6}dTEV>]1dF*+/j-̷ X2qHjЄyD CUJYz(Cە/7-[ǰqg1 |#`H 2(SwqV*bRnV [8dW cл5'gF!ݒX5% ] B x-|%:E}T:5Y65LM)!_s8sDhIŒ[af0[ۊK2P)5Md@๰簌@(T5JXiB @`MkQI9'' /M+9}eP)bҝ?mpɱᙍc;' V6/©y{w b5)3f|zLZd2Eiō+/%5m]W-&ᄞՔS*)HPtm;G=P=o3aJ=ԯH^*hvyYr]9GK1../rXC4Fh{b g>l|(R^꼂k6pʞb7Ǯ9$ifgI7W{j0Ż8y:-x~dZmmjw jc7*0md7AqK Ov"ܮ!`Ɣ2: pAdٞuG 8G, `vG` KKBl 2K62mkY16eY;)'idPqҜRy%gr:-Ji?53SV{q2)I޽7A(W$Gbןyx.+,Nvf(5dNe Z9m~P|lC/f2 lo\ꚭTFr+i"1t C/phLii~z~ .巰X_VweVOrB]RxRZM /C4 m065t\"j!/Fȶ >CmHSJҙzKs*W?Tk%Y(R_l犇w b𵉩d.M~"F9wv.%>4eK?|EKx-Q ι;[2vaG|z&L214\‹Lkԅ%^)׍=nuS]}c!>7yK-ZPއ¾Y-URݲ6ܱ5PpW>ӑ%kӛv&jU9zQ;dZ+=(Cvu&~iJua<"]<[)ц/Džթ?D% Rêˌˋ w򃇛݊8@kXU5,/(3Z=#8\RʛCgm-1I3,h(:R S4B@ހJӥFQd#M T{ R칠ktX}Q`9{˓4,|^j^ sKgЙ#d6H8[0ׇ$ i׽4> ><%vu+{ԓuD۵OJ,mh$"F9뫍gaOA`9O&D]*FIֻHX.K^L\9l[(a]$ŐyuH .ZRV#D[[顚G|C\FkkË q1]-]ům>JЖ)5m$ ) _Ʒ lR߱w`DIsPP7gq*3{o: o˦D _4%ڂIυ ;0 CtUש%lraob$ϡVyJ%׋ٌ= g":^f񲓣 yAW@H6k]Z W::WPI P&mMG޽cJGٞeځ*\b ,v>}=6CT+)]P؅y^mHR|T]>>~7cKdTdu v1E,WǠ _sS,AϽ wY҇DkG>vSC J݂XNh,BvHwZ嶖pV)JZO*m%͛%Bř|@ĥ ܬԡGq9 p M:9s7'}}aI}WO}|B+3hA!i/{p`LF۝s]׹Dєlbՠt!`v-cP.YiA>gnn,7TѲV{*yQ{NK^CDV֮1'ZH97v("e^d Y@y;*΃e=rAƻvd٣@xқm4a[po^M=eĚzҋn_f϶H6#R3 YDng%}n.L}QM!h/P1ATXK[\}Ӎd=0;CQKHmK~8"Sz޳{Ξ<5$Qv{R ^g:NH& ,c"wEr0ŰX͟zˀ _V|ZVB>? MUR ++\d9g=MMX1AŽOny? J>abŰSN>E=}͐Շ7S[Rh~f/Q`jrpY_]Ițj%Q;hrJ"=~q":!!Wnnƌ0d7{g:Aů)`}&N@J-;i!/;`{)eȓ%| ov0X "|٩ŏfֈ㇁M#<β/IF-}vCwB1=0@>S'4?\M0z/i؎P&@_f:_pjQVÿ&Õ8D1JC'Mis-B;uAT ʺI/v}n6%TjC>^*Z¤3 @2Mw_g}C ^gue\VTCak!Keq'& m5@+HP(,2cA?M Vmlj|qkbD(?DpA xIj"Y? ӿC~1U98GTn!i=l[5D"(){ZrLJ'q>#9~ usyㆌ1g& h7ğGGZ;`$-k*r 8EU ^6^Y$7 E[v Ք?r Nc׺#xX Hl ӬՑ)DWع-`Xs`ref[Br-X!8z=p'Y3}=[[ILΙT*X[Bigc_x(NFKF\vJ5-WP]G&_Sr0>-O5i"R X'˾L7&wBa~'ﻃE&|k-1wkњ&Rj֭lGխ A(}bRAHR5A]>>k#@o>k;m.bQm_TIj-X ?JӫcbI+@/(L&݅ާ_RtnyuR*_kz4w>boU^1q?"ogqFknP<*ʽJLo_^Okl|sGW-NʾU7($f̈́K:,>SW2Ԥ,%]c\MFY?ɠ) ^NH/MpPA l?b5zna5 Wɇ'ŢH$/%%ώPխ,n.WMes;aUȧI4ƑZJV8k;,s ?">a.f;H˙Fg*ew?,Y}nC>Nj<كYԱhzqsnض:BL&KH&D h9ҫ܅" Yy6) qaS5N&d[l)@0Jftc;= Z_C쵀(Vf3EZ щ"?K P,%PrrФȏ}52bM'$LJ-xB"hbO!#&j'%j>]NL% hxKA~Zezw֛\}L)sNJՓY}93WQuPe!a})\ӟҬri}#5^Bnv$\DAl@q~PhDW8(!=0̠KG$h%6cM`jd,iZ~ 4L"u>Ϡ,@YYR2ִ!3ҽY<ˊ%삇1\MU{)lUvKly|=U4eI)ӻ ןx./jU*۔;E /,\[q`n`a&Tkg+ɿQ?f]|u =^+t3#ɱM`nHE3֥م {Nռh|9fHEfpHg.Wx({y&~asaEYAD`88JX(ɘ}KVj,Y.PDhlly#{ GmǜK\XOUvQdݧ8nq=d#bX!MqQ&0EUbRQEcoKCѥ Z4?m?d+*6{DZ%YRdwS0N0" c: eѾ/Iz)$1vwUs9(g ǝ+B9}yBuAp{7;@5|!YgO{&` ioisf1"rӅLo)FA8+yC+i%:io {X`|i.PH?n6M^$<p W6W,8Qtkk?2C":$ Y\9uϫs; zybL8ͺf3|ɄF_7e@)E& 7 %Wm}!7>gbşx}{ɽGե%cRCb|%I\ukMsBbΙ4'@%^ɶj\{9%U;jc1/|WYOq{3BÖ &:)yZΑ:Etq"̌ lFg1TZ 0DM؉O~]Jz !]z˦F,dO_y蓰E]`$a iDB!i"lFBG$#fWBgQB$9!O^3.^a51q [rLAH<^XӧCfIkren:?~]z6ūvF혳s 0a^ݨ1FfDl0)ąXF6`Bp()Wz xB_t]ڑwVʲpX_a0,[|`sJJ#u#?T@.mSs0gQ\N/5 ֮\.(QCԖdݺDq$2Vc"5jVF?Frj׹.*յ"!pF7_1N%Êgm]8rrL+S4!N'\}T)l?Pa$KV'/3EL#~3 e:bCF񚹆QϰڨrB -[aoJr񏰯yų%ĥ2&RR'֣IO Jc8~kt9c_;?ꯀpm|)ƎMl9ND(-jMxQ*0)*' pfs+LV;&*0+Ic Gwb'5{~ % Ԗg| ayxkarWzbŭy+tBm[44ߍacF<uͺݠއ>X6VEߧ2M Q] k㊦9ˌ&ك[x/*Ɩ;ȱD?7HD6cUuQq_3xUqt p;ӝF'((o2`vq-d2K3Y^#_!.\rcr8|}s)TkU)R'{r :(kY1>'=voD_HFқ, 9eYLK~WaEBQ.3̝$ \cݻ{9j3Nz0q+:HSkl9]3%kL» C9ÛJըܫ~Yؐs 9H(c`d:oapz6~\+}!FoW=[fk@9jjY `OX;߃3|W7|z>]Hٺ^=3a! , >J"Nt,XhXR5kYz`t"tV+cYtKS5yVlhųTg=;,rh}KL;ըIO@08&y.kLVst5vU>EWFy炲~PM0嗨r 6_[s#t􌪏+qQ,f5=>*N/nO8;snhqE{`H ۬+i1߳CG7%Od/XԌBq,l؄p$nT ĦISZnK]NY-0>bb{4ݡ2v!sd> Mc<$x^Z!LHuXŋ$D帎>k¢PT~rZzHO8MHc;K[ő8IA(| ID[-H?8.Lt콭#%dZ6rL) ڼX= {zVx?qWɻ^ލϚWV9$N_mkPX[|b7ZK0qdž)϶=2L+5YX6~LKL30&2T6$mC$YCdVLKXMk*|tsz>q_鏏 U;KɻWk.r`V݊kIkgI-;n$a,*͞r Wσ`4 7ŗYi 3-$ `[sujz]`xl6ˋ0v *k5Oېձ\yz-85+nF8)YvIC쫅)WFTmQJ6=B\OYE|ơCמE =ACDr jk5 2<d6|sZm뽌7I|0a;7;J Z+Sŀ/G';c6VajU<=} gM=LۥqdbmJنXڮ>p)%xMoĶ2dg;R8Աu^(M&h,4  gq>&2Ʀ I ^}E*1G!o?w׮eK_}3}oόۣiyϋGl5Q2c8딱g(d\<𿈼 hX*q 9~ڕN8 ^'N:n!c٩"cɎn7j#[@bVפgi 9hG룉f̟;-s_L>Z~옭A-Ǩ܃(*)*ќ0qJQ:A~3tR=R$H9M rE[+/00㍌2d]T@ar:jZNfh5DIQ}aNA$ {s1Al!l03O@BߘE6U4vN`C< l #BbyxH3! l5dxz-1bF"*TM 50OR:8 w[(ͧ;B8Tsz rN,ogMOiG]#l1B폮 m31@ODis1J}rҌ}Vf;FR^Yd@=zr2-Qʼn ]ir,̧DiMM~)E0k]""hƠ_fBTXP6;![笎u\Gu`-`;ѣ dp1c;*/q!r$T1Y1NEs.KxoeFDė.ᙌ;ZB6}UZt.k2]/koo '@l{,H:yωk*N`hLV|8LIꦷ!|еyV`;%ܚ4.GWLt~Rÿ7Cƻ('UM'Α>!녃ژ'`wimk 7s0W qhC+NCfHAFaԝ'[+7T؆:?)ÊýH=]d)'VWڤϘ}m0p*=|BVc2 s̓әM٠Vd_=/''I&94s-@-ݠ9rC$㸹F^ SUDO:D>aFyCj˱ ?) ?K']2񾓫,u/qe鍥[ܩtJaD!ě\p@ftN `ri>6]g9mЙ Gۡ+aL(ۜR虽g:@iSEln0ttU\bCA%Х.*gɰ?aXՀ 7:qbQA 2YCBbL "4߆Fy07iHF)~O,_ ڭ5<4,ZS0N+%5o~ܺXvp3n-HΙП:?u)`DN>ڱƄU;CA?XpB8>TY$khLCr t0ګLHh%[ ,Em75-4*;Jި6U"YЧi]2 @c ƅt~&QJC[|^U9Q1 SK|_C%Xĵ{mS=n»8iǼEn4XUF֥'!i]1$()cMQoʘ32;`}`0 Aw؊XY~$ĴAp s'HcPg`RJVyyPGS~Q=4z98tKr]R@ֶͣhIwRtẃ'W Rw AqwPr93>Cf#ɥ~ )suQ?1vV;@W EhBxrYo4Rts\(s):bW.x;zQݛ#qS Q#gDD8Y[rju@[ءϧ|߱;H`۩46k;Fgkp_m䁅~u 祗@2WEAjeW7b ]{^a'6c o;P5 Pkꊕڈ #ւ<'U0<0qz%,As426#J3|CT|=-z˟X$~(,P@p݇uB]V*Pm{T9XZ_ml01ɢՈBPsZGfw jc݀gOXeO$?vbyi[."xnGUұaϭi=^\d.){Ք0u^*%ÓzFYĮ&؈[v n!0aLn\)yZ}O0.BE2 㲴I±yeTȧ;Ui(l;l"; R=RÏV;W|89A9L?P+쌺~8]#^ʀ8CiNQwզƦt嶌^Y;AVJ 5IBH[qeK(&5.91~;TwU9 M5 KfC@{h0ںI*5Y_nk 龋̞F|=(Iɩ^3 F~J:L Ԑ \B[*KwE |-73b=Uǣ-sN"VªW%9g-7VkǟZCۢse0}]^a(wlL8Ph+Q͌`tvJ4]8zXhúj}\Pl/-'LO㿋oS$ҭ#pG;a1ZLPA=CF4`d&I⠳S#?/` Ndz9n@ sǷ8I`ůz<3(Εv"_AtaBif&Tori6%ADZ'4^tT5o!%:}1W<;ὑ"O4ȂET9z0la+dZȕ]3lr ˵{Ī endstream endobj 139 0 obj << /Length1 1930 /Length2 12335 /Length3 0 /Length 13528 /Filter /FlateDecode >> stream xڍP. š8Ewwww Xpw+)^].[>g$߳|V e53 Pl SPe03123"RPm)4N  ί2qcW;@`eef23 7v`;"da?jS [#`l }hjlP͍ٞ։h!HCp9[TN@GWƶ:cD[͝݌W hbgt&ve@l,,@ ?MMv ; 9Pgtvwۙahl~7v5Y1@RD`9:읝@6GS3휝O4}=vnf70ٙф=(#ɫ `ff@wSK?«{T!~l0m2~ z9Ύ.@+!@wW1/z w.+Xyˤ,OWDE/66+3(Ơ`*cgU)`׿٠w,E+ic`6}}cf.#[͟j?-oWκ8_:vkkff 8΁?r͔AΦ/Cf*@l 3^'us82Oup;) c;:{ 2:f@?9 `b;^QNI70IL I7b0IFl&߈$fPL ʿkLϫ?2ckdMAuS˟5tz]CH_+5~ 89~ _ /Oo-/d`)_|-7dy=B5V_s1vW%tn/Zۿ~;kٞ@ǿ. υ??4E\[V1l LQlk0x-8ܣ%|x-miSJx[\XsJ˃av >Bu'oko9.(ynR}?GBgUvr!=N2|Ԉ (5ɜ%uf 8uG!C9Va5ns\թ.!'Y9/QhMìyO$=^Vcr]pkжXSOV:).f[pwtF7h;og\d'ұA&#+"c9`!Rj~*wqW/j?ȓpAA_UJZAՎѵ"heڂ66zVR]aa\XA:܄$ӳh* kLi Cd+'&[PՐ;OݔZ3W{״a2n쑇ĹgOu4q\&*dC?5j${WڣkgMVa9ѩ dTy iJg :բo-UIOm3ikQߗw@a1JXOf E(;AZTm.tGn'lMn%c .NgVpUEĂO`F%Vޛ]6CJxToyg>qE^?SabWPwd,G _&(S4Q}1mu9gn9"i䢫tVlŮ0+ 3󓰨<'xLq/dfM[Tb8) m{y; ]Izʸ ͛ ?U{Kr[zJЦ3ɹ -<G)E!e TXRKxb\JՅF!D/N1lrWSd3~i_a?5tP+,̬a:|g#x o8qȟ($Xk5UBE==#0>iπ6m^gfaP2`K3A')[ַ\s= _;3Di4&%keV6$!cVDbٓY,âwl]u(\^/xkGDю-vM*۶gU9[gR{զ,V5WkH3dpc)?~&V+gi'i+Ta9z^ 4iѼ?lAEQ5d,"ُrpUZxBqXHIWQ,L=,օ02JFpˮ,|0vQl9 ާӿ)8'Di i!Lp ]n=x}-w]X[efnޚBr6 ͳ%Y *6~ BBc!/*[}/r MFںx!\#u-elC͖+߲ca`V*xvM{L@|1mTYy7ЈIгk!jW> cng\a-֪ȧR( XLc)QNYͷU[pk`5Ad@X2|ebVrG˾i͟'lq$g/DYEQA0+4p @ФZVE$y~ӭÂ;m6&6mT&0mMN\(&I`DCAR)g#ʤYue('tG7=!8ҽSj#t2nu۹ \HmbDZlg\G36BMR.}u/Z8i"*39&JsԥS3rSR\l"jZ$>x }NGw+c*޷:7`Qoۄzκ:&.ÕNPBŒQ-Di\ Z8r~?ZFJ!>VNA$V0t[YU登/Uzd~p~Ӱ=d*qfN &㪒gPIӚ(g<̃ mnEŏğQE߷6c?+<1SxLN$`S<!>(ѭUlъ ɲ]|Ryx,KxTR1^w/xj:\4pݫFy%lC jjUݢ(~GN6 0IӍlp T O0e>%g$7h5g6!B-Pekۇcx1#͐ )2.'6vw)f[jg4_xe/+>b2l.|N2A4 ihS&K9*G[ [ sH]2Y0^vi>~tn:"#- ?w$c$DNƬ EeQ-53Ϝu2j>f%TզhQ7A3ɂ#OA[WoнFCZ2)k>%iMv-)J'5#" RWh`Qb$umwu sG1liH5d#EH.=) |2"4jНqE3uSoYJakܳj 5ZWh h %56'|oil_*O6ʈ'Z8\oŸHQI?.4C484iW{ܑ}سů)刕zRCQ.Ġ3?|B6,דO5rO#yD C)Kx!ͽ*8"{(n 껒U$SʊK(x:ޙDwyA龃5~%2PV?=¨Uh%pK,&=wڥhEڑDjOrc*fg-q\VF( #-76]А/ACԊԣn Y.| rQr'Ǒ{wݱ=l|Xl͝yt(bRy ֍J&뺵C >[5ihx1F[5pKbB}PKF՛I+į]y"q hGnDٯ(7JG%=7Ǥ \v"D'\ADD o'ahLpkmi'C]#Z1yLV;`xab`P`33`Nw۰;VF 5{ "%rXQnR4哝d"+#xR^ ֚U^Vt],qUI+C ?ϝ vzc瓵Uw.94;M_?ooOz/T/Aޔy+.O]%^nﻵiFu*n$K6ݕQ~-p,JDbxFsnqjQWc+pv![TDX1(!~52F5|_Aո>\<0bnMkQ>́7LF|5FŮi[EHj>EQr8}2DL`(I\nhJSP %Q}0!)n:qG|iCYJ=V?+:WEmT,d} $멈Ѭɡ]@0ݸ4 ٺ*Z2"uL F/@!ړNל4Fg+ء:,<=3~޶e+5wf+<7Hb9)%ѡE< ^iQ"jZ;)QO dg{;mdye#|SEKR=i|:;qvTnt9C]0O; d,9~NDFL#eq@Vr{(tޟo Y6'5lWȿ;Wm&!ga3[9 8G?މ7T#4*Uo$FN~rH}7olJR{\:GJd@z&{nUYlb>C2H)U+o@0ƾuY l p֫%+_ *8Gح+bZ4uO'e71lj{2M`I}GARb$YeO 5BsKdt cm'ntds>D-4d !ǵ1 ctsuz{5QS7 F\6aʼ$" jg k qQ"uZ*yL I|/QäcMeQM惞 }[kہslG5h5ejeQËwքmz}漇LutW^#"[ ɨ8xZISdJwAR\[BMx@bC7ε$G}Q=a:Kf'vNl-s#Z>s `|!fGY)  țN hrSFY3#"#EWoiq=wY{*[B蝫'),R.^NV}=iكx.e&LYS i0 pEM\g_IB}LfL+5/ґ|2$$y2,B1r¶W뙵C$~3W+mRQ]\ɿeθKbLsܸq0~-J=[چI1dt|ןW뻆nLwM q[ꋒ k$_NQ:prM 2Nd0ȎakQ>t,GM|cսeV-|Q2R߳HHNQ-[i…71+%;ULy5LNs(|Q). …;uF,o]1|$dz֯Omǹ%Wߨ#̅6·S~@_tED.g1A99k'S"Mh,%m)R@;w Db[no!b} }^"M="0[n:~47/NF-+d'&VXT 88zN6DƩv":0NTBw \Ad'u?]FODra&q͸q@[&(!i\)8aر`E7cs"!o軫oqx@}ec9QbzZ"'~M7-YZK϶\:g }f];EїHʄb)( ?b3&CH6(RAܬRcKIwmP,TA!D#xdGhčdk%r|?â),@vcNrKO-KHH``Kl{B#H 5d BqyFPh-,TQQUޢ4i\Z #z{wW)M 0(riFztJgM>"uiumT?-%[\xhk-#w7jڋp`*ӭnjFyo 9m~E^Er K#`DD]\b7(2f]%ILgG OSrM,UFgN(tjha#[$KPtJ[6܎G ۧ~*֫pͻukAvi82Z;D[u{1oŒvMV|zܾ7{SB/f͎* k%Y$@5 @|O" cd~3j[MDPg{MtcΓ.4=bQR2/YEI=^+-"X_;Iȫe(Z+W&Cڰg&݆F}Jsx`VT/)cDRv/0FD ]T_s4 y#=vͬvZ|~Ȏ2SK~ i2l*TwZL2N+d̫ 2H`y'ѧ lKTJeז/n-IQ(fJl3+ԣ>"1dzi0݌)I&/; 1bw8Wy>IHM[ϗg;(ݷSBȬWϿrNNXemXmɚQߕq[ܼ,d twon)|y/L<#?`y(fVHsT!yt:aL8uW♸w A?K! "i;yk^ӡ'*7) @Oeb56r7efv_{{^R )N|\~-*WARq!.v/:ZU BhǸ{{7. fM,o7\/>\qpiWu׹ o)'K;9\ݚ1Q~O{lNg%>]ֳHgG%[fgc{)[k4 O !Dz/B[vݲ;E.Q=rALZ뇗zx`J $(=~ԵuK!pw^w~4%46oIYgзa-I:Э%5_Q̪ۛ{!KUH~Fh0dO.#Ha ,ɂ]%\+Yn(T嫗DvV!Ѣ5sd_QwmNxc,wz$SݔpƎ RJz%~QBIw.:Xn[vB򹦰j8$nrŘm9* N8lVbI=,LFu %"K9q B1A)y51^(a)%Uec~ktb}< +LQd()k_ @L{MGCՆ، ĐZy[R~Q20ר%М h2~^KŪP678-W^UFu@vv5UM_,2~U}#Q0 >Hձw4ahQGv{Zre(BiEv$[bmyOhFWIA,H:ɳcMmGf9~Xb9vUo< Yޑm ~}sVo&@\<{ 5v=GP+;ħeoc#]_H:Hk#411k&jBpV'\M89cCdߜ*3VZ.N oOhCrS3lM(w2hk7p V%K~$$˸d`{slk>3 Mu_8^I4Ֆk}{g?:@лXX.f|B]&dY$֕4axQ ?kΉC^P񔛘\3|f w$JWk~ހ:1ԖU> $^C7¤Y( KI~F#n4 50 h>.?EsN Vx ^nqS '7f0[JIȸBo)&pLojvPB4XME G&AY2&ȀVAC)1F8=\$;WF0NfK* Q-h4|4Fol%iRbdrLz@Ԇ!O3u tuXxOmR[i[ǖodWҤ^l'q9ᕷ@T Ҟ 6ߌOڤ˃)*[>}o4r8i N `UX @TL#^ ḿ0c"i!aÅ~OG0q J\ğJc["=#}PғS,A7q})S':5ZDIړ7&yJ6YHV4bi7f [vjitIr/wF,#% SCs1O:eSQ__GV 5#: wkv(Vʌy=5auq`\7'\x|*^`F !f` E&/9Ɯoh$Q H(=w-0.Ƥ܍266oh.>v}HzVsef+u5]3M*gf~zI[GSgYb!ѭ'iҁ${dJdb9u Aݴ7ÿAjlxET_"FS/85وaIV2UܑwV*aa"(#8"O>ID7,J\]Ox"?\иӌnzT^*3N֦x" X0Igi&W]}mAT'S:LUԛX||nh}\RsɏfNy׽ջim"^|('su ipݯJ>sots*RΈؼdW6O( z 0:`ƓfWVhrZwl+_h0:gizڳ|bob LI8Ś=őB=# ?2mU-@B+,$㏥xn3تJI6HNťmϼRw\Go&I(CaP7|MuVrs|Ⳏp{.IZ}b9.?1궅˸G Ib?WօlTJzMw*}>+ OB>ɾڗ: i*R*¹iQ]"*C4+J~615>6kؔzn_h̓Js`EVFIIxc-'D%:pf-x~_uů-y=Ϛ*OоE_S=r uz Բ`I}"3t fzD2Z%+JEb_c<^ cn3k2pH4pa a!7=#0lh`ho%%:RJ(gP`vLJ{ijn;CkQ[kwb%b!2 va>ֽS'rpGXA{0t^Ej/|VM,L i endstream endobj 141 0 obj << /Length1 1402 /Length2 6044 /Length3 0 /Length 7004 /Filter /FlateDecode >> stream xڍxTTk6 %)= 3 9 00 3twH#H#(H HK+H("7y{}kڳz3k+8" 8$(Y PX"`g7`O$/')ۣ@ QI$%"<%PG@ ؕ~Pg_.07$!!+{ ]l!P)]P(IAA{wYE !H7sd;hc( #!^pG']` 6'ݟ蟉_`0;0@OU[aH: w@~nPU0أ'3 @!PAo Q ?SzB}snp<௕s G/A8DCm" AD" > vYˌ!(pB :A_H{o o?W  F P8f5=+ ~ ?wh9"0῎XPKBWϒq**"|B~ Q DẠoj鯖p@̥@3"@0?W?DwG^0/?ow BU@kotu P/{5Ph5(ьm"UG}( 5&?!$ˇ AAkuU`O ==g^@hU:B| (G!A''σ> eݡp//? <= t7I f`H >GqWV;R,cEPs\rԦ+9>=H"zr6b^w^rz! C]hI3A<.(n0Հ ۊ3l*JGxםMK];%Pйm5lq4*Xd4\=ߺUR kֈ>d)IJ|P9SHa-qXa'mx-uPثYW)^&zȬLA1FWAiq.|k1ΆkaLΥ:ӈs mŦaO/sRAB20OEaL#NfW :v },^#w_}X&Y&C<4qlLZ~ˠ+M瑠Va].&n i7jKb*HlvPI-EyBoI_6O c-aqBmaHbz5xy}D0&9YjJiUz?@gb5`~ڌƩ+!\FVǷr( g:؄!D_ɉ'Åf.NM09E]+djGg )Z57JUſy h'OUwimv^9\7JIt3YE̛bs}#ku[[Z* )Zʡήv/6٥.3aio׳`̪?ha38|.}6#R,pG2x; "xo3<˱lB ?YWGoEjU M%hJx1/dmQfR]o>g zsݩD)e8/ p {Ꮺ'xOPif =֤YM')SF"-y?dzW'3N/r`kצI}oC<eZiy[A<7rD'ئƅ Ve}BEƐ\8[ SP؞ѰFSX(.`Ԣh_pϻ;yܪg擑V2]tH1o9%}2h]$]n͑pFzqhAiLDwdQ5Pl;qH5§iO(NNb&lȔ]ޝJodg)f]X(@ 9q*->~.o fOӉ猠{uMOf{ >B2'7_MI=<će.sT4qPo:To8rV~oi"|-!H`E0}$򊮯XX|B"xqAU^UISwsK` Ѷ\L [7 vx@rSkzӼ񺉳 QSGuT\Q}nfU祷3zV gmIX W{m c$۰@뽊[ES'/z3<-d{NzbF3F]|ԍ+uHNRö&ha^au#H&UCZә+j0p-'z3JeB}ojwGu\]{3i7-OiZF)c2 ' Th4l>Q\ƏJ;߬񰥻S.0E3F4<@*KJ;1|cn3]˓l@a Ur.r8MY~9a/{4Lzz85Sqr`*5?+ ȳH"as|FAµd_׵U&vg^\ &}~8Sz¢c¿ N( KQ1SDRfR,7Y&by Z1q\~ -}8O1p~ ٭#6 >}f?FdN'ZjVa%!nY02 KO<"sϟ1JAZnUUo]߇TÁ4jWǽL޵03fe)]q0JD{N\UwTކyxԨT[>ԛvo=%$SCg.sSv=GgtY k4W">U1 s{bQ!͹Vg'\kɴ"Md)Kc+Ě6k#Itfϔ&1wpF:M : ?#ߋ̑\Ɣ1C![&еJHLi(\, aafMymArz`q&0o5KBBGE1q|h[ a{0"\f@ݥdzv$RJ*CZPScK""|^z:dۯ%PL,I(؏})m&bۉUfоeT7Wp'K|u9D\V_nAy?TF" NĘpKuAgAШ[b- $N}(Ygi(a} ծ4>a dlT.t376776뻻5TG`6%lL㑓ogea;S z`6kXt4oUE'DBXŕqunrvÓ&OI=r e7CIa_]U uFPzZ`@OĠd-1c6 Ǧtrx~Z(Ue{cpΊԴ]u5mwbCnnޔ|piwl^}fdx$o1^y(ٚS KSL8?t{u4Dk, OgzYXn.9B%7sJiN"s͸2sdU )B㧱[/{7L7GLu&*>3T%'Sͳt3؆OYWl/͸:wz>_8ĠQ!B`yKi9]%Q8y>Ƶ<8fVSCs'X;~ƚ휮0ֿt*hcW.Gp}zvo ^؅KP|ԩwL6b2lܰ/u8yݶSe#$=y19Mb詬ϫ,^']'U#|yU8=sEa}XTj(cM㣐SfPKE_ө0*Gkketio kYçӃY!+ixB$ rzy;!xi0}O5HiU-y}[-0'],ɓoi|Y{>,SGc~=R2BOdE#ҧv"NϢ,71jq:'.)VN9\75nzMwȇ<ҲW5Di2nSU6zӤiIj3oQ˹8D*鲣сMRv$/kևxVG&t+U~G(oI/GTj/K?[ƎOx7a58E}E_(v)k1v8r9X;fX&Tn3ِ({W\ah&$hܼ|9\xOp,*ol:;=5Rhi1HCׂ(RGn^SCLdthܔaAO%L&e@sYI ZG]LˣU| ~Xeqn~~"yoGfW솳G;| "a <7٫DH]ƭIMr2LStXWLΘ=+6\s){l{ F>3Pfn/!B34q`Rs#8Dt%N󿝄QܨuIxaDCku;m)C6, >xΉ^UGw Jߛxɧ8sǃ-[igDwJ{5oi zTKCD>=`>/'#W3׿V&c3 + ?f3;Zt `翟f z3ʪHȫ="" w=+ dg/g#`'Whp9e׿5@PK\3?Bebg2yYS,BI+odgewĻr]߷@ aʛZ_6-MI_ˮǾZ>xa޳}Ll_wi2{ߡ+4l,#GG#wE߷O1 >s#`'d0J ?(0*E\,Jw+Q忈iz4/Mk 1/d\/k/`/dcG?6l{2g{fX45_5*{3F}w:{_w|_}. {Q{>73s73AX][7w< pߟbaCw=T {f-\Y8|8e)bd;=gx{I΅@[ېhjsMyFhbֱ$ŷj X3$HX<..V$Nz.ONWBS?$Yw*? dqo:&T)+2%IKrFJx Z7ݙ뢮ec{ĠHl+Жxriq V)Tg rtL@WL#-X"3QwۑX_¿]6/Z쎩SwOb܉TR+[';،{tcXadO bW:-]>HC^M(ltʜeTzeJc/|AT":[Ć׼ǒBO'Re1ރ]#H5D?0u<aM>(U:P).Qx#%*w'5,N5^-|"] Iw{1I[ϟM7gkS;lR~ #/w6i.6c#_~`>*of;-'3 \ h?sT7 I V]XqTtrkYk%:;4":K,I2ϠFI4mHȤnCsVM?4oٗj!ɴ'&˴+b<@7Q©cɊ-7bF&3_=@S{ŗ!]Qi2}RB+,B*IϷ `(ޘ%sD$Pڼi/B:hU.RBi%8!zVU h&<-xS9P1kcwUߪbrߠTrAߠ% .ϿcyT\Y/?s6ErF?o e#}]%LɮPy4 >^2x|OGr 5gWsn, 3NBO3?Gƈ<)b\5blL/lAZ&wxsu"{Ӛ6Wt>Lu:\H =.b˘6DάBG8 =8ok?T=bWhR 19'0_OPm-P{ ݾΫ16Q~{a>T< 2.[菦-(%Ry~ٰR)ALB7őB1`ttď\z't&x«}Y-.GAހ&*b EVq)#:B99ZIJM1i&ZBO6?NJFj`Uf5!辐f]a#4r-BCipVxii |O\o_Kֽ5aBf ¦JEH{*p=.F 7_Ndh$UR#k8aY^|*5Gz5נVooϿN DkJj_ӋбѽYm81vl3|߄rv.מċ]aL;̧\!0W M}CҬnA#%ϵ`)IM)3>͏o:0 ]c |g?YtXf2"-v| lrs(+}Sl?TXxzi,7bB㜀b '7:\;߲{jՒ Ht0HAwӳm D:)Wm0e= o<}Y&)A}<>]m:LiVw3g %Qr8" g-nt4w :x=zȑg85R BФ bg{ۀ)q6E ($jؑ$G % ѹ#wYpʞ:Ilbm /vݹܧr~x9ɑEg&7zo=sG%1ɵ5MjdN܇0ϟ-_͛L|S;D*D`((gW*s#N0P_%(&'̞2L'w/vB*g. DD1ko)3R~aJT.ty)Wn#AnP$OOFiI/6i-L"I#DBE\\Wg:\$%x1l'dm} $A{cr{*ЁN4fy<ːXyQh (Cj͡vokD)ϰ^6F) #h"' ^]TQlEF OMgNR,iL0!j+>Gu_"!v)ѶDhgZF`#=z| ;y83d?Z/%YY"G(CkfK}wQO@|(T]eȊc\Q78(?Q3]2(#{ HS-nkx g&sfmUp 5L7vR:{uV1TgN&:TgDi]p3MU_t2 Fo%tKC{jڵb۟rE:TeJdQ2\nDŽe8]/?Ә6RۋDS&`=PNǷ'"A & ,jJ0 Ayu,Y]3QHdi0"~@%'R1B O8鄚vHn-2 X"JgE7PKW%'Qp'K)cc٦!,iܪ35ݱuW G6ZX)}Er3[$C_xʿG5Bȱ# ; }w%r}*h,_Z HbzƘi$9bZd` ̭VX~q%K^ ;X܍7_%(H氣u^՟J3xa2DlA+?ryu{],iIEAR)67ۀܤk{ 9դ]Z[P(ܦQQg6ܱ}ᗶF~,ԝĔ5CxI(H;f_q~1T \¹\ bg`9lŝYwuL.>CWDl,brz>μӕ#LTbbDT+Љ.jpwu?6 |& 0,A܉zal#+WpJc[,.+$Z"0kp}{TVn(ygJi'7 9d~7z@zB[^@l8bpĄ ncQJN߬hѐR^@ ա/cit(O O!XK[7ȡtE)]q'ΗPb%Pl.ߔP>b*آRu% | tvx꽗>GSl}=Tpʩ|}8]MNWB;j\T:4N4 'Uݛ Btv1Vi7Jǰ2 yaF\UG@ꌌG(CbI;ǵxYj4KFI¨&*$jPީ\#ތC=D6tG+}Y/k1M^~7kQx:ޓ#KT2AzaKh "۾GeȏI"lja۾B"ٖ 0AcV݃8.TIքެ(;_M5隼> Q33cR|E\_R[|bXMD1FVw; pQ^(]#dCzIr5f} ‘v=%%iyk< \X`5>sL͠\ ,mFX^ak$/yb'i r'aWCRU#$Vid|19ѱz_BfѠZmf=XFTME{swAqWh "2I%"RDn@l׽G/Qڑ;ɢ^d:R5uv`JSyQr !!cݙZHa#iYˮZ 1/;%sqAc:ьi@;w\So7nZr򀏐ԷJL1L3@r̍x XqfW}N.e6BOQG8Zÿy}"$aqc0Z|wN -m U1mXh·*ceu[8gbJ$z_cí ;)l=<&1(% jv8][ >g' wF^ƾZ+uRSgs|Fݝg\K;<9㠮F>ȒАMFGHĉqw4DyZSܤ7xf/` %[=ע.~mʼ բ'*7/A;\&Gk:.nwS(7>iz: eԗاu9f=in%?IO׾3*XV {!RL{0Cl;҇ڞJ[F9]+\:A#g ѯ&CA#'`Vz\]5l(]3}>`.S?v=&樠NkjS;9UCT=o=B %EjA&AW~y+ʹrE 8؁o47L18JX uܟTs  Cea$U䯏WWݸZTu{ r-rCκ5پ&ԗJ`Hrѯ 67#'>s#_5,V$g?_1">6輛֤0AbϠr#$UmK=s0ysqlu8'@1>g1̘2i=^xOfhmo'6vW#3 Wl 3wm6 U B7C_j&ǞZ'q `N TubS> AqQAzP :uG:]!Tx[n:$ o~u] o(v\N! P a_M>œ(f&*^&m c8)HUFPԆJJT& hNìcR/g >.[9er3aUA-γFzݣkP;gIXQ-΀g1&_> ^YqX-_=BPp^$)JO0LBm035h( c?kuWKx,$QZPFҧT5T| Gu2{?/ҍI)$77̙pB$&)X~K1 I]$?_? Obخs1?-2H+2,}4쏛 .<ϧm&{!ԕu[-$*d5|L٦PHtIm'!`>Ss#˜"{=EoEZ,Xi`޳v 39JDH d41ՈYH~k?͘mctl{2Siӫy Ͽ"5cc 6QpfW;ڻ `HQC( 0({Ұiqetf>+>r&K%Q.Q(nlG,Mh@ː9$%s6g _H8 Jd&oYWwY30[`䪷m$)(؇+kcP3,lⴎ1@Q!# |58šBkaگ2L!7I:MfY)nZ!.{8Od+˺ta~` 1DE3N v"eA۬ qƃnohm3gS fab+Ot>295Kt _]KPq(?O[LD P=b{Oͮ!ó` Bg@9zT d 7hvsp $/5"侤W4Wp-'6kr:Gr 䊭ETd4b;`, pRXۈ $D8\!O1'|iz86*wO,jy?(''-|[Ca^w4?Rc1Ϥu~ew1 H*L0=٤X/~ :VBP="/\h۹=5)NkL ʗhB= Q 4Q(Xcrڮw⌏> ,Z%z>OB_xs@ hUw) fCIMn6wZ .3MSwe۽|pK+߮%k!"PFcƞUcWe?#y'^|kIB_FyYPRe^jnDŀ[8])g%<{ O!- <ǭ\.\xl /J c Qqt%^5l©eJlx ❇&ޗe!2\MMHrkf+pP[}!:_Q2֣"CF13(( 4e}z4=`=oDύQK4xR=Et~<YkEę0B/~dϜߜ'[Kzv}{G]JIBk8ܰl `d_cU+"M0T~Dɖ| *_HY .x$Y;zRbnapSʒۃjzuGE%KXs:M*(!T(OQ0L=7(a];>)G Wr;XZ78سK9A AgV:A+Ff40 RazWƙe[G"ѧ)l-YVL$ M` >UC s*0qi{Ŷor|=Ne].$6փidpopA?_A}D`ψ@;3}2f@Rϑ ph2֊8#;>>-F5ק/èRf-B&1أaS 0˯WH) ELWK'c8y- !Vn/zցZ0)\_1N`U?tj.r&{. 0X,*hsɧXҲ޲XCvP(9>oK0_55| =d(ɨR,hu T,$,B(./[wWП41E ]. t1iԅx' lPG HDåH!oZD\Y-tz Jr:m`WuɢZ|9 =Qc#ܢ,~2d{e(ïJ|Ͷ eq+s@ Eco\.=-/N (sn!_zm;hLvYoUMk7){OgZJ{R0!YjW5*h1#F+ݽZn,~,𪌊TZtU؝@n1,cߚoC_ jj2hwD<?ԡ^ tp#[;J%3jTlw7+;ž >S^2xBƒ`]*gQ )cD0-1<~*mUME=XQ"{y_ C( ֤Z¹0Azq͂zO̡4zWe3MB~8&CW<~s.XUr↍BU=b>.s3?SsW_=@HV"o GR!ʆ{v9 pXofJ~h>5i%@h 0 5)u00l}u#KD`޿LBfP~gMg+#>2ATۖW,9 B/,$̱&›s/ />}Oh:+ZXw)B[Ҧ,H5q=uqY lwR_,ao6!X&94V>ƴx2•>QY7kʚyIV6[nϻ$()z6g$襬9+LVţiqLqt*϶ÑX,ȺY]e(fX+O}ONɰ_;Ȍ^Vfz<{XZXt+3MW!̥~#znJΎP .^7HRN'΄[>UtB݁ݓ05q6_oc}-. (~=qY0ɵ!WjYd#=9d~0݂[RJΉ=Ĥ+oQKmLm#4s%#%PM:^^dUkGSsHac_ L;!@0B{JLs-EsI5qdMʈYr'BĬszOwl4 :'"uP"d;mkoG ??Jqcb8k (|E]%; f&2}Btm*(PeĚO}Uq3G#'CrV':H_(A>F;>΍HWNP]!|e"jګ4t7-DXFVU2l{QKW 6˛2LW,8)@~DAe}&c-˱Bba㰃\cXχLd0vy_úYvND{ߴoK?@]⩆w]căR9,:Q3dۄlBDyDZ$-ǚH YY9 PIF(v]xr{q4s=|#ἆ*CHXuCi%ʱA ӱv;,Whqy| ]:ʸp1,T?m$Xg$ ܠ3ܟ<3^i#ʊ@7kq|@;0Uʒl q>E^7I(W]mBm1|sׯ1gH\,}z64 7UΥFfǩ_^ӫ|;+6!ji"`R.W@&T,*礭掍ƥ=ާ,1%DI흡EJZ R{2^iK<٢G2W鎕6A|yw]_ eʼ.k`?m;rt2Ν]&NҋYGNj߉_^+`zx!1D_Zޫ>Nw#+#$=لyVPCsZ.;;)FRL[ݼpUb$XSi5MVDZ"?S][4uLB2@*s@ԉs>[CN_5t\3fB?NB4KC4@;)T`>:j ܸqe8ƬLgʸ"x@7r=m ˯{%ŸҸ,[5aY TK˂7Fb)^`VhԞ&V!m#l qªZkOC7>m\hcy}vW#&E.[9w0K7J`<,f+$DQ>c½k~IaHk94DU1X̆bMR_ڝ$wGVƹ"yuz@:Q")NC NGwWby%Xz)wR0c3xG:L" ꤹh .M1|Ɉ,נ7߶%lbGk|txyxkPc#v%k^O^FHxH#jcZm>B`S˗>~H}fԅn˲]tۘiÒ۔aX[4}ju%o4]gܵ>W± O\zF7&9cH&$QL' ͊(6o`ZsʸVn0T;.F+qf]ҠC)vu+TҐ4T mחVpܪހq#>#ŭe_kJU7?l ~ŗv xø1y_u$DVăjDJ[>-!%2ֳ$qGf&j5TH%ć ҐtT`KBR}`1ƷC5ԣ{ iSv{JD endstream endobj 145 0 obj << /Length1 2710 /Length2 12611 /Length3 0 /Length 14146 /Filter /FlateDecode >> stream xڍuT#%"!0twHJt 1twtwtHHHKIwwJ9s|wZ\P+2l!N,lq55v'  5?9 l Bt$NPC[@ `g`c?@6(l! Gjq[;w4~L||rڀ&@@df4ZTmM 'prgeuuue8:g,* G e"Ok,(5 U[3'WXM@G3f@6`3;  hbbkc!35$%BLm@ h 5t @JMvN,`=$TqrD]d;?kux!f0ucUA@E(O2sL,X'Psd-igk0_(@` 6qP1o =@ J?vϿ 3X?uĬRrZbRL `pspx Sۓ,w)`@zK[zll&??J[_z @?P:;Aw@ k {q@`guBwAbn R`72/n-Vg`H`fgc?:rXAPJAw%!&tpA dn)/XY NP;o#xbO5SO*lV'`~BV' `}Bo4fWxBO]_ ͮ=!hv'ͮjOZ֢񄠵h>!hvTqBA7cR.h@G(VOPS'51X9Z-C*vCmh9!Go?|77D[k(9߬e5BS"@Oz{g;3h1PZmS台ն̅ jb7}44Z.,,@?,2zV@4恶m{5;)674衃}*l5'549%J쬝>j:/{g['6PCe)7 G mrc RC ~*zu:Y8t"N8@c8?wG[? =D? `?SH +Cz&Nݛ'_A e@eMPu(+w.H뒄.[o8#fD;&7#nq8٬ R#gŽטFqn96߶qBLT]E&_2ٟlLeH 4U\[=mgA񜀗 6U4BZtbMTAr6}tVwh:Y)-X>WS`9'/TyՁ)FEPY2lG̼b0HV -tV*S&daü*ȕ\;L9چ3)eJίEqUc6#h: UZuz7ڧ1M`/@*i(R+̱kײXb;_g%i\'Sޥ M!eM?j:"!.0 uhU7cc7fVkU#ۇ&YxX~֫wU[c׫ms.`ΠWEa,ByaM([vgNgAfiA~&ay|ۘ:͟&0LN7?i8\pFA$ͧM\FLO>E~qWSE;g͚"|ݑ25fJɛpMVDZI`d^h|Qqzk׳Gַ!ړ{L7ؖŌf_gU,EQ{+:Y>õif 9m{fo``eJvlK@v 9ʟlJGDL Bxҩ$ΈgB[p\qi" W3oPJr=8>.\narm'X(YICIy56c[Tp^IdVkdZ,ba&}q'rG {ťw"s XFܻlj9j07{MyB *1A;>;yW_GәH>_z3 jk`ri%3 \,a[;# U SI[J,!j}3̋7ilmlsa)N-Ly&J׊xPDGWS??)A9Q2&\Ԇ#iJ޵ #x˲,1fx+DP_i#ffiwMəŔ,ÂR8dpFx:(Sq3a^2>(bq27e ?[)L:HY]t6?ə(D&Kd22{'~rb %y}Z_wj &1/X:a >?{.l7e6FbZwnv(u";}Rrn5K,\=Xc/bdz8J>לjϙN) n1<>" cJW^W%=7^"Q,=GrT+_>*+a`&:lH/dD<ޱ*=g!)"P)b%CY..pWom?FƗMx23ߛG(abh#iZaB{q}9ֻw]ÇūΛ<>pjL-u@їTы_3ُŹ!ϟwǑP+$>kGy6+:)iMY@-IۧpKp3wީ;nݺܝEevfΙs#Mn_C#A3&jG~b^60X9 #V6F1"_:gUƎ6q߽|6mxz`3H3ҽ)&=B6z|>'AKLTG9wT7D9)DfV~?$' HੀwZx# ^"౛#/8_P6[==Kr/kcD& ' .ҝqj^|U"u}>V<-g2c Ve f 牲ZV!jN'qAUD+W48.Lx;za E>%vuųH\ z2s[kR1voa6\'Gh'+.kԫݏ]=-@|{h - #{>+У|8m9`Tn+P8tjO L+rg~X&:eV[IR=@d~qfߓ@H|>0CP>cuYE'uiYKxb`Mz/"rId Ih_?x< D0RECF:F_'Q&.g HM-$r9ϴV3^T\i2ZGOLuPme-Qe'~;U$(ӶxjϜA`j&JƋͅ&/Q4a9zl\kYR#<$oP.,$[ޢ:ɘTn&2O#;5ǪVz*ig7  h4#[o`=ubz>GQJ)7Bl=D}uKi|ṁ\ZvSAӧ2=TfZaÊs,j SH^V8Uo1ЗI;6 閨d(=qZy@:W\%6 [1"Qv`M=q+2[z읺qb{382I:Hj7 ({v=;~VJ hŁԋ ĜzԼJgJ]}*-D\+fX A!p|3 ϕƶ4Bd x#KHB~+^y#YN`%Ws.~_%%ҩ3y(8ۇIs9 xMbҘdF>wFǣLCAf!6Gk+Qwv=MNn5k*/875"p&#҅6(Sŷq*qC yxo;I舐gf\mڴq+&(ᨣ]gQKC B9V/bB`Fm~P|20QYgSKR%n8k:(hDIm/E(tYGI`Wŗ17LuDe}=lJbm}5oW.Xd*-dZhJBE*{$W$uH+L1W{埫]eyġmvX$źhpaoB7ݴhc Y/ؿ-%Md[bxƇ.:@hGIJl.nj8o|}Tյ5Sz0擸58QHYh,Il?@)! 7f'U$_uJDٿ60Ec'1zS 7]Ç=:{%|8pfGj1$t}tT&ÜDLHesyG{ :8DY+pkeO~,a{Tb[`=3`>#ngɤ寜D(ש=jZUmm =gRyD-] Sk/Êǣ]KHdHemRoq lX&ix"$a XME ebga>!}ЩK'xcq(2Q̭:;+5m6)U#$ ބd`I5^#9aqV yˇ i^\ yP*tX8zh6gJFP}FDީo {|,g]jf_{n&9M.l ?JոnLuv~{Ubdm+f = /=uePU|q*vxT&Wt?ae⻶6~ϵ@;\{h o#kEzwlb4`%*GEOл \Le|8G #n:JHzuMftGbƮALjaU}  ک| ,P6?EɃ"xRg}e>|{j.M 7~K4nżPw$; ޾B4ёka0 HV3THSt<ܴhkq*[oDNWuJ ,):^rKP\oS)o9D'2J;oRbDL~(3VPDԝTi0SBuk|4:= A/[O 6=;Z\OY `敟;i#͹fQe5f <joÄ } @#(U(.$S>7^X8{͓hpR'ٕs٬P/d,r(ԕ'qv2/"Jͅ$UMDRy<9=Ag%-ݲW6NJGX~x$ԗN›:#(=Y!l2 n].'SVD &uj! 0NNOX'E{B)NJ\#?aS]`!4>Bqb-/ l ̗pX>heNNnRӳy!я] \ /`|c_ וkuzt\Lt^!UHV{Q JAl^maj_(êNۙJ\f$pB-ˉؾ^ڙlտQ1"~+sMˊ400AG׋5a`4fRd$͊n㈥#x"6h*H(ޖP; KSq6+LܦqS6R,v:JթcLYWT-I݉›PU.͖A[=*Vi"v5'rp5jC C\wQ,O* 1 ;&4ج)ɨTW,x'FlLsQgp"uf܎{1 6"*@IPFlbϒ㲏ʰHENFc^ؙN_*RrĚzZ9~:]S0)Cߡau󛪕N #Z[^eeOeGD-iC@ľ^zkƪP#21ݎ_DGWH|Bg;|VIv|fȺyvtMݲR_+%[>-2Rb^t@mfH-1IJ#y.,}.DwǛ)k 7xy/abkbߐbWzد[_9G댢d &i~ՔHgO+r{vm=0v-p> u+"W`yDjUW .N0_kty-1t#xQoDύfW%-I#2c&;Z3v>|⎘+)lϪeظB%F@L1h2+X'XơқHM Hh?kT nMf CUNve'I7&mb@tϓΤ%/U;CmRUťCdK}$H{+縐i{=Sq1l(7IK:Ud]E*p/[QٟJfw=.rp2l, GHa9qďc =O|57's@J`.Y &־QiŇ_(-_g4ik[/?pyT!0=-.>br@_= um8c)9軶57 S;>P K W1-(B ej.i'[QM0m<̠֜ r1ј4_U`D/"Q9UfۃI~brZ*-ERcAHuf *Q yW;1XUbҿrhN2lʖ\IQMs>-ű ^ cɘID/K;>BfO(6AgP#WE&"DHlPBR/RV~wDvb_$F5]'' s^dt)v~m@Qذ,6G(c4j7zF$a|;t::>gT09UVQPG݌'f%6Ĉ>^VNpzjZ*cOELI<;b)XewÉE>~S#(1wxQd ;eCa_eo$Sư A9߮v)5/>5=h6CzبцEs-ܦ1 d`LoD ҝriNHTktهJ/jȏd$x#!xK%HT" d,㪚I$a/ط}B ZR,BsFgse{=ң>q0 #n\I@$~V3@'ZW&ae \幢m|k FG y*Psy`Q >Aߒ8|^MGsCNZ]-?ECwn>] 5Ǹ"EBj՝\u>oLHȔ<jU$`MEk} t/ *j\KlB˄S4wS{4ZOr" ,{ﵬRV<,uta!1}zV/:2`˳mď"Gg0PSKP}]O)qGդTLY6(2usNbZzDq$ejP^<(Ccޟ,~E.uGRF#rgb%3YEQ3s؋\ aK8+v|g a?2FB.͹T:44j g}:y5ǮA׭&U焝$3h'iuπ9G<PAWilD>o2N m s .; ˊ,2 f^G:~|€27(jF&$G |S9#s֭7Õ#cbmGP^Gy>:ٶ#)j鉛qefy$%!jc+ͶTyEmOc=Z CU풜\i&6Zd(LJ!.oe>[ 3 W;q[УV\ M'#y-&3s!kXi[e\V" j1v:S_cKrmidVݡi^'oZ3ν _<1glԪգ߈8sSӢcp׊b2Np@2l-]updMGeBPQw?D[CMhkcHj?aum<_~d5囘1g{m}FPA /FQ51}LJX̗mՋ]et@srJDX#54GQo[K1^ *_\y,P99ƌyx<_ e<4;\Ƽ'+if+C9ʾz5 ϾVz93 h;PRLe<"~p EᢴWq:>-${ > stream xmrPZ5P*P+ł-RBBHRJqw(NZ] ]9{vs^Da\<ym5^>?3# G!e0Q> Ёx^f neZNPB\ր...R.N\\M:0m X0UA]CMgnP[N0 @,PH(/MN\ @,Qv59: ' #Uv$I pk:?0ACUA\( H|SBZ9{@algB`A;a5h̑/Jh{V;`PM8jKsĽEa wvBQH>y?r@-e9 GZt^;BK]4=wn7<\__d,+ D?r-aH߆o"`n0 )XM|͇BoѢou٧x1 5!wZCTD#~Ej(`8}E.cwVeEo=J; uCt{MA䴝Re|q2m-D?A*MX'VKZfH^,Oce/3SYgٯbYytdWzg}.VbC}DJ/aUֲR+}ծP[yW6JQ G8[am0 ]VoIYk 6}|nz#M H} j]AtLKHd_,~Rɍ?&gf N,1 Gbtwk#kuCWKU*1Ohh.;/v~Fpl`JԤ0 rĀ8;.,W4 \vuŽ8}l0r|5U͗|>yΓ䫗Sj\]W(/hǁ@x* (bA,n ңJcoN:VWRش@$tl=m0e]󌭉Nt) o&ƴ|n!3i4m] |)xZBfF?aov1 PH?/B3<S^56яt.;.zl1 Y?6?NGYB4d&d"kXkH ]SFh6co)糈j&%[SPn2^h9>g&<

=7op܉(ʎT/( Qv l(y .Ewr9_gR.U2.#Ot7)sZC˩/A3S¯PԶL/!ư T/TƐ-r[!+ԇe6>o;VBM)ii]f2t;}"4ږզey)XΒ`l+ɷwNyů\6+7 q 5m}:鍷w\x(g͔u20F+ o} I3(XmDYbD&#CL=61`uN6?NA[mԺإD-W.]%#,n{@vݣfh:ҍI^ŝZ\E.Y;qAzCfDlK*_.T_|'YiW0<cdlTr- ;qP%Ó =dpfeK;J̩<|p7':BjUݶ^/I$G6L֤?XaH?O__rH1*1) Ny~Ў9Gr`nYʨ(~7og/q.0C1wIqW-:|cgdy X`}JE wfp``egtB@Jg'*DCԭTNGni7>y=}0tx3sL|tڝ7#ke0˽` .1`A8hAR$1o'=Z3dT)?0}rUc %sjõ>wV"-8<>jPY,V!}zj.>CbN /\c, I2&iO\-b @U:u+?>8W61YNECHC'VPrȖBgq_$cFeO14Q@TU0}0վO}~/sN5)zJ c-I6cx?ek+\Xy`<Ϥ>'q$Մ͙H֖ܡii(3?tOP!cƮBGUQ~?_DOAfkK+$YW7D6uwNr4qͽD4u2A]ijOvWm#@@{P/^ Ips74`!mdX0lөiqX[9m鋋=jVzC8:e(DO1k|1k sRh<4`4)7LhHdR/wR+uK6 Cc fk4äe֨$)R0arإs{m+A=Qrb{+V?%i5+p}ߟbF(2I /_kL,ڻ^L$L/'G`2&|ln=B=" 2?,M^qS4}߼gW8D Ty>t T{0J(@Sd̒4k}`d-?̉O3XPg{eh/ Sy-ǔT2!@SJ=1 WŬIx.ɾܩ'%77\Ej2i\->] o>haHL586uϋbo>4 SDH>%j-Y |uQ8'-HmwjlJIա\xpO:yұϓN|I/|yI>O:yҹϓ.|R T<띹_mKz}K=W7"V{/znb endstream endobj 150 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS 9_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZK endstream endobj 151 0 obj << /Length 695 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS'K}v}tƾ`R\ws*pWl:*;m_Ű=EB.=]6E%‡hWvE;^N ƣՊU ٟweӟQ?OIz^UU|ڕߵ6ZrbˢXEIS:.trA&TH>4"PX H BM@5*08WfH AX v.2I## .zӘˈ0Qa8tcpN0A2 @݆s>^l>^wo_j4Rrtsľ x[%QLuQ.ݢT ܂PKߗp#}߂pMAM37CB2>*R{@8񩎤3 }c$f O#z  ) spW)9N{=g-_Z ~YK/t:/~e}Y%៍-t:UEk nmGkp\x{)ނ endstream endobj 152 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo0WxvH UdCmU^!1HDI8߯-@=ۙڽ١=?w]pwdV^ڑݧl#oxdGa0NiqF?Sր'YNR}{f{x2A! u xk={Exo"}Rɑ#x۠_J B C쩁b8!=%p&r"D9 Qg̑Tu+gGNN8O-(7ZRntH ʍ(7:hEњr1+w(O:͓.ndm'#Ʉ'> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw%g43>\ 6 EJ78 1{~`W(-;]%=xe_,b+-O;q\L}UI--=BKE1p[! Mߊyu>.N5K)Wb٬8i[_uʕMzQ)V(Txޢjy!Z2P="Zd0\ÃGR\).2*Шa!U,H`+j.5Nα@VK-x%3%AYӀzΚ>kP#5m0Woþj.ZT$X/)n)#Wo(oRZ $Kp4Z-b\1ܰJ P"GXQi/8k^Zq:Zs9dB )sL-7xJ`aɽ)f$1 dъcCZC<73JgznHȰYɚTa,_-O87}KԴܗLloK+gJ.GZyVc48Wt]:P~`rZq.n1] S/Pu7Ue:?&?!d&1yHn5)yғBx#1ޞ]Go׏M?X endstream endobj 156 0 obj << /Length 750 /Filter /FlateDecode >> stream xmUMo0Wx$*B!qض*jn$H$3Ch<~3~~~ngjv9{C{K;K.k6㳵ችm#O7٦4\ =؏8ݿ߳4B8͌>sIvdXC6OLx9im$l6Dl_7ڞhz*{pɲ2kAʶC+mk>lpfIQTT?LA>J e .1PbpqH I$\kL8Hb،Shąr =z51XQg_s2Ē+ sC:CQ}.'c-BbOEu+Xg~:?aj B.U $,ĨAA 2A%%" 19hM_)ELN 1sR3fg =傸aCYjV^w&L= 3nqFyDŽϠOL5'pZx?i^x?IGO:~I4ϼt~3][gF~Qgf}fB3y,h3cL}f23{,g>KYN0`^ay{7)q W7:*ሟS`R$m endstream endobj 157 0 obj << /Length 672 /Filter /FlateDecode >> stream xmTn0C6*drضj^pHA@Cfy'n`g#govh/}eg羋򶺜m=Ooٽ[׌uRۉ=Iۏw{VQҜ8ߛIߞ3d_ ~~hZ# W c *'qU;HHV7xwuɻa;zopO_`_ݥNd0m6G_?[6vLClw6ZsaD%!p%blcä  PP[ u_g_x4$O<X^\NB8 \;cBbMx y%P 3jok:E q:/d48Q4A2="\šY+ːs(5$Y r~+A\HȕWr{Nxo $TL~K//p1sQ*GG-G-GzA>|)3Q/G""&!uN>|%h8hh$hb,n~ᰏnˣ+p]h \2 ᫄ endstream endobj 158 0 obj << /Length 720 /Filter /FlateDecode >> stream x}TMo0+J6*ħöUSEj9߯ IVcf͏睟ݛ{)^؝}]u:vzyu|CW$nmmΑmq5)M{`qjS5үxO%r^q &\TƦkR@YwDoYia) SZM5_$$>kxq4|;o4vhwqB؝Bf#j{p7P_?{+4}+VYu}e}n.ˍggfjj{k:lF #QhJq  HQ/e.!Pp #]gQtVTv)#l-g!7'uӾ:[sI r.39uf *gQNxEqV11V啣Yq:54kDCZ+)]Ws8:а/9R\Qrz\8Ç]按Sp/ d8D(B!4׳030 =;fzÞJmw&^0C~/nS0GKW皠NdzG5cC)!=E^K<3Iò8ȿ q3NOg{ACt~Qn~ɸ\ %1.: *4hH`<4̶E hS!| endstream endobj 8 0 obj << /Type /ObjStm /N 100 /First 834 /Length 3233 /Filter /FlateDecode >> stream x[YoG~]f`d+ؖȉI\KLR__u9CFg@Y]]5Ñf))aL ͤeG& 33 Y)gJlG9fB)L10mT0kHPƊf0_K1(|C_  x1LU)J9Ki)T0,;-=c h0UE4Β9@Ya }7pxfbx[!\̃C,/BN B[`A   2RE[щ3G[0B0 dc2Z ȃ0+H`GP\C5I1JL 04pz("ՑJ< Ld h\"%7#6T'x8Fn4IM p$2#u ]NP ia-Q1PIL2GP"@J*ZHVK@huЈA@{#Fu?ozEb80udt3Ա_z;/@<n:2t,H?A&{=ޒn??E??țXL{`}QeJ<>UbܢH_ߍh]nh Ս[@{+%co [@^jDr-*ȵZp2\2Ѐ wSz+5' 82[- 荌a}Mq+ u6ê  >` !kN>d әmmIs-օp*p^@o7u6 ԺqK6nz FVqmB +U!~w( c2FxA[ŻѨb^^wW |$ ~cK|$C(WJR~)eRn IPqBYI@^G{Ltgѥ뙉Qk ZaEjQZJ,~!j|I~$!h8ii-5(vЕ:]ɅL[$e>-HSVv ؐE2$ak 70 9Sq1KSMH44- :~KS~>!9&+u!6>Ms)-̧KIE~I3R!y~-QbZnc}NF!*v͟Eu=klkYT++|וR=iUKwgBmi2WV" JVG|,#c9o/Rv4R/c)|yRXJef$\X:'GQJFf;sH琎I/.f2ZJ^ͤOLSH^@$-ה \ Z`+l?AUTšPjLqPؤO)CZ6_Ϥ0q%\:eOE<,=gپM\|7""U]쎊z+Z}Hd4cΕfN 2L6=YSІ 6*R`{Bl7,eL6 \1sg28jӖkȒ:muG*K=J4Sқ$0$_8oqDff$9mIT2LɆNdn]|EԭQ׈ᘄҷT/.x=R{WҼ9o76Fx cB.TYbj[e$_KKD2s'|nh(R~j3ǹ$:Ϲ-yB1ߍ>m[nK]t枬eְ(.9"c#K0 tRj]҈VnbBfjcɪXrMޓ%gsBDMU9.3Ff>5t(J>ni18һ˽ݣvwI̱YoޥB'>u8-Cc$ >.'˂?WcWNBa1&?;|?̟ !?c;hOyX~gG~ɯÂ5.ƃ)tSLH C>|S>~'̿/W1;ioZxM}}ffv-t0쏤ٚݵ}ZPIUT:xt0nHR#z|hը,W'~NRܮ3/NbFOʝћG=Y]E4fo,o&vb}2ƯeM0ҿ]QAL.|r6$zxYM35Nu˛ T%O7iqzr.tЫA^%eorq*Nw|xUroq{!&Vם.B7p5ۿgOŸ &t4,&mAEr^v([ufdϷnyv{[ (LݰsKFx9`x3Yͬ_اx~Y@9tn;eD͟~.rlnݙ<}R`.mCewwŻ2Q{rzc?;n4M)'2 OYwIoOƽ~llK"?y7<К?.kyVʝ֮0 pη+כ) RY|=:>~ý}DKڐG^7rd!k*DD[gtQ[gt0&X,,?Υ8 endstream endobj 162 0 obj << /Producer (pdfTeX-1.40.24) /Creator (TeX) /CreationDate (D:20240214115819+01'00') /ModDate (D:20240214115819+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) kpathsea version 6.3.4) >> endobj 160 0 obj << /Type /ObjStm /N 5 /First 35 /Length 171 /Filter /FlateDecode >> stream xڕ @E;}CHFN,  M&Z)b9;@ ĄdLK({N筅6];(]|om vJoΧ 8 ] /Length 459 /Filter /FlateDecode >> stream x%Kl a?sl=zzkUU\T[PTV +DT’U%D,$R"Q A"!"!5/眙| !IBT8*vJ"wo}@ⱷ~Q$ Q b Zob 1ZFzu m}eb.tTi\̇IO ˼- a]s]&+rZ%*Ҹ꘷jf]WU0|u3n]Zuϵ^;9?޿AMWxX Y s"6g5k/Ev &=&v]UEN=b'ç?(SAҩBSr:@Pt!v"or儉 %|&d感>XLSTj0*>[To endstream endobj startxref 263807 %%EOF libMeshb-7.80/Documentation/libMeshb7.tex000066400000000000000000001662661456732543400204020ustar00rootroot00000000000000\documentclass[a4paper,12pt]{article} \usepackage[utf8]{inputenc} \usepackage{multirow,array} \usepackage{graphicx} \usepackage{a4wide} \usepackage{longtable} \newcommand{\HRule}{\rule{\linewidth}{1mm}} \begin{document} % % TITLE % \begin{titlepage} \begin{center} \huge An easy way to access files\\ in Gamma Mesh Format \HRule \\ \medskip {\Huge \bfseries The libMeshb library} \\ \HRule \end{center} \vfill \begin{figure}[htbp] \begin{center} \includegraphics[width=14cm]{tape.jpeg} \end{center} \end{figure} \vfill \begin{flushright} \Large Lo\"ic MAR\'ECHAL / INRIA, Gamma Project\\ \Large February 2024 \\ \normalsize Document v1.93 \\ \normalsize Library v7.79 \end{flushright} \end{titlepage} \clearpage \setcounter{tocdepth}{2} \tableofcontents \vfill \footnotesize{Cover pictures: A variety of magnetic tape drives from the 1970s including the famous DECtapes.} \normalsize \clearpage % % 1 / INTRODUCTION % \section{Introduction} \subsection{What is the Gamma Mesh Format ?} The Gamma Mesh Format (GMF) and the associated library \emph{libMeshb} provide programmers of simulation and meshing software with an easy way to store their meshes and physical solutions. The GMF features more than 90 kinds of data types, ranging from vertex to polyhedron or normal vectors to matrix solution fields. The \emph{libMeshb} provides a convenient way to move data between those files, via keyword tags, and the user's own structures. \subsection{An evolving keyword based format} The GMF is a keyword based file format, meaning that a mesh file consists of a list of keywords, each followed by its data. No keyword is mandatory and a file may contain any combination of them. Furthermore, new keywords may be added while keeping upward and backward compatibility. It means that older files can be accessed by newer version of the library and vice versa. \subsection{A comprehensive C library} The \emph{libMeshb} provides programmers with a comprehensive set of commands and keywords covering most common operations on many different kinds of mesh or physical solution related data. Reading, writing and querying files is easily done by calling a couple of commands which are provided in an ANSI C file ``libmeshb7.c'' and a header file ``libmeshb7.h''. All is needed is compiling those files along with the calling software. A partial Fortran API is also available: ``libmeshb7.ins'' for F77 and F90. Refer to fortran\_api.md for more information. \subsection{ASCII vs. Binary} GMF files can be stored in ASCII or binary format (differentiated with \emph{.mesh} or \emph{.meshb} extensions). This choice is transparent from a user's point of view and a routine reading GMF files will work on both kinds of storage. The library determining the right access method depending on the file extension. It is advised to use ASCII for debugging purpose only when a file needs to be hand-written or checked by a human eye. Otherwise, when performance, compactness and portability are of concerns, binary is the way to go. \subsubsection{Size does matter} Binary files have a slightly smaller footprint than their ASCII counterparts (typically 30\% less). Not only does it save space on hard drives, but it allows for faster transfer as well. \subsubsection{About performance} Great care has been taken on performance issues when creating the \emph{libMeshb}. When dealing with binary files, reading and writing throughput will only be limited by the speed of the physical media where those files are located. Speed ranging from 20 MB/s to 60 MB/s can be achieved with hard drives and 10 MB/s or 100 MB/s with fast ethernet and gigabit ethernet networks, respectively. The \emph{libMeshb} performs very poorly in ASCII mode, which is more processor bound rather than hard-drive bound. Don't expect more than 5 or 10 MB/s throughput. Higher performance can be achieved through \emph{asynchronous} and \emph{low-level} I/O. This mode is enabled by setting a flag while compiling: (-DWITH\_GMF\_AIO) and linking with an additional library (-lrt). \subsubsection{Compatibility issue: little vs. big endian} When it comes to binary storage, the compatibility problem posed by endianness always comes to mind. Some processors like PowerPc or SPARC are called big endian because of the way they store bytes within a word from most significant byte to the lowest. The other ones, like i86 (Intel core2, AMD opteron) or itanium, store bytes in the reverse order and are called little endian. Consequently, a binary word written by a big endian processor cannot be read by a little endian one, and vice versa. This problem can be easily overcome by reversing bytes order when reading inverted data. The \emph{libMeshb} handles this compatibility issue via a control word that indicates which endian a mesh file was written in. You may then use binary files as safely as ASCII ones. \subsection{Mesh and Sol files} For the sake of understanding, different extensions must be given to files containing mesh related keywords \emph{.mesh} or \emph{.meshb}, and files containing physical solution keywords \emph{.sol} or \emph{.solb}. \subsection{File versions} Over the years, the library had to adapt to ever-increasing system capabilities, henceforth, modification to the binary file format had to be done. As of today, there are three revisions of the meshb format: \medskip \begin{tabular}{|r|r|r|r|} \hline Version & Size of integers & Size of reals & Maximum size of file \\ \hline 1 & 32 bits & 32 bits & 2 Gigabytes \\ \hline 2 & 32 bits & 64 bits & 2 Gigabytes \\ \hline 3 & 32 bits & 64 bits & 8 Exa Bytes \\ \hline 4 & 64 bits & 64 bits & 8 Exa Bytes \\ \hline \end{tabular} \medskip Although the \emph{libMeshb} still handles versions 1 and 2 for the sake of compatibility, it is strongly advised to create version 3 or 4 files since most computers are now 64-bit capable. A word of caution: great care must be taken when setting the library's arguments type. Regardless of the file version, some arguments are mandatory 32-bit integers like the open mode tag, mesh dimension or the file version. Even in "full 64 bits" version 4 mesh file format, only the number of lines given or set by the GmfSetKeyword() of GmfStatKeyword() commands and vertex indices used by elements field are using 64 bit integers. The 64-bit integer data type used by the library is the \emph{int64\_t}, which is defined in the standard include file \emph{stdint.h}. In case your system is too old to support 64-bit pointers and integers, you may define \emph{int64\_t} as a regular 32-bit \emph{int}. The library will be aware of it and will still be able to handle version 1 or 2 files. % % 2 / QUICKSTART % \section{Quick start} This section will guide you through three simple examples from which you may easily cut and paste to build your own code. \subsection{Reading a file} Let's start with reading an existing mesh file. Reading a mesh is a two-step scheme: \begin{enumerate} \item opening and checking the file and allocating data structures according to its content \item reading fields of interest (vertices, elements, etc.) and storing them in the previously allocated structures \end{enumerate} \subsubsection{Open, check and allocate a mesh} Opening a mesh file is done via the GmfOpenMesh() command. It allows to check for file existence and whether it is of the required version and dimension. \begin{tt} \begin{verbatim} int64_t MeshIndex; int Version, Dimension; MeshIndex = GmfOpenMesh("testcase.meshb", GmfRead, &Version, &Dimension ); \end{verbatim} \end{tt} \normalfont Then, the presence and quantity of each item can be checked and memory allocated accordingly via the GmfStatKwd() command. \begin{tt} \begin{verbatim} int NumberOfTriangles, (*TableOfTriangles)[4]; NumberOfTriangles = GmfStatKwd( MeshIndex, GmfTriangles ); if(NumberOfTriangles > 0) TableOfTriangles = malloc(NumberOfTriangles * 4 * sizeof(int)); \end{verbatim} \end{tt} \normalfont \subsubsection{Example: reading vertices and triangles} Reading each keyword data is done via two commands: \begin{itemize} \item GmfGotoKwd() to set the file index to the beginning of keyword data \item GmfGetLin() to read one line of data \end{itemize} Let's say we would like to open a file, check if it contains vertices and quads, and read those fields into their respective tables: \begin{tt} \begin{verbatim} int64_t idx; int ver, dim, nbt, (*tt)[4], nbv, *rt; float (*ct)[3]; /* Try to open the file and ensure its version is 1 (single precision reals) and dimension is 3 */ idx = GmfOpenMesh("tri.meshb", GmfRead, &ver, &dim ); if( !idx || (ver != 1) || (dim != 3) ) exit(1); /* Read the number of vertices and triangles and allocate a triangle table (tt[nbt][4]) to store each triangle vertices and reference (hence the fourth integer). Two tables are allocated for the vertices: ct[nbv][3] to store the three coordinates rt[nbv] to store the references. */ nbv = GmfStatKwd( idx, GmfVertices ); nbt = GmfStatKwd( idx, GmfTriangles ); if( !nbv || !nbt ) exit(1); tt = malloc( nbt * 4 * sizeof(int) ); ct = malloc( nbv * 3 * sizeof(float) ); rt = malloc( nbv * sizeof(int) ); /* Move the file pointer to the begining of vertices data and start to loop over them. Then do likewise with triangles. */ GmfGotoKwd( idx, GmfVertices ); for(i=0;ic/c O OJ4 u_1icmg8N],\`GEu Z=;:ftxh] Vf5ɠR-OoGXœ(bjG O -5CV ;F?)o)-QceZ7mnom$P^Lj}VfgC99:w#]Lnx|5_"Oq$dS?a?; L?[Tu*k7a#Ez i~7g)}јn)؍O<\FAQۏ֥Ó[3|o\gӁRoҷdhq}n^:`i?ƚt Y vr}5┓@ⲊH.46tϭcA?Y$Elc?kYfPI9*G,L4M?:վ8t#"<*ApϽs0x} fVCZL 0u'lokn#V5&L.TrI 2w?)^u\\j-][9 K%Aԧo—B..x˵wUw `b)(z,z^Mc1kJ7=1|iGS۟ Kd ckwCYZwOp=ynEKt ?*7jmnPFYsQ`:î݃ɋ?•u@GO%?¹LΊ̂3e亩!9UJVC;3JF%Rjc[G~S*,1UH 3|dۿ >#?ߔ cxT‹l ۷ ēY8# /j^F|K_TEy 3}c?4Z/_𬲵^hUU+W_zlvj>VDas5_2Y|]0\V$Vz¦ So(Im6FV_ ?.ĥQ La,0sNn|.׿li@>cݓ&;ѧ`*[N_7xs6 Ž4[#K-n8t,l o%?¹FLfi|_T A!IO-I晴sE't;Lvx*%z ?\;PKZܺl=GhӘ;+H{\&OYU]F)nv&?AXVNgYGZlsOL.55:V.Wٿm5^f+Xex|~ְVr.-p*㫮 [9}*+CPx7ֵ]5z{< ` sSB.SV.rIjaŒjݱ(nc'Fezgˡ]_R_su`*c!ySahZFy}z֦K\oC8>l-kMAqϵvw4;r9ҭUFJ{"sz(]t% ߐHw2mpD)|ǹⅮLyEW* Gޫ%5&sT+4n*- J) u%-! P -h (H9rMjj, j`j¡+1 S6Um+Qnj.vK>B߭V hˡqTL>!p!M;iL{νTI©!^$!{41>80֪p{}5hh W|*y8C57)ں-qkOD·n$c?XmxrS>QEާ0"1MjXEm78OU$K,죃JJQNQM`;Dկ4k绱$+>Ʋ#%)ސQ[iWV94cn O^HMǛ.$s׽&IFf9&gF .p=)@.xPY8ib.@DjPS?NՈt)}#IW^;C%u1,7CogQW|WX=#ۺ;gҸ'؏O*"[Dx)]dž܅' Q/RƐJ.>sp"z֮ͦ8kJ[ ;;M>M4*N7onNcPhZw kĔeMд(C'$pYm/"Cy*I=R|SRX̩Aʧ7c0tz5G͌S25mW#(XhaV?Zșh6Yf޿I$yq͜g4qME0#"i (DgⱼA%SM_[*{{y#C,23L!x#I Gz/IULdk[y$5Z&8+n3PW'qS.c5,>TRkooGbcG7oΦІDҚj'CJOiPA?VIɩIzTb6ԁy%Ź5'fkL񈖝NNiÊVIYk駃ZB~MOưDv>|z׼m ̨=H{!?VU'xS?γ}ȫݯ-s'j3$cjo[Kұ4'7~?8X\GE\/j2XCҬ\G*f2(x$Ul@Wm(¤`!"FfYL,>tOj6blfW+6U ҭHk_2)ֻA r vp}acoB㢋#3@#UIU5\&xjp ]|4Q_ЇXWӦ+B@ˊna c [Q^,M*zuGjeI0(p@ A:djy)e6qj2:$ Oa˙SԐ@x9?SX,;iE6isEBvis@'ψ)Nk@5i:;-}KVgL${1F?>:.]P${BzR2^5l+cVT6LL gܷ76kK 7}4ZPgԟQ{TFc֘yk6T+}:aI ק^xDFW9l"zg[4 l1Ҩ.z94vӾ18;{c3čfX:27/3Y۴P͞RBʕW!2U&ȽSք,$¼#Ė[$T:=Jf8'֤:wn`!G⍃Qִ$ڴ?KYT{aЎ1ZQK\n2k?fs+/BԇP+)7-$gV5SkzQqjwֲEIH Ƞ~u'=Awi6A@E!Um|}8#J'?q}cO4v華U|XC^)X Űx5hٮ0fi3W p|ڷ H e+R1@Q(x#oЏf5$}*z@>"M|?ְdZ.~dQck Z#7^B{xM퇬ݬ'k* Z߫w?B?_RNC_7SB [ǘεBe &>kq>ahrйuⲞGIL}e_kCX6P%$K灎Ԗb5K}3=<Qcʨ%b=v0gCƸU=FsXO,B8*XỌ 'g?-y=iF=k""] 6DEyZܫMYrJjIMS].@y5)A%m$mچ묙,26A2=, m@I2*!֥ZEʒoT{)A@) ѱ+DZ*x5Eqؔc֤5䜚Y5'ZRyN#5P6H4 9zi0 >.3=*+jGWUGWlx.wm?Gvc4z:JFGS-g?7?מR@}9/ֺ W ~Rt.tyO"=d `JL &?j~ȇI晨HK c=5t'py#hk?W_t23з[[iBVJBЕc^jV*XYOqIei S튝oqf'Xy{Wh=ýͼvYf 5k9!rⲮ:FtkͿ3n7w/h_ $1Z) S8/>Tp@ 8Aִ1h-#C`9ɤ`Yz=],ڊ Fm#"Sny?\^%OH-v# :wuyQ\FlgEq2V>~q2jZVI&Vmʝ.(k5X`,ǹ2i+GGQmֲ̄kOEBjm-S\bd9 4Zל fmZ"Ӥ 'nIެ:M[*3}8ژr1C.#d*nWVӬ1$I %4}Oѭ 6u0s7x(F٫QX C7"m35V}J=VPyB7H?*ƳzIq*3HԊQJAA}ҳ=PŵQmnf`W)e\_2w.sz L"ɍŸ8 jQ^憎SO}U@ӅI$9UI$J{+M򍁉ڹ'xFX2k↾YJ}@P1'֔kE41In(|r=k-5IG )9[B*Vzi[1sҪ؁5fKyTïCN0m$nxך0%wb:YZ^t'cRkx6!Cw$.XⴗT3H!r OVk{yNc~Zȃh 2#ϘTh/5*j4n*SЫ1̆4剦@֗1GZSIAHe^V}5:V75ċMbFz8l)AjD#*`8UY!2˜*n'P9aPm QB'EЋi X쎿F^c dHո HFRj[|X{YILџFĆK2Hϡ_kmK%t~[hQKڊ2XSlz;#Tѫy~M:e=ey:5`xc[m*Tb5|RsT?4kT'>TCq٫IHN}( K<}n)lG?QwZ5hxnniówc*Ry= o tt,u]0svAr(_LknG|3Q)Qs֘GO=D?fH=T1崋0:Fu/j"Id;mT_Ri; / &ރ@?6?.5ۏ|b_ߏ^aKvVF>X{ɷZGɧI"#[[>㡯 ׁ?]\yW:|xqT:zsoOM::C޳-RHckg=zTE5пVS'?ңeE:B)z&oX4o SD?4Z7=ް} '>5 [C?z@Z,4\1 pt10#XAڗ?jj2]" @1!@P?g9zROQ3sZ`hqwx@kѥodּkw-+;[5OԐS[ I`8'5%mvm[=) N?Cn3F51zrЭ}TǁX2Ohg/4JK1ܚ|[{)e yԺBQs;#H1ZtR*-7?z c0^X^k;IkJSI$ `}){qLKr- 'JB[,Ou>gqIϩ9LyxՊIeBEU)LMi*{R>:Ҩ`ucVEAb(@1Ԍc$V{vɨZ LADN-*kb8bXs|{檵*/BP:S@犊9 + 2yCZ W;g$݇rTR %,=Q֑Zf1+a v{/X礂_mq^DZ+^莅 e(}JpH?ʋ6ԡ s9U?y=z:?=J[-ŧMV$^b C2-v 4h*=ҬbӐu*FYYu2߀&i$S@+'N;}iҗ#1}M2i0~u4B+c<f]RiUG\ױ~Mk1eKgx3{Io7AwEqIu5<:G^9 C{\\ Ѷ&njw59En*g%C诩ڣmQ'*I+?Kՠcm,\]Q/yf]Kgre9U$ 600s6 sk]C U@iY-"6#9#{q3sRdfD<]]sXesyVROlJX|BT 0E,;{> 91BP *@G}FGSCˈ'ȯKSy瀮SϵH*!@2X.|]cC4;~9мmIWQ9:Oc!Pp>a^=ei*fFB;׮Vޖ0=XץJGOJ@➲wjB%Ld漣ĿDڑ?|^NI3ω<%f87c@j|-H5rNw'@Ǩ iV= PlܵԄhV"l"I'8E)vY\'=*8 bRf&yW)r{dM1nQ搷%ox@n%cHz[?5 $GcqVU4TOCRE)V?Tߓ&$F,#aҲaP0+'XqYf?=ڏO'ұe#G}eJU9C4P:?ʼ٘׺&圓W-mv\۸Ts{xy3,'"`=mID 7ce$Vęd`Vu~RzQ#IR2 Ꝭ.V#)_{N &Hi'6cP:R=*6Mad˻&-ɨX9nNL=8i'mkl#&SM(Hhh'JX4o5U<6PlH ~u 6 Π +QW|+`)%=V8a{UFڜjE?qo^9޽@7_^/޴4{ӫRGji(NM,{֌'S&G(J9f?OAH9 oP)ڨC=N; sN}hI`oYYɵ\k@A6OXU{Фg0H?ET6q~aׯ|GkZ?ҽy~%B=OjJ%:wyd#5Ia7W;k>2N}'oGn=I9P9gX#8hr3t?6rqҀ-!Vo$oQQoLyXG p}E 0zԐׁV.7/~T e;3Z(1k-8OJUR)!vX$9GCc]֙K$3Sy$rpj+{q֔`6!ʟUkb,Dps=ֵ ht1 }b?+qU{{/NzEζ5jQe.\9Uv>簮2\Ԍ128@vc\2;Ӎ(pfNpހ{V}֜#BI9䚂*F.6Fr@feb=*2րK B&9Pk>LL[ q?Ƞ0*;{gJ[(2F*'lM0#l ZNzSGaPH or:ŰX;\hՔ\uTjFzgd?Z@97E(Dc σ뵏jX*E#U[ 697⚱_!C.3^q?i2I@jbb}@5`te?r;'6=7/*ힽ= RSKdrHX& {|9>b 9c]o݆EP&i;uLvF(8ψAN!)N^iA7.>_yk h@?'M5)Aoh_VHbZuZE5:}"8L'V EWzw  ~]4׺&Ze fx$upcLX,MI3t~zq7bO5,b2C "{OpNGbhM4x%-zJ^6mPZatcqMsҁH8RzTN.CXFpg )sdjyڛT7qշCӚRܽȤug4ڲgq*)ȮRv*+vq9TwP c)2iS(5-&'CAbM3[N~`[-jVU&]i+MR[v B)(eNQmqMwaJz̖q֑b~^)P4pҚfǵ1c3M]tchI1M!~ >H=mAOrl`{wʓ\*O73ֳs"07Lכ|]D9r]LןWbl 3Vo25+jʿJKf'{lqZшgk 5ye8#P=qGM88g5#DU[ 1<5DhN!"5'5f(& 4 @@l]}kOob]ϏξD?XK)ly:)s?ũc ܓN{Uxv[Gsd4vOV=*kT=#_U%Q|AlدlQ\e/Rȥc;kj="?ι 2%wGٴu‰{,(U=o8c$p*̹>Zqr!mrxiH9B G %`yJ[i-3 @FH :33P}E]19=M);!#y%@ץi‚Jk_sw7MgrraEt6ZVT9<(xkJuJ9FWk"ZCHf|mWDmx,ſwE@aXdN*x)R9=koﶹF^~I_C\[6H0}šV[)cn'5'UOTW,cEƢ >zM~{E?; SY9\<{&Y\߳HtMQԁfkה󸍽y7'RY9.OO C:q녣?&hyG"'NG|ⷉ4O#܏׆G{3cׅэ]QH)ElHKH~ԼRuM4d p?J==2Ii1I3H8?bouaѦ6'(cD]_ù6x8++Jt:]]JMe=!ESNץx{NdN@l^xe/kGj9d3P{#'жJ?֯;ⷈ&H@T$Fqls=GY]cqzcj1FCS@[<b5Ssѿj) {>lÌ~$!8 jsӶ{Ԫ\ͮwWq خ[ FI~u2:m#ǷN*TrN;L;zq.1d1{L'cD5qH e۷z0qzȷc6VIƄU8k5&#{`j gϴxx0)sW{!3)nj4XX\]kq" QMy}VN{Iյ[F+ ի'y"p2z l85gRO` ^1\ԝ~h= ʛKSǪ^)Tsү'~8n F+?Rx5b@kG~EQʏzB):Ҏc4=r҂>SHhv)G4\i5C|xaֹOM޸_kBǘ!?xR)'<+rNBjqꥨ%dR;;ȿUqUn?Jx8Fy&ݭ@=!?[F_&B9٭V Ee&r~6suGDwbbǓ3ɳ.ܱS3sڳ2S8֕Mb <j$GdmpE^L<>9F Åm`ݳH p@F@qFqYUӨNUl b;I^&]o^{Hb5PX%RvCnu\Dcl1p cگ6RiP(ݍCv jM?TGj+i[qEB~7S risEt姥Zv(i<=—0~_½k{Xh 7}}ΉۮW(~E?k-XIeWj-,`Xo֗t@d8yRmXGwc+oրi!r6׿v&U9{c]: 2s}K?-Y?L?#bﲯ/Ư\h3v_O'W43;ZR=OZrӣpe_SKTSG`gr~)Ӣv |_?{&/. rm BJ&xIևТT[ƣ/~5ϰUQlj\~"B@w7okĵR󪥻IK$;R0#zS%ȄN:6Zmp!y?5X|)541Z!3 [}(7)^oNrk8If(ԙGq~6m1ЃM[Q}MwX6ށԡj ]yC jq{1Y`pi-2GvVqR:k.^Z2T֫J&8&0 xk 23lHHg?Z`dҪ`+`YbX!"_ʋ2$H: <_ΧD~Tq?*@U,|R/܏zhB*\ NԮVJz$hX^\U8=jM0.?]] b8k3DگnvFu 2>+'C|RW}(`^ 0.j)n`|>'9@%AqmFx^h *^P;W1\N{=-~cW[1Y:UнDFW9,z0?*Q +{I%ɟ^ԴSrzY1Q_LDY:}Ǔ"$O!9ɪEf\W4 >02|Q|־LgX׶y1HqE=oT.L25VPrwjvf;qڪ +1,KOZ>}ޛ_WXltcBa@$]D.$0r'(qkm'?--?]i:r=JO)ss=hɞnOhc^[@&nRD^5iKxq! i\3p#8׭jl ~7/9k><:w_[$ SCƤe"ĢRUR{st}eA[-[G)_Z_%vcsxǼ txq:#[tqUOMQpU簠G_C2Pz~$ɪ9<^:h.K[%c''FZ,>i49J sZ+Ic R E-1 KEW{Xuk{y[lncTʲpr 躭A@[~?4V#O!y_#n{HEnc0\4R=eW+%vA 똼yzħ`i 1'{Py`r'jh#\Ƥlgޒn@QIE 4RfZMu5+0E,{UbM! ^o 9֯pĥFFOZaz ҼkWuU/]EެZMyum$TEkrC JE;ª~>b<-Z'Gt~ M`YTTe<_쯿v(:~$ZDGFJ XAkӓ=_ =)ԋ\7's{zR=ҡ؏\ߐPǮ20X+6l/6 dcR/#"S["Euxk^s-֟LzOk~XGOC!~L +85jJ"qLkixXA`9kx:uTb9r+uD{KهbuBV3XɦpcҴJ:ъP(%rMds?x(Z,ZJlG GbGvS9s>Iwzϙ $e-ӉzֽWHl{jdքqIOSDJyy:[$fI6eecXcar$c2IY7'4asffP-pqkoFZk Fz!O)y:z t,HR_-o`/iEEXudB EV kw#O5*' F÷D !%U7Nl0Sݏ5Z"⺘.(A_J?ں9$ؒA'Mh;r;JLgS\Mia!NF܁*iD&[m\ 5 G9nRx+CI\K+;BF+SRD1$0A9>_v Il㚔7bh8WLnH6ASQd֜'czT )f J]NIV)CH(T{ӒL7JNS`( E%RQE-'ZQ@[<9(sI$ZRd]ё@!OK骛H(`-hRpLJ0}(>Կ?!R> .iW@Z5g RjxP8{m͠AZwql\#\ÚHfi%3I7q5{65 \ks?誧0rkxLi+]r0U5G2m~'% 8)W*QTKIy6:n/ Ck}4|O/afEg{Wua7FT~']Nh`mi1OV>ϒ6k!y.g-ŏ~Vs֡76P?ZcAQz⧽c2Fp;n"nWM=з@Ѽ7 v4YǟÏk[{;r67²O4*L[4}_jՌwv3 e?\8Ap>+j6jѕ+{Vq۾ }kV>#alrrTRY~S [x텓=Qo{q ".m1\iZ\c*{+>(5b;Y{1t( s+5axMZӬe {8G&p=v|5GmÇ~νj8kש>vXYCon$O_ǭ_RnNXZO76_}o iF^O(O󾭪jW]]J!cڝ:noRv7CcYfknv c*}gQ[X+0,YTᴚ)ƺ؋k'sLPv3mt I7@]3-:sb9ó//$-IHE\Vj؂nR6r?T#ӵCJfb?uNTcAWɣI,cE6-n$#Q:qJMR[RHY^6 ʨxms@hqjo?[?ʽA P¸fZw)kEIg6>aQ^yk>}5ҕ'*s޽x81I +kt-$G5\8Fgiu?󨜹cqvv?+X6@K!f@<Ñ\ ͬ=)rBN^5 y,tÇvp/ʽݻ(5[OBԜ]kYI"zCy7|o뛢F-AG뷞#դrYȀ%3L[+.U*h, 5 y3eݤGNǿkdxIꩣkWu֨ x$T9*٦hUm ^Cv -e{Y/t'*Q^x Cx焟z'Ll(8hGk9smis(=W=H"=!\+\݃d)6q5 {])sD#< 1ZY>&K.QSx![e]|Lo=SC-ſCSُI MgVץkysH,fAYx)Y~ing?]|<#n+vd| X(T¯TaDR[,ҔH9 f]l `rvUnHd}fo&ذ?3|W1@?zZI=KbJڅV|(UV@K)4m{QD0@E\z!dvc4 EIG/9QRǖONdv=Wm”]avd?h0 p cpܒ1# r€"h'=*l'@y~y~7K|P>X0K|S=WAK砤+Δ}f s_3pOڐ~gÎxd/5u~$c\k;iٝ3:?*7Ә{)JW%T0ǧ'҅uܤ^Xt?R2k%y6h֨F=`\"z ]>.>ׯjDmq]o+/NeaZ|mwi9`:yґJ)M]!/`=VW6n, TnWzV1!՗v_G.2'~GP{Q/5|,sasoz&t(vBkHH0}NP .ԏT/4UB3HܚtٵKpI#g ̼mkS$e7SzVß onLi.d$uxJG̦=k5ϖJgcbWZλ 5b<.P?q _b>p[VLzMo\fw_2C@^ij#LG3LֵLw;TdXyTIVn;,hpz#Sȼ]>Sg0=5med'X b湸$CO$P\A^Xu'C =' wMҡ7z¾N5|@^ice+_kMS;Du}Kӭ7{vA #ޘ! ^mZXZ$:ׇ͍ÖrzW<:SA ~>Xb-& qYVr=AaqqPjzM͛|,l8t7z8)X j|Uxة3 񍰳}vk+Ћѓ"$UQN,J-WݏS5^nIFG?ҽ@;>"["P&}</G/sq q(1CG_WM S>: iǚIݕ0IgkvDwk GY%N:+ ;xQɫ>Λ͈<7oνW^."P$ s[iHx\:F;[LzhqvFMmŗ;Rڹ g18-_,27=A5_6؁] j:5X~^$5]EII!Z%#%$`y+3WEOѵĚ|Ѭ3'#*Wxf&կmTJ]Yy=ǽr~>PFqkS9lkQn4Hd"L?ϭ2(Z{Av |#)꤃[ 0aG2'עݕs;'"[wʹ9E\Lx!%YX{׎IuӸ?:˨rJHI95 ?RvYW I5R*' `sɦOkulo(SBOZHN.- '/uK~5 +5Dѓ)E"Ƞ:dRR5[#BN9V(IC?L.Z31rNҳl,<$|΀kn򱺺lvcnܫ4 l\sXŏSn$S ?TG.Moc)"9_qc^aW#/}Ć1JzLLCW4 0BE|8i0F#}dGW^v3J/ްş.4?SY_Nz[g5э3O͏k #&t9`?bp:ڭ5}؃C[>2' T~iZJfaAQ)[`G;eQU8ZypE?Z*u* ފ(H )h4PR(ɠQE-REfZ))h¶"Mmb0`}*1svt%BjF)'ҹ^3q?w1 S&CtK)+M6i<1}ў浢L8yd|IASjuh:zHC5ΞSᾖ,Gj_qEv qlZyK=kF֒a d U+b)ݒ>~O00R=S [ݎpE@چpZmT]0W3oCGĝBh>y^5.pKTmo"'̇i?:gi@TY ݣIg"#&1[> N[w֤ W2 z34J|yKӵ)cffUar+CveӚh2vHn,m6`9æ#^Hcw'?2'MN*_L%]?~Nkj 0q\c2ͥqMX^$?ayZ /5 H#S5/cڂ'8o5M"1#\6pXCBQFF ٿ|?կi6ws2!\4;DZWXcUF:}MKg]tM.[*OP-eV}mOq$m Gpkkmۀ5 o‡ w 7rd$wv T,j$^K-~}N+6XSV"(SҵUzoQ(φ[:6ua|@XOR@ }1á߇mLP.e(ꮥHPsiLh:mHѩP4YY?p?(X`> O\n~|J?€:~uKF2|[hOҽW2),pbI"`I|Gi P8Nr+ž!^xɝ!W'@8P:1~a5\cۧQ-==B't>ٶhMR0\N*q׬;5I| B1:C.*>p"ON1]=ǗOyZʛ\ň$"EKcՓQphn<=,mQT@`H=+.Vy~Ndg@Ps`ؗՏ?_v\ݷ)nknt&  3=MgD%Ry~B+ WoFVD:.Ҽ0^o|CW%4L[})٨nY!IRo]% Ǫ~]LGKaS-"u3+_Sl'J p7]ت|dRݐR]o,=H赯wmi1rKJؒM:m`\g'iȫcR3+NV弅D?/Jt w[3ұ,o"\ C8$/8ʽȮlX~$g$?RZEm$2b{Qllz W)*̀zniKDko¹MiAXzLp(˂4P+ORkɾ1O׬g񿋷!8 ?V~0{\i+ v uK@OKa+nTѠ+J3\ *?P?JA Du85xh`]Ea"3ҫ_1]>TcEoHT- Ҿ'*yT_qKki'*p"Qr)vfjnP=j4QѺFe$.xx62XEcMٕIn ԌZ# ƇsP)ZW`Ysu?n; ެUIktl=\wtv{L+?\·[RYfINdecj+xc;qE;<߽-%!KIK@ E-QIJ(M%PKEQKI@ ERE:iOVDžRm-Z>͢qӎMv:ߦ#U?qW"ܶ\OWcPkд#kGQ=o2埪[5`do>/νDc=[k h?NvijKva=*yw@'rGP+:+5ʏ.QSgqO {ք2cO( ?/{#>)Ϫ\+@+MI\bM5}-] 0ԛ*؀O֖Rd}hl#[<ܒFH ۫4:q,ErzY6JmXj޷0b,Hy1I[(|/%MOW)YySZLj5m> @#A <.i#8'wT0–[#B"0J[WI5B זSVvɷ}xMij5yu1x1(U? ڂB: /ĺE<.=! SY_#F7a9<~5X,OlsI;n:SBuj#ګ%d^jyG;-J%>qib%^Cqm9BW~/R-#lwFw䵹bmm{}* Y]%yjvz_s"7\}V^@{Tnb Y\]]=j ;RU,oE iup{Z:s@mpZ I#1Y;j)t97C_GOd^t1iڞZ[Yӫ! o]eT秩y>mj^Y([+1OXוb7 (XKPHRZXw!#I[ t좺v薙POVCm@Aj%&; &㗯86{0ſ{XӖ),wwȥϦjR(ԉ7cpbwxmGz5i:EGgnۏ=Šm+AuJsYUr&L8ݸ+i6w Ӛk7O==Jy^OB~h8,G@ |Dj^0[)*} z.1_9;4rKMoB=E#׼*1gl=-W fϊtW}။hAW:ZX ֎oilA9s)ֺ Y4v<=|֙5?QJ;NRۮA̹3:+ 3\+ȋ}z(}e`RާBE1^P@ 9Tie|pGl % +&^h h3E]*t'>ECު.͛[m"%rPZ:$Ĉgk?Jtp:Tu?j08y0q(B+H$leJ Ҋmy%V((QEP)i)h$SE2xPZߠިB~~o [arsE$_UqqvzYTC?N?߇9x\?xz ~bI'QAʌ(펦.hr/>+9e^-H6sXfz?JA\$>r?CT *U6O =Zuyt{s6zwoZe9F M_ȑ=!a\O1FҞE:kTCL"Eru9q ~>$ΏwhC]~R>"Yaö=WPQgXOw-,d^_- ޑ+vۃ)Zf{g<Gsխ͢ظĊW;\27|I4ҏ.%,X ~oQZ~.#m"^7 ;X۲(uƧy|gq_ι?OJkZV |!ʌX㼄O5mͨ2Bv>!z$UED[N覮|Ze_[yFvW:i{h푇_RU >,nOWOs7y7|1NG֭uyPJCkOX_EOfӚ7E v۞kG8&ǽ-Tvq] <@{A^c"w@یv㟦vfa Y=Mg*KBY/~͓d I /+{Lv#1N>Vǵ1b%i:be''vZVt[ v(^Eki COk񷊭7;m,>WςYu B[/#wcܚڅ;f),\vDTi`WYw&=_?0I?k5{H>Ɲp>j@iLט0_&>bQ^P쎤W(3tUԴ=jK;ؼ_P{o"Ó X8;BxSIpcmXrGҪGJ)qǷʲ \IׁMYCi3 /W(.l/Eu`OֺUx>F3q׌Q%Rj/:>hJNk>l$q ׂ֩#<_F}^myaՇ ՏJ O}Q EuV+hEqx**g?\*i#`,N=M>qJ QFNN+"zoi7Ӆ- RmoY +Ga %x:Oܑ-+BD~B*rr4A|;)rzki q;A}WE_MΧ.+ֹS}NʩvJdrǺ[pUm7Ql^ҭ m8\㏇=ԗ %ƚ#>\@? R\֯/kLd٭oklB1WDktbq<. ~{NeR<|&c#bh|.W8%TW"O+<r7^5_,v?40+t]ʠRS]imQTJa -Iv)Z>l\zT#Z.x#ڰmpǥ@V zRq\'?.h}2=F.Ng!;U՗KuwW iKINEYv{?-WQWxxP9Oꟳ@?Jyvu/*@VHޮjkCJZb:CʧZ4(a"VoʏxV5fA"֔>$QRA nE !hQ@e{U0[6ˈU20ԷebwMW P'8QoSKoȥ~$"8|zӱj8W-A^(`uw8gsXt3O3!Hǥc- ZE6V(vo2fFREtQ@RъJ(QK@Q@QQKH(E}XgA€>qḇ q5NBW?S\sF&ؿ #SMt~I.m\ƅ{\2|hyj68u$rOփ+|F8fP m:ʓ`}E|iȮ/tuKMP=?A>RXF]rSE8H @k3G&7pkWrޟs4bU*O? v4͍1R|~SqH`l1N! P{ZxsT5 ZHkۘ@:'gŖWGx=*'d&: K UXa"ׅ]Kp͹$}MC=ķ21Ozm:JNW'PZp vkRGMi3FygB~aۭu ̚#.~&{oj:,eNGJEIY;P3E=Ow8J9Zn~/<57,rWxw>B}L@zW>W:ؗ d5"ɾ08C0oGALjߌVEH17̅pR0Ktڹ4F0 ?*PQ 8( rRyQ͎,l H$Euyi4W c0a'GQ{>,/RPzMjU4d9hup;ג_jWouy3;c[Ӡ嬶%ŭs[vTtA)mP[AnZ]i%2\M40%"I<yVHT9VS {o>%[ŧj,7IXe^7zC)>WqNf%q:dҫgzP6jC۟sP1DFyC<*úh#N)ܱsCN<.ҧ[›ª]x~O܎(hgsq q2$QSǿ_V4;,I{:}}2瞕Jؒ=y:Uq4Қ[ SLW:>.h8#:xA ĽDO{׹i՞f6S#S}+Bڵ4_jZȞᐃ~Ozd<#pb}x^u|Yӯ!U&d(OPʹߍkr9;|dzцw'=q@ 8>=)8ӰuʀK3`v!{h8U}wZ΅,$XZĿ5Mi^6V ~vWrx5YiߐC:'yKI\gcM6y4y5x[clϧ'.޴r??ZZ7k֯ ]B.- ~x޳M{6сz+{;z-ѾfYQcZwh=Yl$h)Ft"k4?E2r?"ʿֺl#UnCD>$ O^)=)@)AY SVaɉ L ?JPWF ,nA4cM,\0TSdQ #ڣߜnӷB)]S;mG\\WH&9CѺ5.;^j;|}DƙIUFV>sMzFp?ZxvmfLRpviZ9e-Nl +N6MV$pG5.(Q@ KZ:fk #YC1uG,q !!FH,`ъݟݴFYl@@ӏ5R ˸"݋,ddÑLzԻY3lbh]--l+?b1T1\I'5{HPq˸=@u.?hObk)4fVl-T4&>2ce?w{b1F +XN +W1b1r-ekV}o$134{c۟ȿޮ6([lO ,z5 ,Zo֢uQnZGd[ F~W]A\Ib3^ϯÝ>O^z۩\hkz/r$QkiX%x^Ai_Iyp?E7l:s[8nM-~5s~>4yZRV~gl]"F=>.Y-h{ƹo]tfXou)׷2!'bjR{T8V$lqjZh4њhdѓm-.h_zCFMC$$dJ4jG4Jf`Yjc#]m-j(O^|Nj35e3=e>4>sj2:yNhOcTv3;CLjX ?5_wڜ[nF&]-JUqc+Wa 7-NU 0 P3FEGϭ4&i)s@-74w&$k"֝ɢ(l41R +C/nӃ@o!cZAUߨmcLFxSϽO..U\gBVFc+[h#](H7 6B@t-(1!z{TFk}9 q{=ց Q 6;( ,֚P!y.]-R0ƹI$1~e9R26K)#!Ӕ[IC.2ZoQךI:1 :~O|=/e.̎S{RϨ\2 ո!ڭҏ)[SgR0Ou*??G+hNC0} w^~<Qnijĵ ?Evt O)ک?hoDEt<o\oUDcAR^X[_Ÿ WM01w-W _ꇺA W|_”|9Տ*_Z1'-I3 W?W:S^jojLO)驟?t>G'):9)jf Fo'h` T_' 8ZPf|t٣ 8K.?/֥?',h`ЌxTXi?Oq@ؿ@u@GAOӇC-!iG0G-+}?x} =~g^-Qӻa'-K}?x?\G^Z?\?o`'-[}?x?\oOW:/i:4z?t P>¼G|?J>)_:j?x/t?TOčhVo,]gyiڠh_q??'+/??u;_4D֏߳4Zhh¾R½??*ٟӷ?Ewt*psrO7iVO,-wG,=wJCд4k[pv|=oqUH?^|{YbқՎa$yT"(xָ1lD7K>(2dzӮ[ j{k{ #]?-\T]GֻQ1a" om2Zy^H5T {«sL5nQ<\3]&ovL Ϡ?PHv53:KcoZ5BSM'&#Ҟj3OJL KklЩEPQKE%b (44jDyuw.xYsN;Cp W5E'Ξk7I 68%t"Ȁ!n޹)rG\u[B"O $?ֈuE<҅=+=L9Z;YGqj[j(nH )?(=W/Yax+|:?)\4_ ~i{^9j#=dD|g?ƏLQ-#ˉO~bFQj?(񎣞nW_*\Ot?S?1K)?Oj3DͲ K2/HZXS?0q^Q ~].Tr;2C6cB@O1Qa>Ӈ_*\OtH<O?B/ԁk?_L59xQ%? ??0Կ?Tr{"O@oQc>kcL>0p1z??0N?#DU/Hw -[/=[jO!~?/H_@z7)R7.װvWc?m/LQc=ZSfKQjyn-$pa#?m5;Gw fwA#W &xy?5RslAq)Y?>W?E ߳4Z=-4[%zh>z?Qgv?@|4o?4s-4L>Az??Ɠ礟Q?o|Q؟ 7E?G&ZO <4#h-笟ȣ=GOL/?礟 <)o`hOqn8CE>AerCC#*}79]+Ƕݶ7<܃l@^|x0{bpzO5L D=',+ tRWoC*Zoq@d:ˏKVzMX( AAЮ+Ne]]nWj+z㰬$P1^sSA 3^>0O)oTg'Pd J*Nvkth՛a'='A}VS$NoNq1zt9QHe1֜~!RJ_)B-KJcZ@@>9*;ly\֊ɭJ-&)qZbLQҖ (\Q@ E-ZJZ(-% jI~cWuq5nfFhk|jcֹ-g?α|FÒgoֵ'>k)=60+K<RMw GҐsKi_]<,-ñ=ƋcVw6Tdv-&y"Kr`&i1A]m?YЬML(z}k^ {vdxc]N%m 9tT`V'׊ߠZo"=&V1A9EG=zӠU?qC\t>H/D{DPȆ+lYR~dd[i&P-6RXfB(O($;v~ =0H#XȳLK&x͘ǻ8j}yl 4Q<ѡH$f5=G}CBޣ7Utn<ί ~OĞ./9p\ǂr N ȳG$7l̗1~CX5x(ض{V\M5̬<>"Lu81l1_ֺXEYVӥPN=둓iRzҩ|LObmR@LφuAAOiMXfa(4Pf,o*|*Z(Wm _Z e}UjC@͜`R+6n#C;?Jφ oyrmo||y^&&"1U_ )9QKx)1=u < Q̀/77 ]Ν4:'`=+*htL$|(}hCBebAv8Ud#u\{7cb(IkWv昁@H*8@bNS6NN3FhHE;wCVo/|!@ߐ~Kp3  ́զS2#e?ֳa?~ߟl( >qH >>R}aPQRfI36}<{VtMHLnw O@93ڏ4 Otux.O \#>yһg:Sgs!̧҅vv <]xsOKd%©`7duYXa@`{ iDF#d?tTʹbM瞣 Z~0.)sNnif(@!9$=)h- o10ʼl5Z'ΫQ,&8u[mp~DC޺?j#dc7puğ9N= rpn9%ByOw.U"b ohkJ[EnHu5-S p;pjH֐b,Jj&1G%c>V(`b8)lb6FqKP{Uiȧf2Tv'nC{SXy&]S E[9=.cqZ?/s;gz[ "mnоFʊ1y^MI6-?*oGu,.{D>^lj ר}z{T&|j[v&*1'}k»Hr+*{vm*KwWM#…VT#=*(&@wjv!rM.1|xڼv|{c_FRE5 pF*nj|'y>WrI 6'4zހRf4@yz "zfW ӡ[0g6OK;d|8+`wb#/n Zy1rk63t[-?VB>j0A,+άzk[D7%D?s^}zx/h?č;QYXY[]2IFTQf @mND|= Ʋu]6Alѐ HZm++PҢCڝw* J@|5u dX`]o$3 f^~) *z њ:Rf9fiҀ3O0r?4g@]88yڹ<,rqS-lb!L0##56?ǚh?C7ce ؐ=5 [#ѧx qRfGCVLoO9ݛ2?½ZOGk#زJayp~z ÃoKv㿭.`<"&)Kj}7i6X[y $1!ps^-v3LjO;-@:T/T#0pE4nQ@%6- ֿu뭯 H}#5_xҏWQ\8gnȿYa?.Z_a[sv=oJfhFu?ԻeѹO]&~cҼX}Vu뙯 hrdoZR&TM"8, mrH)Tၤ<4nn)K cژ>h!  Q"E:(Ji_[DO86JR HEޔg%}QH(-&))ԄIKM0IE%)PE8F %GSMPF(:RRh@v 61}AN:7e&ڌ_w^q>?jv9*Q1VeUفk #J}O3mшs֧o'O޶9<0 c[_+|,3\n\H&k23? ,sPkB=Bd,OiTG4"=3U ;Vu{2Y͜Goie;A0:iQV4ЎvKo/8Ϧ)ldZ҆}r}WHX,O^+=AjUOY{ /2HUsӹ"4ȺsM E%fIE9dEb8nRQ҅W?NGoz>"N"Ǚ"!q\r?ܹ]랿Һ/?vB<>Ingѥm}὎hIVBzsV>ޕ"HT9}4p #qP?J(O|M~W'/!W')bE֨LIEst4"iM_SZZJZC@ih(B#H(k¦s_5sB *8Lw5Ӵwix~";g@}iwJp1xEOEY.?猟ɤfO׺PrPk]&1޼{nh\Hc7Mz7wc.5?Y]2<'4\oʽ#xMG?n? Y]} ?O^ . }qynlWxƩVȗMsMU yn)q^ S?K?ھye-z_ߓ =?Zh)崼Wjx(jլZj)آC?c|<7XT{_ 9ϳqfOs=DŽ-Ϙ{:t(Q[J%5^=V𠟥WBwR2''{g{Ug~+;#>'~)xcoxSBR#`t B-/KYk47Zqk+$Jq]8j?>0-u_1\]-MdOMF~鏺ZxڣEZ(X9cXk+W]QVJS 4ު%-'Fh3*1!zڛE-p ].<? 델U=:/KL d~f!_^G$%Nvmt, <>b>?ʑj(1?+~r QrR5x5?!\Mtb=h֨JZJ\@ /К@~cK!,IKIEHg!'#un+r1XHl :l4t_˹KDN s*u&+⯲` k'޳Q@t^?O\t2(k VُNo6n-dц_:_Y mGݹJi㐼Ї3aZr߾:#?ʼYG^rV) TL'5%w1W2*#֘NBF84u"CW~/w*_'i!r,zΏC=Gkh)=GG!w>M/GQ}Z<='!ӎw^UHr?Aǩ*ܺG|}:o!B:{x~T`c! }U,G2>sMpf&;8?c뛟Ov끟bEWU6w)ZkE+$+ Ye{1ӵtvyZ<:\޳+:ڢyu9Y~XfT:ף=—);B]Q\s]8_֔7&Qݟi5fGҜ5&i3l>pfetUsiGq+RKZO>`w5hE+ QQ_*ީ7^k1~鮗TY#׊CQM[tG qi߅X;bQ@%PKH ^ !U'3.N2]/0~:oBWmTԎ@}kép::q-88YS995^3·+nO pL{T5+7?9** ފ3J( SE!( ?s]pC C4x́ԠQkoxmJ+wT٫Ojqn=ibGA#V,?V{/rzƍpI?Zgw M Qָאw-mObYhMFNK߆AO #֤KZZ?}h34d;Gր#ɫrςF5}jpʣձTO@Zgci?^+5/]6RXұa\y9`==x^cEnAGk[ۏR Jqwy{Ĺ?*_+\uC[wJfՄ4hߚׇdE,^6?GWd)FJQqZxȎxF!lF*Yñ+;d! m~pNqju\ku 2;3Q'v4UzEOg\t^ l4h7[H+JjM"h6<=FtcDRXw9䚮ew!HQOPʇ)TXxN|G|3W-(= sW2zө0%4 %)99uE•E M;iئF(iԀn)@w@F;QyV\i)ɫbhCӶTsRcW)MQv'PD0iqI?u //ZLh Ƣnao5>?j*'ֱ9]t~e=%/5!tadW5t~+4X a?/,ssZ^R- :uw #`z›[*³l; t1jYѣ;aFMm^§N;X1!?"PxX5"Qq4{ko=hG ܚd&(@E}Ŕb=jK;%yAIKczvqޟsr!]$9洠$g_<$d{v^9jcsvk @ &))X<FҺ29 / Zd-G58C^>z}'qY#I06zYegT(t]oʼ{O4^{ŽE S^2А妼?wul3X;|GI+&k[WRzWBzvV"cw9 kX!1%9΢K7A?%-%JZZZ@%!4@}W{.,ˋ~uݬݟhk<*֢۵++:]0QfJU-xVR:=?$Օ?-WS Y$qF2qڡ}6w\=Mcw%ik>LWOc*VTJ!dq\ޝs`2=GJu)^DzoQxSl 8?k [ym2N9W%XTdgkjV_eG3?!ZHs`5VG!7]4*<{~յU_4.{=c( qS6^կvjC~FhzʜG@KTG 4sGX<?**𶫟ߑhKJ50o@=F">_JV#M./Epm`i$HQp+i+hȱƽYs;[r0?崀S\^y/!TQ9-i=\|;{w}Lei=v#+bXZg* b/{P;.S}_~6CP9n7erȣt?z O;)~ݏP /n3ޭ*]?wUt?B9ܿD7d:ydU]NNAL1O׻أP'?lO֘~f:sؠGלcj9W^Wh? b2"lfJ5 W?VF˾2}(:(%-Teb<ОZEܢҼo r34܊,ܴQ1+L2,"Yzԛ?"Ɨz_FzS/M<e[Go?V ?~0u*~T0kѯNHqzUX8P=𦱑H%m ԡZ EQO#g3;H}iWtDh:l;;)~ޫ} >h٘OPmfOUaќր(}У btҀ)}FOꊹ?\b)D"lRPh1L )8wt3TlI|zt.K1p ?ksXH# UNVZ GT.+2O$-#1?ZcNdrW+phw@~U$v>'@q|>fˢ@INA4ՇΊa 5\']ty3S1-14^ÏkKM8?N_ ir,/w7Άæz-^bWB|!riFsy@[? _hdgiYC03LyE.ayb?Q[量G\?E]v0ΟOAOVG<GӟRiiQ}70d#GzQvk Ϸ>G o?]v1Ή7?TӠh]մ| 4zh5;Wc8x{GzG}生ǠIjWx1;d=7]#[vSA4a+cA?a@O\I?/a0OoDt&IM{?;Jm ^?z}|G4)n(SG4l?U;}:_^]h;i~'!a?zV!x&aQҎy8{B?H|I:> soig5t6G=O J? c׊? BwcBzzc/O4( ӿ]!?.㾩}}Sp;!ZG!Zw2 _TໃSOF\؂8!f햹cEnRˏ _g\p;Xgm(> V!w?}}Shv0-N #J>ofߣco)ǝp~?7~A+&S1+i? Cf=+x3N?[Io_B$=u  OQU+{o? W/i? C|c=?JOC,?+%{}LG.~'(&~'+wIT-!V_7H|d?ߥo(^C?%{}'hv0? <x6{V\AdqZ/CqcImiɿ%{}7o=vc>iK4 mVdj7JFe<δ_"Gg䉿?B z>W.i8-!i\'PLO#J!F/3iZdSĊ_cl5)/xnvZ#4FgAM-n^tPYUkQ+E}e8(f3+gVaZHCO~!|`~,!>"i%ZvTNNAr*OK,1?S񎵍m#- *_5k!p#cL= iy4%#/qր.wwG4)fNh;~H=)|H aT|sE05J$Qq@-֏0z<z=h=k7iiy֗xZMVZgMN9thHַ#Sb>V?8ۅ 147COV|e4l>Mn~uX.~)dv99.%TE$ڬ N.A<Ơ[_UHğ=2lc+R~!E…EZLT~'J?\Wj@d+ޔ׾Xc/) 5k:uqm`goJeJt~ѓԫ-=kSo$Td {T4.V7??~F5/ VDZW|}Cw52˶|?'JΎkvX^n.;H?ZN(ٝԁbO s#]v՗\~o% ykA_/U{0GMc?1TY~W[\Z[NyK{]'Q^i`"\GduYNV09 ȼͦk Q³"+Sl9})>=+Ki#G3u+Z.TFV6$%'*d8,:YqmI=KsM.ucYs)X#>ari쿭4wNazwֵ'|_Хֶ\>4ÚwǍ֍V{} _;rGcriF?y7hӸ'Z} QFBFq4Xc?iGm"~b_??1\?#V?ݗ45e/ht5hA꟝pYoi?^ҋ}W_M /#ߟ,\}h\^xvzOMIeqwΗqW |;o=n?qM]^J. |;G`hr.cﶏ\/#{hr{N˸\Dc7Q\),}?QGc??_G-4YwDG_Γ\7#{h>{\Epy?U7種#sM'#|\E@ڵV݊z wUb$ws]%+@+YlԺePGS Z3N!z f¨9Ji(KI@ 搃Ji3@Ah4PE4hh341<撗43Eh٢K^ihxA4Ҁ*=Ys*UPE0՗ᑲK_7xV^j .h@t z <R?8$z^ #?"v9QiK9=uIKE0=sOY]5r_>Ǥ?uב[[!ݪ/Ҧqq!92Fxip>1A|;xS)2S$u‚8X@Enϔ=qLD=֬3dkDH}R&t1I@!18Zgn%gh '>"p血W8' nџ FTNV?Ѷ2oUd _cz~Kw^ء}* IMl88exYMMF+3UUŹ':?µ"A 5IDh9])PFrm3NEWn3ai"]iPq|Qy ZĈ~F>\?m}:G`V֦[?#[~{/G\(h9Ϥ\ I]أye`c+2wc^}AVLzޜiǚrO2 42%S?ct*H=))#Gy 1ZEۿ EO]G9{.XGymE&qzsz5SòZKNsI!؄]ێ^n#pw6~ǯ8ᔕ&U]3z4i ԂV;OH8OºSv򴍑jgPQ·9}_?'zc/kq|>5v/ :Ɯ,Ra3/Oº[3sWU6zw=ɨN1d:` ,j-VLy}kԱ4yhG@Eu[3m@9c ֊&[3 Zӆn ڮ鋙 9 =Tb nڹZ6 u M'Bp} Oy:{y:RBQe}Ϳ2j+&Q72(8~`VcE!fLnh4ƀ4RRPLMhow _߳ENp^畩O煱k4_}ʋl_x˝]bEE_ |]E(? .TخqtSM_syjx ~Igtl߲GN@p75u,'FmS=+č{UfW7qXZ&qf[7jʫNtSJ` 漫lj^SֽPk~ ,{ut$)lq֣5#uES~tIvB@p %i6]nkʯFtGd8UyE595~#E? |IַWX;Lr?u'l ?ݓh*1ckQfj6{: ,#Uީ *?Oƀ8j{z8u*JOVMV~t-u?ֻ~\K:Gwopt&jVHe><_ZtP2X`8|BwGvT|Ey-xiW".1qUuQ{H7c,\}"1^yfCbszVK$>wc,pyϽM)qtטcV>h\83]|}Oq]zPfSM$17,I>A@y/(?]g9 "3K TH,DdRxˆb|R}BrxVCOS4Za9k?Уp:\堶'io'zOC50} ? (z >jy4{kG5>=ONu1.w'z9?У{sSxxT d7&տRj?CQv@} 9Bźk'tEg9!FC ׏(3_yg;cxWI3۬3p¶ 49(}BҶ%kF1Qec7oCoRσBvM?]} ?B6?disYk ? sS>#9?M?gϟ<(3]1} 9wx~"j_š~!_f5Ow}(+]Eů>u-Է$ϻd!w?اk]5R+3ek M%']7 }?׿?kfs8TrmСɧp_w^t$ݻ`>W>"e. 3V@5<ƍIzh8z`#` q +2OP*DLW}{\kGO\5KL|ZhZވidP ۥ73oR[s{lWTXmF'WSJdV N pob{њb&ZC@ a9Ki9@ϽRҀh 1piyHe{ҋUySg֗ѓ@}i~}jh[A75S4-M3I@>Ԟy ~y7Jc ,!us\Tz֊Piө󯈩V ?z <~kF5t$'GR5FkJJZ(>o?w5_'Cws^f!~PsT桟²[Z1[rN3ЭȿtQdz6zoA\֬O=GփV~ͯ{5FΟMЎl!\V4 8pm¶"5V?}ox)&a\fkݗ'XT۷0{?YgrZX\Osb c`U61Ikj(Kim89R}k:fztI-ubѽ,D#Ҵ]cү>?*3E#)I3/imi/Lş($)IZ> 0O}OZYY) ݤ5D>E(7 : Kl>qQp2¸#ч?jbQ} 2\w?kbAHD{_xuAK=/:S֞=Qp304a:,'f:L?Z{a>a\ ?f4ε6CF}SHCε6CIfaM!W?jڍemSSZbӏZ].Vhε F}[_taOZ"7lC\ ݯUOZbI/j.QB{Q 9DY7!k< A6҇:S@'z HzR 9=m"3^O<}Cta׾D=0b2}.wKcV:x2aYiֵH{V-ɺL/?ZV;4[1VbkFi:{kO-WGi=E] gRS 5>k)lQLϽ.}1h&2}h4IfAZoZZoZ\ZL(Ԕgg4LџZ)1@ M%!R Z^{uBbh*X֑M- "5d\w%Ιc|HOcZ5#t1RSxn0Zn^lkr~'Jq+ ?BnI#:ܲrryJAη-6{WMs#cU(?0?ή~sJ i\% jǩ7ZO`EcGZ7 }:؛3ozZGŃFvT/ָc?%Z˨5{M{"?5KֽqKsaƐdt&4f oΗsg7Mߝ;s}:4hE:+|tY.W+xFUAU9 A$?ԾDq; MWak_OֶE#0"c] ZNb}H\خZ>p7Gw84:*h\̡9y&5gxuҔ+n[-(=)C,oΏ>oj @KҤO>oi<硦E?ϛzO:a- 74fgI= 6w7t曓@?7JzpO8'jD#Jq5V sMVRHUVDyIaW&lY\Tg?~xGʟe?R5ȸҧ'wƧ١20)?4j)p}}bv&ONT1Ɏ$54տ:>шrќ#p1eBO81 sLߥ#rcj+ӻWx7EM*!kjvciGҵ2XҶ}ڰh++č$VEbxƾ(ah72kW3}+u*f:F&+BYϰ(E;4֎+2Ri&4L`0џU?&>Pv;sHMH.j0irh\!\ъLњ\Sy%(z3Ek$mښ˭FV*8(J r=]}S+$4yQQv 4:_>(L+^I6x0 z9$SIgnbos"AF'ү}N6jٱf!ȏ>Յmy Q٫.~R/7Ҫ{; cTz$4:5#= A?蒃[H~SKXΘS@ʣ*dRi%pE}kF5'һ2pGXL2Jr"tZIΟfʶk GK"JóKI3RњLњ`;4f?+F+|^q Զ"C=(yɤ'ڵ$<_=Eڴ :sqN/ }YmNxd\", =jOOso<$97f}cSonT":C]skmkrSȍn< G5ڍgeq8͚ M 7S_ȩOwy |"j~1a:3AINWhTz?gK"k*GʙR|v}rMh#lc`YG^#@Φ[ ~B٦si5B_ڶsm@~l` dVt芓H85#QަpaO;9_kI{wn5*Flv~Ҍזi:Ƶ_-nW*NTo'8_mn=6뒓 Ǒj>GR 5[[]MCH3n84.5bMen82 iwhF'3^u-ֲezX29YV!֮g&O$VpZfq\j.܌T?xУ>e9y ^Ou+K+;|k ^.ŭu&WUJaVSUz"@q֚' qk{r.Hx#ʓm*85l%rXyBv:M{-RKN9^Vl8&Цao"s,b5dwiiqk65 O_׵]CHൂkDPdf8~"ZiZeag}U F/3(*OOteńm2)D7*@6L"1&ݻ2OASbEq ͦ3"e#'5CD&y'P#ji]}陮~i{s3L'_ޟI1W^Cn:¯yء[vB[/-v0y'jܲ}ɬD)6`ֺ-O}֜wtV0!dTT}PT_Vcr.'VdxKhw[x7QYv @ fq84ZuN:[zlG=f;a az}lЖH z;3\1Z%ήAoϊU((cx*@b]I3GZnњ~q@4ўf3L m'⸩ݖhTZēzdr`>HkZnĵsӏ~-}⋬tgM'J__2)SΑ^EOrqY:t?~}x+ñ%sVcc#9)K#)> Bɇm%`~dȊ(#踫iu]]zY?}嚙5KJ=95MT xu싟o?ey24fɽZ. euw5]N+ c94fQكIr?vmb0NG5f5~ڧry/lʑЌRh5fw"9h/}tJ?_Yn+T.DrV2#uQ™ vY?mSr#{e O sF};"(ZlzNq;:'su95rLo]YIXN z4P[n9?* UjCW3 "LPouj)4sH, 24Ƽ#GzgHM,Q'H=Oc?pjv jج 1"δEOtUl==bV5R+ nx΃ hϽ1O;5B繤'Bit}zV?_ @k;sՅZ* ["WLf<żJA] P!s-%҃Iњ@is@ 3Fi3@ W5@HywCS[//N9kCztej=:kKIjSm:`?icGR14эDke%-%'ɽ_H`PROQ^3]y@|މɬ1f=/xPo"apBmd˾_sj:^fzBlN՛pR8(/b?/E9TÙ/,amŰFGLpGrZg%)u_ʏfPGK(3bfkֿI*Q^~T{92;;[P]*1܊l/n5 ruߜuS i$g^I3uͺ+K3?*"˼K +w_g+.Z\٭m6Af <7Vf\O$u_I S={ QX?tr0 c=H/N&{/Kθ7.G!Ӈa\ѾOI!?${){6:␸W8:OH}QF"{'@C['G# Xz W+ _?:o[8tE_Ο#I޹oHC֯G#F!zG$QUasZME_RE_ΎF:oG _1G# Az]G_Γ(tr0o?C_Sasr?b?쿘Ψ=i\:OHNHtEPޗrE=>!?󣑅Ψ0=k>!{>Hb:t %,gl^BNI5j"WsȻxJqNUF3*z!+f_oEڵW@FJ{Vr\o:㲁]'\mڴ\Uf6U`QL jl[gB6QYhߵnj7 74gu!">M;4ZZJ3I(<(҃Ew(-%P1A)EP!E(6QhxyiQc4QCU[l( G?Ϋ(ձIE*=N+4;Hl$o`GŽ#P[[i$/4Q^}kTf((~8(ҋXIh6QuB9aa~AGtF(mt@t."yE6_xOaPtheEQv+ });g="EϢ(vmTSA )݊ȮEm D"6b)ݍw/_/(mOGX"iY( !XDXcgvB5b'#6??ʊ(q4b*iIQEB XR~ Xhyw !?ZiO֊(pxZy'BZ)EOq[¶ ~¶?Z(qYiO,?~QBHg"Y'OVxE,RS+c<\xVÏܧK9,?,!)?|<ƞ"1TQI]$XL/"??ʊ(pN^ǁQE.yw*EGbxQE>ywT/#6$gɏ?Ji͗99PYibQG4, )`Ȣ\ϸY8mS1MqQ^ Nz$[tQZȔ[~~Z(^4p˪4̪Xsڊ*>f:(f>]~܁(H^ԧ(RQE,An%Rň5cJ(FwʔَNҊ(ƭ(yڅV=1QE#libMeshb-7.80/LICENSE.txt000066400000000000000000000020751456732543400150410ustar00rootroot00000000000000MIT License Copyright (c) 2001-2024 Loïc Maréchal / INRIA Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. libMeshb-7.80/README.md000066400000000000000000000061521456732543400144750ustar00rootroot00000000000000[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ## libMeshb version 7.80 A library to handle the *.meshb file format. ## Overview The Gamma Mesh Format (*GMF*) and the associated library **libMeshb** provide programers of simulation and meshing software with an easy way to store their meshes and physical solutions. The *GMF* features more than 200 kinds of data types, like vertex, polyhedron, normal vector or vector solution field. The **libMeshb** provides a convenient way to move data between those files, via keyword tags, and the user's own structures. Transparent handling of ASCII & binary files. Transparent handling of little & big endian files. Optional ultra fast asynchronous and low level transfers. Can call user's own pre and post processing routines in a separate thread while accessing a file. ### Prerequisites for *Linux* or *macOS* - Install [CMake](https://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.msi) - A valid C99 compiler - Open a shell window ### Prerequisites for *Windows* - You first need to install [CMake](https://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.msi). Do not forget to choose "add cmake to the path for all users", from the install panel. - Then you need a valid C compiler like the free [Visual Studio Community 2019](https://www.visualstudio.com/vs/visual-studio-express/) - Open the x64 Native Tools Command Prompt for VS (or x86 if you need to build a 32-bit version) ### Build commands for all platforms - unarchive the ZIP file - `cd libMeshb-master` - `mkdir build` - `cd build` - `cmake ..` - `cmake --build . --target install` ## Usage The **libMeshb** library is written in *ANSI C*. It is made of a single C file and a header file to be compiled and linked alongside the calling program. It may be used in C and C++ programs (a partial Fortran77 API is provided). Tested on *Linux*, *macOS*, and *Windows 7->10*. Reading a mesh file is fairly easy: ("triangles.meshb" should be in version 1 with single precision floating points numbers) ```C++ int64_t LibIdx; int i, ver, dim, NmbVer, NmbTri, (*Nodes)[4], *Domains; float (*Coords)[3]; // Open the mesh file for reading LibIdx = GmfOpenMesh( "triangles.meshb", GmfRead, &ver, &dim ); // Get the number of vertices and triangles NmbVer = GmfStatKwd( LibIdx, GmfVertices ); NmbTri = GmfStatKwd( LibIdx, GmfTriangles ); // Allocate memory accordingly Nodes = malloc( NmbTri * 4 * sizeof(int) ); Coords = malloc( NmbVer * 3 * sizeof(float) ); Domains = malloc( NmbVer * sizeof(int) ); // Move the file pointer to the vertices keyword GmfGotoKwd( LibIdx, GmfVertices ); // Read each line of vertex data into your own data structures for(i=0;i #include #include #include /*----------------------------------------------------------------------------*/ /* Topologic tables */ /*----------------------------------------------------------------------------*/ int tettvpe[6][2] = { {0,1}, {1,2}, {2,0}, {3,0}, {3,1}, {3,2} }; int tettvpf[4][3] = { {1,2,3}, {2,0,3}, {3,0,1}, {0,2,1} }; int pyrtvpe[8][2] = { {0,1}, {3,2}, {0,3}, {1,2}, {0,4}, {1,4}, {2,4}, {3,4} }; int pyrtvpf[5][4] = { {0,1,4,-1}, {1,2,4,-1}, {2,3,4,-1}, {3,0,4,-1}, {3,2,1,0} }; int pritvpe[9][2] = { {0,1}, {1,2}, {2,0}, {3,4}, {4,5}, {5,3}, {0,3}, {1,4}, {2,5} }; int pritvpf[5][4] = { {3,5,2,0}, {1,2,5,4}, {0,1,4,3}, {2,1,0,-1}, {3,4,5,-1} }; int hextvpe[12][2] = { {3,2}, {0,1}, {4,5}, {7,6}, {3,7}, {2,6}, {1,5}, {0,4}, {3,0}, {7,4}, {6,5}, {2,1} }; int hextvpf[6][4] = { {3,0,4,7}, {6,5,1,2}, {3,2,1,0}, {4,5,6,7},{3,7,6,2}, {1,5,4,0} }; /*----------------------------------------------------------------------------*/ /* Transform a surface mesh into polygons and a tet mesh into polyhedra */ /*----------------------------------------------------------------------------*/ int main(int ArgCnt, char **ArgVec) { int i, j, k, ver, dim, ref, nod[8], ArgIdx = 1; int NmbVer, NmbTri, NmbQad, NmbTet, NmbPyr, NmbPri, NmbHex; int64_t InpMsh, OutMsh; float xf, yf, zf; double xd, yd, zd; char *InpNam, *OutNam; if(ArgCnt != 3) { puts("\nMESH2POLY 1.1, september 15 2021, Loic MARECHAL / INRIA\n"); puts(" Usage : mesh2poly source_name destination_name\n"); exit(0); } InpNam = ArgVec[ ArgIdx++ ]; OutNam = ArgVec[ ArgIdx++ ]; if(!strlen(InpNam)) { puts("Missing input name."); exit(1); } if(!strlen(OutNam)) { puts("Missing output name."); exit(2); } if(!strcmp(InpNam, OutNam)) { puts("The output mesh cannot overwrite the input mesh."); exit(3); } if(!(InpMsh = GmfOpenMesh(InpNam, GmfRead, &ver, &dim))) { printf("Cannot open mesh file %s.\n", InpNam); return(4); } if(!(OutMsh = GmfOpenMesh(OutNam, GmfWrite, ver, dim))) { printf("Cannot open mesh file %s.\n", OutNam); return(5); } NmbVer = (int)GmfStatKwd(InpMsh, GmfVertices); NmbTri = (int)GmfStatKwd(InpMsh, GmfTriangles); NmbQad = (int)GmfStatKwd(InpMsh, GmfQuadrilaterals); NmbTet = (int)GmfStatKwd(InpMsh, GmfTetrahedra); NmbPri = (int)GmfStatKwd(InpMsh, GmfPrisms); NmbPyr = (int)GmfStatKwd(InpMsh, GmfPyramids); NmbHex = (int)GmfStatKwd(InpMsh, GmfHexahedra); printf(" InpMsh: idx = %lld, version: %d, dimension: %d\n", InpMsh, ver, dim); // Copy all the vertices if(NmbVer) { printf(" Copying %d vertices\n", NmbVer); GmfGotoKwd(InpMsh, GmfVertices); GmfSetKwd(OutMsh, GmfVertices, NmbVer); for(i=1;i<=NmbVer;i++) { if(ver <= 1) { GmfGetLin(InpMsh, GmfVertices, &xf, &yf, &zf, &ref); GmfSetLin(OutMsh, GmfVertices, xf, yf, zf, ref); } else { GmfGetLin(InpMsh, GmfVertices, &xd, &yd, &zd, &ref); GmfSetLin(OutMsh, GmfVertices, xd, yd, zd, ref); } } } // Transform triangles and quads into boundary polygons if(NmbTri || NmbQad) { GmfSetKwd(OutMsh, GmfBoundaryPolygonHeaders, NmbTri + NmbQad); if(NmbTri) { printf(" Adding %d triangles to the polygons headers\n", NmbTri); for(i=1;i<=NmbTri;i++) GmfSetLin(OutMsh, GmfBoundaryPolygonHeaders, (i-1) * 3 + 1, ref); } if(NmbQad) { printf(" Adding %d quads to the polygons headers\n", NmbQad); for(i=1;i<=NmbQad;i++) GmfSetLin(OutMsh, GmfBoundaryPolygonHeaders, (i-1) * 4 + NmbTri * 3 + 1, ref); } GmfSetKwd(OutMsh, GmfBoundaryPolygonVertices, NmbTri * 3 + NmbQad * 4); if(NmbTri) { printf(" Adding %d triangles to the polygons faces\n", NmbTri); GmfGotoKwd(InpMsh, GmfTriangles); for(i=1;i<=NmbTri;i++) { GmfGetLin(InpMsh, GmfTriangles, &nod[0], &nod[1], &nod[2], &ref); for(j=0;j<3;j++) GmfSetLin(OutMsh, GmfBoundaryPolygonVertices, nod[j]); } } if(NmbQad) { printf(" Adding %d quads to the polygons faces\n", NmbQad); GmfGotoKwd(InpMsh, GmfQuadrilaterals); for(i=1;i<=NmbQad;i++) { GmfGetLin(InpMsh, GmfQuadrilaterals, &nod[0], &nod[1], &nod[2], &nod[3], &ref); for(j=0;j<4;j++) GmfSetLin(OutMsh, GmfBoundaryPolygonVertices, nod[j]); } } } // Transform tets into inner polygons and polyhedra if(NmbTet) { GmfSetKwd(OutMsh, GmfInnerPolygonHeaders, 4 * NmbTet); if(NmbTet) { printf(" Adding %d tet's faces to the polygons headers\n", 4 * NmbTet); for(i=0;i #include #include #include int main(int argc, char **argv) { int i, NmbBytes, ver, dim; char *cad, *InpNam; int64_t InpMsh; // Print usage and exit if(argc == 1) { puts("\nUSAGE:"); puts(" read_egads cad_file.meshb\n"); exit(0); } // Get the file name InpNam = *++argv; // Open the mesh file for reading if(!(InpMsh = GmfOpenMesh(InpNam, GmfRead, &ver, &dim))) return(1); // Read the egads tree stored as a raw byte flow cad = GmfReadByteFlow(InpMsh, &NmbBytes); // Print the byte flow printf("NmbBytes = %d\n", NmbBytes); for(i=0;i #include #include int main() { int i, NmbVer, NmbQad, ver, dim, *RefTab, (*QadTab)[5]; long long InpMsh, OutMsh; double (*VerTab)[3]; /*-----------------------------------*/ /* Open mesh file "quad.meshb" */ /*-----------------------------------*/ if(!(InpMsh = GmfOpenMesh("../sample_meshes/quad.mesh", GmfRead, &ver, &dim))) return(1); printf("InpMsh: idx = %lld, version = %d, dimension = %d\n", InpMsh, ver, dim); if( (ver != 2) || (dim != 3) ) exit(1); // Read the number of vertices and allocate memory NmbVer = (int)GmfStatKwd(InpMsh, GmfVertices); printf("InpMsh: nmb vertices = %d\n", NmbVer); VerTab = malloc((NmbVer+1) * 3 * sizeof(double)); RefTab = malloc((NmbVer+1) * sizeof(int)); // Read the number of quads and allocate memory NmbQad = (int)GmfStatKwd(InpMsh, GmfQuadrilaterals); printf("InpMsh: nmb quads = %d\n", NmbQad); QadTab = malloc((NmbQad+1) * 5 * sizeof(int)); // Read the vertices GmfGotoKwd(InpMsh, GmfVertices); for(i=1;i<=NmbVer;i++) GmfGetLin( InpMsh, GmfVertices, &VerTab[i][0], &VerTab[i][1], &VerTab[i][2], &RefTab[i] ); // Read the quads GmfGotoKwd(InpMsh, GmfQuadrilaterals); for(i=1;i<=NmbQad;i++) GmfGetLin( InpMsh, GmfQuadrilaterals, &QadTab[i][0], &QadTab[i][1], &QadTab[i][2], &QadTab[i][3], &QadTab[i][4] ); // Close the quad mesh GmfCloseMesh(InpMsh); /*-----------------------------------*/ /* Write the triangle mesh */ /*-----------------------------------*/ if(!(OutMsh = GmfOpenMesh("tri.mesh", GmfWrite, ver, dim))) return(1); // Write the vertices GmfSetKwd(OutMsh, GmfVertices, NmbVer); for(i=1;i<=NmbVer;i++) GmfSetLin( OutMsh, GmfVertices, VerTab[i][0], VerTab[i][1], VerTab[i][2], RefTab[i] ); // Write the triangles GmfSetKwd(OutMsh, GmfTriangles, 2*NmbQad); // Split each quad into two triangles on the fly for(i=1;i<=NmbQad;i++) { GmfSetLin( OutMsh, GmfTriangles, QadTab[i][0], QadTab[i][1], QadTab[i][2], QadTab[i][4] ); GmfSetLin( OutMsh, GmfTriangles, QadTab[i][0], QadTab[i][2], QadTab[i][3], QadTab[i][4] ); } // Do not forget to close the mesh file GmfCloseMesh(OutMsh); printf("OutMsh: nmb triangles = %d\n", 2 * NmbQad); free(QadTab); free(RefTab); free(VerTab); return(0); } libMeshb-7.80/examples/test_libmeshb.f000066400000000000000000000071561456732543400200340ustar00rootroot00000000000000 c libMeshb 7.79 basic example: c read a quad mesh, split it into triangles and write the result back c write an associated dummy .sol file containing some data include 'libmeshb7.ins' integer n parameter (n=4000) integer i,NmbVer,NmbQad,ver,dim,res,RefTab(n),QadTab(5,n),kwd integer t(10),d,ho,s,dummyint(1),dummyref integer*8 InpMsh, OutMsh real*8 VerTab(3,n), sol(10), dummyreal(1) c -------------------------------------------- c Open the quadrilateral mesh file for reading c -------------------------------------------- c Open the mesh file and check the version and dimension InpMsh = gmfopenmeshf77('../sample_meshes/quad.mesh', +GmfRead,ver,dim) print*, 'input mesh :', InpMsh,'version:',ver,'dim:',dim if(InpMsh.eq.0) STOP ' InpMsh = 0' if(ver.le.1) STOP ' version <= 1' if(dim.ne.3) STOP ' dimension <> 3' c Check memory bounds NmbVer = gmfstatkwdf77(InpMsh, GmfVertices, 0, s, t, d, ho) if(NmbVer.gt.n) STOP 'Too many vertices' NmbQad = gmfstatkwdf77(InpMsh, GmfQuadrilaterals, 0, s, t, d, ho) if(NmbQad.gt.n) STOP 'Too many quads' print*, 'input mesh : ',NmbVer,' vertices,',NmbQad,'quads' c Read the vertices res = gmfgotokwdf77(InpMsh, GmfVertices) do i = 1, NmbVer res = gmfgetlinef77(InpMsh, GmfVertices, dummyint(1), +VerTab(1,i), RefTab(i)) end do c Read the quads res = gmfgotokwdf77(InpMsh, GmfQuadrilaterals) do i = 1, NmbQad res =gmfgetlinef77(InpMsh, GmfQuadrilaterals, + QadTab(1,i), dummyreal(1), QadTab(5,i)) end do c Close the quadrilateral mesh res = gmfclosemeshf77(InpMsh) c ------------------------ c Create a triangular mesh c ------------------------ OutMsh = gmfopenmeshf77('tri.mesh', GmfWrite, 2, 3) if(OutMsh.eq.0) STOP ' OutMsh = 0' print*, 'output IDX: ',OutMsh c Set the number of vertices res = gmfsetkwdf77(OutMsh, GmfVertices, NmbVer, 0, t, 0, ho) c Then write them down do i = 1, NmbVer res = gmfsetlinef77(OutMsh, GmfVertices, dummyint, +VerTab(1,i), RefTab(i)) end do c Write the triangles res = gmfsetkwdf77(OutMsh, GmfTriangles, 2*NmbQad, 0, t, 0, ho) do i=1,NmbQad res = gmfsetlinef77(OutMsh, GmfTriangles, + QadTab(1,i), dummyreal, QadTab(5,i)) c Modify the quad to build the other triangle's diagonal QadTab(2,i) = QadTab(3,i); QadTab(3,i) = QadTab(4,i); res = gmfsetlinef77(OutMsh, GmfTriangles, + QadTab(1,i), dummyreal, QadTab(5,i)) end do c Don't forget to close the file res = gmfclosemeshf77(OutMsh) print*, 'output mesh: ',NmbVer,' vertices,', + 2*NmbQad,'triangles' c ---------------------- c Create a solution file c ---------------------- OutMsh = gmfopenmeshf77('tri.sol', GmfWrite, 2, 3) if(OutMsh.eq.0) STOP ' OutMsh = 0' print*, 'output IDX: ',OutMsh c Set the solution kinds t(1) = GmfSca; t(2) = GmfVec; t(3) = GmfSca; c Set the number of solutions (one per vertex) res = gmfsetkwdf77(OutMsh, GmfSolAtVertices, NmbVer, 3, t, 0, ho) c Write the dummy solution fields do i = 1, NmbVer sol(1) = i sol(2) = i*2 sol(3) = i*3 sol(4) = i*4 sol(5) = -i res = gmfsetlinef77(OutMsh, GmfSolAtVertices, +dummyint, sol, dummyref) end do c Don't forget to close the file res = gmfclosemeshf77(OutMsh) print*, 'output sol: ',NmbVer,' solutions' end libMeshb-7.80/examples/test_libmeshb.f90000066400000000000000000000146161456732543400202040ustar00rootroot00000000000000! libMeshb 7.79 basic example: ! read a quad mesh, split it into triangles and write the result back ! write an associated dummy .sol file containing some data !> A FAIRE ajouter time !> A FAIRE ajouter iteration !> A FAIRE ajouter nom des champs program test_libmeshb_f90 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> use iso_fortran_env use iso_c_binding, only: C_NULL_CHAR use libmeshb7 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> implicit none integer(int64) :: InpMsh, OutMsh, OutSol character(80) :: InpFile character(80) :: OutFile character(80) :: SolFile integer(int32) :: i integer(int32) :: NmbVer,NmbQad,NmbTri,ver,dim,res,kwd integer(int32) :: NmbField,ho,s,d integer(int32), pointer :: fields(:) character(32) , pointer :: fieldsName(:)=>null() real(real64) , pointer :: sol(:) real(real64) , pointer :: VerTab(:,:) integer(int32), pointer :: VerRef( :) integer(int32), pointer :: QadTab(:,:) integer(int32), pointer :: QadRef( :) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> print '(/"test_libmeshb_f90")' !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> InpFile='../sample_meshes/quad.mesh' OutFile='./tri.mesh' SolFile='./tri.sol' !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Open the quadrilateral mesh file for reading print '(/"Input Mesh Open : ",a )',trim(InpFile) InpMsh=GmfOpenMeshF90(name=trim(InpFile),GmfKey=GmfRead,ver=ver,dim=dim) print '( "Input Mesh Idx : ",i0)',InpMsh print '( "Input Mesh ver : ",i0)',ver print '( "Input Mesh dim : ",i0)',dim if( InpMsh==0 ) stop ' InpMsh = 0' if( ver<=1 ) stop ' version <= 1' if( dim/=3 ) stop ' dimension <> 3' ! Read the vertices NmbVer = GmfstatkwdF90(unit=InpMsh, GmfKey=GmfVertices) print '( "Input Mesh NmbVer : ",i0)', NmbVer allocate(VerTab(1:3,1:NmbVer)) allocate(VerRef( 1:NmbVer)) res=GmfGotoKwdF90(unit=InpMsh, GmfKey=GmfVertices) do i=1,NmbVer res=GmfGetLineF90(unit=InpMsh, GmfKey=GmfVertices, Tab=VerTab(:,i), Ref=VerRef(i)) end do ! Read the quads NmbQad = GmfstatkwdF90(unit=InpMsh, GmfKey=GmfQuadrilaterals) print '( "Input Mesh NmbQad : ",i0)', NmbQad allocate(QadTab(1:4,1:NmbQad)) allocate(QadRef( 1:NmbQad)) res=GmfgotokwdF90(unit=InpMsh, GmfKey=GmfQuadrilaterals) do i=1,NmbQad res=GmfGetLineF90(unit=InpMsh, GmfKey=GmfQuadrilaterals, Tab=QadTab(:,i), Ref=QadRef(i)) enddo ! Close the quadrilateral mesh res=GmfCloseMeshF90(unit=InpMsh) print '("Input Mesh Close : ",a)',trim(InpFile) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Create a triangular mesh NmbTri=2*NmbQad print '(/"Output Mesh Open : ",a )',trim(OutFile) OutMsh=GmfOpenMeshF90(name=trim(OutFile),GmfKey=GmfWrite,ver=ver,dim=dim) print '( "Output Mesh Idx : ",i0)',InpMsh print '( "Output Mesh ver : ",i0)',ver print '( "Output Mesh dim : ",i0)',dim if( OutMsh==0 ) STOP ' OutMsh = 0' ! Set the number of vertices res=GmfSetKwdF90(unit=OutMsh, GmfKey=GmfVertices, Nmb=NmbVer) print '( "Output Mesh NmbVer : ",i0)', NmbVer ! Then write them down do i=1,NmbVer res=GmfSetLineF90(unit=OutMsh, GmfKey=GmfVertices, Tab=VerTab(:,i), Ref=VerRef(i)) end do ! Write the triangles res=GmfSetKwdF90(unit=OutMsh, GmfKey=GmfTriangles, Nmb=NmbTri) print '( "Output Mesh NmbTri : ",i0)', NmbTri do i=1,NmbQad res=GmfSetLineF90(unit=OutMsh, GmfKey=GmfTriangles, Tab=QadTab(1:3,i), Ref=QadRef(i)) ! Modify the quad to build the other triangle's diagonal QadTab(2,i) = QadTab(3,i) QadTab(3,i) = QadTab(4,i) res=GmfSetLineF90(unit=OutMsh, GmfKey=GmfTriangles, Tab=QadTab(1:3,i), Ref=QadRef(i)) end do ! Don't forget to close the file res=GmfCloseMeshF90(unit=OutMsh) print '("Output Mesh Close : ",a)',trim(OutFile) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Create a solution file print '(/"Output Solu Open : ",a )',trim(SolFile) OutSol=GmfOpenMeshF90(name=trim(SolFile),GmfKey=GmfWrite,ver=ver,dim=dim) print '( "Output Solu Idx : ",i0)',OutSol print '( "Output Solu ver : ",i0)',ver print '( "Output Solu dim : ",i0)',dim if( OutSol==0 ) STOP ' OutSol = 0' ! Set the solution kinds NmbField=3 allocate( fields (1:NmbField)) allocate( fieldsName(1:NmbField)) fields(1:NmbField) = [GmfSca,GmfVec,GmfSca] fieldsName(1:NmbField)=['sca_1','vec_1','sca_2'] !nomDesChamps : block ! integer :: iField,nChar ! character(:), pointer :: fieldName=>null() ! res=GmfSetKwdF90(unit=OutSol, GmfKey=GmfReferenceStrings, Nmb=NmbField) ! do iField=1,NmbField ! nChar=len_trim(fieldsName(iField)) ! print '("nChar: ",i0)',nChar ! allocate(character(len=nChar+3) :: fieldName) ! write(fieldName,'(a,1x,i0,a)')trim(fieldsName(iField)),iField,C_NULL_CHAR ! print '("fieldName: ",a)',fieldName ! ! !ress=GmfSetLin(unit=OutSol, GmfKey=GmfReferenceStrings, GmfSolAtVertices, 1, fieldName) ! ! deallocate(fieldName) ! enddo !end block nomDesChamps allocate(sol(1:5)) ! 1+ dim+ 1 print '( "Output Solu NmbVer : ",i0)',NmbVer print '( "Output Solu nFields : ",i0)',NmbField print '( "Output Solu fields : ", *(i0,1x))',fields(1:NmbField) ! Set the number of solutions (one per vertex) res=GmfSetKwdF90(unit=OutSol, GmfKey=GmfSolAtVertices, Nmb=NmbVer, d=NmbField, t=fields(1:NmbField), s=0, ho=ho) ! Write the dummy solution fields do i=1,NmbVer sol( 1)=VerTab(1,i) sol(2:4)=[VerTab(1,i),VerTab(2,i),0d0] sol( 5)=VerTab(2,i) res=GmfSetLineF90(unit=OutMsh, GmfKey=GmfSolAtVertices, dTab=sol(:)) enddo ! Don't forget to close the file res=GmfCloseMeshF90(unit=OutSol) print '("Output Solu Close : ",a)',trim(SolFile) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> Cleanning Memory deallocate(VerTab,VerRef) deallocate(QadTab,QadRef) deallocate(fields,fieldsName,sol) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> User Control print '(/"Control:"/"vizir4 -in ",a," -sol ",a/)',trim(OutFile),trim(SolFile) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end program test_libmeshb_f90 libMeshb-7.80/examples/test_libmeshb_HO.c000066400000000000000000000110701456732543400204050ustar00rootroot00000000000000 // libMeshb 7 basic example: // read a Q2 quad mesh while using the automatic HO reordering feature, // split it into P2 triangles and write the result back using fast block transfer #include #include #include #ifdef PRINTF_INT64_MODIFIER #define INT64_T_FMT "%" PRINTF_INT64_MODIFIER "d" #else # ifdef GMF_WINDOWS # define INT64_T_FMT "%Id" # else # include # define INT64_T_FMT "%" PRId64 # endif #endif int main() { int i, NmbVer, NmbQad, ver, dim, *RefTab, (*QadTab)[10], (*TriTab)[7]; int BasOrd[9][2] = { {0,0}, {1,0}, {2,0}, {0,1}, {1,1}, {2,1}, {0,2}, {1,2}, {2,2} }; int FilOrd[9][2]; int64_t InpMsh, OutMsh; float (*VerTab)[3]; /*-----------------------------------*/ /* Open mesh file "quad_q2.meshb" */ /*-----------------------------------*/ if(!(InpMsh = GmfOpenMesh("../sample_meshes/quad_q2.meshb", GmfRead, &ver, &dim))) return(1); printf("InpMsh : idx = "INT64_T_FMT", version = %d, dimension = %d\n", InpMsh, ver, dim); if(dim != 3) exit(1); // Read the number of vertices and allocate memory NmbVer = (int)GmfStatKwd(InpMsh, GmfVertices); printf("InpMsh : nmb vertices = %d\n", NmbVer); VerTab = malloc((NmbVer+1) * 3 * sizeof(float)); RefTab = malloc((NmbVer+1) * sizeof(int)); // Read the number of Q2 quads and allocate memory NmbQad = (int)GmfStatKwd(InpMsh, GmfQuadrilateralsQ2); printf("InpMsh : nmb Q2 quads = %d\n", NmbQad); QadTab = malloc((NmbQad+1) * 10 * sizeof(int)); TriTab = malloc((NmbQad+1) * 2 * 7 * sizeof(int)); // Read the optional Q2 quad node ordering information and pass it // to the library along our internal coding to automatically reorder the nodes if(GmfStatKwd(InpMsh, GmfQuadrilateralsQ2Ordering)) { GmfGetBlock(InpMsh, GmfQuadrilateralsQ2Ordering, 1, 9, 0, NULL, NULL, GmfIntTab, 9, FilOrd[0], FilOrd[8]); GmfSetHONodesOrdering(InpMsh, GmfQuadrilateralsQ2, (int *)BasOrd, (int *)FilOrd); } /* for(i=0;i<9;i++){ printf ("i=%d BasOrd: i=%d j=%d - FilOrd: i=%d j=%d \n", i+1,BasOrd[i][0],BasOrd[i][1], FilOrd[i][0],FilOrd[i][1]); } */ // Read the vertices GmfGetBlock(InpMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfFloat, &VerTab[1][0], &VerTab[ NmbVer ][0], GmfFloat, &VerTab[1][1], &VerTab[ NmbVer ][1], GmfFloat, &VerTab[1][2], &VerTab[ NmbVer ][2], GmfInt, &RefTab[1], &RefTab[ NmbVer ] ); // Read the Q2 quads GmfGetBlock(InpMsh, GmfQuadrilateralsQ2, 1, NmbQad, 0, NULL, NULL, GmfIntTab, 10, QadTab[1], QadTab[ NmbQad ]); /* i=1; printf ("Quad1 %d %d %d %d %d %d %d %d %d\n", QadTab[i][0], QadTab[i][1], QadTab[i][2], QadTab[i][3], QadTab[i][4], QadTab[i][5], QadTab[i][6], QadTab[i][7], QadTab[i][8]); */ // Close the quad mesh GmfCloseMesh(InpMsh); /*-----------------------------------*/ /* Create the triangulated P2 mesh */ /*-----------------------------------*/ for(i=1;i<=NmbQad;i++) { TriTab[i*2-1][0] = QadTab[i][0]; TriTab[i*2-1][1] = QadTab[i][2]; TriTab[i*2-1][2] = QadTab[i][8]; TriTab[i*2-1][3] = QadTab[i][1]; TriTab[i*2-1][4] = QadTab[i][5]; TriTab[i*2-1][5] = QadTab[i][4]; TriTab[i*2-1][6] = QadTab[i][9]; TriTab[i*2][0] = QadTab[i][0]; TriTab[i*2][1] = QadTab[i][8]; TriTab[i*2][2] = QadTab[i][6]; TriTab[i*2][3] = QadTab[i][4]; TriTab[i*2][4] = QadTab[i][7]; TriTab[i*2][5] = QadTab[i][3]; TriTab[i*2][6] = QadTab[i][9]; } /*-----------------------------------*/ /* Write the P2 triangle mesh */ /*-----------------------------------*/ if(!(OutMsh = GmfOpenMesh("tri_p2.meshb", GmfWrite, ver, dim))) return(1); // Write the vertices GmfSetKwd(OutMsh, GmfVertices, NmbVer); GmfSetBlock(OutMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfFloat, &VerTab[1][0], &VerTab[ NmbVer ][0], GmfFloat, &VerTab[1][1], &VerTab[ NmbVer ][1], GmfFloat, &VerTab[1][2], &VerTab[ NmbVer ][2], GmfInt, &RefTab[1], &RefTab[ NmbVer ] ); // Write the triangles GmfSetKwd(OutMsh, GmfTrianglesP2, 2*NmbQad); GmfSetBlock(OutMsh, GmfTrianglesP2, 1, 2*NmbQad, 0, NULL, NULL, GmfIntTab, 7, TriTab[1], TriTab[ 2*NmbQad ]); // Do not forget to close the mesh file GmfCloseMesh(OutMsh); printf("OutMsh : nmb triangles = %d\n", 2*NmbQad); free(QadTab); free(TriTab); free(RefTab); free(VerTab); return(0); } libMeshb-7.80/examples/test_libmeshb_HO.f90000066400000000000000000000172221456732543400205660ustar00rootroot00000000000000! libMeshb 7 basic example: ! read a Q2 quad mesh while using the automatic HO reordering feature, ! split it into P2 triangles and write the result back using fast block transfer program test_libmeshb_HO_f90 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> use iso_fortran_env use libmeshb7 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> implicit none integer(int64) :: InpMsh, OutMsh, m(1) character(80) :: InpFile character(80) :: OutFile character(80) :: SolFile integer(int32) :: i,iTria integer(int32) :: GmfCell,GmfOrd integer(int32) :: NmbVer,NmbQad,NmbTri,ver,dim,res real(real64) , pointer :: VerTab(:,:) integer(int32), pointer :: VerRef( :) integer(int32), pointer :: QadTab(:,:),QadRef( :) integer(int32), pointer :: TriTab(:,:),TriRef( :) integer(int32) :: t(1),d,ho,s !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> print '(/"test_libmeshb_HO_f90")' !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> InpFile='../sample_meshes/quad_q2.mesh' OutFile='./tri_p2.mesh' SolFile='./tri_p2.sol' !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Open the quadrilateral mesh file for reading print '(/"Input Mesh File : ",a )',trim(InpFile) ! Open the mesh file and check the version and dimension InpMsh=GmfOpenMeshF90(name=trim(InpFile),GmfKey=GmfRead,ver=ver,dim=dim) print '( "Input Mesh Idx : ",i0)',InpMsh print '( "Input Mesh ver : ",i0)',ver print '( "Input Mesh dim : ",i0)',dim if( InpMsh==0 ) stop ' InpMsh = 0' if( ver<=1 ) stop ' version <= 1' if( dim/=3 ) stop ' dimension <> 3' ! Read the vertices using a vector of 3 consecutive doubles to store the coordinates NmbVer = GmfstatkwdF90(unit=InpMsh, GmfKey=GmfVertices) print '( "Input Mesh NmbVer: ",i0)', NmbVer allocate(VerTab(1:3,1:NmbVer)) allocate(VerRef( 1:NmbVer)) res=GmfGetBlockF90( & & unit=InpMsh ,& & GmfKey=GmfVertices ,& & ad0=1 ,& & ad1=NmbVer ,& & Tab=VerTab(:,1:NmbVer) ,& & Ref=VerRef( 1:NmbVer) ) do i=1,10 print '(3x,"ver",i6," xyz:",3(f12.5,1x)," ref: ",i0)',i,VerTab(1:3,i),VerRef(i) enddo ! Read GmfQuadrilateralsQ2 GmfCell=GmfQuadrilateralsQ2 ! <= GmfOrd =GmfQuadrilateralsQ2Ordering ! <= NmbQad=GmfstatkwdF90(unit=InpMsh,GmfKey=GmfCell) print '( "Input Mesh NmbQad: ",i0)', NmbQad allocate(QadTab(1:9,1:NmbQad)) allocate(QadRef( 1:NmbQad)) if( .not. GmfstatkwdF90(unit=InpMsh,GmfKey=GmfOrd)==0 )then print '("Input Mesh Reordering HO Nodes")' block integer :: BasTab(1:2,1:9) integer :: OrdTab(1:2,1:9) integer :: ord integer :: nNode !> 04 07 03 !> 08 09 06 !> 01 05 02 BasTab(1:2,01)=[0,0] BasTab(1:2,02)=[2,0] BasTab(1:2,03)=[2,2] BasTab(1:2,04)=[0,2] BasTab(1:2,05)=[1,0] BasTab(1:2,06)=[2,1] BasTab(1:2,07)=[1,2] BasTab(1:2,08)=[0,1] BasTab(1:2,09)=[1,1] print '("Input Mesh Requested Order")' do i=1,size(BasTab,2) print '(3x,"uv(",i2.2,")=",2(i2,1x))',i,BasTab(1:2,i) enddo !> Q2 -> ord=2 ord=2 nNode=(ord+1)*(ord+1) ! <= res=GmfGetBlockF90( & & unit=InpMsh ,& & GmfKey=GmfOrd ,& & ad0=1 ,& & ad1=nNode ,& & Tab=OrdTab(:,1:nNode) ) print '("Input Mesh Order")' do i=1,size(OrdTab,2) print '(3x,"uv(",i2.2,")=",2(i2,1x))',i,OrdTab(1:2,i) enddo res=GmfSetHONodesOrderingF90(unit=InpMsh,GmfKey=GmfCell,BasTab=BasTab,OrdTab=OrdTab) end block endif ! Read the quads using one single vector of 5 consecutive integers res=GmfGetBlockF90( & & unit=InpMsh ,& & GmfKey=GmfQuadrilateralsQ2,& & ad0=1 ,& & ad1=NmbQad ,& & Tab=QadTab(:,1:) ,& & Ref=QadRef( 1:) ) ! Close the quadrilateral mesh print '("Input Mesh Close : ",a)',trim(InpFile) print '("Input Mesh")' do i=1,10 !NmbQad print '(3x,"qad",i6," nd:",9(i6,1x)," ref: ",i0)',i,QadTab(1:9,i),QadRef(i) enddo !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Convert the quad Q2 mesh into a triangular P2 one ! Allocate TriTab and TriRef NmbTri=2*NmbQad allocate(TriTab(1:6,1:NmbTri)) allocate(TriRef( 1:NmbTri)) !> 04 07 03 03 04 07 03 !> 08 09 06 => 09 06 + 08 09 !> 01 05 02 01 05 02 01 !> 03 !> 06 05 !> 01 04 02 do i=1,NmbQad iTria=2*i-1 TriTab(1,iTria) = QadTab(1,i) TriTab(2,iTria) = QadTab(2,i) TriTab(3,iTria) = QadTab(3,i) TriTab(4,iTria) = QadTab(5,i) TriTab(5,iTria) = QadTab(6,i) TriTab(6,iTria) = QadTab(9,i) TriRef( iTria) = QadRef( i) iTria=2*i TriTab(1,iTria) = QadTab(1,i) TriTab(2,iTria) = QadTab(3,i) TriTab(3,iTria) = QadTab(4,i) TriTab(4,iTria) = QadTab(9,i) TriTab(5,iTria) = QadTab(7,i) TriTab(6,iTria) = QadTab(8,i) TriRef( iTria) = QadRef( i) enddo !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Write a triangular mesh print '(/"Output Mesh File : ",a )',trim(OutFile) print '("Output Mesh")' do i=1,10 print '(3x,"tri",i6," nd:",6(i6,1x)," ref: ",i0)',i,TriTab(1:6,i),TriRef(i) enddo ! Open the mesh file and check the version and dimension OutMsh=GmfOpenMeshF90(name=trim(OutFile),GmfKey=GmfWrite,ver=ver,dim=dim) print '( "Output Mesh Idx : ",i0)',InpMsh print '( "Output Mesh ver : ",i0)',ver print '( "Output Mesh dim : ",i0)',dim if( OutMsh==0 ) STOP ' OutMsh = 0' ! Set the number of vertices res=GmfSetKwdF90(unit=OutMsh, GmfKey=GmfVertices, Nmb=NmbVer) print '( "Output Mesh NmbVer: ",i0)', NmbVer ! Write them down using separate pointers for each scalar entry res=GmfSetBlockF90( & & unit=OutMsh ,& & GmfKey=GmfVertices ,& & ad0=1 ,& & ad1=NmbVer ,& & Tab=VerTab(:,1:NmbVer),& & Ref=VerRef( 1:NmbVer) ) ! Write the triangles using 4 independant set of arguments ! for each scalar entry: node1, node2, node3 and reference res=GmfSetKwdF90(unit=OutMsh, GmfKey=GmfTrianglesP2, Nmb=NmbTri) print '( "Output Mesh NmbTri: ",i0)', NmbTri res=GmfSetBlockF90( & & unit=OutMsh ,& & GmfKey=GmfTrianglesP2 ,& & ad0=1 ,& & ad1=NmbTri ,& & Tab=TriTab(:,1:NmbTri),& & Ref=TriRef( 1:NmbVer) ) ! Don't forget to close the file res=GmfCloseMeshF90(unit=OutMsh) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> Cleanning Memory deallocate(VerTab,VerRef) deallocate(QadTab,QadRef) deallocate(TriTab,TriRef) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> print '(/"control:"/"vizir4 -in ",a/)',trim(OutFile) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end program test_libmeshb_HO_f90 libMeshb-7.80/examples/test_libmeshb_block.c000066400000000000000000000120271456732543400211740ustar00rootroot00000000000000 // libMeshb 7.5 basic example: read a quad mesh, split it into triangles // and write the result back using fast block transfer #include #include #include #ifdef PRINTF_INT64_MODIFIER #define INT64_T_FMT "%" PRINTF_INT64_MODIFIER "d" #else # ifdef GMF_WINDOWS # define INT64_T_FMT "%Id" # else # include # define INT64_T_FMT "%" PRId64 # endif #endif int main() { int i, NmbVer, NmbQad, ver, dim, *RefTab, (*QadTab)[5], (*TriTab)[4]; //int TypTab[ GmfMaxTyp ], SizTab[ GmfMaxTyp ]; //void *BegTab[ GmfMaxTyp ], *EndTab[ GmfMaxTyp ]; int64_t InpMsh, OutMsh; float (*VerTab)[3]; /*-----------------------------------*/ /* Open mesh file "quad.meshb" */ /*-----------------------------------*/ if(!(InpMsh = GmfOpenMesh("../sample_meshes/quad.meshb", GmfRead, &ver, &dim))) return(1); printf("InpMsh : idx = "INT64_T_FMT", version = %d, dimension = %d\n", InpMsh, ver, dim); if(dim != 3) exit(1); // Read the number of vertices and allocate memory NmbVer = (int)GmfStatKwd(InpMsh, GmfVertices); printf("InpMsh : nmb vertices = %d\n", NmbVer); VerTab = malloc((NmbVer+1) * 3 * sizeof(float)); RefTab = malloc((NmbVer+1) * sizeof(int)); // Read the number of quads and allocate memory NmbQad = (int)GmfStatKwd(InpMsh, GmfQuadrilaterals); printf("InpMsh : nmb quads = %d\n", NmbQad); QadTab = malloc((NmbQad+1) * 5 * sizeof(int)); TriTab = malloc((NmbQad+1) * 2 * 4 * sizeof(int)); // Read the vertices: choose one of the four available methods // First method: argument list with scalar pointers GmfGetBlock(InpMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfFloat, &VerTab[1][0], &VerTab[ NmbVer ][0], GmfFloat, &VerTab[1][1], &VerTab[ NmbVer ][1], GmfFloat, &VerTab[1][2], &VerTab[ NmbVer ][2], GmfInt, &RefTab[1], &RefTab[ NmbVer ] ); // 2nd method: argument list with vector pointers /*GmfGetBlock(InpMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfFloatVec, 3, &VerTab[1][0], &VerTab[ NmbVer ][0], GmfInt, &RefTab[1], &RefTab[ NmbVer ] );*/ // 3rd method: argument table with scalar pointers /*TypTab[0] = GmfFloat; BegTab[0] = (void *)&VerTab[ 1 ][0]; EndTab[0] = (void *)&VerTab[ NmbVer ][0]; TypTab[1] = GmfFloat; BegTab[1] = (void *)&VerTab[ 1 ][1]; EndTab[1] = (void *)&VerTab[ NmbVer ][1]; TypTab[2] = GmfFloat; BegTab[2] = (void *)&VerTab[ 1 ][2]; EndTab[2] = (void *)&VerTab[ NmbVer ][2]; TypTab[3] = GmfInt; BegTab[3] = (void *)&RefTab[ 1 ]; EndTab[3] = (void *)&RefTab[ NmbVer ]; GmfGetBlock(InpMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfArgTab, TypTab, SizTab, BegTab, EndTab );*/ // 4th method: argument table with vector pointers /*TypTab[0] = GmfFloatVec; SizTab[0] = 3; BegTab[0] = (void *)&VerTab[ 1 ][0]; EndTab[0] = (void *)&VerTab[ NmbVer ][0]; TypTab[1] = GmfInt; BegTab[1] = (void *)&RefTab[ 1 ]; EndTab[1] = (void *)&RefTab[ NmbVer ]; GmfGetBlock(InpMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfArgTab, TypTab, SizTab, BegTab, EndTab );*/ // Read the quads GmfGetBlock(InpMsh, GmfQuadrilaterals, 1, NmbQad, 0, NULL, NULL, GmfIntVec, 5, &QadTab[1][0], &QadTab[ NmbQad ][0]); // Close the quad mesh GmfCloseMesh(InpMsh); /*-----------------------------------*/ /* Create the triangluated mesh */ /*-----------------------------------*/ for(i=1;i<=NmbQad;i++) { TriTab[i*2-1][0] = QadTab[i][0]; TriTab[i*2-1][1] = QadTab[i][1]; TriTab[i*2-1][2] = QadTab[i][2]; TriTab[i*2-1][3] = QadTab[i][4]; TriTab[i*2][0] = QadTab[i][0]; TriTab[i*2][1] = QadTab[i][2]; TriTab[i*2][2] = QadTab[i][3]; TriTab[i*2][3] = QadTab[i][4]; } /*-----------------------------------*/ /* Write the triangle mesh */ /*-----------------------------------*/ if(!(OutMsh = GmfOpenMesh("tri.meshb", GmfWrite, ver, dim))) return(1); // Write the vertices GmfSetKwd(OutMsh, GmfVertices, NmbVer); GmfSetBlock(OutMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfFloat, &VerTab[1][0], &VerTab[ NmbVer ][0], GmfFloat, &VerTab[1][1], &VerTab[ NmbVer ][1], GmfFloat, &VerTab[1][2], &VerTab[ NmbVer ][2], GmfInt, &RefTab[1], &RefTab[ NmbVer ] ); // Write the triangles GmfSetKwd(OutMsh, GmfTriangles, 2*NmbQad); GmfSetBlock(OutMsh, GmfTriangles, 1, 2*NmbQad, 0, NULL, NULL, GmfInt, &TriTab[1][0], &TriTab[ 2*NmbQad ][0], GmfInt, &TriTab[1][1], &TriTab[ 2*NmbQad ][1], GmfInt, &TriTab[1][2], &TriTab[ 2*NmbQad ][2], GmfInt, &TriTab[1][3], &TriTab[ 2*NmbQad ][3] ); // Do not forget to close the mesh file GmfCloseMesh(OutMsh); printf("OutMsh : nmb triangles = %d\n", 2*NmbQad); free(QadTab); free(TriTab); free(RefTab); free(VerTab); return(0); } libMeshb-7.80/examples/test_libmeshb_block.f000066400000000000000000000071551456732543400212050ustar00rootroot00000000000000 c libMeshb 7.79 example: transform a quadrilateral mesh into a triangular one c using fast block transfer include 'libmeshb7.ins' integer n parameter (n=4000) integer i, ver, dim, res, NmbVer, NmbQad +, RefTab(n), TriTab(4,2*n), QadTab(5,n) integer t(1),d,ho,s, fooint(1) integer*8 InpMsh, OutMsh real*8 VerTab(3,n),foodbl(1) c -------------------------------------------- c Open the quadrilateral mesh file for reading c -------------------------------------------- InpMsh = gmfopenmeshf77('../sample_meshes/quad.meshb' +,GmfRead,ver,dim) if(InpMsh.eq.0) STOP ' InpMsh = 0' if(dim.ne.3) STOP ' dimension <> 3' c Check memory bounds NmbVer = gmfstatkwdf77(InpMsh, GmfVertices, 0, s, t, d, ho) if(NmbVer.gt.n) STOP 'Too many vertices' NmbQad = gmfstatkwdf77(InpMsh, GmfQuadrilaterals, 0, s, t, d, ho) if(NmbQad.gt.n) STOP 'Too many quads' c Print some information on the open file print*, 'input mesh :', InpMsh print*, 'version :', ver print*, 'dimension :', dim print*, 'vertices :', NmbVer print*, 'quads :', NmbQad c Read the vertices using a vector of 3 consecutive doubles c to store the coordinates res = gmfgetblockf77(InpMsh, GmfVertices, + 1, NmbVer, 0, fooint(1), + fooint(1), fooint(1), + VerTab(1,1), VerTab(1,NmbVer), + RefTab( 1), RefTab( NmbVer)) c Read the quads using one single vector of 5 consecutive integers res = gmfgetblockf77(InpMsh, GmfQuadrilaterals, + 1, NmbQad, 0, fooint(1), + QadTab(1,1), QadTab(1,NmbQad), + foodbl(1), foodbl(1), + QadTab(5,1), QadTab(5,NmbQad)) c Close the quadrilateral mesh res = gmfclosemeshf77(InpMsh) c ------------------------------------------- c Convert the quad mesh into a triangular one c ------------------------------------------- do i = 1,2*NmbQad if(mod(i,2) .EQ. 1) then TriTab(1,i) = QadTab(1,(i+1)/2) TriTab(2,i) = QadTab(2,(i+1)/2) TriTab(3,i) = QadTab(3,(i+1)/2) TriTab(4,i) = QadTab(5,(i+1)/2) else TriTab(1,i) = QadTab(1,(i+1)/2) TriTab(2,i) = QadTab(3,(i+1)/2) TriTab(3,i) = QadTab(4,(i+1)/2) TriTab(4,i) = QadTab(5,(i+1)/2) endif end do c ----------------------- c Write a triangular mesh c ----------------------- OutMsh = gmfopenmeshf77('tri.meshb', GmfWrite, ver, dim) if(OutMsh.eq.0) STOP ' OutMsh = 0' c Set the number of vertices res = gmfsetkwdf77(OutMsh, GmfVertices, NmbVer, 0, t, 0, ho) c Write them down using separate pointers for each scalar entry res = gmfsetblockf77(OutMsh, GmfVertices, + 1, NmbVer, 0, fooint(1), + fooint(1), fooint(1), + VerTab(1,1), VerTab(1,NmbVer), + RefTab(1), RefTab(NmbVer)) c Write the triangles using 4 independant set of arguments c for each scalar entry: node1, node2, node3 and reference res = gmfsetkwdf77(OutMsh, GmfTriangles, 2*NmbQad, 0, t, 0, ho) res = gmfsetblockf77(OutMsh, GmfTriangles, + 1, 2*NmbQad, 0, fooint(1), + TriTab(1,1), TriTab(1,2*NmbQad), + foodbl(1), foodbl(1), + TriTab(4,1), TriTab(4,2*NmbQad)) c Don't forget to close the file res = gmfclosemeshf77(OutMsh) print*, 'output mesh :',NmbVer,' vertices,', + 2*NmbQad,'triangles' end libMeshb-7.80/examples/test_libmeshb_block.f90000066400000000000000000000224301456732543400213470ustar00rootroot00000000000000! libMeshb 7.79 example: transform a quadrilateral mesh into a triangular one ! using fast block transfer program test_libmeshb_block_f90 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> use iso_fortran_env use libmeshb7 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> implicit none integer(int64) :: InpMsh, OutMsh, OutSol character(80) :: InpFile character(80) :: OutFile character(80) :: SolFile integer :: i integer :: NmbVer,NmbQad,NmbTri,ver,dim,res real(real64) , pointer :: VerTab(:,:) integer , pointer :: VerRef( :) integer , pointer :: QadTab(:,:),QadRef( :) integer , pointer :: TriTab(:,:),TriRef( :) integer(int32) :: NmbField,ho,s,d integer(int32), pointer :: fields(:) character(32) , pointer :: fieldsName(:)=>null() real(real64) , pointer :: solTab(:,:) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> print '(/"test_libmeshb_block_f90")' !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> InpFile='../sample_meshes/quad.mesh' OutFile='./tri.meshb' SolFile='./tri.solb' !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Open the quadrilateral mesh file for reading print '(/"Input Mesh Open : ",a )',trim(InpFile) ! Open the mesh file and check the version and dimension InpMsh=GmfOpenMeshF90(name=trim(InpFile),GmfKey=GmfRead,ver=ver,dim=dim) print '( "Input Mesh Idx : ",i0)',InpMsh print '( "Input Mesh ver : ",i0)',ver print '( "Input Mesh dim : ",i0)',dim ! Allocate VerRef NmbVer = GmfstatkwdF90(unit=InpMsh, GmfKey=GmfVertices) print '( "Input Mesh NmbVer : ",i0)', NmbVer allocate(VerTab(1:3,1:NmbVer)) allocate(VerRef( 1:NmbVer)) ! Read the vertices using a vector of 3 consecutive doubles to store the coordinates res=GmfGetBlockF90( & & unit=InpMsh ,& & GmfKey=GmfVertices ,& & ad0=1 ,& & ad1=NmbVer ,& & Tab=VerTab(:,1:NmbVer) ,& & Ref=VerRef( 1:NmbVer) ) do i=1,10 print '(3x,"ver",i6," xyz:",3(f12.5,1x)," ref: ",i0)',i,VerTab(1:3,i),VerRef(i) enddo ! Allocate QadTab NmbQad=GmfstatkwdF90(unit=InpMsh, GmfKey=GmfQuadrilaterals) print '( "Input Mesh NmbQad : ",i0)', NmbQad allocate(QadTab(1:4,1:NmbQad)) allocate(QadRef( 1:NmbQad)) ! Read the quads using one single vector of 4 consecutive integers res=GmfGetBlockF90( & & unit=InpMsh ,& & GmfKey=GmfQuadrilaterals,& & ad0=1 ,& & ad1=NmbQad ,& & Tab=QadTab(:,1:) ,& & Ref=QadRef( 1:) ) do i=1,10 print '(3x,"qad",i6," nd:",4(i6,1x)," ref: ",i0)',i,QadTab(1:4,i),QadRef(i) enddo !!> Lecture par tableau 1D sans recopie (interface à écrire en indiquand le stride) !block ! use iso_c_binding, only: c_loc,c_f_pointer ! integer , pointer :: nodes(:) ! ! call c_f_pointer(cptr=c_loc(QadTab), fptr=nodes, shape=[4*NmbQad]) !> binding QadTab(:,:) and nodes(:) ! ! res=GmfGetElements( & ! & InpMsh ,& ! & GmfQuadrilaterals ,& ! & 1 ,& ! & NmbQad ,& ! & 0, m ,& ! & nodes( 1), nodes(4*NmbQad-3),& ! & QadRef( 1), QadRef(NmbQad) ) !end block ! Close the quadrilateral mesh res=GmfCloseMeshF90(unit=InpMsh) print '("Input Mesh Close : ",a)',trim(InpFile) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Allocate TriTab and TriRef NmbTri=2*NmbQad allocate(TriTab(1:3,1:NmbTri)) allocate(TriRef( 1:NmbTri)) ! Convert the quad mesh into a triangular one do i=1,NmbTri if(mod(i,2) .EQ. 1) then TriTab(1,i) = QadTab(1,(i+1)/2) TriTab(2,i) = QadTab(2,(i+1)/2) TriTab(3,i) = QadTab(3,(i+1)/2) TriRef( i) = QadRef( (i+1)/2) else TriTab(1,i) = QadTab(1,(i+1)/2) TriTab(2,i) = QadTab(3,(i+1)/2) TriTab(3,i) = QadTab(4,(i+1)/2) TriRef( i) = QadRef( (i+1)/2) endif end do !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Write a triangular mesh print '(/"Output Mesh Open : ",a )',trim(OutFile) OutMsh=GmfOpenMeshF90(name=trim(OutFile),GmfKey=GmfWrite,ver=ver,dim=dim) print '( "Output Mesh Idx : ",i0)',InpMsh print '( "Output Mesh ver : ",i0)',ver print '( "Output Mesh dim : ",i0)',dim if(OutMsh==0) STOP ' OutMsh = 0' ! Set the number of vertices res=GmfSetKwdF90(unit=OutMsh, GmfKey=GmfVertices, Nmb=NmbVer) print '( "Output Mesh NmbVer : ",i0)', NmbVer ! Write them down using separate pointers for each scalar entry res=GmfSetBlockF90( & & unit=OutMsh ,& & GmfKey=GmfVertices ,& & ad0=1 ,& & ad1=NmbVer ,& & Tab=VerTab(:,1:NmbVer),& & Ref=VerRef( 1:NmbVer) ) ! Write the triangles using 4 independant set of arguments ! for each scalar entry: node1, node2, node3 and reference res=GmfSetKwdF90(unit=OutMsh, GmfKey=GmfTriangles, Nmb=NmbTri) print '( "Output Mesh NmbTri : ",i0)', NmbTri res=GmfSetBlockF90( & & unit=OutMsh ,& & GmfKey=GmfTriangles ,& & ad0=1 ,& & ad1=NmbTri ,& & Tab=TriTab(:,1:NmbTri),& & Ref=TriRef( 1:NmbVer) ) !!> Ecriture par tableau 1D sans recopie (interface fortran à écrire) !block ! use iso_c_binding, only: c_loc,c_f_pointer ! integer , pointer :: nodes(:) ! ! print '(/"binding TriTab(:,:) and nodes(:)")' ! ! call c_f_pointer(cptr=c_loc(TriTab), fptr=nodes, shape=[3*NmbTri]) !> binding TriTab(:,:) and nodes(:) ! ! print '(/"Triangle: ",i6)',1 ! print '( "TriTab:",3(i6,1x) )',TriTab(1,1),TriTab(2,1),TriTab(3,1) ! print '( "nodes: ",3(i6,1x)/)',nodes(1),nodes(2),nodes(3) ! print '(/"Triangle: ",i6)',NmbTri ! print '( "TriTab:",3(i6,1x) )',TriTab(1,NmbTri),TriTab(2,NmbTri),TriTab(3,NmbTri) ! print '( "nodes: ",3(i6,1x)/)',nodes(3*NmbTri-2),nodes(3*NmbTri-1),nodes(3*NmbTri) ! ! res=GmfSetElements( & ! & InpMsh ,& ! & GmfTriangles ,& ! & 1 ,& ! & NmbTri ,& ! ! 0, m ,& ! & 0, c_null_ptr ,& ! & nodes( 1), nodes(3*NmbTri-2),& ! & TriRef( 1), TriRef(NmbTri) ) ! !end block ! Don't forget to close the file res=GmfCloseMeshF90(unit=OutMsh) print '("Output Mesh Close : ",a)',trim(OutFile) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Create a solution file print '(/"Output Solu Open : ",a )',trim(SolFile) OutSol=GmfOpenMeshF90(name=trim(SolFile),GmfKey=GmfWrite,ver=ver,dim=dim) print '( "Output Solu Idx : ",i0)',OutSol print '( "Output Solu ver : ",i0)',ver print '( "Output Solu dim : ",i0)',dim if( OutSol==0 ) STOP ' OutSol = 0' ! Set the solution kinds NmbField=3 allocate( fields (1:NmbField)) allocate( fieldsName(1:NmbField)) fields(1:NmbField) = [GmfSca,GmfVec,GmfSca] fieldsName(1:NmbField)=['sca_1','vec_1','sca_2'] !nomDesChamps : block ! integer :: iField,nChar ! character(:), pointer :: fieldName=>null() ! res=GmfSetKwdF90(unit=OutSol, GmfKey=GmfReferenceStrings, Nmb=NmbField) ! do iField=1,NmbField ! nChar=len_trim(fieldsName(iField)) ! print '("nChar: ",i0)',nChar ! allocate(character(len=nChar+3) :: fieldName) ! write(fieldName,'(a,1x,i0,a)')trim(fieldsName(iField)),iField,C_NULL_CHAR ! print '("fieldName: ",a)',fieldName ! ! !ress=GmfSetLin(unit=OutSol, GmfKey=GmfReferenceStrings, GmfSolAtVertices, 1, fieldName) ! ! deallocate(fieldName) ! enddo !end block nomDesChamps allocate(solTab(1:5,NmbVer)) ! 1+ dim+ 1 print '( "Output Solu NmbVer : ",i0)',NmbVer print '( "Output Solu nFields : ",i0)',NmbField print '( "Output Solu fields : ", *(i0,1x))',fields(1:NmbField) ! Set the number of solutions (one per vertex) res=GmfSetKwdF90(unit=OutSol, GmfKey=GmfSolAtVertices, Nmb=NmbVer, d=NmbField, t=fields(1:NmbField), s=0, ho=ho) ! Compute the dummy solution fields do i=1,NmbVer solTab( 1,i)=VerTab(1,i) solTab(2:4,i)=[VerTab(1,i),VerTab(2,i),0d0] solTab( 5,i)=VerTab(2,i) enddo res=GmfSetBlockF90( & & unit=OutMsh ,& & GmfKey=GmfSolAtVertices ,& & ad0=1 ,& & ad1=NmbVer ,& & Tab=solTab(:,1:NmbVer) ) ! Don't forget to close the file res=GmfCloseMeshF90(unit=OutSol) print '("Output Solu Close : ",a)',trim(SolFile) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> Cleanning Memory deallocate(VerTab,VerRef) deallocate(QadTab,QadRef) deallocate(TriTab,TriRef) deallocate(solTab) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> print '(/"Constrol"/"vizir4 -in ",a," -sol ",a,/)',trim(OutFile),trim(SolFile) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end program test_libmeshb_block_f90libMeshb-7.80/examples/test_libmeshb_block_bindC.f90000066400000000000000000000110161456732543400224440ustar00rootroot00000000000000program test_libmeshb_block_bindC !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> use, intrinsic :: iso_fortran_env use, intrinsic :: iso_c_binding use libmeshb7 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> implicit none character(80) :: InpFile character(80) :: OutFile integer(c_long) :: InpMsh integer(c_long) :: OutMsh integer(c_int) :: NmbVer real(c_double), pointer :: VerTab(:,:) integer(c_int), pointer :: VerRef( :) integer(c_int) :: NmbQad integer(c_int) :: ver integer(c_int) :: dim type(c_ptr) :: RefTab type(c_ptr) :: QadTab type(c_ptr) :: TriTab !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !if(!(InpMsh = GmfOpenMesh("../sample_meshes/quad.meshb", GmfRead, &ver, &dim))) interface function GmfOpenMesh(name, Gmf, ver, dim) result(unit) bind(c, name="GmfOpenMesh") use, intrinsic :: iso_c_binding type(c_ptr) , value :: name integer(c_int), value :: Gmf integer(c_int) :: ver integer(c_int) :: dim integer(c_long) :: unit end function GmfOpenMesh function GmfStatKwd(unit, Gmf) result(numb) bind(c, name="GmfStatKwd") use, intrinsic :: iso_c_binding integer(c_long), value :: unit integer(c_int) , value :: Gmf integer(c_int) :: numb end function GmfStatKwd subroutine GmfSetKwd(unit, Gmf, numb) bind(c, name="GmfSetKwd") use, intrinsic :: iso_c_binding integer(c_long), value :: unit integer(c_int) , value :: Gmf integer(c_int) :: numb end subroutine GmfSetKwd subroutine GmfCloseMesh(unit) bind(c, name="GmfCloseMesh") use, intrinsic :: iso_c_binding integer(c_long), value :: unit end subroutine GmfCloseMesh !GmfGetBlock(InpMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, !GmfFloat, &VerTab[1][0], &VerTab[ NmbVer ][0], !GmfFloat, &VerTab[1][1], &VerTab[ NmbVer ][1], !GmfFloat, &VerTab[1][2], &VerTab[ NmbVer ][2], !GmfInt, &RefTab[1], &RefTab[ NmbVer ] ); !subroutine GmfGetBlock(unit, Gmf, ) ! !end subroutine end interface !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> InpFile='../sample_meshes/quad.mesh' OutFile='./tri.mesh' !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !block ! integer :: nChar ! character(:), pointer :: nameC=>null() ! ! nChar=len_trim(InpFile) !> print '("nChar: ",i0)',nChar ! allocate(character(len=nChar+1) :: nameC) ! nameC = trim(InpFile) // C_NULL_CHAR ! ! InpMsh=GmfOpenMesh(name=c_loc(nameC), Gmf=GmfRead, ver=ver, dim=dim) ! !end block InpMsh=GmfOpenMesh(name=convertName(name=InpFile), Gmf=GmfRead, ver=ver, dim=dim) print '(/"Input Mesh File: ",a," Idx=",i0," version: ",i0," dim: ",i0)',trim(InpFile),InpMsh,ver,dim if( InpMsh==0) stop ' InpMsh = 0' if( ver<=1 ) stop ' version <= 1' if( dim/=3 ) stop ' dimension <> 3' NmbVer=GmfStatKwd(unit=InpMsh, Gmf=GmfVertices) allocate(VerTab(1:3,1:NmbVer)) allocate(VerRef( 1:NmbVer)) print '("vertices : ",i0)', NmbVer NmbQad=GmfStatKwd(unit=InpMsh, Gmf=GmfQuadrilaterals) !allocate(QadTab(1:4,1:NmbQad)) !allocate(QadRef( 1:NmbQad)) print '("quads : ",i0)', NmbQad call GmfCloseMesh(unit=InpMsh) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> OutMsh=GmfOpenMesh(name=convertName(name=OutFile), Gmf=GmfWrite, ver=ver, dim=dim) print '(/"Output Mesh File: ",a," Idx=",i0," version: ",i0," dim: ",i0)',trim(OutFile),OutMsh,ver,dim if( OutMsh==0) stop ' OutMsh = 0' call GmfSetKwd(unit=OutMsh, Gmf=GmfVertices, numb=NmbVer); call GmfCloseMesh(unit=OutMsh) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< contains function convertName(name) result (res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> character(*) :: name integer :: nChar character(:), pointer :: nameC=>null() type(c_ptr) :: res !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> nChar=len_trim(name) ! print '("nChar: ",i0)',nChar allocate(character(len=nChar+1) :: nameC) nameC=trim(name) // C_NULL_CHAR res=c_loc(nameC) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function convertName end program test_libmeshb_block_bindC libMeshb-7.80/examples/test_libmeshb_hexq2.c000066400000000000000000000062141456732543400211320ustar00rootroot00000000000000 // libMeshb 7.5 basic example: // read a Q2 hex mesh while using the automatic HO reordering feature, // and print the renumbered coordinates #include #include #include int main() { int i, NmbVer, NmbHex, ver, dim, *RefTab, (*HexTab)[28]; int BasOrd[27][3] = { {0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {0, 0, 2}, {2, 0, 2}, {2, 2, 2}, {0, 2, 2}, {1, 0, 0}, {2, 1, 0}, {1, 2, 0}, {0, 1, 0}, {1, 0, 2}, {2, 1, 2}, {1, 2, 2}, {0, 1, 2}, {0, 0, 1}, {2, 0, 1}, {2, 2, 1}, {0, 2, 1}, {1, 1, 0}, {1, 1, 2}, {1, 0, 1}, {2, 1, 1}, {1, 2, 1}, {0, 1, 1}, {1, 1, 1}}; int FilOrd[27][3]; int64_t InpMsh, OutMsh; float (*VerTab)[3]; /*-----------------------------------*/ /* Open mesh file "quad_q2.meshb" */ /*-----------------------------------*/ if(!(InpMsh = GmfOpenMesh("../sample_meshes/hexaq2_vizir.mesh", GmfRead, &ver, &dim))) return(1); printf("InpMsh : idx = %lld, version = %d, dimension = %d\n", InpMsh, ver, dim); if(dim != 3) exit(1); // Read the number of vertices and allocate memory NmbVer = GmfStatKwd(InpMsh, GmfVertices); printf("InpMsh : nmb vertices = %d\n", NmbVer); VerTab = malloc((NmbVer+1) * 3 * sizeof(float)); RefTab = malloc((NmbVer+1) * sizeof(int)); // Read the number of Q2 hex and allocate memory NmbHex = GmfStatKwd(InpMsh, GmfHexahedraQ2); printf("InpMsh : nmb Q2 hexes = %d\n", NmbHex); HexTab = malloc((NmbHex+1) * 28 * sizeof(int)); // Read the optional Q2 quad node ordering information and pass it // to the library along our internal coding to automatically reorder the nodes if(GmfStatKwd(InpMsh, GmfHexahedraQ2Ordering)) { GmfGetBlock(InpMsh, GmfHexahedraQ2Ordering, 1, 27, 0, NULL, NULL, GmfIntVec, 27, FilOrd[0], FilOrd[26]); GmfSetHONodesOrdering(InpMsh, GmfHexahedraQ2, (int *)BasOrd, (int *)FilOrd); } // Read the vertices GmfGetBlock(InpMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfFloatVec, 3, &VerTab[1][0], &VerTab[ NmbVer ][0], GmfInt, &RefTab[1], &RefTab[ NmbVer ] ); // Read the Q2 quads GmfGetBlock(InpMsh, GmfHexahedraQ2, 1, NmbHex, 0, NULL, NULL, GmfIntVec, 28, HexTab[1], HexTab[ NmbHex ]); // Close the quad mesh GmfCloseMesh(InpMsh); for(i=0;i<27;i++) printf("%g %g %g 0\n", VerTab [HexTab[1][i] ][0], VerTab [HexTab[1][i] ][1], VerTab [HexTab[1][i] ][2]); free(HexTab); free(RefTab); free(VerTab); return(0); } libMeshb-7.80/examples/test_libmeshb_p2_sol.c000066400000000000000000000024371456732543400213040ustar00rootroot00000000000000 // libMeshb 7.5 basic example: read a high order solution file #include #include #include int main() { int i, j, NmbSol, ver, dim, SolSiz, NmbTyp, TypTab[ GmfMaxTyp ], deg, NmbNod; long long InpMsh; double *SolTab; if(!(InpMsh = GmfOpenMesh("../sample_meshes/edges_p2.sol", GmfRead, &ver, &dim))) return(1); printf("InpMsh: idx = %lld, version = %d, dimension = %d\n", InpMsh, ver, dim); if(ver < 2) return(1); // Read the number vertices and associated solution size for memory allocation NmbSol = (int)GmfStatKwd(InpMsh, GmfHOSolAtEdgesP2, &NmbTyp, &SolSiz, TypTab, °, &NmbNod); printf("NmbSol = %d, NmbTyp = %d, SolSiz = %d, degree = %d, NmbNod = %d\n", NmbSol, NmbTyp, SolSiz, deg, NmbNod); SolTab = malloc( (NmbSol+1) * SolSiz * sizeof(double)); // solution field block reading GmfGetBlock(InpMsh, GmfHOSolAtEdgesP2, 1, NmbSol, 0, NULL, NULL, GmfDoubleVec, SolSiz, &SolTab[ 1 * SolSiz ], &SolTab[ NmbSol * SolSiz ]); // Print each solutions of each vertices for(i=1;i<=NmbSol;i++) for(j=0;j #include #include int main() { int i, j, NmbSolLin, ver, dim, TotSolSiz, NmbSolTyp, SolTypTab[ GmfMaxTyp ]; int DatTypTab[10], DatSizTab[10]; int64_t MshIdx; double *SolTab; char *DatBegTab[10], *DatEndTab[10]; char *TypStr[5] = {"", "GmfSca", "GmfVec", "GmfSymMat", "GmfMat"}; // Open the "out.sol" mesh file if(!(MshIdx = GmfOpenMesh("../sample_meshes/out.sol", GmfRead, &ver, &dim))) return(1); printf("MshIdx: idx = %lld, version = %d, dimension = %d\n", MshIdx, ver, dim); if(ver < 2) return(1); // Read the number vertices and associated solution size for memory allocation NmbSolLin = GmfStatKwd(MshIdx, GmfSolAtVertices, &NmbSolTyp, &TotSolSiz, SolTypTab); printf("NmbSol = %d, NmbTyp = %d, SolSiz = %d\n", NmbSolLin, NmbSolTyp, TotSolSiz); for(i=0;i #include #include #include int main() { int i, j, k, NmbVer, ver, dim, *RefTab, ret; int deg1, buf1[256], deg2, buf2[256]; int64_t InpMsh; double (*VerTab)[3]; PolMshSct *pol; // Open and check the polyhedral mesh file if(!(InpMsh = GmfOpenMesh("../sample_meshes/polyhedra.mesh", GmfRead, &ver, &dim))) { puts("Could not open ../sample_meshes/polyhedra.mesh"); return(1); } printf("InpMsh: idx = %lld, version = %d, dimension = %d\n", InpMsh, ver, dim); if( (ver != 2) || (dim != 3) ) { printf("Wrong version (%d) or dimension (%d)\n", ver, dim); return(1); } // Read the number of vertices and allocate memory NmbVer = (int)GmfStatKwd(InpMsh, GmfVertices); printf("InpMsh: nmb vertices = %d\n", NmbVer); VerTab = malloc((NmbVer+1) * 3 * sizeof(double)); RefTab = malloc((NmbVer+1) * sizeof(int)); // Read the number of polygons/polyhedra and allocate memory pol = GmfAllocatePolyhedralStructure(InpMsh); if(!pol) { puts("Could not allocate the polyhedral structure"); return(1); } // Read both keyword's fields associated with the boundary polygons ret = GmfReadBoundaryPolygons(pol); if(!ret) { puts("Could not read the boundary polygons"); return(1); } // Print the polygon's degree and vertex indices for(i=1;i<=pol->NmbBndHdr;i++) { // Extract a polygon's list of vertices to a buffer deg1 = GmfGetBoundaryPolygon(pol, i, buf1); printf("polygon %d (%d): ", i, deg1); for(j=0;jNmbVolHdr;i++) { // Extract a polyhedron's list of inner faces to a buffer deg1 = GmfGetPolyhedron(pol, i, buf1); printf("polyhedron %d (%d): ", i, deg1); for(j=0;j #include #include #include int main(int argc, char **argv) { int NmbBytes = 9; char *OutNam, cad[9] = {1,2,3,4,5,6,7,8,9}; int64_t OutMsh; // Print usage and exit if(argc == 1) { puts("\nUSAGE:"); puts(" write_egads cad_file.meshb\n"); exit(0); } // Get the file name OutNam = *++argv; // Open the mesh file for writing if(!(OutMsh = GmfOpenMesh(OutNam, GmfWrite, 2, 3))) return(1); // Write egads tree stored as a raw byte flow GmfWriteByteFlow(OutMsh, cad, NmbBytes); // Do not forget to close the mesh file GmfCloseMesh(OutMsh); return(0); } libMeshb-7.80/legacy_sources/000077500000000000000000000000001456732543400162215ustar00rootroot00000000000000libMeshb-7.80/legacy_sources/utilities/000077500000000000000000000000001456732543400202345ustar00rootroot00000000000000libMeshb-7.80/legacy_sources/utilities/bb2sol.c000066400000000000000000000133011456732543400215610ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* BB2SOL */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: convert a .bb or .BB file in .sol */ /* Author: Loic MARECHAL */ /* Creation date: mar 8 2004 */ /* Last modification: feb 26 2007 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include #include /*----------------------------------------------------------*/ /* Local defines */ /*----------------------------------------------------------*/ #define bb 1 #define BB 2 /*----------------------------------------------------------*/ /* Check args and copy each fields from infile to outfile */ /*----------------------------------------------------------*/ main(int ArgCnt, char **ArgVec) { int i, j, NmbLin, NmbTyp, TypTab[ GmfMaxTyp ], InpTyp, SolEleTyp, SolSiz=0, dim, idx=0, SolIdx, BBIter; float buf[ GmfMaxTyp ], BBTime; char *InpNam, *OutNam, *TypStr; FILE *hdl; /* Parse command-line arguments */ switch(ArgCnt) { case 1 : { printf("\nBB2SOL v1.2, feb 26 2007, written by Loic MARECHAL\n"); printf(" Usage : bb2sol source_name.bb destination_name.solb support_element\n"); printf(" where support_element is : ver | edg | qad | tet | pen | hex\n\n"); return(0); }break; case 2 : case 3 : { fprintf(stderr,"Wrong number of arguments.\n"); return(1); }break; case 4 : { InpNam = *++ArgVec; OutNam = *++ArgVec; TypStr = *++ArgVec; if(strstr(TypStr, "ver")) SolEleTyp = GmfSolAtVertices; else if(strstr(TypStr, "edg")) SolEleTyp = GmfSolAtEdges; else if(strstr(TypStr, "tri")) SolEleTyp = GmfSolAtTriangles; else if(strstr(TypStr, "qad")) SolEleTyp = GmfSolAtQuadrilaterals; else if(strstr(TypStr, "tet")) SolEleTyp = GmfSolAtTetrahedra; else if(strstr(TypStr, "pen")) SolEleTyp = GmfSolAtPentahedra; else if(strstr(TypStr, "hex")) SolEleTyp = GmfSolAtHexahedra; else { fprintf(stderr,"Wrong type of element : %s\n", TypStr); return(1); } }break; } /* Open the .bb or .BB file for reading */ if(strstr(InpNam, ".bb")) InpTyp = bb; else if(strstr(InpNam, ".BB")) InpTyp = BB; else { fprintf(stderr,"Source of error : BB2SOL / OPEN_BB\n"); fprintf(stderr,"%s is not a .bb nor a .BB file\n", InpNam); return(1); } if(!(hdl = fopen(InpNam, "r"))) { fprintf(stderr,"Source of error : BB2SOL / OPEN_BB\n"); fprintf(stderr,"Cannot open %s\n", InpNam); return(1); } /* Read and check the dimension */ fscanf(hdl, "%d", &dim); if( (dim != 3) && (dim != 2) ) { fprintf(stderr,"Source of error : BB2SOL / READ_BB\n"); fprintf(stderr,"Wrong dimension : %d\n", dim); return(1); } /* Create a .sol file */ if(!(SolIdx = GmfOpenMesh(OutNam, GmfWrite, GmfFloat, dim))) { fprintf(stderr,"Source of error : BB2SOL / OPEN_MESH\n"); fprintf(stderr,"Cannot open %s\n", OutNam); return(1); } /* bb case */ if(InpTyp == bb) { NmbTyp = 1; fscanf(hdl, "%d", &InpTyp); if(InpTyp == 1) TypTab[0] = GmfSca; else if(InpTyp == dim) TypTab[0] = GmfVec; else if(InpTyp == (dim * (dim + 1)) / 2) TypTab[0] = GmfSymMat; else if(InpTyp == dim * dim) TypTab[0] = GmfMat; else { fprintf(stderr,"Source of error : BB2SOL / READ_BB\n"); fprintf(stderr,"Wrong solution size : %d\n", InpTyp); return(1); } } else /* BB case */ { /* Read and check the number of types */ fscanf(hdl, "%d", &NmbTyp); if( (NmbTyp < 1) || (NmbTyp > GmfMaxTyp) ) { fprintf(stderr,"Source of error : BB2SOL / READ_BB\n"); fprintf(stderr,"Wrong number of types : %d\n", NmbTyp); return(1); } /* Read each types, store them in the sol header */ for(i=0;i #include #include "libmesh.h" /*----------------------------------------------------------*/ /* Read the mesh and write the bulk on the fly */ /*----------------------------------------------------------*/ int main(int argc, char **argv) { int meshversion, keyword, dim; char *source_name; FILE *input_handle; if(argc == 2) source_name = *argv[2]; else { puts("Source filename missing."); exit(1); } /* Open a mesh file for reading */ if(!(input_handle = ouvrir_mesh(source_name, "r", &meshversion))) { puts("Cannot open source file."); exit(1); } if(meshversion < 1) { puts("Bad mesh version."); exit(1); } /* Create a patran bulk file */ if(!(output_handle = fopen(strcat(source_name, ".dat"), "w"))) { puts("Cannot create destination file."); exit(1); } /*---------------------------------------------------*/ /* scan for keywords and sizes for memory allocation */ /*---------------------------------------------------*/ do { keyword = mot_clef_suivant(input_handle); switch(keyword) { case MeshDimension : { dim = lire_int(input_handle); if(dim != 3) { puts("Not a 3 dimensions mesh."); exit(1); } }break; case Vertices : { nb = lire_int(input_handle); for(i=1;i<=nb;i++) { x = lire_reel(input_handle); y = lire_reel(input_handle); z = lire_reel(input_handle); ref = lire_int(input_handle); fprintf(output_handle, "GRID* %25d",i, x,y,z } }break; } }while(keyword != End); } libMeshb-7.80/legacy_sources/utilities/noboiteb2meshb.c000066400000000000000000000115731456732543400233110ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* NOBOITEB2MESHB V1.1 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: convertd noboiteb to mesh(b) */ /* Author: Loic MARECHAL */ /* Creation date: dec 12 1997 */ /* Last modification: feb 23 2007 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include /*----------------------------------------------------------*/ /* Protos */ /*----------------------------------------------------------*/ void convertir(char *,char *); /*----------------------------------------------------------*/ /* Structures */ /*----------------------------------------------------------*/ typedef struct { float x,y,z; }point_struct; typedef struct { int v1,v2,v3,v4; }tetra_struct; /*----------------------------------------------------------*/ /* Debut */ /*----------------------------------------------------------*/ int main(int argc, char **argv) { char *nom_source,*nom_destination; switch(argc) { case 1 : { printf("NOBOITEB2MESHB v1.1 feb 28 2007 Loic MARECHAL\n"); printf(" Utilisation : noboiteb2meshb source destination\n"); printf(" source : nom du maillage au format NOBOITEB\n"); printf(" dest : nom du maillage au format MESH(B)\n"); exit(1); }break; case 2 : { if(argc==2) fprintf(stderr,"Nombre d'arguments incorrect!\n"); }break; case 3 : { nom_source=*++argv; nom_destination=*++argv; }break; } convertir(nom_source,nom_destination); return(0); } /*----------------------------------------------------------*/ /* Lire_noboite */ /*----------------------------------------------------------*/ /* IN: un pointeur sur un nom de fichier */ /*----------------------------------------------------------*/ void convertir(char * nom_source, char *nom_destination) { FILE *src; int vide[10],nbele,loele,loelef,nbelef,nbpoi,lopoi,lopoif,nbpoif,i,j,debut,fin; int nb_tetraedres,nb_vertices,meshversion=0,pos_tetras, MshIdx; point_struct points; tetra_struct tetras; if(!(src=fopen(nom_source,"r"))) { fprintf(stderr,"Source de l'erreur : NOBOITEB2MESHB / CHARGER_NOBOITE.\n"); fprintf(stderr,"Impossible d'ouvrir %s\n",nom_source); exit(1); } if(!(MshIdx = GmfOpenMesh(nom_destination, GmfWrite, GmfFloat, 3))) { fprintf(stderr,"Source de l'erreur : NOBOITEB2MESHB / CHARGER_NOBOITE.\n"); fprintf(stderr,"Impossible d'ouvrir %s\n",nom_destination); exit(1); } /* Lecture de l'entete du noboiteb */ fread(vide,sizeof(int),1,src); fread(&nb_tetraedres,sizeof(int),1,src); fread(&nb_vertices,sizeof(int),1,src); fread(vide,sizeof(int),3,src); fread(&nbele,sizeof(int),1,src); fread(&loele,sizeof(int),1,src); fread(&nbelef,sizeof(int),1,src); fread(&loelef,sizeof(int),1,src); fread(&nbpoi,sizeof(int),1,src); fread(&lopoi,sizeof(int),1,src); fread(&nbpoif,sizeof(int),1,src); fread(&lopoif,sizeof(int),1,src); fread(vide,sizeof(int),5,src); /* Le handle est positionne sur les tetras,je le sauve pour y revenir ensuite */ pos_tetras=ftell(src); fseek(src, nbele * (loele*4+8) + loelef*4 + 0 ,SEEK_CUR); printf("nbv=%d , nbt=%d\n",nb_vertices,nb_tetraedres); /* Lecture et ecriture des vertices */ lopoi/=3; lopoif/=3; debut=1; fin=lopoi; GmfSetKwd(MshIdx, GmfVertices, nb_vertices); for(i=1;i<=nbpoi;i++) { fread(vide,sizeof(int),1,src); for(j=debut;j<=fin;j++) { fread(&points,sizeof(float),3,src); GmfSetLin(MshIdx, GmfVertices, points.x, points.y, points.z, 0); } fread(vide,sizeof(int),1,src); debut+=lopoi; fin+=lopoi; } if(lopoif) { fin=fin-lopoi+lopoif; fread(vide,sizeof(int),1,src); for(j=debut;j<=fin;j++) { fread(&points,sizeof(float),3,src); GmfSetLin(MshIdx, GmfVertices, points.x, points.y, points.z, 0); } fread(vide,sizeof(int),1,src); } /* Lecture et ecriture des tetraedres */ fseek(src,pos_tetras,SEEK_SET); loele/=4; loelef/=4; debut=1; fin=loele; GmfSetKwd(MshIdx, GmfTetrahedra, nb_tetraedres); for(i=1;i<=nbele;i++) { fread(vide,sizeof(int),1,src); for(j=debut;j<=fin;j++) { fread(&tetras,sizeof(int),4,src); GmfSetLin(MshIdx, GmfTetrahedra, tetras.v1, tetras.v2, tetras.v3, tetras.v4, 0); } fread(vide,sizeof(int),1,src); debut+=loele; fin+=loele; } if(loelef) { fin=fin-loele+loelef; fread(vide,sizeof(int),1,src); for(j=debut;j<=fin;j++) { fread(&tetras,sizeof(int),4,src); GmfSetLin(MshIdx, GmfTetrahedra, tetras.v1, tetras.v2, tetras.v3, tetras.v4, 0); } fread(vide,sizeof(int),1,src); } GmfCloseMesh(MshIdx); fclose(src); } libMeshb-7.80/legacy_sources/utilities/sol2bb.c000066400000000000000000000116631456732543400215720ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* SOL2BB */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: convert a .sol(b) file into a .BB */ /* Author: Loic MARECHAL */ /* Creation date: jul 21 2004 */ /* Last modification: feb 26 2007 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include #include /*----------------------------------------------------------*/ /* Local defines */ /*----------------------------------------------------------*/ #define bb 1 #define BB 2 /*----------------------------------------------------------*/ /* Check args and copy each fields from infile to outfile */ /*----------------------------------------------------------*/ int main(int ArgCnt, char **ArgVec) { int i, j, SolTyp=0, idx=0, OutTyp, siz, SolIdx, NmbTyp, SolSiz, TypTab[ GmfMaxTyp ], FilVer, NmbLin, dim; float f, FltBuf[ GmfMaxTyp ]; double d, DblBuf[ GmfMaxTyp ]; char *InpNam, *OutNam, *TypStr; FILE *hdl; /* Parse command-line arguments */ switch(ArgCnt) { case 1 : { printf("\nSOL2BB v1.1, feb 26 2007, written by Loic MARECHAL\n"); printf(" Usage : sol2bb source_name.solb destination_name.BB support_element\n"); printf(" where support_element is : ver | edg | qad | tet | pen | hex\n\n"); return(1); }break; case 2 : case 3 : { fprintf(stderr,"Wrong number of arguments.\n"); return(1); }break; case 4 : { InpNam = *++ArgVec; OutNam = *++ArgVec; TypStr = *++ArgVec; if(strstr(TypStr, "ver")) SolTyp = GmfSolAtVertices; else if(strstr(TypStr, "edg")) SolTyp = GmfSolAtEdges; else if(strstr(TypStr, "tri")) SolTyp = GmfSolAtTriangles; else if(strstr(TypStr, "qad")) SolTyp = GmfSolAtQuadrilaterals; else if(strstr(TypStr, "tet")) SolTyp = GmfSolAtTetrahedra; else if(strstr(TypStr, "pen")) SolTyp = GmfSolAtPentahedra; else if(strstr(TypStr, "hex")) SolTyp = GmfSolAtHexahedra; else { fprintf(stderr,"Wrong type of element : %s\n", TypStr); return(1); } }break; } if(strstr(OutNam, ".bb")) OutTyp = bb; else if(strstr(OutNam, ".BB")) OutTyp = BB; else { fprintf(stderr,"Source of error : BB2SOL / OPEN_BB\n"); fprintf(stderr,"%s is not a .bb nor a .BB file\n", InpNam); return(1); } /* Open the .solb file for reading */ if(!(SolIdx = GmfOpenMesh(InpNam, GmfRead, &FilVer, &dim))) { fprintf(stderr,"Cannot open %s\n", InpNam); return(1); } /* Check if the sol contains the required kw */ if(!(NmbLin = GmfStatKwd(SolIdx, SolTyp, &NmbTyp, &SolSiz, TypTab))) { fprintf(stderr,"No such element in sol file.\n"); return(1); } /* Create the bb file and write the header */ if(!(hdl = fopen(OutNam, "wb"))) { fprintf(stderr,"Cannot open %s\n", OutNam); return(1); } if(OutTyp == bb) { if(TypTab[0] == GmfSca) siz = 1; else if(TypTab[0] == GmfVec) siz = dim; else if(TypTab[0] == GmfSymMat) siz = dim * (dim + 1) / 2; else if(TypTab[0] == GmfMat) siz = dim * dim; if(SolTyp == GmfSolAtVertices) fprintf(hdl, "%d %d %d 2\n", dim, siz, NmbLin); else fprintf(hdl, "%d %d %d 1\n", dim, siz, NmbLin); } else { fprintf(hdl, "%d %d ", dim, NmbTyp); for(i=0;i #include #include #include #include #include "libmesh.h" #undef LM_compil /*----------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------*/ #define ASCII 1 #define BINAIRE 2 /*----------------------------------------------------------*/ /* Variables globales */ /*----------------------------------------------------------*/ char *strings_mots_clefs[] = { "vide" , "MeshVersionFormatted" , "MeshVersionUnformatted" , "Dimension" , "Vertices" , "Edges" ,"Triangles" , "Quadrilaterals" , "Tetrahedra" , "Pentahedra" , "Hexahedra" , "SubDomainFromGeom" , "SubDomainFromMesh" , "Corners" , "Ridges" , "RequiredVertices" , "RequiredEdges" , "RequiredTriangles" , "RequiredQuadrilaterals" , "TangentAtEdgeVertices" , "NormalAtVertices" , "NormalAtTriangleVertices" , "NormalAtQuadrilateralVertices" , "AngleOfCornerBound" , "Geometry" , "VertexOnGeometricVertex" , "VertexOnGeometricEdge" , "VertexOnGeometricTriangle" , "VertexOnGeometricQuadrilateral" , "EdgeOnGeometricEdge" , "TriangleOnGeometricTriangle" , "TriangleOnGeometricQuadrilateral" , "QuadrilateralOnGeometricTriangle" , "QuadrilateralOnGeometricQuadrilateral" , "MeshSupportOfVertices" , "VertexOnSupportVertex" , "VertexOnSupportEdge" , "VertexOnSupportTriangle" , "VertexOnSupportQuadrilateral" , "VertexOnSupportTetrahedron" , "VertexOnSupportPentahedron" , "VertexOnSupportHexahedron" , "CrackedEdges" , "CrackedTriangles" , "CrackedQuadrilaterals" , "EquivalentEdges" , "EquivalentTriangles" , "EquivalentQuadrilaterals" , "PhysicsReference" , "IncludeFile" , "BoundingBox" , "Identifier" , "IdentityOfGeometry" , "IdentityOfMeshSupport" , "End" , "#" , "SizeAtVertices" , "MetricAtVertices" , "Miscellaneous" , "Tangents" , "Normals", "TangentAtVertices" }; int nb_mots_clefs=NbMc, debut_mesh=0, pos_mc_prec=0, pos_mc1=0, type_fichier=0, mc_ecrits[NbMc], codage; /*----------------------------------------------------------*/ /* Protos */ /*----------------------------------------------------------*/ int (*lire_mot_clef)(FILE *), (*lire_int)(FILE *), (*chercher_mot_clef)(FILE *, int, int); int (*mot_clef_suivant)(FILE *); float (*lire_reel)(FILE *); void (*ecrire_mot_clef)(FILE *, int), (*ecrire_int)(FILE *, int); void (*ecrire_reel)(FILE *, float), (*lire_chaine)(FILE *, char *); void (*ecrire_chaine)(FILE *, char *), (*formater)(FILE *); void (*lire_commentaire)(FILE *, char *), (*ecrire_commentaire)(FILE *, char *); /*----------------------------------------------------------*/ /* Ouverture d'un MESH en lecture ou ecriture */ /*----------------------------------------------------------*/ /* IN: nom_fichier : pointeur sur une chaine contenant le */ /* nom du fichier a ouvrir. */ /* action : pointeur sur une chaine contenant "r" pour */ /* ouvrir un fichier en lecture ou "w" en */ /* ecriture. */ /* meshversion : pointeur sur un entier qui contiendra */ /* la version du mesh lu. */ /*----------------------------------------------------------*/ /* OUT: pointeur sur un FILE ou 0 si echec. */ /*----------------------------------------------------------*/ FILE *ouvrir_mesh(char *nom_fichier, char *action, int *meshversion) { FILE *handle=0; char tmp[100]; memset((char *)mc_ecrits, 0, NbMc * sizeof(int)); /* Determine le type du fichier 1=ascii , 2=binaire. Si l'extension est specifiee par l'utilisateur on l'utilise, sinon on tente d'abord d'ouvrir un binaire puis un ascii */ if(strstr(nom_fichier, ".meshb")) if(handle = fopen(nom_fichier, action)) type_fichier = BINAIRE; else return(0); else if(strstr(nom_fichier, ".mesh")) if(handle = fopen(nom_fichier, action)) type_fichier = ASCII; else return(0); else { strcpy(tmp, nom_fichier); if(handle = fopen((char *)strcat(tmp, ".meshb"), action)) type_fichier = BINAIRE; else { strcpy(tmp, nom_fichier); if(handle = fopen((char *)strcat(tmp, ".mesh"), action)) type_fichier = ASCII; else return(0); } } /* Lit ou ecrit l'entete selon le mode 'r' ou 'w' */ if(strchr(action, 'r')) switch(type_fichier) { case ASCII : { fscanf(handle, "%s %d", tmp, meshversion); /* On associe les fonctions ASCII aux pointeurs de fontions generiques */ lire_mot_clef = lire_mot_clef_ascii; lire_chaine = lire_chaine_ascii; lire_int = lire_int_ascii; lire_reel = lire_reel_ascii; chercher_mot_clef = chercher_mot_clef_ascii; lire_commentaire = lire_commentaire_ascii; mot_clef_suivant = mot_clef_suivant_ascii; }break; case BINAIRE : { /* Lit le code qui va permettre de determiner si le processeur est en little ou big indian */ codage = lire_int_binaire(handle); /* On associe les fonctions BINAIRE aux pointeurs de fontions generiques */ lire_mot_clef = lire_mot_clef_binaire; lire_chaine = lire_chaine_binaire; chercher_mot_clef = chercher_mot_clef_binaire; lire_commentaire = lire_commentaire_binaire; mot_clef_suivant = mot_clef_suivant_binaire; /* Si on retrouve le nombre de ref (1) le fichier a le meme codage que la machine en question,sinon on utilise les routines d'inversion */ if(codage == 1) { lire_int = lire_int_binaire; lire_reel = lire_reel_binaire; } else { lire_int = lire_int_binaire_swap; lire_reel = lire_reel_binaire_swap; } /* Lit la version du mesh */ *meshversion = lire_int(handle); /* Stoc la position du premier mot clef du fichier */ pos_mc1 = ftell(handle); }break; } if(strchr(action, 'w')) switch(type_fichier) { case ASCII : { fprintf(handle, "MeshVersionFormatted 1\n"); /* On associe les fonctions ASCII aux pointeurs de fontions generiques */ ecrire_int = ecrire_int_ascii; ecrire_reel = ecrire_reel_ascii; ecrire_mot_clef = ecrire_mot_clef_ascii; ecrire_chaine = ecrire_chaine_ascii; ecrire_commentaire = ecrire_commentaire_ascii; formater = ecrire_cr_ascii; }break; case BINAIRE : { /* Version 1 du format mesh */ ecrire_int_binaire(handle, 1); /* Entier de comtrole pour le test little/big endian */ ecrire_int_binaire(handle, 1); /* On associe les fonctions BINAIRE aux pointeurs de fontions generiques */ ecrire_int = ecrire_int_binaire; ecrire_reel = ecrire_reel_binaire; ecrire_mot_clef = ecrire_mot_clef_binaire; ecrire_chaine = ecrire_chaine_binaire; ecrire_commentaire = ecrire_commentaire_binaire; formater = ecrire_cr_binaire; }break; } return(handle); } /*----------------------------------------------------------*/ /* Fermeture d'un MESH */ /*----------------------------------------------------------*/ /* IN: handle : pointeur sur la clef du fichier a fermer. */ /*----------------------------------------------------------*/ void fermer_mesh(FILE *handle) { fclose(handle); } /*----------------------------------------------------------*/ /* Lecture et decodage d'un mot clef en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: le code du mot clef lu. */ /*----------------------------------------------------------*/ int lire_mot_clef_ascii(FILE *fichier) { int mc_code, trouve; char mot_clef[32]; /* On lit la chaine ascii du mot clef et on recherche le code qui lui est associe */ fscanf(fichier, "%s", mot_clef); mc_code = trouve = 0; while((mc_code < nb_mots_clefs) && (!trouve)) if(!strcmp(mot_clef, strings_mots_clefs[ ++mc_code ])) { trouve = 1; break; } if(trouve) return(mc_code); else return(End); } /*----------------------------------------------------------*/ /* Ecriture et encodage d'un mot clef en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /* code : code du mot clef a ecrire. */ /*----------------------------------------------------------*/ void ecrire_mot_clef_ascii(FILE *fichier, int code) { fprintf(fichier, "\n%s\n", strings_mots_clefs[code]); } /*----------------------------------------------------------*/ /* Lecture d'un mot clef en BINAIRE */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: le code du mot clef lu. */ /*----------------------------------------------------------*/ int lire_mot_clef_binaire(FILE *fichier) { int code; code = lire_int(fichier); lire_int(fichier); if( (code >= 1) && (code <= nb_mots_clefs) ) return(code); else return(End); } /*----------------------------------------------------------*/ /* Ecriture d'un mot clef en BINAIRE */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ void ecrire_mot_clef_binaire(FILE *fichier, int code) { int pos_actu; /* Lorsqu'on ecrit un mot clef en binaire en ecrit aussi sa position dans le fichier juste apres le mot clef precedent */ if(debut_mesh) { pos_actu = ftell(fichier); fseek(fichier, pos_mc_prec, SEEK_SET); ecrire_int(fichier, pos_actu); fseek(fichier, pos_actu, SEEK_SET); } else debut_mesh = 1; ecrire_int(fichier, code); pos_mc_prec = ftell(fichier); ecrire_int(fichier, 0); if(code == End) debut_mesh = 0; } /*----------------------------------------------------------*/ /* Lecture d'un entier en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: l'entier lu. */ /*----------------------------------------------------------*/ int lire_int_ascii(FILE *fichier) { int entier; fscanf(fichier, "%d", &entier); return(entier); } /*----------------------------------------------------------*/ /* Ecriture d'un entier en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /* entier : l'entier a ecrire. */ /*----------------------------------------------------------*/ void ecrire_int_ascii(FILE *fichier, int entier) { fprintf(fichier, "%d ", entier); } /*----------------------------------------------------------*/ /* Lecture d'un entier en BINAIRE sans retournement */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: l'entier lu. */ /*----------------------------------------------------------*/ int lire_int_binaire(FILE *fichier) { int entier; fread(&entier, 4, 1, fichier); return(entier); } /*----------------------------------------------------------*/ /* Lecture d'un entier en BINAIRE avec retournement */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: l'entier lu. */ /*----------------------------------------------------------*/ int lire_int_binaire_swap(FILE *fichier) { int entier, entier2; fread(&entier, 4, 1, fichier); swap_octets(&entier, &entier2, 4); return(entier2); } /*----------------------------------------------------------*/ /* Ecriture d'un entier en BINAIRE */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ void ecrire_int_binaire(FILE *fichier, int entier) { fwrite(&entier, 4, 1, fichier); } /*----------------------------------------------------------*/ /* Lecture d'un float en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: le float lu. */ /*----------------------------------------------------------*/ float lire_reel_ascii(FILE *fichier) { float reel; double reeld; char string[256], *ptr; fscanf(fichier, "%s", string); if(ptr = strpbrk(string, "dD")) *ptr = 'e'; sscanf(string, "%lf", &reeld); reel = reeld; return(reel); } /*----------------------------------------------------------*/ /* Ecriture d'un float en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /* reel : le float a ecrire. */ /*----------------------------------------------------------*/ void ecrire_reel_ascii(FILE *fichier, float reel) { fprintf(fichier,"%g ", reel); } /*----------------------------------------------------------*/ /* Lecture d'un float en BINAIRE sans retournement */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: le float lu */ /*----------------------------------------------------------*/ float lire_reel_binaire(FILE *fichier) { float reel; fread(&reel, 4, 1, fichier); return(reel); } /*----------------------------------------------------------*/ /* Lecture d'un float en BINAIRE avec retournement */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: le float lu. */ /*----------------------------------------------------------*/ float lire_reel_binaire_swap(FILE *fichier) { float reel, reel2; fread(&reel, 4, 1, fichier); swap_octets(&reel, &reel2, 4); return(reel2); } /*----------------------------------------------------------*/ /* Ecriture d'un float en BINAIRE */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ void ecrire_reel_binaire(FILE *fichier, float reel) { fwrite(&reel, 4, 1, fichier); } /*----------------------------------------------------------*/ /* Lecture d'une chaine MESH en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /* chaine : pointeur sur la chaine qui contiendra la */ /* chaine mesh sans guillemets ni EOL. */ /*----------------------------------------------------------*/ void lire_chaine_ascii(FILE *handle, char *chaine) { int debut=0, fin=1, c, cpt=0; while(fin) { c = fgetc(handle); if(c == '"') if(debut) { c = fgetc(handle); if(c != '"') fin = 0; else chaine[ cpt++ ] = (char)c; } else debut = 1; else if(debut == 1) chaine[ cpt++ ] = c; } chaine[cpt] = '\0'; } /*----------------------------------------------------------*/ /* Ecriture d'une chaine MESH en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /* chaine : pointeur sur la chaine qui sera ecrite */ /* entre guillemets + EOL. */ /*----------------------------------------------------------*/ void ecrire_chaine_ascii(FILE *handle, char *chaine) { fprintf(handle, "\"%s\"\n", chaine); } /*----------------------------------------------------------*/ /* Lecture d'une chaine MESH en BINAIRE */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /* chaine : pointeur sur la chaine qui contiendra la */ /* chaine mesh sans guillemets ni EOL. */ /*----------------------------------------------------------*/ void lire_chaine_binaire(FILE *fichier, char *chaine) { int taille; taille = lire_int(fichier); fread(chaine, 1, taille, fichier); chaine[taille] = '\0'; } /*----------------------------------------------------------*/ /* Ecriture d'une chaine MESH en BINAIRE */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /* chaine : pointeur sur la chaine qui sera ecrite */ /* entre guillemets + EOL. */ /*----------------------------------------------------------*/ void ecrire_chaine_binaire(FILE *fichier, char *chaine) { int taille; taille = strlen(chaine); ecrire_int(fichier, taille); fwrite(chaine, 1, taille, fichier); } /*----------------------------------------------------------*/ /* Rechercher un mot clef en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /* code : code du mot clef a rechercher. */ /* pos_depart : on peut optionellement specifier une */ /* position de depart dans le fichier */ /* accelerer la recherche. */ /*----------------------------------------------------------*/ /* OUT: position dans le fichier de la string juste apres */ /* mot clef. */ /*----------------------------------------------------------*/ int chercher_mot_clef_ascii(FILE *fichier, int code, int pos_depart) { int pos_mot_clef=0, position; char buffer[256]; position = ftell(fichier); fseek(fichier, pos_depart, SEEK_SET); do { fscanf(fichier, "%s", buffer); if(buffer[0] == '#') lire_commentaire_ascii(fichier, 0); else if(!strcmp(buffer, strings_mots_clefs[code])) { pos_mot_clef = ftell(fichier); break; } }while(!feof(fichier)); fseek(fichier, position, SEEK_SET); return(pos_mot_clef); } /*----------------------------------------------------------*/ /* Rechercher un mot clef en BINAIRE */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /* code : code du mot clef a rechercher. */ /* vide2 : dummy,ne rien mettre. */ /*----------------------------------------------------------*/ /* OUT: position dans le fichier de la string juste apres */ /* mot clef. */ /*----------------------------------------------------------*/ int chercher_mot_clef_binaire(FILE *fichier, int code, int vide) { int pos_mot_clef=0, position; int mot_clef, suiv; position = ftell(fichier); fseek(fichier, pos_mc1, SEEK_SET); do { mot_clef = lire_int(fichier); suiv = lire_int(fichier); if(code == mot_clef) pos_mot_clef = ftell(fichier); else if(suiv) fseek(fichier, suiv, SEEK_SET); else return(0); }while( (code != mot_clef) && (mot_clef != End) ); fseek(fichier, position, SEEK_SET); return(pos_mot_clef); } /*----------------------------------------------------------*/ /* Positionne sur le mot clef suivant en ASCII */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: code du mot clef suivant ou 0 s'il n'y en a pas. */ /*----------------------------------------------------------*/ int mot_clef_suivant_ascii(FILE *fichier) { int mc_code=0, trouve=0; char buffer[256]; do { fscanf(fichier, "%s", buffer); if(buffer[0] == '#') lire_commentaire_ascii(fichier, 0); else if(isalpha(buffer[0])) { mc_code = 0; while((mc_code < nb_mots_clefs-1) && (!trouve)) if(!strcmp(buffer, strings_mots_clefs[ ++mc_code ])) trouve = 1; } }while( !trouve && !feof(fichier) ); if(feof(fichier)) return(End); else if(!trouve) return(0); else return(mc_code); } /*----------------------------------------------------------*/ /* Positionne sur le mot clef suivant en BINAIRE */ /*----------------------------------------------------------*/ /* IN: fichier : pointeur sur la clef du fichier. */ /*----------------------------------------------------------*/ /* OUT: code du mot clef suivant ou 0 s'il n'y en a pas. */ /*----------------------------------------------------------*/ int mot_clef_suivant_binaire(FILE *fichier) { int position; int mot_clef=0, suiv; position = ftell(fichier); fseek(fichier, pos_mc1, SEEK_SET); while( (ftell(fichier) < position) && (mot_clef != End) ) { mot_clef = lire_int(fichier); suiv = lire_int(fichier); if(!suiv) return(End); fseek(fichier, suiv, SEEK_SET); } mot_clef = lire_mot_clef(fichier); return(mot_clef); } /*----------------------------------------------------------*/ /* Routine de passage little<->big indian */ /*----------------------------------------------------------*/ /* IN: c1 : pointeur sur la suite d'octets a convertir. */ /* c2 : pointeur sur la suite d'octets resultante. */ /* nbytes : nombre d'octets a convertir. */ /*----------------------------------------------------------*/ void swap_octets(void *c1, void *c2, int nbytes) { int k; char *c11, *c22; c11 = (char*)c1; c22 = (char*)c2; for (k=0; k #include #include #include #include "libmesh3.h" /*----------------------------------------------------------*/ /* Global variables */ /*----------------------------------------------------------*/ char *LM_kw_table[ LM_NBKW + 1 ][3] = { {"Reserved", "", ""}, {"MeshVersionFormatted", "", "i"}, {"Reserved", "", ""}, {"Dimension", "", "i"}, {"Vertices", "i", "dri"}, {"Edges", "i", "iii"}, {"Triangles", "i", "iiii"}, {"Quadrilaterals", "i", "iiiii"}, {"Tetrahedra", "i", "iiiii"}, {"Pentahedra", "i", "iiiiiii"}, {"Hexahedra", "i", "iiiiiiiii"}, {"SubDomainFromGeom", "i", "iiii"}, {"SubDomainFromMesh", "i", "iiii"}, {"Corners", "i", "i"}, {"Ridges", "i", "i"}, {"RequiredVertices", "i", "i"}, {"RequiredEdges", "i", "i"}, {"RequiredTriangles", "i", "i"}, {"RequiredQuadrilaterals", "i", "i"}, {"TangentAtEdgeVertices", "i", "iii"}, {"NormalAtVertices", "i", "ii"}, {"NormalAtTriangleVertices", "i", "iii"}, {"NormalAtQuadrilateralVertices", "i", "iiii"}, {"AngleOfCornerBound", "", "r"}, {"Geometry", "", "c"}, {"VertexOnGeometricVertex", "i", "ii"}, {"VertexOnGeometricEdge", "i", "iir"}, {"VertexOnGeometricTriangle", "i", "iirr"}, {"VertexOnGeometricQuadrilateral", "i", "iirr"}, {"EdgeOnGeometricEdge", "i", "ii"}, {"TriangleOnGeometricTriangle", "i", "ii"}, {"TriangleOnGeometricQuadrilateral", "i", "ii"}, {"QuadrilateralOnGeometricTriangle", "i", "ii"}, {"QuadrilateralOnGeometricQuadrilateral", "i", "ii"}, {"MeshSupportOfVertices", "", "c"}, {"VertexOnSupportVertex", "i", "ii"}, {"VertexOnSupportEdge", "i", "iir"}, {"VertexOnSupportTriangle", "i", "iirr"}, {"VertexOnSupportQuadrilateral", "i", "iirr"}, {"VertexOnSupportTetrahedron", "i", "iirrr"}, {"VertexOnSupportPentahedron", "i", "iirrr"}, {"VertexOnSupportHexahedron", "i", "iirrr"}, {"CrackedEdges", "i", "ii"}, {"CrackedTriangles", "i", "ii"}, {"CrackedQuadrilaterals", "i", "ii"}, {"EquivalentEdges", "i", "ii"}, {"EquivalentTriangles", "i", "ii"}, {"EquivalentQuadrilaterals", "i", "ii"}, {"PhysicsReference", "i", "ic"}, {"IncludeFile", "", "c"}, {"BoundingBox", "", "drdr"}, {"Identifier", "", "c"}, {"IdentityOfGeometry", "", "c"}, {"IdentityOfMeshSupport", "", "c"}, {"End", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Tangents", "i", "dr"}, {"Normals", "i", "dr"}, {"TangentAtVertices", "i", "ii"}, {"SolAtVertices", "i", "sr"}, {"SolAtEdges", "i", "sr"}, {"SolAtTriangles", "i", "sr"}, {"SolAtQuadrilaterals", "i", "sr"}, {"SolAtTetrahedra", "i", "sr"}, {"SolAtPentahedra", "i", "sr"}, {"SolAtHexahedra", "i", "sr"}, {"DSolAtVertices", "i", "sr"}, {"ISolAtVertices", "i", "i"}, {"ISolAtEdges", "i", "ii"}, {"ISolAtTriangles", "i", "iii"}, {"ISolAtQuadrilaterals", "i", "iiii"}, {"ISolAtTetrahedra", "i", "iiii"}, {"ISolAtPentahedra", "i", "iiiiii"}, {"ISolAtHexahedra", "i", "iiiiiiii"}, {"Iterations","","i"}, {"Time","","r"}, {"VertexHack","","drdr"} }; /*----------------------------------------------------------*/ /* Prototypes of local procedures */ /*----------------------------------------------------------*/ static void write_kw(LM_mesh_struct *, int); static int read_int(LM_mesh_struct *); static void write_int(LM_mesh_struct *, int); static void file2kw_tab(LM_mesh_struct *); static void kw_tab2file(LM_mesh_struct *); static int expand_format(LM_mesh_struct *, int, char *); static void swap_bytes(void *, void *, int); static void read_sol_headers(LM_mesh_struct *); /*----------------------------------------------------------*/ /* Open a mesh file in read or write mode */ /*----------------------------------------------------------*/ int LM_open_mesh(char *filename, int mode, LM_mesh_struct *mesh, ...) { int i; va_list pa; /*---------------------*/ /* MESH STRUCTURE INIT */ /*---------------------*/ /* Init the kw table */ for(i=0;i<=LM_NBKW;i++) { mesh->kw_counters[i] = 0; mesh->kw_pos[i][0] = 0; mesh->kw_pos[i][1] = 0; mesh->kw_pos[i][2] = 0; mesh->sol_headers[i] = NULL; } /* Allocate a string large enough to contain the full filename and path plus the ".meshb" extension. */ mesh->filename = (char *)calloc((strlen(filename) + 7), sizeof(char)); strcpy(mesh->filename, filename); /* Store the opening mode (read or write) and guess the filetype (binary or ascii) depending on the extension */ mesh->mode = mode; mesh->current_kw = mesh->type = 0; mesh->endian = 1; if(strstr(mesh->filename, ".meshb")) mesh->type |= (LM_BINARY | LM_MESH); else if(strstr(mesh->filename, ".mesh")) mesh->type |= (LM_ASCII | LM_MESH); else if(strstr(mesh->filename, ".solb")) mesh->type |= (LM_BINARY | LM_SOL); else if(strstr(mesh->filename, ".sol")) mesh->type |= (LM_ASCII | LM_SOL); else return(0); /* Open the file in the required mode and initialyse the mesh structure */ if(mesh->mode == LM_READ) { /*-----------------------*/ /* OPEN FILE FOR READING */ /*-----------------------*/ /* Create the name string and open the file */ if(!(mesh->handle = fopen(mesh->filename, "rb"))) return(0); /* Read the endian tag and the mesh version in binary */ if(mesh->type & LM_BINARY) { mesh->endian = read_int(mesh); if( (mesh->endian != 1) && (mesh->endian != 16777216) ) return(0); mesh->version = read_int(mesh); } /*------------*/ /* KW READING */ /*------------*/ /* Read the list of kw present in the file */ file2kw_tab(mesh); /* Check the mesh dimension */ if(!mesh->kw_counters[ LM_Dimension ]) return(0); LM_read_field(mesh, LM_Dimension, 1, &mesh->dimension); if( (mesh->dimension != 2) && (mesh->dimension != 3) ) return(0); /* Read the meshversion in ascii case */ if(mesh->type & LM_ASCII) LM_read_field(mesh, LM_MeshVersionFormatted, 1, &mesh->version); /* And read the extended sol headers */ read_sol_headers(mesh); } else if(mesh->mode == LM_WRITE) { /*-----------------------*/ /* OPEN FILE FOR WRITING */ /*-----------------------*/ /* Check if the user provided a valid dimension */ va_start(pa, mesh); mesh->dimension = va_arg(pa, int); va_end(pa); if( (mesh->dimension != 2) && (mesh->dimension != 3) ) return(0); /* If no extension has been provided, create a binary file */ if(!(mesh->handle = fopen(mesh->filename, "wb"))) return(0); /*------------*/ /* KW WRITING */ /*------------*/ /* Initialyse the required fields. The kw will be stored afterward. */ mesh->version = LM_MESH_VERSION; mesh->endian = 1; /* Write the mesh version */ if(mesh->type & LM_ASCII) LM_write_field(mesh, LM_MeshVersionFormatted, 1, &mesh->version); else { write_int(mesh, mesh->endian); write_int(mesh, mesh->version); } /* Write the mesh dimension */ LM_write_field(mesh, LM_Dimension, 1, &mesh->dimension); } else return(0); return(1); } /*----------------------------------------------------------*/ /* Close a meshfile in the right way */ /*----------------------------------------------------------*/ int LM_close_mesh(LM_mesh_struct *mesh) { if(mesh->mode == LM_WRITE) { /* Test if the user wrote the "End" kw */ if(!mesh->kw_counters[ LM_End ]) LM_write_field(mesh, LM_End, 0, NULL); /* Write down the number lines written in each field to the file */ kw_tab2file(mesh); } if(fclose(mesh->handle)) return(0); else return(1); } /*----------------------------------------------------------*/ /* Bufferized read of a whole orpart of a field */ /*----------------------------------------------------------*/ int LM_read_field(LM_mesh_struct *mesh, int kw_code, int nbl, void *buffer) { int i, j, swaped, size, *int_buffer = (int *)buffer, string_size; float *flt_buffer = (float *)buffer; char format[256], letter, str_buf[256]; /* Check if the kw code is valid */ if( (kw_code < 1) || (kw_code > LM_NBKW) ) return(0); /* Check if this kw has a format */ if(!strlen(LM_kw_table[ kw_code ][2])) return(0); /* If this kw is only a header, the number of lines to be read is set to one */ if(!strlen(LM_kw_table[ kw_code ][1])) nbl = 1; /* Check if the user is not asking more lines than the remaining lines in the file */ if(nbl > mesh->kw_counters[ kw_code ] - mesh->kw_pos[ kw_code ][2]) nbl = mesh->kw_counters[ kw_code ] - mesh->kw_pos[ kw_code ][2]; if(!nbl) return(0); /* Set the curent position in file to the begining of this kw's data */ fseek(mesh->handle, mesh->kw_pos[ kw_code ][1], SEEK_SET); /* Transform the internal format into a "c" format string for the scanf and compute the size of field's line in order to compute the right adresses in the buffer */ size = expand_format(mesh, kw_code, format); if(mesh->type & LM_ASCII) { for(i=0;ihandle, "%d", &int_buffer[ i * size + j ]); else if(format[j] == 'r') fscanf(mesh->handle, "%g", &flt_buffer[ i * size + j ]); else if(format[j] == 'c') { string_size = 0; do { fscanf(mesh->handle, "%c", &letter); }while(letter != '"'); do { fscanf(mesh->handle, "%c", &letter); str_buf[ string_size++ ] = letter; }while( (letter != '"') && (string_size <= 256) ); str_buf[ string_size-1 ] = 0; memset(&flt_buffer[ i * size + j ], 0, 256); strcpy((char *)&flt_buffer[ i * size + j ], str_buf); } } else { fread(buffer, nbl * size * 4, 1, mesh->handle); /* Swap the bytes in the whole buffer in case of different endian */ if(mesh->endian != 1) for(i=0;ikw_pos[ kw_code ][1] = ftell(mesh->handle); mesh->kw_pos[ kw_code ][2] += nbl; return(nbl); } /*----------------------------------------------------------*/ /* Bufferized write of a whole field or part of it */ /*----------------------------------------------------------*/ int LM_write_field(LM_mesh_struct *mesh, int kw_code, int nbl, void *buffer, ...) { int i, j, size, *int_buffer = (int *)buffer, nbsol; float *flt_buffer = (float *)buffer; char format[256]; va_list pa; /* Check if the kw code is valid */ if( (kw_code < 1) || (kw_code > LM_NBKW) ) return(0); /* Read further arguments if this kw is solution field and the extra header was not provided by the user */ if(!mesh->sol_headers[ kw_code ] && !strcmp(LM_kw_table[ kw_code ][2], "sr")) { va_start(pa, buffer); nbsol = va_arg(pa, int); if(!(mesh->sol_headers[ kw_code ] = malloc((nbsol+2) * sizeof(int)))) return(0); mesh->sol_headers[ kw_code ][0] = nbsol; mesh->sol_headers[ kw_code ][1] = 0; for(i=1;i<=nbsol;i++) { mesh->sol_headers[ kw_code ][i+1] = va_arg(pa, int); switch(mesh->sol_headers[ kw_code ][i+1]) { case 1 : mesh->sol_headers[ kw_code ][1] += 1; break; case 2 : mesh->sol_headers[ kw_code ][1] += mesh->dimension; break; case 3 : mesh->sol_headers[ kw_code ][1] += (mesh->dimension * (mesh->dimension+1)) / 2; break; case 4 : mesh->sol_headers[ kw_code ][1] += mesh->dimension * mesh->dimension; break; } } va_end(pa); } /* If this kw is only a header, the number of lines to be read is set to one */ if(!strlen(LM_kw_table[ kw_code ][1])) nbl = 1; if(!mesh->kw_counters[ kw_code ]) write_kw(mesh, kw_code); mesh->kw_counters[ kw_code ] += nbl; /* Check if this kw has a format */ if(!strlen(LM_kw_table[ kw_code ][2])) return(0); size = expand_format(mesh, kw_code, format); if(mesh->type & LM_ASCII) { for(i=0;ihandle, "%d ", int_buffer[ i * size + j ]); else if(format[j] == 'r') fprintf(mesh->handle, "%g ", flt_buffer[ i * size + j ]); else if(format[j] == 'c') { fputc('"', mesh->handle); fprintf(mesh->handle, "%s", (char *)&flt_buffer[ i * size + j ]); fputc('"', mesh->handle); } fprintf(mesh->handle, "\n"); } } else fwrite(buffer, nbl * size * 4, 1, mesh->handle); mesh->kw_pos[ kw_code ][1] = ftell(mesh->handle); return(1); } /*----------------------------------------------------------*/ /* Single line read */ /*----------------------------------------------------------*/ int LM_read_line(LM_mesh_struct *mesh, int kw_code, ...) { float buffer[10], *ptr_flt; int i, size; char format[256]; va_list pa; /* Check wether this kw is not a simple header */ if(!strlen(LM_kw_table[ kw_code ][2])) return(0); /* Get a one line buffer */ LM_read_field(mesh, kw_code, 1, buffer); /* Start decoding the arguments */ va_start(pa, kw_code); size = expand_format(mesh, kw_code, format); for(i=0;itype & LM_ASCII) { /* Scan each string of the file until the end */ while(fscanf(mesh->handle, "%s", str) != EOF) { /* Fast test in order to reject quickly the numeric values */ if(isalpha(str[0])) { /* Search which kw code this string is associated with */ for(kw_code=1; kw_code<= LM_NBKW; kw_code++) if(!strcmp(str, LM_kw_table[ kw_code ][0])) { /* The base position (0) in the file is set right after the kw */ mesh->kw_pos[ kw_code ][0] = ftell(mesh->handle); /* If this kw has a header, read the number of lines */ if(!strcmp(LM_kw_table[ kw_code ][1], "i")) mesh->kw_counters[ kw_code ] = read_int(mesh); else mesh->kw_counters[ kw_code ] = 1; /* The curent position (1) in the file is set right before the data */ mesh->kw_pos[ kw_code ][1] = ftell(mesh->handle); break; } } else if(str[0] == '#') while(fgetc(mesh->handle) != '\n'); } } else { /* Jump through kw positions in the file */ do { kw_code = read_int(mesh); /* Check if this kw belongs to this mesh version */ if( (kw_code >= 1) && (kw_code <= LM_NBKW) ) { /* The base position (0) in the file is set right after the kw */ mesh->kw_pos[ kw_code ][0] = ftell(mesh->handle); /* Read the next kw position */ next_pos = read_int(mesh); /* If this kw has a header, read the number of lines */ if(!strcmp(LM_kw_table[ kw_code ][1], "i")) mesh->kw_counters[ kw_code ] = read_int(mesh); else mesh->kw_counters[ kw_code ] = 1; /* The curent position (1) in the file is set right before the data */ mesh->kw_pos[ kw_code ][1] = ftell(mesh->handle); } else { /* Otherwise, read the next kw position in order to skip these unknown kw */ next_pos = read_int(mesh); } /* Go to the next kw */ if(next_pos) fseek(mesh->handle, next_pos, SEEK_SET); }while(next_pos); } } /*----------------------------------------------------------*/ /* Update the number of lines written for each kw */ /*----------------------------------------------------------*/ static void kw_tab2file(LM_mesh_struct *mesh) { int i; for(i=1;i<=LM_NBKW;i++) if( mesh->kw_counters[i] && strlen(LM_kw_table[i][2]) ) write_kw(mesh, i); } /*----------------------------------------------------------*/ /* Write the string associated with the kw code */ /*----------------------------------------------------------*/ static void write_kw(LM_mesh_struct *mesh, int kw_code) { int i; if(mesh->type & LM_ASCII) { /* Test if it is the first time this kw is written */ if(!mesh->kw_counters[ kw_code ]) { /* If so, write the string and reserve some place afterward in order to store the number of lines */ fprintf(mesh->handle, "\n%s\n", LM_kw_table[ kw_code ][0]); mesh->kw_pos[ kw_code ][0] = ftell(mesh->handle); if(!strcmp("i", LM_kw_table[ kw_code ][1])) fprintf(mesh->handle, " \n"); /* In case of solution field, write the extended header at once */ if(mesh->sol_headers[ kw_code ]) { fprintf(mesh->handle, "%d ", mesh->sol_headers[ kw_code ][0]); for(i=1;i<=mesh->sol_headers[ kw_code ][0];i++) fprintf(mesh->handle, "%d ", mesh->sol_headers[ kw_code ][i+1]); fprintf(mesh->handle, "\n\n"); } /* Store the positions right after the kw in order to write the number of lines at closing time. Store the position right before the data for the write_field process. */ mesh->kw_pos[ kw_code ][1] = ftell(mesh->handle); } else { /* If this kw has already be written in the file and has a header, go to pos(0) and write down the final value */ if(strcmp("i", LM_kw_table[ kw_code ][1])) return; fseek(mesh->handle, mesh->kw_pos[ kw_code][0], SEEK_SET); fprintf(mesh->handle, "%d\n", mesh->kw_counters[ kw_code ]); } } else { /* Test if it is the first time this kw is written */ if(!mesh->kw_counters[ kw_code ]) { /* If so, write the code, store the position afterward, reserve an int for the next kw position and write the number of lines */ write_int(mesh, kw_code); mesh->kw_pos[ kw_code ][0] = ftell(mesh->handle); write_int(mesh, 0); /* Set the next kw pos in the previously written kw */ if(mesh->current_kw) { fseek(mesh->handle, mesh->kw_pos[ mesh->current_kw ][0], SEEK_SET); write_int(mesh, mesh->kw_pos[ kw_code ][0] - 4); fseek(mesh->handle, mesh->kw_pos[ kw_code ][0] + 4, SEEK_SET); } mesh->current_kw = kw_code; if(!strcmp("i", LM_kw_table[ kw_code ][1])) write_int(mesh, 0); /* In case of solution field, write the extended header at once */ if(mesh->sol_headers[ kw_code ]) { write_int(mesh, mesh->sol_headers[ kw_code ][0]); for(i=1;i<=mesh->sol_headers[ kw_code ][0];i++) write_int(mesh, mesh->sol_headers[ kw_code ][i+1]); } mesh->kw_pos[ kw_code ][1] = ftell(mesh->handle); } else { /* Write the number of lines written at closing time */ if(strcmp("i", LM_kw_table[ kw_code ][1])) return; fseek(mesh->handle, mesh->kw_pos[ kw_code ][0] + 4, SEEK_SET); write_int(mesh, mesh->kw_counters[ kw_code ]); } } } /*----------------------------------------------------------*/ /* Read an integer in a mesh file */ /*----------------------------------------------------------*/ static int read_int(LM_mesh_struct *mesh) { int swaped, integer = 0; if(mesh->type & LM_ASCII) fscanf(mesh->handle, "%d", &integer); else { /* Read a 4 bytes block in the file */ fread(&integer, 4, 1, mesh->handle); if(mesh->endian != 1) { swap_bytes((void *)&integer, (void *)&swaped, 4); integer = swaped; } } return(integer); } /*----------------------------------------------------------*/ /* Write an integer in a mesh file */ /*----------------------------------------------------------*/ static void write_int(LM_mesh_struct *mesh, int integer) { if(mesh->type & LM_ASCII) fprintf(mesh->handle, "%d ", integer); else fwrite(&integer, 4, 1, mesh->handle); } /*----------------------------------------------------------*/ /* Convert little endian <-> big endian */ /*----------------------------------------------------------*/ static void swap_bytes(void *c1, void *c2, int nbytes) { int k; char *c11, *c22; c11 = (char*)c1; c22 = (char*)c2; for (k=0; kdimension times */ duplicate_next = mesh->dimension; } else if(in_format[i] == 's') { /* 's' means duplicate the next character mesh->solsize times */ duplicate_next = mesh->sol_headers[ kw_code ][1]; } } /* Return the sum of item to be read */ return(size); } /*----------------------------------------------------------*/ /* Read the extended sol headers */ /*----------------------------------------------------------*/ static void read_sol_headers(LM_mesh_struct *mesh) { int i, j, nbsol, solsize; for(i=1;i<=LM_NBKW;i++) { /* If the kw is a special Sol field, read the extended header */ if(!mesh->kw_counters[i] || strcmp(LM_kw_table[i][2], "sr")) continue; /* Set the curent position in file to the begining of this kw's data */ fseek(mesh->handle, mesh->kw_pos[i][1], SEEK_SET); nbsol = read_int(mesh); if(mesh->sol_headers[i] = malloc((nbsol+2) * sizeof(int))) { mesh->sol_headers[i][0] = nbsol; solsize = 0; for(j=1;j<=nbsol;j++) { mesh->sol_headers[i][j+1] = read_int(mesh); switch(mesh->sol_headers[i][j+1]) { case LM_SCALAR : solsize += 1; break; case LM_VECTOR : solsize += mesh->dimension; break; case LM_SYM_MATRIX : solsize += (mesh->dimension * (mesh->dimension+1)) / 2; break; case LM_MATRIX : solsize += mesh->dimension * mesh->dimension; break; } mesh->sol_headers[i][1] = solsize; } mesh->kw_pos[i][1] = ftell(mesh->handle); } } } libMeshb-7.80/legacy_sources/v3/libmesh3.h000066400000000000000000000077041456732543400204400ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* LIBMESH V 3.0 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: handle .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: aug 02 2003 */ /* Last modification: jan 25 2006 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include /*----------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------*/ #define LM_NBKW 79 #define LM_MESH_VERSION 1 #define LM_INT 1 #define LM_REAL 2 #define LM_READ 1 #define LM_WRITE 2 #define LM_ASCII 1 #define LM_BINARY 2 #define LM_MESH 4 #define LM_SOL 8 #define LM_SCALAR 1 #define LM_VECTOR 2 #define LM_SYM_MATRIX 3 #define LM_MATRIX 4 enum LM_kw_tags { LM_Reserved1, \ LM_MeshVersionFormatted, \ LM_Reserved2, \ LM_Dimension, \ LM_Vertices, \ LM_Edges, \ LM_Triangles, \ LM_Quadrilaterals, \ LM_Tetrahedra, \ LM_Pentahedra, \ LM_Hexahedra, \ LM_SubDomainFromGeom, \ LM_SubDomainFromMesh, \ LM_Corners, \ LM_Ridges, \ LM_RequiredVertices, \ LM_RequiredEdges, \ LM_RequiredTriangles, \ LM_RequiredQuadrilaterals, \ LM_TangentAtEdgeVertices, \ LM_NormalAtVertices, \ LM_NormalAtTriangleVertices, \ LM_NormalAtQuadrilateralVertices, \ LM_AngleOfCornerBound, \ LM_Geometry, \ LM_VertexOnGeometricVertex, \ LM_VertexOnGeometricEdge, \ LM_VertexOnGeometricTriangle, \ LM_VertexOnGeometricQuadrilateral, \ LM_EdgeOnGeometricEdge, \ LM_TriangleOnGeometricTriangle, \ LM_TriangleOnGeometricQuadrilateral, \ LM_QuadrilateralOnGeometricTriangle, \ LM_QuadrilateralOnGeometricQuadrilateral, \ LM_MeshSupportOfVertices, \ LM_VertexOnSupportVertex, \ LM_VertexOnSupportEdge, \ LM_VertexOnSupportTriangle, \ LM_VertexOnSupportQuadrilateral, \ LM_VertexOnSupportTetrahedron, \ LM_VertexOnSupportPentahedron, \ LM_VertexOnSupportHexahedron, \ LM_CrackedEdges, \ LM_CrackedTriangles, \ LM_CrackedQuadrilaterals, \ LM_EquivalentEdges, \ LM_EquivalentTriangles, \ LM_EquivalentQuadrilaterals, \ LM_PhysicsReference, \ LM_IncludeFile, \ LM_BoundingBox, \ LM_Identifier, \ LM_IdentityOfGeometry, \ LM_IdentityOfMeshSupport, \ LM_End, \ LM_Reserved10, \ LM_Reserved11, \ LM_Reserved12, \ LM_Reserved13, \ LM_Tangents, \ LM_Normals, \ LM_TangentAtVertices, \ LM_SolAtVertices, \ LM_SolAtEdges, \ LM_SolAtTriangles, \ LM_SolAtQuadrilaterals, \ LM_SolAtTetrahedra, \ LM_SolAtPentahedra, \ LM_SolAtHexahedra, \ LM_DSolAtVertices, \ LM_ISolAtVertices, \ LM_ISolAtEdges, \ LM_ISolAtTriangles, \ LM_ISolAtQuadrilaterals, \ LM_ISolAtTetrahedra, \ LM_ISolAtPentahedra, \ LM_ISolAtHexahedra, \ LM_Iterations, \ LM_Time, \ LM_VertexHack }; /*----------------------------------------------------------*/ /* Structures */ /*----------------------------------------------------------*/ typedef struct { /* Public */ int dimension; int kw_counters[ LM_NBKW + 1 ]; int *sol_headers[ LM_NBKW + 1 ]; /* Private */ int version, mode, type, endian, current_kw; FILE *handle; char *filename; size_t kw_pos[ LM_NBKW + 1 ][3]; }LM_mesh_struct; /*----------------------------------------------------------*/ /* External tables and procedures */ /*----------------------------------------------------------*/ extern int LM_open_mesh(char *, int, LM_mesh_struct *, ...); extern int LM_read_field(LM_mesh_struct *, int, int, void *); extern int LM_write_field(LM_mesh_struct *, int, int, void *, ...); extern int LM_read_line(LM_mesh_struct *, int, ...); extern int LM_write_line(LM_mesh_struct *, int, ...); extern int LM_close_mesh(LM_mesh_struct *); extern char *LM_kw_table[][3]; libMeshb-7.80/legacy_sources/v3/test.mesh000066400000000000000000000003441456732543400204070ustar00rootroot00000000000000MeshVersionFormatted 1 Dimension 3 Vertices 5 0.000000 0.500000 -0.0002000 0 0.000000 0.000000 3.000000 2 3.000000 0.000000 0.000000 0 2.000000 0.000000 -1.000000 0 2.000000 0.000000 3.000000 4 Triangles 2 1 2 3 1 3 4 5 2 End libMeshb-7.80/legacy_sources/v3/test.sol000066400000000000000000000002451456732543400202500ustar00rootroot00000000000000MeshVersionFormatted 1 Dimension 3 SolAtVertices 5 3 1 2 3 5 1 6 8 1 2 3 4 5 6 6 2 4 8 1 2 3 4 5 6 9 3 2 6 1 2 3 4 5 6 8 4 5 6 1 2 3 4 5 6 8 5 2 6 1 2 3 4 5 6 End libMeshb-7.80/legacy_sources/v3/test_libmesh.c000066400000000000000000000024271456732543400214040ustar00rootroot00000000000000#include main() { LM_mesh_struct inmesh, outmesh; int i, ref, p1, p2, p3; float x, y, z; /* Tente d'ouvrir le mesh en lecture, sinon fin */ if(!LM_open_mesh("test.mesh", LM_READ, &inmesh)) return(1); /* Si le mesh n'est pas de la dimension souhaitee : fin */ if(inmesh.dimension != 3) return(1); /* Si le mesh ne contient pas de point : fin */ if(inmesh.kw_counters[ LM_Vertices ] < 1) return(1); /* Tente d'ouvrir le mesh en ecriture, sinon fin */ if(!LM_open_mesh("test2.mesh", LM_WRITE, &outmesh, 3)) return(1); /* Boucle copiant tous les points */ for(i=1; i<=inmesh.kw_counters[ LM_Vertices ]; i++) { LM_read_line(&inmesh, LM_Vertices, &x, &y, &z, &ref); LM_write_line(&outmesh, LM_Vertices, &x, &y, &z, &ref); printf("vertex %d : %f %f %f %d\n", i, x, y, z, ref); } /* On fait de meme pour les triangles */ if(inmesh.kw_counters[ LM_Triangles ] < 1) return(1); for(i=1; i<=inmesh.kw_counters[ LM_Triangles ]; i++) { LM_read_line(&inmesh, LM_Triangles, &p1, &p2, &p3, &ref); LM_write_line(&outmesh, LM_Triangles, &p1, &p2, &p3, &ref); printf("triangle %d : %d %d %d %d\n", i, p1, p2, p3, ref); } /* Fermeture des fichiers */ if(!LM_close_mesh(&inmesh)) return(1); if(!LM_close_mesh(&outmesh)) return(1); return(0); } libMeshb-7.80/legacy_sources/v3/test_sol.c000066400000000000000000000032361456732543400205550ustar00rootroot00000000000000#include main() { LM_mesh_struct mesh, mesh2; int i, j, entier; float *buffer, *ptr_buffer, reel, *ptr_entier = (float *)&entier, *ptr_reel = &reel; /* Tente d'ouvrir le mesh en lecture, sinon fin */ if(!LM_open_mesh("test.sol", LM_READ, &mesh)) return(1); /* Si le mesh n'est pas de la dimension souhaitee : fin */ if(mesh.dimension != 3) return(1); /* Si le mesh ne contient pas de solutions aux points : fin */ if(mesh.kw_counters[ LM_SolAtVertices ] < 1) return(1); /* Tente d'ouvrir le mesh en ecriture, sinon fin */ if(!LM_open_mesh("test.solb", LM_WRITE, &mesh2, 3)) return(1); /* Alloue un buffer suffisamment grand pour contenir toutes les solutions */ if(!(buffer = malloc(mesh.kw_counters[ LM_SolAtVertices ] * (mesh.sol_headers[ LM_SolAtVertices ][1] * sizeof(float))))) return(1); /* Lecture de toutes les solutions en bloc */ if(!LM_read_field(&mesh, LM_SolAtVertices, mesh.kw_counters[ LM_SolAtVertices ], buffer)) return(1); /* Ecriture des 3 solutions pour chaque vertex : un scalaire, un vecteur et une matrice symetrique */ if(!LM_write_field(&mesh2, LM_SolAtVertices, mesh.kw_counters[ LM_SolAtVertices ], buffer, 3, 1, 2, 3)) return(1); /* Boucle affichant toutes les solutions */ ptr_buffer = buffer; for(i=1; i<=mesh.kw_counters[ LM_SolAtVertices ]; i++) { printf("vertex %d : ", i); for(j=1;j<=mesh.sol_headers[ LM_SolAtVertices ][1];j++) { *ptr_reel = *(ptr_buffer++); printf("%f ",reel); } puts(""); } /* Libere la memoire du buffer */ free(buffer); /* Fermeture des fichiers */ if(!LM_close_mesh(&mesh)) return(1); if(!LM_close_mesh(&mesh2)) return(1); return(0); } libMeshb-7.80/legacy_sources/v4/000077500000000000000000000000001456732543400165525ustar00rootroot00000000000000libMeshb-7.80/legacy_sources/v4/Makefile000066400000000000000000000032701456732543400202140ustar00rootroot00000000000000 #-----------------------------------------------------------# # # # LIBMESH4 # # # #-----------------------------------------------------------# # # # Description: multi-system makefile (gmake only) # # Author: Loic MARECHAL # # Creation date: feb 11 2005 # # Last modification: feb 18 2005 # # # #-----------------------------------------------------------# # Choose of the compiler depending on the architecture ifeq ($(ARCHI), ppc) CC = xlc endif ifeq ($(ARCHI), sparc) CC = acc endif ifeq ($(ARCHI), hppa) CC = c89 endif ifeq ($(ARCHI), ia64) CC = c89 endif ifeq ($(ARCHI), i86) CC = iccbin endif ifeq ($(ARCHI), mips) CC = c89 endif # Working directories LIBDIR = $(HOME)/lib/$(ARCHI) INCDIR = $(HOME)/include SRCSDIR = sources OBJSDIR = objects/$(ARCHI) ARCHDIR = archives DIRS = objects $(LIBDIR) $(OBJSDIR) $(ARCHDIR) $(INCDIR) VPATH = $(SRCSDIR) # Files to be compiled SRCS = $(wildcard $(SRCSDIR)/*.c) HDRS = $(wildcard $(SRCSDIR)/*.h) OBJS = $(patsubst $(SRCSDIR)%, $(OBJSDIR)%, $(SRCS:.c=.o)) LIB = libmesh4.a # Definition of the compiling implicit rule $(OBJSDIR)/%.o : $(SRCSDIR)/%.c $(CC) -c -O -I$(SRCSDIR) $< -o $@ # Install the library $(LIBDIR)/$(LIB): $(DIRS) $(OBJS) cp $(OBJSDIR)/libmesh4.o $@ cp $(SRCSDIR)/*.h $(INCDIR) # Objects depends on headers $(OBJS): $(HDRS) # Build the working directories $(DIRS): @[ -d $@ ] || mkdir $@ # Remove temporary files clean: rm -f $(OBJS) $(LIBDIR)/$(LIB) # Build a dated archive including sources, patterns and makefile tar: $(DIRS) tar czf $(ARCHDIR)/libmesh4.`date +"%Y.%m.%d"`.tgz sources docs tests Makefile libMeshb-7.80/legacy_sources/v4/in.mesh000066400000000000000000000174341456732543400200470ustar00rootroot00000000000000 MeshVersionFormatted 1 Dimension 3 Vertices 160 95.9149 70.2487 19.9993 1 95.4517 78.0317 19.9993 1 88.6486 72.3545 19.9993 1 95.9149 70.2487 0 1 88.6486 72.3545 0 1 95.4517 78.0317 0 1 101.609 73.6966 19.9993 1 101.609 73.6966 0 1 102.319 64.7063 19.9993 1 110.74 73.239 19.9993 1 102.319 64.7063 0 1 110.74 73.239 0 1 111.649 63.5748 19.9993 1 111.649 63.5748 0 1 103.681 83.5797 19.9993 1 103.681 83.5797 0 1 114.881 84.6691 19.9993 1 114.881 84.6691 0 1 88.6683 43.2078 14.9987 1 101 43 14.9987 1 101 43 19.9993 1 88.6683 43.2078 19.9993 1 96.1424 53.8826 19.9993 1 88.6683 43.2078 7.99915 1 101 43 7.99915 1 88.6683 43.2078 0 1 101 43 0 1 96.1424 53.8826 0 1 84.4904 53.7479 19.9993 1 84.4904 53.7479 0 1 88.1039 82.7571 19.9993 1 88.1039 82.7571 0 1 79.3944 77.5291 19.9993 1 79.3944 77.5291 0 1 82.3257 87.4684 19.9993 1 82.3257 87.4684 0 1 88 94.9986 19.9993 1 88 94.9986 0 1 81.4244 94.1563 19.9993 1 74.6578 88.7234 19.9993 1 81.4244 94.1563 0 1 74.6578 88.7234 0 1 77.999 99.9992 19.9993 1 77.999 99.9992 0 1 81.2868 64.8523 19.9993 1 81.2868 64.8523 0 1 71.0415 68.5922 19.9993 1 71.0415 68.5922 0 1 69.6601 78.8852 19.9993 1 59.6422 74.0532 19.9993 1 59.6422 74.0532 0 1 69.6601 78.8852 0 1 63.9998 61.4999 14.9987 1 63.9998 52.5602 14.9987 1 63.9998 52.5602 19.9993 1 63.9998 61.4999 19.9993 1 72.1927 55.382 19.9993 1 63.9998 61.4999 7.99915 1 63.9998 52.5602 7.99915 1 63.9998 61.4999 0 1 63.9998 52.5602 0 1 72.1927 55.382 0 1 120.249 94.9986 14.9987 1 109.499 94.9986 14.9987 1 109.499 94.9986 19.9993 1 120.249 94.9986 19.9993 1 120.249 94.9986 7.99915 1 109.499 94.9986 7.99915 1 120.249 94.9986 0 1 109.499 94.9986 0 1 124.739 84.978 19.9993 1 124.739 84.978 0 1 131 74.1992 14.9987 1 131 84.5989 14.9987 1 131 84.5989 19.9993 1 131 74.1992 19.9993 1 131 74.1992 7.99915 1 131 84.5989 7.99915 1 131 74.1992 0 1 131 84.5989 0 1 120.381 76.597 19.9993 1 120.381 76.597 0 1 68.2506 97.5003 14.9987 1 58.4995 94.9986 14.9987 1 58.4995 94.9986 19.9993 1 68.2506 97.5003 19.9993 1 63.5927 86.3453 19.9993 1 68.2506 97.5003 7.99915 1 58.4995 94.9986 7.99915 1 68.2506 97.5003 0 1 58.4995 94.9986 0 1 63.5927 86.3453 0 1 94.8003 86.7215 19.9993 1 94.8003 86.7215 0 1 120.62 66.4387 19.9993 1 116.001 57.9987 19.9993 1 120.62 66.4387 0 1 116.001 57.9987 0 1 91.5433 63.0891 19.9993 1 91.5433 63.0891 0 1 108.499 55.9912 19.9993 1 108.499 55.9912 0 1 76.334 43.4127 19.9993 1 76.334 43.4127 0 1 63.9998 43.6205 14.9987 1 63.9998 43.6205 19.9993 1 63.9998 43.6205 7.99915 1 63.9998 43.6205 0 1 76.334 43.4127 14.9987 1 76.334 43.4127 7.99915 1 98.7507 94.9986 14.9987 1 88 94.9986 14.9987 1 98.7507 94.9986 19.9993 1 98.7507 94.9986 7.99915 1 88 94.9986 7.99915 1 98.7507 94.9986 0 1 131 94.9986 14.9987 1 131 94.9986 19.9993 1 131 94.9986 7.99915 1 131 94.9986 0 1 84.117 99.7352 14.9987 1 77.999 99.9992 14.9987 1 84.117 99.7352 19.9993 1 84.117 99.7352 7.99915 1 77.999 99.9992 7.99915 1 84.117 99.7352 0 1 59.6422 74.0532 14.9987 1 59.6422 74.0532 7.99915 1 50.8794 84.043 19.9993 1 50.8794 84.043 0 1 131 43 14.9987 1 131 53.3997 14.9987 1 131 53.3997 19.9993 1 131 43 19.9993 1 123.501 55.9912 19.9993 1 123.501 55.9912 14.9987 1 131 43 7.99915 1 131 53.3997 7.99915 1 123.501 55.9912 7.99915 1 131 43 0 1 131 53.3997 0 1 123.501 55.9912 0 1 131 63.7994 19.9993 1 131 63.7994 0 1 131 63.7994 14.9987 1 131 63.7994 7.99915 1 116.001 57.9987 14.9987 1 116.001 57.9987 7.99915 1 48.7511 92.4998 14.9987 1 48.7511 92.4998 19.9993 1 48.7511 92.4998 7.99915 1 48.7511 92.4998 0 1 50.8794 84.043 14.9987 1 50.8794 84.043 7.99915 1 39 90.0009 14.9987 1 39 90.0009 19.9993 1 39 90.0009 7.99915 1 39 90.0009 0 1 108.499 55.9912 14.9987 1 108.499 55.9912 7.99915 1 Triangles 316 7 15 2 0 5 6 4 0 8 4 6 0 10 7 9 0 8 12 11 0 9 13 10 0 12 14 11 0 10 15 7 0 16 12 8 0 10 17 15 0 18 12 16 0 21 19 20 0 22 19 21 0 22 21 23 0 20 24 25 0 20 19 24 0 25 26 27 0 24 26 25 0 26 28 27 0 22 23 29 0 30 28 26 0 31 3 2 0 5 32 6 0 31 33 3 0 34 32 5 0 35 33 31 0 36 32 34 0 31 37 35 0 38 32 36 0 35 39 40 0 41 36 42 0 43 40 39 0 44 41 42 0 3 33 45 0 34 5 46 0 47 45 33 0 46 48 34 0 50 47 49 0 52 48 51 0 35 40 33 0 42 36 34 0 55 53 54 0 55 56 53 0 55 57 56 0 59 54 58 0 53 58 54 0 61 59 60 0 59 58 60 0 61 60 62 0 47 57 45 0 46 62 48 0 65 63 64 0 66 63 65 0 66 65 17 0 64 67 68 0 63 67 64 0 69 70 68 0 69 68 67 0 69 18 70 0 71 66 17 0 72 18 69 0 75 73 74 0 75 76 73 0 75 71 76 0 74 77 78 0 74 73 77 0 80 78 79 0 78 77 79 0 72 80 79 0 76 71 81 0 82 72 79 0 85 83 84 0 86 83 85 0 86 85 87 0 89 84 88 0 84 83 88 0 91 89 90 0 89 88 90 0 91 90 92 0 40 86 87 0 42 92 90 0 37 31 93 0 32 38 94 0 8 6 16 0 95 13 96 0 98 14 97 0 95 10 13 0 14 12 97 0 99 1 3 0 100 5 4 0 7 1 9 0 11 4 8 0 101 13 9 0 14 102 11 0 29 99 45 0 100 30 46 0 57 103 29 0 30 104 62 0 106 54 105 0 106 55 54 0 106 57 55 0 107 105 59 0 59 105 54 0 108 107 61 0 59 61 107 0 108 61 62 0 39 35 37 0 38 36 41 0 31 2 93 0 6 32 94 0 22 109 19 0 22 103 109 0 22 29 103 0 24 19 110 0 19 109 110 0 24 104 26 0 24 110 104 0 104 30 26 0 57 29 45 0 30 62 46 0 37 111 112 0 37 113 111 0 113 37 93 0 115 112 114 0 112 111 114 0 38 115 116 0 115 114 116 0 38 116 94 0 113 93 15 0 16 94 116 0 17 81 71 0 72 82 18 0 74 117 118 0 75 74 118 0 75 118 71 0 78 119 117 0 117 74 78 0 120 119 80 0 80 119 78 0 120 80 72 0 43 121 122 0 123 121 43 0 39 123 43 0 124 125 122 0 124 122 121 0 44 125 126 0 125 124 126 0 44 126 41 0 127 53 56 0 127 56 50 0 56 47 50 0 53 128 58 0 53 127 128 0 58 51 60 0 58 128 51 0 48 60 51 0 10 81 17 0 18 82 12 0 17 65 15 0 18 16 70 0 49 87 50 0 51 92 52 0 87 49 40 0 42 52 92 0 85 129 87 0 91 92 130 0 23 99 29 0 28 30 100 0 133 131 132 0 134 131 133 0 134 133 135 0 131 134 136 0 134 135 136 0 137 138 132 0 137 132 131 0 137 131 139 0 136 139 131 0 141 138 140 0 140 138 137 0 140 137 142 0 137 139 142 0 141 140 142 0 135 143 95 0 144 142 97 0 99 9 1 0 11 100 4 0 143 132 145 0 133 132 143 0 133 143 135 0 138 146 145 0 132 138 145 0 141 144 146 0 141 146 138 0 141 142 144 0 111 113 64 0 113 65 64 0 113 15 65 0 114 111 68 0 68 111 64 0 70 116 114 0 70 114 68 0 70 16 116 0 86 122 83 0 43 122 86 0 43 86 40 0 88 83 125 0 83 122 125 0 88 44 90 0 125 44 88 0 42 90 44 0 135 147 136 0 147 135 96 0 95 96 135 0 148 139 136 0 136 147 148 0 139 98 142 0 139 148 98 0 97 142 98 0 76 81 95 0 97 82 79 0 49 33 40 0 34 52 42 0 105 109 103 0 106 105 103 0 57 106 103 0 109 107 110 0 109 105 107 0 110 108 104 0 107 108 110 0 62 104 108 0 149 150 84 0 85 84 150 0 85 150 129 0 89 151 149 0 149 84 89 0 91 152 151 0 151 89 91 0 130 152 91 0 153 127 50 0 50 129 153 0 87 129 50 0 127 154 128 0 153 154 127 0 130 51 128 0 154 130 128 0 51 130 92 0 156 149 155 0 156 150 149 0 156 129 150 0 156 153 129 0 156 155 153 0 157 155 151 0 151 155 149 0 154 153 155 0 157 154 155 0 158 157 152 0 152 157 151 0 154 157 130 0 157 158 130 0 158 152 130 0 33 49 47 0 34 48 52 0 99 3 45 0 100 46 5 0 23 101 9 0 28 11 102 0 123 112 121 0 123 37 112 0 123 39 37 0 124 121 115 0 115 121 112 0 38 126 124 0 38 124 115 0 126 38 41 0 15 93 2 0 6 94 16 0 101 20 159 0 101 21 20 0 21 101 23 0 159 25 160 0 20 25 159 0 27 102 160 0 27 160 25 0 27 28 102 0 95 81 10 0 97 12 82 0 66 117 63 0 66 118 117 0 66 71 118 0 119 67 63 0 117 119 63 0 120 69 67 0 120 67 119 0 69 120 72 0 99 23 9 0 11 28 100 0 145 73 76 0 143 145 76 0 95 143 76 0 146 77 73 0 146 73 145 0 144 79 77 0 146 144 77 0 79 144 97 0 57 47 56 0 60 48 62 0 96 159 147 0 101 159 96 0 101 96 13 0 147 160 148 0 147 159 160 0 98 148 102 0 160 102 148 0 14 98 102 0 1 7 3 4 7 2 3 4 End libMeshb-7.80/legacy_sources/v4/in.meshb000066400000000000000000000167641456732543400202160ustar00rootroot00000000000000 BnBVABEB;ABLBABnBVBLBBEB;B7BdAB7BdḄTBiABzBz^AḄTBiBzBz^BLJB~LABLJB~LB\B(AB\B(BBVABBVBV+B,AoBB,AoBB,ABV+B,ABHBWABV+B,@ BB,@ BV+B,BB,BHBWBBVABBVB52BAB52BBBABBBBABBBBHABBHBKBPABPBraABKBPBPBraB}BAB}BBBaABBaB?B/5AB?B/5BQB9ABnB=ABnB=BQB9BBuAoBBR=AoBBR=ABBuABbB]+ABBu@ BBR=@ BBuBBR=BbB]+B}BHAoB}BHAoB}BHAB}BHAB}BH@ B}BH@ B}BHB}BHBz^BABz^BCBeAoCB2AoCB2ACBeACBe@ CB2@ CBeCB2BB1ABB1BOB'AoBi}BHAoBi}BHABOB'AB~^BABOB'@ Bi}BH@ BOB'Bi}BHB~^BBBqhABBqhB=qBABBgAB=qBBBgB+B|[=AB+B|[=B}B_AB}B_BB-ABB-BB.{dAoBB.{dABB.{d@ BB.{dBB-AoBB-@ Bŀ\BHAoBBHAoBŀ\BHABŀ\BH@ BBH@ Bŀ\BHCBHAoCBHACBH@ CBHB;BxlAoB}BAoB;BxlAB;Bxl@ B}B@ B;BxlBnB=AoBnB=@ BKBABKBCB,AoCBUKAoCBUKACB,ABB_ABB_AoCB,@ CBUK@ BB_@ CB,CBUKBB_CB2ACB2CB2AoCB2@ BBgAoBBg@ BC BAoBC BABC B@ BC BBKBAoBKB@ BBvAoBBvABBv@ BBvB}B_AoB}B_@ <        !" #!$ "%#& $#'()$*+(',)*!-"./-!.0"2/1403#(!*$"756785798;6:5:6=;<;:<=<>/9-.>0A?@B?ABA@CD?C@EFDEDCEFGBHEKIJKLIKGLJMNJIMPNONMOHPOLGQRHOUSTVSUVUWYTXTSX[YZYXZ[Z\(VW*\Z%] &^_ `ba_  acd e f c-d.9gh>j6ij76j97ki;;i6lk=;=kl=>'#%&$)] ^mgmgnmnhnhh9->.%op%qoq%]sprpor&stsrt&t^q]^tQGHRJuvKJvKvGNwuuJNxwPPwNxPH+yz{y+'{+|}z|zy,}~}|~,~)58828/25:5:3<:30<3 QR AF1W23\4W1(*4\UW[\cd_ac  doq@qA@qAroDDo@FtrFrDFtVzS+zV+V(XS}Sz}X,Z},X*Z,`_`bbabLQ_aRO1!("4*imgjig9jgmknmiknlhkln>hlTUTUYTY[Y[[22W233\!1/"04c-d.e  f{py{%p{'%|yssyp&~|&|s~&)]^eeeff_Q a RBu?BvuBGvwC?uw?xECxCwExHc dILL_LMIIOMMOa9/8<0>`e`e` bffbf6libMeshb-7.80/legacy_sources/v4/libmesh4.c000066400000000000000000000532761456732543400204420ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* LIBMESH V 4.0 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: handle .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: aug 02 2003 */ /* Last modification: nov 14 2006 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include #include #include "libmesh4.h" /*----------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------*/ #define WrdSiz 4 #define Asc 1 #define Bin 2 #define MshFil 4 #define SolFil 8 #define MaxMsh 10 #define InfKwd 1 #define FldKwd 2 #define SolKwd 3 /*----------------------------------------------------------*/ /* Global variables */ /*----------------------------------------------------------*/ char *KwdFmt[ GmfMaxKwd + 1 ][3] = { {"Reserved", "", ""}, {"MeshVersionFormatted", "", "i"}, {"Reserved", "", ""}, {"Dimension", "", "i"}, {"Vertices", "i", "dri"}, {"Edges", "i", "iii"}, {"Triangles", "i", "iiii"}, {"Quadrilaterals", "i", "iiiii"}, {"Tetrahedra", "i", "iiiii"}, {"Pentahedra", "i", "iiiiiii"}, {"Hexahedra", "i", "iiiiiiiii"}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Corners", "i", "i"}, {"Ridges", "i", "i"}, {"RequiredVertices", "i", "i"}, {"RequiredEdges", "i", "i"}, {"RequiredTriangles", "i", "i"}, {"RequiredQuadrilaterals", "i", "i"}, {"TangentAtEdgeVertices", "i", "iii"}, {"NormalAtVertices", "i", "ii"}, {"NormalAtTriangleVertices", "i", "iii"}, {"NormalAtQuadrilateralVertices", "i", "iiii"}, {"AngleOfCornerBound", "", "r"}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"BoundingBox", "", "drdr"}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"End", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Tangents", "i", "dr"}, {"Normals", "i", "dr"}, {"TangentAtVertices", "i", "ii"}, {"SolAtVertices", "i", "sr"}, {"SolAtEdges", "i", "sr"}, {"SolAtTriangles", "i", "sr"}, {"SolAtQuadrilaterals", "i", "sr"}, {"SolAtTetrahedra", "i", "sr"}, {"SolAtPentahedra", "i", "sr"}, {"SolAtHexahedra", "i", "sr"}, {"DSolAtVertices", "i", "sr"}, {"ISolAtVertices", "i", "i"}, {"ISolAtEdges", "i", "ii"}, {"ISolAtTriangles", "i", "iii"}, {"ISolAtQuadrilaterals", "i", "iiii"}, {"ISolAtTetrahedra", "i", "iiii"}, {"ISolAtPentahedra", "i", "iiiiii"}, {"ISolAtHexahedra", "i", "iiiiiiii"}, {"Iterations","","i"}, {"Time","","r"}, {"VertexHack","","drdr"} }; int IniGmf = 0; GmfMshSct *MshTab[ MaxMsh + 1 ]; /*----------------------------------------------------------*/ /* Prototypes of local procedures */ /*----------------------------------------------------------*/ static void ScaWrd(GmfMshSct *, unsigned char *); static void RecWrd(GmfMshSct *, unsigned char *); static void SwpWrd(unsigned char *); static int ScaKwdTab(GmfMshSct *); static void ExpFmt(GmfMshSct *, int); static void ScaKwdHdr(GmfMshSct *, int); /*----------------------------------------------------------*/ /* Open a mesh file in read or write mod */ /*----------------------------------------------------------*/ GmfMshSct *GmfOpenMesh(char *FilNam, int mod, ...) { int KwdCod, res; char str[256]; va_list par; GmfMshSct *msh; /*---------------------*/ /* MESH STRUCTURE INIT */ /*---------------------*/ if(!(msh = calloc(1, sizeof(GmfMshSct)))) return(NULL); /* Copy the FilNam into the structure */ if(strlen(FilNam) + 7 >= GmfStrSiz) return(NULL); strcpy(msh->FilNam, FilNam); /* Store the opening mod (read or write) and guess the filetype (binary or ascii) depending on the extension */ msh->mod = mod; msh->cod = 1; if(strstr(msh->FilNam, ".meshb")) msh->typ |= (Bin | MshFil); else if(strstr(msh->FilNam, ".mesh")) msh->typ |= (Asc | MshFil); else if(strstr(msh->FilNam, ".solb")) msh->typ |= (Bin | SolFil); else if(strstr(msh->FilNam, ".sol")) msh->typ |= (Asc | SolFil); else return(NULL); /* Open the file in the required mod and initialyse the mesh structure */ if(msh->mod == GmfRead) { /*-----------------------*/ /* OPEN FILE FOR READING */ /*-----------------------*/ /* Create the name string and open the file */ if(!(msh->hdl = fopen(msh->FilNam, "rb"))) return(NULL); /* Read the endian coding tag, the mesh version and the mesh dimension (mandatory kwd) */ if(msh->typ & Bin) { fread((unsigned char *)&msh->cod, WrdSiz, 1, msh->hdl); if( (msh->cod != 1) && (msh->cod != 16777216) ) return(NULL); ScaWrd(msh, (unsigned char *)&msh->ver); ScaWrd(msh, (unsigned char *)&KwdCod); if(KwdCod != GmfDimension) return(NULL); ScaWrd(msh, (unsigned char *)&KwdCod); ScaWrd(msh, (unsigned char *)&msh->dim); } else { do { res = fscanf(msh->hdl, "%s", str); }while( (res != EOF) && strcmp(str, "MeshVersionFormatted") ); if(res == EOF) return(NULL); fscanf(msh->hdl, "%d", &msh->ver); do { res = fscanf(msh->hdl, "%s", str); }while( (res != EOF) && strcmp(str, "Dimension") ); if(res == EOF) return(NULL); fscanf(msh->hdl, "%d", &msh->dim); } if( (msh->dim != 2) && (msh->dim != 3) ) return(NULL); /*------------*/ /* KW READING */ /*------------*/ /* Read the list of kw present in the file */ if(!ScaKwdTab(msh)) return(NULL); /* Read in some special keywords at opening time */ if(msh->KwdTab[ GmfIterations ].NmbLin) GmfReadField(msh, GmfIterations, NULL, &msh->iter); if(msh->KwdTab[ GmfTime ].NmbLin) GmfReadField(msh, GmfTime, &msh->time, NULL); if(msh->KwdTab[ GmfAngleOfCornerBound ].NmbLin) GmfReadField(msh, GmfAngleOfCornerBound, &msh->angle, NULL); if(msh->KwdTab[ GmfBoundingBox ].NmbLin) GmfReadField(msh, GmfBoundingBox, &msh->bbox[0][0], NULL); } else if(msh->mod == GmfWrite) { /*-----------------------*/ /* OPEN FILE FOR WRITING */ /*-----------------------*/ /* Check if the user provided a valid dimension */ va_start(par, mod); msh->dim = va_arg(par, int); va_end(par); if( (msh->dim != 2) && (msh->dim != 3) ) return(NULL); /* Create the mesh file */ if(!(msh->hdl = fopen(msh->FilNam, "wb"))) return(NULL); /*------------*/ /* KW WRITING */ /*------------*/ /* Initialyse the required fields. The kw will be stored afterward. */ msh->ver = GmfMshVer; msh->cod = 1; /* Write the mesh version */ if(msh->typ & Asc) GmfWriteField(msh, GmfVersionFormatted, 0, NULL, &msh->ver); else { RecWrd(msh, (unsigned char *)&msh->cod); RecWrd(msh, (unsigned char *)&msh->ver); } /* Write the mesh dimension */ GmfWriteField(msh, GmfDimension, 0, NULL, &msh->dim); } else return(NULL); return(msh); } /*----------------------------------------------------------*/ /* Close a meshfile in the right way */ /*----------------------------------------------------------*/ int GmfCloseMesh(GmfMshSct *msh) { int EndCod = GmfEnd, nul=0; /* Write down some special keywords before closing the file */ if(msh->iter) GmfWriteField(msh, GmfIterations, 0, NULL, &msh->iter); if(msh->time) GmfWriteField(msh, GmfTime, 0, &msh->time, NULL); if(msh->angle) GmfWriteField(msh, GmfAngleOfCornerBound, 0, &msh->angle, NULL); if(msh->bbox[0][0]) GmfWriteField(msh, GmfBoundingBox, 0, &msh->bbox[0][0], NULL); /* In write down the "End" kw in write mode */ if(msh->mod == GmfWrite) if(msh->typ & Asc) fprintf(msh->hdl, "\n%s\n", KwdFmt[ GmfEnd ][0]); else { RecWrd(msh, (unsigned char *)&EndCod); RecWrd(msh, (unsigned char *)&nul); } /* Close the file and free the mesh structure */ if(fclose(msh->hdl)) return(0); else return(1); free(msh); } /*----------------------------------------------------------*/ /* Bufferized read of a whole keyword's field */ /*----------------------------------------------------------*/ int GmfReadField(GmfMshSct *msh, int KwdCod, float *FltBuf, int *IntBuf) { int i, j, IntIdx=0, FltIdx=0, LocIdx=0, *LocIntBuf; float *LocFltBuf; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Check if the kw code is valid */ if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) || !kwd->typ) return(0); /* Set the curent position in file to the begining of this kw's data */ fseek(msh->hdl, kwd->pos, SEEK_SET); /* Start reading the field */ if(msh->typ & Asc) { for(i=0;iNmbLin;i++) for(j=0;jSolSiz;j++) if(kwd->fmt[j] == 'i') fscanf(msh->hdl, "%d", &IntBuf[ IntIdx++ ]); else fscanf(msh->hdl, "%g", &FltBuf[ FltIdx++ ]); } else { if(!(LocIntBuf = malloc(kwd->NmbLin * kwd->SolSiz * WrdSiz))) return(0); LocFltBuf = (float *)LocIntBuf; fread(LocIntBuf, WrdSiz, kwd->NmbLin * kwd->SolSiz, msh->hdl); if(msh->cod != 1) for(i=0;iNmbLin * kwd->SolSiz;i++) SwpWrd((unsigned char *)&LocIntBuf[i]); for(i=0;iNmbLin;i++) for(j=0;jSolSiz;j++) if(kwd->fmt[j] == 'i') IntBuf[ IntIdx++ ] = LocIntBuf[ LocIdx++ ]; else if(kwd->fmt[j] == 'r') FltBuf[ FltIdx++ ] = LocFltBuf[ LocIdx++ ]; free(LocIntBuf); } return(kwd->NmbLin); } /*----------------------------------------------------------*/ /* Bufferized write of a whole keyword's field */ /*----------------------------------------------------------*/ int GmfWriteField(GmfMshSct *msh, int KwdCod, int NmbLin, float *FltBuf, int *IntBuf, ...) { int i, j, NexPos, CurPos, IntIdx=0, FltIdx=0, LocIdx=0, *LocIntBuf; float *LocFltBuf; va_list par; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Check if the kw code is valid and if it has not already been written */ if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) || kwd->NmbLin) return(0); /* Read further arguments if this kw is solution field and the extra header was not provided by the user */ if(!strcmp(KwdFmt[ KwdCod ][2], "sr") && !kwd->NmbTyp) { va_start(par, IntBuf); kwd->NmbTyp = va_arg(par, int); for(i=0;iNmbTyp;i++) kwd->TypTab[i] = va_arg(par, int); va_end(par); } /* Setup the kwd info */ ExpFmt(msh, KwdCod); if(!kwd->typ) return(0); else if(kwd->typ == InfKwd) kwd->NmbLin = 1; else kwd->NmbLin = NmbLin; /* Write the header */ if(msh->typ & Asc) { fprintf(msh->hdl, "\n%s\n", KwdFmt[ KwdCod ][0]); if(kwd->typ != InfKwd) fprintf(msh->hdl, "%d\n", kwd->NmbLin); /* In case of solution field, write the extended header */ if(kwd->typ == SolKwd) { fprintf(msh->hdl, "%d ", kwd->NmbTyp); for(i=0;iNmbTyp;i++) fprintf(msh->hdl, "%d ", kwd->TypTab[i]); fprintf(msh->hdl, "\n\n"); } } else { RecWrd(msh, (unsigned char *)&KwdCod); NexPos = ftell(msh->hdl); RecWrd(msh, (unsigned char *)&NexPos); if(kwd->typ != InfKwd) RecWrd(msh, (unsigned char *)&kwd->NmbLin); /* In case of solution field, write the extended header at once */ if(kwd->typ == SolKwd) { RecWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) RecWrd(msh, (unsigned char *)&kwd->TypTab[i]); } } /* Write the field */ if(msh->typ & Asc) for(i=0;iNmbLin;i++) { for(j=0;jSolSiz;j++) if(kwd->fmt[j] == 'i') fprintf(msh->hdl, "%d ", IntBuf[ IntIdx++ ]); else fprintf(msh->hdl, "%g ", FltBuf[ FltIdx++ ]); fprintf(msh->hdl, "\n"); } else { if(!(LocIntBuf = malloc(kwd->NmbLin * kwd->SolSiz * WrdSiz))) return(0); LocFltBuf = (float *)LocIntBuf; for(i=0;iNmbLin;i++) for(j=0;jSolSiz;j++) if(kwd->fmt[j] == 'i') LocIntBuf[ LocIdx++ ] = IntBuf[ IntIdx++ ]; else LocFltBuf[ LocIdx++ ] = FltBuf[ FltIdx++ ]; fwrite(LocIntBuf, WrdSiz, kwd->NmbLin * kwd->SolSiz, msh->hdl); free(LocIntBuf); } /* Store the next kwd position in binary file */ if(msh->typ & Bin) { CurPos = ftell(msh->hdl); fseek(msh->hdl, NexPos, SEEK_SET); RecWrd(msh, (unsigned char *)&CurPos); fseek(msh->hdl, CurPos, SEEK_SET); } return(kwd->NmbLin); } /*----------------------------------------------------------*/ /* Easy reading of a single kwd's line */ /*----------------------------------------------------------*/ int GmfReadLine(GmfMshSct *msh, int KwdCod, ...) { float *FltPtr; int i, *IntPtr; va_list par; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Check if the kw code is valid */ if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) || !kwd->typ || (kwd->typ == InfKwd) || (kwd->CurLin > kwd->NmbLin) ) return(0); fseek(msh->hdl, kwd->pos, SEEK_SET); /* Start decoding the arguments */ va_start(par, KwdCod); for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { FltPtr = va_arg(par, float *); if(msh->typ & Asc) fscanf(msh->hdl, "%f", FltPtr); else ScaWrd(msh, (unsigned char *)FltPtr); } else { IntPtr = va_arg(par, int *); if(msh->typ & Asc) fscanf(msh->hdl, "%d", IntPtr); else ScaWrd(msh, (unsigned char *)IntPtr); } } va_end(par); kwd->CurLin++; kwd->pos = ftell(msh->hdl); /* return the number of arguments filled */ return(kwd->SolSiz); } /*----------------------------------------------------------*/ /* Easy writing of a single kwd's line */ /*----------------------------------------------------------*/ int GmfWriteLine(GmfMshSct *msh, int KwdCod, ...) { float *FltPtr; int i, *IntPtr; va_list par; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Check if the kw code is valid */ if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) || !kwd->typ || (kwd->typ == InfKwd) || (kwd->CurLin > kwd->NmbLin) ) return(0); fseek(msh->hdl, kwd->pos, SEEK_SET); /* Start decoding the arguments */ va_start(par, KwdCod); for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { FltPtr = va_arg(par, float *); if(msh->typ & Asc) fprintf(msh->hdl, "%f", *FltPtr); else RecWrd(msh, (unsigned char *)FltPtr); } else { IntPtr = va_arg(par, int *); if(msh->typ & Asc) fprintf(msh->hdl, "%d", *IntPtr); else RecWrd(msh, (unsigned char *)IntPtr); } } va_end(par); kwd->CurLin++; kwd->pos = ftell(msh->hdl); /* return the number of arguments filled */ return(kwd->SolSiz); } /*----------------------------------------------------------*/ /* Find every kw present in a meshfile */ /*----------------------------------------------------------*/ static int ScaKwdTab(GmfMshSct *msh) { int KwdCod, NexPos, CurPos, EndPos; char str[256]; if(msh->typ & Asc) { /* Scan each string in the file until the end */ while(fscanf(msh->hdl, "%s", str) != EOF) { /* Fast test in order to reject quickly the numeric values */ if(isalpha(str[0])) { /* Search which kwd code this string is associated with, then get its header and save the curent position in file (just before the data) */ for(KwdCod=1; KwdCod<= GmfMaxKwd; KwdCod++) if(!strcmp(str, KwdFmt[ KwdCod ][0])) { ScaKwdHdr(msh, KwdCod); break; } } else if(str[0] == '#') while(fgetc(msh->hdl) != '\n'); } } else { /* Get file size */ CurPos = ftell(msh->hdl); fseek(msh->hdl, 0, SEEK_END); EndPos = ftell(msh->hdl); fseek(msh->hdl, CurPos, SEEK_SET); /* Jump through kwd positions in the file */ do { /* Get the kwd code and the next kwd position */ ScaWrd(msh, (unsigned char *)&KwdCod); ScaWrd(msh, (unsigned char *)&NexPos); if(NexPos > EndPos) return(0); /* Check if this kwd belongs to this mesh version */ if( (KwdCod >= 1) && (KwdCod <= GmfMaxKwd) ) ScaKwdHdr(msh, KwdCod); /* Go to the next kwd */ if(NexPos) fseek(msh->hdl, NexPos, SEEK_SET); }while(NexPos && (KwdCod != GmfEnd)); } return(1); } /*----------------------------------------------------------*/ /* Read and setup the keyword's header */ /*----------------------------------------------------------*/ static void ScaKwdHdr(GmfMshSct *msh, int KwdCod) { int i; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; if(!strcmp("i", KwdFmt[ KwdCod ][1])) { if(msh->typ & Asc) fscanf(msh->hdl, "%d", &kwd->NmbLin); else ScaWrd(msh, (unsigned char *)&kwd->NmbLin); } else kwd->NmbLin = 1; if(!strcmp("sr", KwdFmt[ KwdCod ][2])) { if(msh->typ & Asc) { fscanf(msh->hdl, "%d", &kwd->NmbTyp); for(i=0;iNmbTyp;i++) fscanf(msh->hdl, "%d", &kwd->TypTab[i]); } else { ScaWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) ScaWrd(msh, (unsigned char *)&kwd->TypTab[i]); } } ExpFmt(msh, KwdCod); kwd->pos = ftell(msh->hdl); } /*----------------------------------------------------------*/ /* Expand the compacted format and compute the line size */ /*----------------------------------------------------------*/ static void ExpFmt(GmfMshSct *msh, int KwdCod) { int i, j, TmpSiz=0; char chr, *InpFmt = KwdFmt[ KwdCod ][2]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Check if this kw has a format */ if(!strlen(InpFmt)) return; /* Set the kwd's type */ if(!strlen(KwdFmt[ KwdCod ][1])) kwd->typ = InfKwd; else if(!strcmp(InpFmt, "sr")) kwd->typ = SolKwd; else kwd->typ = FldKwd; /* Get the solution-field's size */ if(kwd->typ == SolKwd) for(i=0;iNmbTyp;i++) switch(kwd->TypTab[i]) { case GmfSca : TmpSiz += 1; break; case GmfVec : TmpSiz += msh->dim; break; case GmfSymMat : TmpSiz += (msh->dim * (msh->dim+1)) / 2; break; case GmfMat : TmpSiz += msh->dim * msh->dim; break; } /* Scan each character from the format string */ i = 0; while(i < strlen(InpFmt)) { chr = InpFmt[ i++ ]; if(chr == 'd') { chr = InpFmt[i++]; for(j=0;jdim;j++) kwd->fmt[ kwd->SolSiz++ ] = chr; } else if(chr == 's') { chr = InpFmt[i++]; for(j=0;jfmt[ kwd->SolSiz++ ] = chr; } else kwd->fmt[ kwd->SolSiz++ ] = chr; } } /*----------------------------------------------------------*/ /* Read a four bytes word in a mesh file */ /*----------------------------------------------------------*/ static void ScaWrd(GmfMshSct *msh, unsigned char *wrd) { fread(wrd, WrdSiz, 1, msh->hdl); if(msh->cod != 1) SwpWrd(wrd); } /*----------------------------------------------------------*/ /* Write a four bytes word in a mesh file */ /*----------------------------------------------------------*/ static void RecWrd(GmfMshSct *msh, unsigned char *wrd) { fwrite(wrd, WrdSiz, 1, msh->hdl); } /*----------------------------------------------------------*/ /* Convert little endian word <-> big endian */ /*----------------------------------------------------------*/ static void SwpWrd(unsigned char *wrd) { unsigned char swp; swp = wrd[3]; wrd[3] = wrd[0]; wrd[0] = swp; swp = wrd[2]; wrd[2] = wrd[1]; wrd[1] = swp; } /*----------------------------------------------------------*/ /* Open a mesh file from fortran77 */ /*----------------------------------------------------------*/ int call(gmfopenmeshf77)(char *FilNam, int *mod, int *dim, int KwdTab[ GmfMaxKwd ][ GmfMaxTyp + 2 ], int StrSiz) { int i, j, idx=0; GmfMshSct *msh; char TmpNam[256]; /* Clear the mesh table at first run */ if(!IniGmf) { for(i=1;i<=MaxMsh;i++) MshTab[i] = NULL; IniGmf = 1; } /* Allocate a new mesh struct associated with an index */ for(idx=1;idx<=MaxMsh;idx++) if(!MshTab[ idx ]) break; /* Copy the fortran filename into a c string */ for(i=0;idim; for(i=1;iKwdTab[i].NmbLin; KwdTab[i-1][1] = msh->KwdTab[i].NmbTyp; for(j=0;jKwdTab[i].TypTab[j]; } } else { if(!(msh = GmfOpenMesh(TmpNam, GmfWrite, *dim))) return(0); MshTab[ idx ] = msh; } return(idx); } /*----------------------------------------------------------*/ /* Close a meshfile (from f77) */ /*----------------------------------------------------------*/ int call(gmfclosemeshf77)(int *idx) { GmfMshSct *msh = MshTab[ *idx ]; if( (*idx < 1) || (*idx > MaxMsh) ) return(0); MshTab[ *idx ] = NULL; return(GmfCloseMesh(msh)); } /*----------------------------------------------------------*/ /* Read a whole kwd field from f77 */ /*----------------------------------------------------------*/ int call(gmfreadfieldf77)(int *idx, int *kwd, float *FltTab, int *IntTab) { if( (*idx < 1) || (*idx > MaxMsh) ) return(0); return(GmfReadField(MshTab[ *idx ], *kwd, FltTab, IntTab)); } /*----------------------------------------------------------*/ /* Write a whole kwd field from f77 */ /*----------------------------------------------------------*/ int call(gmfwritefieldf77)(int *idx, int *kwd, int *NmbLin, int *NmbTyp, int *TypTab, float *FltTab, int *IntTab) { int i; if( (*idx < 1) || (*idx > MaxMsh) ) return(0); if(*NmbTyp) { if( (*kwd < 1) || (*kwd > GmfMaxKwd) || strcmp(KwdFmt[ *kwd ][2], "sr") ) return(0); MshTab[ *idx ]->KwdTab[ *kwd ].NmbTyp = *NmbTyp; for(i=0;i<*NmbTyp;i++) MshTab[ *idx ]->KwdTab[ *kwd ].TypTab[i] = TypTab[i]; } return(GmfWriteField(MshTab[ *idx ], *kwd, *NmbLin, FltTab, IntTab)); } libMeshb-7.80/legacy_sources/v4/libmesh4.h000066400000000000000000000115241456732543400204350ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* LIBMESH V 4.0 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: handle .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: aug 02 2003 */ /* Last modification: jan 25 2006 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include /*----------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------*/ #define GmfStrSiz 1024 #define GmfMaxTyp 20 #define GmfMaxKwd 79 #define GmfMshVer 1 #define GmfRead 1 #define GmfWrite 2 #define GmfSca 1 #define GmfVec 2 #define GmfSymMat 3 #define GmfMat 4 enum GmfKwdCod { GmfReserved1, \ GmfVersionFormatted, \ GmfReserved2, \ GmfDimension, \ GmfVertices, \ GmfEdges, \ GmfTriangles, \ GmfQuadrilaterals, \ GmfTetrahedra, \ GmfPentahedra, \ GmfHexahedra, \ GmfReserved3, \ GmfReserved4, \ GmfCorners, \ GmfRidges, \ GmfRequiredVertices, \ GmfRequiredEdges, \ GmfRequiredTriangles, \ GmfRequiredQuadrilaterals, \ GmfTangentAtEdgeVertices, \ GmfNormalAtVertices, \ GmfNormalAtTriangleVertices, \ GmfNormalAtQuadrilateralVertices, \ GmfAngleOfCornerBound, \ GmfReserved5, \ GmfReserved6, \ GmfReserved7, \ GmfReserved8, \ GmfReserved9, \ GmfReserved10, \ GmfReserved11, \ GmfReserved12, \ GmfReserved13, \ GmfReserved14, \ GmfReserved15, \ GmfReserved16, \ GmfReserved17, \ GmfReserved18, \ GmfReserved19, \ GmfReserved20, \ GmfReserved21, \ GmfReserved22, \ GmfReserved23, \ GmfReserved24, \ GmfReserved25, \ GmfReserved26, \ GmfReserved27, \ GmfReserved28, \ GmfReserved29, \ GmfReserved30, \ GmfBoundingBox, \ GmfReserved31, \ GmfReserved32, \ GmfReserved33, \ GmfEnd, \ GmfReserved34, \ GmfReserved35, \ GmfReserved36, \ GmfReserved37, \ GmfTangents, \ GmfNormals, \ GmfTangentAtVertices, \ GmfSolAtVertices, \ GmfSolAtEdges, \ GmfSolAtTriangles, \ GmfSolAtQuadrilaterals, \ GmfSolAtTetrahedra, \ GmfSolAtPentahedra, \ GmfSolAtHexahedra, \ GmfDSolAtVertices, \ GmfISolAtVertices, \ GmfISolAtEdges, \ GmfISolAtTriangles, \ GmfISolAtQuadrilaterals, \ GmfISolAtTetrahedra, \ GmfISolAtPentahedra, \ GmfISolAtHexahedra, \ GmfIterations, \ GmfTime, \ GmfVertexHack }; /********************************************************************/ /* SI VOTRE COMPILATEUR FORTRAN PREFERE GENERE UN _ APRES */ /* LES NOMS DES SUBROUTINES, ALORS PRENEZ CETTE DEFINITION DE proc */ /* #define call(x) name2(x,_) */ /* SINON PRENEZ CELLE CI */ /* #define call(x) x */ /********************************************************************/ #ifndef _UNDERSCORE_H_ #define _UNDERSCORE_H_ #if defined(__ANSI_CPP__) || defined(__linux__) || defined(_HPUX_SOURCE) || defined(__macos__) # define name2(a,b) a ## b #else # ifdef BSD /* BSD way: ok pour dn10000 */ # define name2(a,b) a\ b # else /* System V way: */ # define name2(a,b) a/**/b # endif #endif #define name22(a,b) name2(a,b) #ifdef F77_NO_UNDER_SCORE # define call(x) x #else # if defined(__linux__) || defined(__macos__) # define call(x) name2(x,_) # else # define call(x) x # endif #endif #endif /*----------------------------------------------------------*/ /* Structures */ /*----------------------------------------------------------*/ typedef struct { /* Public */ int SolSiz, NmbLin, NmbTyp, TypTab[ GmfMaxTyp ]; /* Private */ size_t pos; int CurLin, typ; char fmt[ GmfMaxTyp ]; }KwdSct; typedef struct { /* Public */ int dim, ver, iter; float angle, bbox[3][2], time; KwdSct KwdTab[ GmfMaxKwd + 1 ]; /* Private */ int mod, typ, cod; FILE *hdl; char FilNam[ GmfStrSiz ]; }GmfMshSct; /*----------------------------------------------------------*/ /* External procedures */ /*----------------------------------------------------------*/ extern GmfMshSct *GmfOpenMesh(char *, int, ...); extern int GmfCloseMesh(GmfMshSct *); extern int GmfReadField(GmfMshSct *, int, float *, int *); extern int GmfWriteField(GmfMshSct *, int, int, float *, int *, ...); extern int GmfReadLine(GmfMshSct *, int, ...); extern int GmfWriteLine(GmfMshSct *, int, ...); /* Fortran 77 API */ int call(gmfopenmeshf77)(char *, int *, int *, int [ GmfMaxKwd ][ GmfMaxTyp + 2 ], int); int call(gmfclosemeshf77)(int *); int call(gmfreadfieldf77)(int *, int *, float *, int *); int call(gmfwritefieldf77)(int *, int *, int *, int *, int *, float *, int *); libMeshb-7.80/legacy_sources/v4/libmesh4.ins000066400000000000000000000040311456732543400207720ustar00rootroot00000000000000 integer GmfMaxSol, GmfMaxKwd, GmfRead, GmfWrite, GmfSca, GmfVec, +GmfSymMat, GmfMat, GmfVertices, GmfEdges, GmfTriangles, +GmfQuadrilaterals, GmfTetrahedra, GmfPentahedra, GmfHexahedra, +GmfCorners, GmfRidges, GmfRequiredVertices, GmfRequiredEdges, +GmfRequiredTriangles, GmfRequiredQuadrilaterals, +GmfTangentAtEdgeVertices, GmfNormalAtVertices, +GmfNormalAtTriangleVertices, GmfNormalAtQuadrilateralVertices, +GmfTangents, GmfNormals, GmfTangentAtVertices, GmfSolAtVertices, +GmfSolAtEdges, GmfSolAtTriangles, GmfSolAtQuadrilaterals, +GmfSolAtTetrahedra, GmfSolAtPentahedra, GmfSolAtHexahedra, +GmfDSolAtVertices, GmfISolAtVertices, GmfISolAtEdges, +GmfISolAtTriangles, GmfISolAtQuadrilaterals, GmfISolAtTetrahedra, +GmfISolAtPentahedra, GmfISolAtHexahedra, GmfIterations, GmfTime, +GmfVertexHack parameter (GmfMaxSol=20, GmfMaxKwd=79, GmfRead=1, GmfWrite=2, +GmfSca=1, GmfVec=2, GmfSymMat=3, GmfMat=4, GmfVertices=4, +GmfEdges=5, GmfTriangles=6, GmfQuadrilaterals=7, GmfTetrahedra=8, +GmfPentahedra=9, GmfHexahedra=10,GmfCorners=13, GmfRidges=14, +GmfRequiredVertices=15, GmfRequiredEdges=16, +GmfRequiredTriangles=17, GmfRequiredQuadrilaterals=18, +GmfTangentAtEdgeVertices=19, GmfNormalAtVertices=20, +GmfNormalAtTriangleVertices=21, +GmfNormalAtQuadrilateralVertices=22, +GmfTangents=59, GmfNormals=60, GmfTangentAtVertices=61, +GmfSolAtVertices=62, GmfSolAtEdges=63, GmfSolAtTriangles=64, +GmfSolAtQuadrilaterals=65, GmfSolAtTetrahedra=66, +GmfSolAtPentahedra=67, GmfSolAtHexahedra=68, +GmfDSolAtVertices=69, GmfISolAtVertices=70, GmfISolAtEdges=71, +GmfISolAtTriangles=72, GmfISolAtQuadrilaterals=73, +GmfISolAtTetrahedra=74, GmfISolAtPentahedra=75, +GmfISolAtHexahedra=76, GmfIterations=77, GmfTime=78, +GmfVertexHack=79) external GmfOpenMeshF77, GmfCloseMeshF77, GmfReadFieldF77 + , GmfWriteFieldF77 integer GmfOpenMeshF77, GmfCloseMeshF77, GmfReadFieldF77 + , GmfWriteFieldF77 libMeshb-7.80/legacy_sources/v4/m_libmesh4.f90000066400000000000000000000041021456732543400211120ustar00rootroot00000000000000module m_libmesh4 integer GmfMaxSol, GmfMaxKwd, GmfRead, GmfWrite, GmfSca, GmfVec,& GmfSymMat, GmfMat, GmfVertices, GmfEdges, GmfTriangles,& GmfQuadrilaterals, GmfTetrahedra, GmfPentahedra, GmfHexahedra,& GmfCorners, GmfRidges, GmfRequiredVertices, GmfRequiredEdges,& GmfRequiredTriangles, GmfRequiredQuadrilaterals,& GmfTangentAtEdgeVertices, GmfNormalAtVertices,& GmfNormalAtTriangleVertices, GmfNormalAtQuadrilateralVertices,& GmfTangents, GmfNormals, GmfTangentAtVertices, GmfSolAtVertices,& GmfSolAtEdges, GmfSolAtTriangles, GmfSolAtQuadrilaterals,& GmfSolAtTetrahedra, GmfSolAtPentahedra, GmfSolAtHexahedra,& GmfDSolAtVertices, GmfISolAtVertices, GmfISolAtEdges,& GmfISolAtTriangles, GmfISolAtQuadrilaterals, GmfISolAtTetrahedra,& GmfISolAtPentahedra, GmfISolAtHexahedra, GmfIterations, GmfTime,& GmfVertexHack parameter (GmfMaxSol=20, GmfMaxKwd=79, GmfRead=1, GmfWrite=2,& GmfSca=1, GmfVec=2, GmfSymMat=3, GmfMat=4, GmfVertices=4,& GmfEdges=5, GmfTriangles=6, GmfQuadrilaterals=7, GmfTetrahedra=8,& GmfPentahedra=9, GmfHexahedra=10,GmfCorners=13, GmfRidges=14,& GmfRequiredVertices=15, GmfRequiredEdges=16,& GmfRequiredTriangles=17, GmfRequiredQuadrilaterals=18,& GmfTangentAtEdgeVertices=19, GmfNormalAtVertices=20,& GmfNormalAtTriangleVertices=21,& GmfNormalAtQuadrilateralVertices=22,& GmfTangents=59, GmfNormals=60, GmfTangentAtVertices=61,& GmfSolAtVertices=62, GmfSolAtEdges=63, GmfSolAtTriangles=64,& GmfSolAtQuadrilaterals=65, GmfSolAtTetrahedra=66,& GmfSolAtPentahedra=67, GmfSolAtHexahedra=68,& GmfDSolAtVertices=69, GmfISolAtVertices=70, GmfISolAtEdges=71,& GmfISolAtTriangles=72, GmfISolAtQuadrilaterals=73,& GmfISolAtTetrahedra=74, GmfISolAtPentahedra=75,& GmfISolAtHexahedra=76, GmfIterations=77, GmfTime=78,& GmfVertexHack=79) external GmfOpenMeshF77, GmfCloseMeshF77, GmfReadFieldF77& , GmfWriteFieldF77 integer GmfOpenMeshF77, GmfCloseMeshF77, GmfReadFieldF77& , GmfWriteFieldF77 end module m_libmesh4 libMeshb-7.80/legacy_sources/v4/test.sol000066400000000000000000000002451456732543400202510ustar00rootroot00000000000000MeshVersionFormatted 1 Dimension 3 SolAtVertices 5 3 1 2 3 5 1 6 8 1 2 3 4 5 6 6 2 4 8 1 2 3 4 5 6 9 3 2 6 1 2 3 4 5 6 8 4 5 6 1 2 3 4 5 6 8 5 2 6 1 2 3 4 5 6 End libMeshb-7.80/legacy_sources/v4/test.solb000066400000000000000000000004001456732543400204040ustar00rootroot00000000000000>@?@A?@@@@@@@@@A?@@@@@@A@@@@?@@@@@@A@@@?@@@@@@A@@@?@@@@@@6libMeshb-7.80/legacy_sources/v4/test2_libmesh4.c000066400000000000000000000025011456732543400215440ustar00rootroot00000000000000/* Recopie d'un fichier in.mesh dans out.meshb en utilisant la libmesh4 */ #include main() { int i, ref, NmbVer, NmbTri, dim, v1, v2, v3; float x, y, z; /* Pointeurs sur des structures GMF pour stocker les infos sur les fichiers d'entree et sortie */ GmfMshSct *InpMsh, *OutMsh; /* L'ouverture du mesh en lecture retourne un pointeur qu'il faudra passer en argument a toutes les routines operant sur ce fichier */ if(!(InpMsh = GmfOpenMesh("in.mesh", GmfRead))) exit(1); /* Lecture des dimensions dans le fichier d'entree. Cela permet d'allouer la memoire des l'ouverture du fichier avant la lecture proprement dite */ dim = InpMsh->dim; NmbVer = InpMsh->KwdTab[ GmfVertices ].NmbLin; NmbTri = InpMsh->KwdTab[ GmfTriangles ].NmbLin; printf("InpMsh : dim = %d, nbv = %d, nbt = %d\n", dim, NmbVer, NmbTri); /* Creation du maillage de sortie. Le parametre dimension est ajoute */ if(!(OutMsh = GmfOpenMesh("out.mesh", GmfWrite, dim))) exit(1); for(i=0;i main() { /* Variables locales pour stocker les sommets et les triangles du maillage */ int *RefTab, *TriTab, NmbVer, NmbTri, dim; float *CrdTab; /* Pointeurs sur des structures GMF pour stocker les infos sur les fichiers d'entree et sortie */ GmfMshSct *InpMsh, *OutMsh; /* L'ouverture du mesh en lecture retourne un pointeur qu'il faudra passer en argument a toutes les routines operant sur ce fichier */ if(!(InpMsh = GmfOpenMesh("in.meshb", GmfRead))) exit(1); /* Lecture des dimensions dans le fichier d'entree. Cela permet d'allouer la memoire des l'ouverture du fichier avant la lecture proprement dite */ dim = InpMsh->dim; NmbVer = InpMsh->KwdTab[ GmfVertices ].NmbLin; NmbTri = InpMsh->KwdTab[ GmfTriangles ].NmbLin; printf("InpMsh : dim = %d, nbv = %d, nbt = %d\n", dim, NmbVer, NmbTri); /* Creation du maillage de sortie. Le parametre dimension est ajoute */ if(!(OutMsh = GmfOpenMesh("out.mesh", GmfWrite, dim))) exit(1); /* Allocation de mes tables locales */ RefTab = malloc(NmbVer * sizeof(int)); CrdTab = malloc(NmbVer * 3 * sizeof(float)); /* Lecture du champ complet dans le maillage source et ecriture dans la destination. Le nombre de lignes a ecrire est indique dans le cas de l'ecriture. Les donnees reeles et entieres sont rangees dans deux tableaux separes */ GmfReadField(InpMsh, GmfVertices, CrdTab, RefTab); GmfWriteField(OutMsh, GmfVertices, NmbVer, CrdTab, RefTab); free(RefTab); free(CrdTab); /* On fait de meme pour les triangles, cette fois-ci le tableau de nombres reels n'est pas utilise */ TriTab = malloc(NmbTri * 4 * sizeof(int)); GmfReadField(InpMsh, GmfTriangles, NULL, TriTab); GmfWriteField(OutMsh, GmfTriangles, NmbTri, NULL, TriTab); free(TriTab); /* Fermeture des maillages */ GmfCloseMesh(InpMsh); GmfCloseMesh(OutMsh); } libMeshb-7.80/legacy_sources/v4/test_libmesh4.f000066400000000000000000000070761456732543400215010ustar00rootroot00000000000000c Exemple d'utilisation de la librairie GMF : Recopie d'un fichier mesh dans un autre c Inclusion des definitions d'etiquettes de la librairie GMF include 'libmesh4.ins' c Le tableau KwdTab permet de stocker un mot-clef par ligne c La colonne 1 donne le nombre de lignes de ce mot-clefs presents dans le fichier c Les colonnes suivantes ne sont utilisees que par les champs de solutions integer KwdTab(GmfMaxSol + 2, GmfMaxKwd) integer i, j, InsIdx, OutIdx, res,dim, NmbVer, NmbTri real CrdTab(3, 600000) integer RefTab(600000) integer TriTab(4,1200000) c Ouverture du fichier .meshb. Les quatre parametres a fournir sont : c 1 : le nom du fichier avec l'extension .mesh ou .meshb c 2 : le mode d'ouverture GmfRead ou GmfWrite c 3 : un entier qui indique la dimension en cas de creation d'un maillage c ou qui recevra la dimension en cas de lecture. c 4 : le tableau des mot-clefs qui sera rempli des l'ouverture du maillage en lecture c ce qui permet de preparer ses allocations memoire avant la lecture des champs c proprement dit. c L'ouverture retourne une etiquette unique permettant d'identifier les differents c fichiers ouverts. Elle servira d'argument a toutes les autres commandes de la librairie. InsIdx = GmfOpenMeshF77('in.meshb',GmfRead,dim,KwdTab) print*, 'InsIdx = ', InsIdx if(InsIdx.le.0) STOP ' InsIdx==0' c La colonne 1 de la ligne GmfVertices contient le nombre de vertices du fichier NmbVer = KwdTab(1,GmfVertices) print*, 'NmbVer = ', NmbVer c La colonne 1 de la ligne GmfTriangles contient le nombre de triangles du fichier NmbTri = KwdTab(1,GmfTriangles) print*, 'NmbTri = ', NmbTri c Ouverture du fichier destination en ecriture. Il est inutile de fournir un tableau de mot-clefs OutIdx = GmfOpenMeshf77('out.meshb',GmfWrite,dim,0) print*,'Outidx = ',OutIdx if(OutIdx.le.0) STOP ' OutIdx==0' c Lecture des vertices, les quatres parametres a fournir sont : c 1 : l'etiquette du fichier a lire c 2 : l'etiquette du mot-clef a lire c 3 : un tableau suffisamment grand pour contenir tous les nombres reels retournes par ce mot-clefs c 4 : un tableau suffisamment grand pour contenir tous les nombres entiers retournes par ce mot-clefs c Dans le cas de lecture de vertices en 3d le tableau de reels doit contenir 3 * le nombre de noeuds c (pour les coordonnees) et le tableau d'entiers une fois ce nombre (pour les references) res = GmfReadFieldF77(InsIdx, GmfVertices, CrdTab, RefTab) print*,'read vertices = ',res c L'ecriture du mot-clefs fonctionne sur le meme principe mais 3 arguments sont ajoutes : c 3 : le nombre de lignes a ecrire c 4 : le nombre de type de solutions (dans le cas d'un champ de solutions) c 5 : un tableau contenant tous les type de solutions. res = GmfWriteFieldf77(OutIdx,GmfVertices,NmbVer,0,0,CrdTab, +RefTab) print*,'Write vertices = ',res c Dans le cas des triangles qui n'utilisent que des entiers, il est inutile de fournir un tableau de reels res = GmfReadFieldF77(InsIdx, GmfTriangles, 0, TriTab) print*,'read triangles = ',res res = GmfWriteFieldf77(OutIdx,GmfTriangles,NmbTri,0,0,0,TriTab) print*,'Write triangles = ',res c La fermeture des fichiers est obligatoire, faute de quoi les donnees ne seront pas proprement ecrites. res = GmfCloseMeshF77(InsIdx) print*,'close read = ',res res = GmfCloseMeshf77(OutIdx) print*,'close write = ',res end libMeshb-7.80/legacy_sources/v5/000077500000000000000000000000001456732543400165535ustar00rootroot00000000000000libMeshb-7.80/legacy_sources/v5/Makefile000066400000000000000000000031601456732543400202130ustar00rootroot00000000000000 #-----------------------------------------------------------# # # # LIBMESH5 # # # #-----------------------------------------------------------# # # # Description: multi-system makefile (gmake only) # # Author: Loic MARECHAL # # Creation date: feb 16 2007 # # Last modification: may 29 2009 # # # #-----------------------------------------------------------# CC = gcc CFLAGS = -O3 -m64 -Wall # Working directories LIBDIR = $(HOME)/lib/$(ARCHI) INCDIR = $(HOME)/include SRCSDIR = sources OBJSDIR = objects/$(ARCHI) ARCHDIR = archives DIRS = objects $(LIBDIR) $(OBJSDIR) $(ARCHDIR) $(INCDIR) VPATH = $(SRCSDIR) # Files to be compiled SRCS = $(wildcard $(SRCSDIR)/*.c) HDRS = $(wildcard $(SRCSDIR)/*.h) OBJS = $(patsubst $(SRCSDIR)%, $(OBJSDIR)%, $(SRCS:.c=.a)) # Definition of the compiling implicit rule $(OBJSDIR)/%.a : $(SRCSDIR)/%.c $(CC) -c $(CFLAGS) -I$(SRCSDIR) $< -o $@ # Install the library $(LIBDIR)/$(LIB): $(DIRS) $(OBJS) cp $(OBJSDIR)/*.a $@ cp $(SRCSDIR)/*.h $(INCDIR) cp $(SRCSDIR)/*.ins $(INCDIR) cp $(SRCSDIR)/*.f90 $(INCDIR) # Objects depends on headers $(OBJS): $(HDRS) # Fortran API fortran: $(SRCSDIR)/api/generate_fortran_api.c $(CC) $(CFLAGS) -I$(SRCSDIR) -lm $< -o $(SRCSDIR)/generate_fortran_api # Build the working directories $(DIRS): @[ -d $@ ] || mkdir $@ # Remove temporary files clean: rm -f $(OBJS) # Build a dated archive including sources, patterns and makefile tar: $(DIRS) tar czf $(ARCHDIR)/libmesh5.`date +"%Y.%m.%d"`.tgz sources tests Makefile zip: $(DIRS) archive_lm5.sh libMeshb-7.80/legacy_sources/v5/generate_fortran_api.c000066400000000000000000000157611456732543400231070ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* LIBMESH V 5.41 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: generate automatically fortran API */ /* Author: Loic MARECHAL */ /* Creation date: jun 15 2009 */ /* Last modification: may 17 2011 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include "libmesh5.c" /*----------------------------------------------------------*/ /* Generate fortran api automatically */ /*----------------------------------------------------------*/ int main() { int i, j, k, l, m, DimMod, FltMod; char *ActStr[2][2] = { {"Get","Set"}, {"", "*"} }; char *DimStr[2][2] = { {"", ""}, {"2d", "3d"} }; char *FltStr[4][2] = { {"", ""}, {"R4", "R8"}, {"float", "double"}, {"real(4)", "real(8)"} }; char PrcNam[256], PrcPar[256], F77Nam[256], F77Par[256]; KwdSct *kwd; FILE *hdl, *F90Hdl, *F77Hdl; GmfMshSct msh; /* Create ".c" and a ".h" files */ system("cp head_c libmesh5_fortran_api.c"); hdl = fopen("libmesh5_fortran_api.c", "a"); system("cp head_f90 M_libmesh5_api.f90"); F90Hdl = fopen("M_libmesh5_api.f90", "a"); F77Hdl = fopen("libmesh5_api.ins", "w"); /* Write headers */ fprintf(hdl, "/* Generated automatically by libmesh5.2 */\n\n"); fprintf(F77Hdl, "c Generated automatically by libmesh5.2 \n\n"); fprintf(F77Hdl, " external GmfOpenMeshF77\n"); fprintf(F77Hdl, " external GmfCloseMeshF77\n"); fprintf(F77Hdl, " external GmfStatKwdF77\n"); fprintf(F77Hdl, " external GmfSetKwdF77\n"); fprintf(F77Hdl, " external GmfGotoKwdF77\n"); fprintf(F77Hdl, "\n"); fprintf(F77Hdl, " integer GmfOpenMeshF77\n"); fprintf(F77Hdl, " integer GmfCloseMeshF77\n"); fprintf(F77Hdl, " integer GmfStatKwdF77\n"); fprintf(F77Hdl, " integer GmfSetKwdF77\n"); fprintf(F77Hdl, " integer GmfGotoKwdF77\n"); fprintf(F77Hdl, "\n"); /* Start generating keyword's prototypes */ for(i=1;i<=GmfMaxKwd;i++) { if(strcmp(GmfKwdFmt[i][2], "i")) continue; kwd = &msh.KwdTab[i]; if(strchr(GmfKwdFmt[i][3], 'd')) DimMod = 1; else DimMod = 0; if(strchr(GmfKwdFmt[i][3], 'r')) FltMod = 1; else FltMod = 0; for(j=0;j<2;j++) for(k=0;k<=DimMod;k++) for(l=0;l<=FltMod;l++) { /* Generate function name's strings */ sprintf(F77Nam, "Gmf%s%s%s%s",ActStr[0][j], GmfKwdFmt[i][1], DimStr[ DimMod ][k], FltStr[ FltMod ][l]); sprintf(PrcNam, "Gmf%sLin",ActStr[0][j]); for(m=0;mtyp == RegKwd) { for(m=0;mSolSiz;m++) if(kwd->fmt[m] == 'i') fprintf(hdl, ", int *i%d", m); else if(kwd->fmt[m] == 'r') fprintf(hdl, ", %s *r%d", FltStr[2][l], m); } else if(kwd->typ == SolKwd) { fprintf(hdl, ", %s *SolTab", FltStr[2][l]); } fprintf(hdl, ")\n"); fprintf(hdl, "{\n %s(*MshIdx, Gmf%s",PrcNam,GmfKwdFmt[i][0]); if(kwd->typ == RegKwd) { for(m=0;mSolSiz;m++) if(kwd->fmt[m] == 'i') fprintf(hdl, ", %si%d", ActStr[1][j], m); else if(kwd->fmt[m] == 'r') fprintf(hdl, ", %sr%d", ActStr[1][j], m); } else if(kwd->typ == SolKwd) { fprintf(hdl, ", SolTab", FltStr[2][l]); } fprintf(hdl, ");\n}\n\n"); /* Write f77api.f90 */ fprintf(F90Hdl, "\ninterface\n"); fprintf(F90Hdl, " subroutine %s(MshIdx", F77Nam); msh.dim = k+2; ExpFmt(&msh, i); if(kwd->typ == RegKwd) { for(m=0;mSolSiz;m++) if(kwd->fmt[m] == 'i') fprintf(F90Hdl, ", i%d",m); else if(kwd->fmt[m] == 'r') fprintf(F90Hdl, ", r%d", m); } else if(kwd->typ == SolKwd) { fprintf(F90Hdl, ", SolTab"); } fprintf(F90Hdl, ")\n"); fprintf(F90Hdl, " integer :: MshIdx\n"); if(kwd->typ == RegKwd) { for(m=0;mSolSiz;m++) if(kwd->fmt[m] == 'i') fprintf(F90Hdl, " integer :: i%d\n",m); else if(kwd->fmt[m] == 'r') fprintf(F90Hdl, " %s :: r%d\n", FltStr[3][l],m); } else if(kwd->typ == SolKwd) fprintf(F90Hdl, " %s :: SolTab(*)\n", FltStr[3][l]); fprintf(F90Hdl, " end subroutine %s\n", F77Nam); fprintf(F90Hdl, "end interface\n"); /* Write f77api.ins */ fprintf(F77Hdl, " external %s\n", F77Nam); } } /* Generate f90 keywords */ fprintf(F90Hdl, "\n"); fprintf(F90Hdl, "integer,parameter :: GmfMaxTyp=%d\n", GmfMaxTyp); fprintf(F90Hdl, "integer,parameter :: GmfMaxKwd=%d\n", GmfMaxKwd); fprintf(F90Hdl, "integer,parameter :: GmfRead=%d\n", GmfRead); fprintf(F90Hdl, "integer,parameter :: GmfWrite=%d\n", GmfWrite); fprintf(F90Hdl, "integer,parameter :: GmfSca=%d\n", GmfSca); fprintf(F90Hdl, "integer,parameter :: GmfVec=%d\n", GmfVec); fprintf(F90Hdl, "integer,parameter :: GmfSymMat=%d\n", GmfSymMat); fprintf(F90Hdl, "integer,parameter :: GmfMat=%d\n", GmfMat); fprintf(F90Hdl, "\n"); for(i=1;i<=GmfMaxKwd;i++) if(strcmp(GmfKwdFmt[i][0], "Reserved")) fprintf(F90Hdl, "integer,parameter :: Gmf%s=%d\n", GmfKwdFmt[i][0], i); fprintf(F90Hdl, "\nend module M_libmesh5_api\n\n"); /* Generate f77 keywords */ fprintf(F77Hdl, "\n"); fprintf(F77Hdl, " integer GmfMaxTyp\n"); fprintf(F77Hdl, " integer GmfMaxKwd\n"); fprintf(F77Hdl, " integer GmfRead\n"); fprintf(F77Hdl, " integer GmfWrite\n"); fprintf(F77Hdl, " integer GmfSca\n"); fprintf(F77Hdl, " integer GmfVec\n"); fprintf(F77Hdl, " integer GmfSymMat\n"); fprintf(F77Hdl, " integer GmfMat\n"); fprintf(F77Hdl, " integer GmfFloat\n"); fprintf(F77Hdl, " integer GmfDouble\n"); fprintf(F77Hdl, "\n"); fprintf(F77Hdl, " parameter (GmfMaxTyp=%d)\n", GmfMaxTyp); fprintf(F77Hdl, " parameter (GmfMaxKwd=%d)\n", GmfMaxKwd); fprintf(F77Hdl, " parameter (GmfRead=%d)\n", GmfRead); fprintf(F77Hdl, " parameter (GmfWrite=%d)\n", GmfWrite); fprintf(F77Hdl, " parameter (GmfSca=%d)\n", GmfSca); fprintf(F77Hdl, " parameter (GmfVec=%d)\n", GmfVec); fprintf(F77Hdl, " parameter (GmfSymMat=%d)\n", GmfSymMat); fprintf(F77Hdl, " parameter (GmfMat=%d)\n", GmfMat); fprintf(F77Hdl, " parameter (GmfFloat=%d)\n", GmfFloat); fprintf(F77Hdl, " parameter (GmfDouble=%d)\n", GmfDouble); fprintf(F77Hdl, "\n"); for(i=1;i<=GmfMaxKwd;i++) if(strcmp(GmfKwdFmt[i][0], "Reserved")) fprintf(F77Hdl, " integer Gmf%s\n", GmfKwdFmt[i][0]); fprintf(F77Hdl, "\n"); for(i=1;i<=GmfMaxKwd;i++) if(strcmp(GmfKwdFmt[i][0], "Reserved")) fprintf(F77Hdl, " parameter (Gmf%s=%d)\n", GmfKwdFmt[i][0], i); fclose(hdl); fclose(F90Hdl); fclose(F77Hdl); } libMeshb-7.80/legacy_sources/v5/head_c000066400000000000000000000030171456732543400177020ustar00rootroot00000000000000#include "libmesh5.h" #include char *GmfKwdFmt[ GmfMaxKwd + 1 ][4]; /*----------------------------------------------------------*/ /* Fortran 77 API */ /*----------------------------------------------------------*/ #if defined(F77_NO_UNDER_SCORE) #define call(x) x #else #define call(x) x ## _ #endif /*----------------------------------------------------------*/ /* Fortran 77 API */ /*----------------------------------------------------------*/ int call(gmfopenmeshf77)(char *FilNam, int *mod, int *ver, int *dim, int StrSiz) { int i; char TmpNam[ GmfStrSiz ]; for(i=0;i/9-.>0A?@B?ABA@CD?C@EFDEDCEFGBHEKIJKLIKGLJMNJIMPNONMOHPOLGQRHOUSTVSUVUWYTXTSX[YZYXZ[Z\(VW*\Z%] &^_ `ba_  acd e f c-d.9gh>j6ij76j97ki;;i6lk=;=kl=>'#%&$)] ^mgmgnmnhnhh9->.%op%qoq%]sprpor&stsrt&t^q]^tQGHRJuvKJvKvGNwuuJNxwPPwNxPH+yz{y+'{+|}z|zy,}~}|~,~)58828/25:5:3<:30<3 QR AF1W23\4W1(*4\UW[\cd_ac  doq@qA@qAroDDo@FtrFrDFtVzS+zV+V(XS}Sz}X,Z},X*Z,`_`bbabLQ_aRO1!("4*imgjig9jgmknmiknlhkln>hlTUTUYTY[Y[[22W233\!1/"04c-d.e  f{py{%p{'%|yssyp&~|&|s~&)]^eeeff_Q a RBu?BvuBGvwC?uw?xECxCwExHc dILL_LMIIOMMOa9/8<0>`e`e` bffbf6libMeshb-7.80/legacy_sources/v5/libmesh5.c000066400000000000000000000665361456732543400204470ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* LIBMESH V 5.50 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: handle .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: feb 16 2007 */ /* Last modification: sep 25 2013 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include #include #include #include #include #include "libmesh5.h" /*----------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------*/ #define Asc 1 #define Bin 2 #define MshFil 4 #define SolFil 8 #define MaxMsh 100 #define InfKwd 1 #define RegKwd 2 #define SolKwd 3 #define WrdSiz 4 #define FilStrSiz 64 #define BufSiz 10000 /*----------------------------------------------------------*/ /* Structures */ /*----------------------------------------------------------*/ typedef struct { int typ, SolSiz, NmbWrd, NmbLin, NmbTyp, TypTab[ GmfMaxTyp ]; size_t pos; char fmt[ GmfMaxTyp*9 ]; }KwdSct; typedef struct { int dim, ver, mod, typ, cod, pos; size_t NexKwdPos, siz; KwdSct KwdTab[ GmfMaxKwd + 1 ]; FILE *hdl; int *IntBuf; float *FltBuf; unsigned char *buf; char FilNam[ GmfStrSiz ]; double DblBuf[1000/8]; unsigned char blk[ BufSiz + 1000 ]; }GmfMshSct; /*----------------------------------------------------------*/ /* Global variables */ /*----------------------------------------------------------*/ static int GmfIniFlg=0; static GmfMshSct *GmfMshTab[ MaxMsh + 1 ]; const char *GmfKwdFmt[ GmfMaxKwd + 1 ][4] = { {"Reserved", "", "", ""}, {"MeshVersionFormatted", "", "", "i"}, {"Reserved", "", "", ""}, {"Dimension", "", "", "i"}, {"Vertices", "Vertex", "i", "dri"}, {"Edges", "Edge", "i", "iii"}, {"Triangles", "Triangle", "i", "iiii"}, {"Quadrilaterals", "Quadrilateral", "i", "iiiii"}, {"Tetrahedra", "Tetrahedron", "i", "iiiii"}, {"Prisms", "Prism", "i", "iiiiiii"}, {"Hexahedra", "Hexahedron", "i", "iiiiiiiii"}, {"IterationsAll", "IterationAll","","i"}, {"TimesAll", "TimeAll","","r"}, {"Corners", "Corner", "i", "i"}, {"Ridges", "Ridge", "i", "i"}, {"RequiredVertices", "RequiredVertex", "i", "i"}, {"RequiredEdges", "RequiredEdge", "i", "i"}, {"RequiredTriangles", "RequiredTriangle", "i", "i"}, {"RequiredQuadrilaterals", "RequiredQuadrilateral", "i", "i"}, {"TangentAtEdgeVertices", "TangentAtEdgeVertex", "i", "iii"}, {"NormalAtVertices", "NormalAtVertex", "i", "ii"}, {"NormalAtTriangleVertices", "NormalAtTriangleVertex", "i", "iii"}, {"NormalAtQuadrilateralVertices", "NormalAtQuadrilateralVertex", "i", "iiii"}, {"AngleOfCornerBound", "", "", "r"}, {"TrianglesP2", "TriangleP2", "i", "iiiiiii"}, {"EdgesP2", "EdgeP2", "i", "iiii"}, {"SolAtPyramids", "SolAtPyramid", "i", "sr"}, {"QuadrilateralsQ2", "QuadrilateralQ2", "i", "iiiiiiiiii"}, {"ISolAtPyramids", "ISolAtPyramid", "i", "iiiii"}, {"SubDomainFromGeom", "SubDomainFromGeom", "i", "iii"}, {"TetrahedraP2", "TetrahedronP2", "i", "iiiiiiiiiii"}, {"Fault_NearTri", "Fault_NearTri", "i", "i"}, {"Fault_Inter", "Fault_Inter", "i", "i"}, {"HexahedraQ2", "HexahedronQ2", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"ExtraVerticesAtEdges", "ExtraVerticesAtEdge", "i", "in"}, {"ExtraVerticesAtTriangles", "ExtraVerticesAtTriangle", "i", "in"}, {"ExtraVerticesAtQuadrilaterals", "ExtraVerticesAtQuadrilateral", "i", "in"}, {"ExtraVerticesAtTetrahedra", "ExtraVerticesAtTetrahedron", "i", "in"}, {"ExtraVerticesAtPrisms", "ExtraVerticesAtPrism", "i", "in"}, {"ExtraVerticesAtHexahedra", "ExtraVerticesAtHexahedron", "i", "in"}, {"VerticesOnGeometricVertices", "VertexOnGeometricVertex", "i", "iir"}, {"VerticesOnGeometricEdges", "VertexOnGeometricEdge", "i", "iirr"}, {"VerticesOnGeometricTriangles", "VertexOnGeometricTriangle", "i", "iirrr"}, {"VerticesOnGeometricQuadrilaterals", "VertexOnGeometricQuadrilateral", "i", "iirrr"}, {"EdgesOnGeometricEdges", "EdgeOnGeometricEdge", "i", "iir"}, {"Fault_FreeEdge", "Fault_FreeEdge", "i", "i"}, {"Polyhedra", "Polyhedron", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"Polygons", "Polygon", "", "iiiiiiiii"}, {"Fault_Overlap", "Fault_Overlap", "i", "i"}, {"Pyramids", "Pyramid", "i", "iiiiii"}, {"BoundingBox", "", "", "drdr"}, {"Body","i", "drdrdrdr"}, {"PrivateTable", "PrivateTable", "i", "i"}, {"Fault_BadShape", "Fault_BadShape", "i", "i"}, {"End", "", "", ""}, {"TrianglesOnGeometricTriangles", "TriangleOnGeometricTriangle", "i", "iir"}, {"TrianglesOnGeometricQuadrilaterals", "TriangleOnGeometricQuadrilateral", "i", "iir"}, {"QuadrilateralsOnGeometricTriangles", "QuadrilateralOnGeometricTriangle", "i", "iir"}, {"QuadrilateralsOnGeometricQuadrilaterals", "QuadrilateralOnGeometricQuadrilateral", "i", "iir"}, {"Tangents", "Tangent", "i", "dr"}, {"Normals", "Normal", "i", "dr"}, {"TangentAtVertices", "TangentAtVertex", "i", "ii"}, {"SolAtVertices", "SolAtVertex", "i", "sr"}, {"SolAtEdges", "SolAtEdge", "i", "sr"}, {"SolAtTriangles", "SolAtTriangle", "i", "sr"}, {"SolAtQuadrilaterals", "SolAtQuadrilateral", "i", "sr"}, {"SolAtTetrahedra", "SolAtTetrahedron", "i", "sr"}, {"SolAtPrisms", "SolAtPrism", "i", "sr"}, {"SolAtHexahedra", "SolAtHexahedron", "i", "sr"}, {"DSolAtVertices", "DSolAtVertex", "i", "sr"}, {"ISolAtVertices", "ISolAtVertex", "i", "i"}, {"ISolAtEdges", "ISolAtEdge", "i", "ii"}, {"ISolAtTriangles", "ISolAtTriangle", "i", "iii"}, {"ISolAtQuadrilaterals", "ISolAtQuadrilateral", "i", "iiii"}, {"ISolAtTetrahedra", "ISolAtTetrahedron", "i", "iiii"}, {"ISolAtPrisms", "ISolAtPrism", "i", "iiiiii"}, {"ISolAtHexahedra", "ISolAtHexahedron", "i", "iiiiiiii"}, {"Iterations", "","","i"}, {"Time", "","","r"}, {"Fault_SmallTri", "Fault_SmallTri","i","i"}, {"CoarseHexahedra", "CoarseHexahedron", "i", "i"}, {"Comments", "Comment", "i", "c"} }; /*----------------------------------------------------------*/ /* Prototypes of local procedures */ /*----------------------------------------------------------*/ static void ScaWrd(GmfMshSct *, unsigned char *); static void ScaDblWrd(GmfMshSct *, unsigned char *); static void ScaBlk(GmfMshSct *, unsigned char *, int); static size_t GetPos(GmfMshSct *); static void RecWrd(GmfMshSct *, unsigned char *); static void RecDblWrd(GmfMshSct *, unsigned char *); static void RecBlk(GmfMshSct *, unsigned char *, int); static void SetPos(GmfMshSct *, size_t); static int ScaKwdTab(GmfMshSct *); static void ExpFmt(GmfMshSct *, int); static void ScaKwdHdr(GmfMshSct *, int); /*----------------------------------------------------------*/ /* Open a mesh file in read or write mod */ /*----------------------------------------------------------*/ int GmfOpenMesh(char *FilNam, int mod, ...) { int i, KwdCod, res, *PtrVer, *PtrDim, MshIdx=0; char str[ GmfStrSiz ]; va_list VarArg; GmfMshSct *msh; if(!GmfIniFlg) { for(i=0;i<=MaxMsh;i++) GmfMshTab[i] = NULL; GmfIniFlg = 1; } /*---------------------*/ /* MESH STRUCTURE INIT */ /*---------------------*/ for(i=1;i<=MaxMsh;i++) if(!GmfMshTab[i]) { MshIdx = i; break; } if( !MshIdx || !(msh = calloc(1, sizeof(GmfMshSct))) ) return(0); /* Copy the FilNam into the structure */ if(strlen(FilNam) + 7 >= GmfStrSiz) return(0); strcpy(msh->FilNam, FilNam); /* Store the opening mod (read or write) and guess the filetype (binary or ascii) depending on the extension */ msh->mod = mod; msh->buf = (void *)msh->DblBuf; msh->FltBuf = (void *)msh->DblBuf; msh->IntBuf = (void *)msh->DblBuf; if(strstr(msh->FilNam, ".meshb")) msh->typ |= (Bin | MshFil); else if(strstr(msh->FilNam, ".mesh")) msh->typ |= (Asc | MshFil); else if(strstr(msh->FilNam, ".solb")) msh->typ |= (Bin | SolFil); else if(strstr(msh->FilNam, ".sol")) msh->typ |= (Asc | SolFil); else return(0); /* Open the file in the required mod and initialyse the mesh structure */ if(msh->mod == GmfRead) { /*-----------------------*/ /* OPEN FILE FOR READING */ /*-----------------------*/ va_start(VarArg, mod); PtrVer = va_arg(VarArg, int *); PtrDim = va_arg(VarArg, int *); va_end(VarArg); /* Create the name string and open the file */ if(!(msh->hdl = fopen(msh->FilNam, "rb"))) return(0); /* Read the endian coding tag, the mesh version and the mesh dimension (mandatory kwd) */ if(msh->typ & Bin) { fread((unsigned char *)&msh->cod, WrdSiz, 1, msh->hdl); if( (msh->cod != 1) && (msh->cod != 16777216) ) return(0); ScaWrd(msh, (unsigned char *)&msh->ver); if( (msh->ver < 1) || (msh->ver > 3) ) return(0); if( (msh->ver == 3) && (sizeof(size_t) == 4) ) return(0); ScaWrd(msh, (unsigned char *)&KwdCod); if(KwdCod != GmfDimension) return(0); GetPos(msh); ScaWrd(msh, (unsigned char *)&msh->dim); } else { do { res = fscanf(msh->hdl, "%s", str); }while( (res != EOF) && strcmp(str, "MeshVersionFormatted") ); if(res == EOF) return(0); fscanf(msh->hdl, "%d", &msh->ver); if( (msh->ver < 1) || (msh->ver > 3) ) return(0); do { res = fscanf(msh->hdl, "%s", str); }while( (res != EOF) && strcmp(str, "Dimension") ); if(res == EOF) return(0); fscanf(msh->hdl, "%d", &msh->dim); } if( (msh->dim != 2) && (msh->dim != 3) ) return(0); (*PtrVer) = msh->ver; (*PtrDim) = msh->dim; /*------------*/ /* KW READING */ /*------------*/ /* Read the list of kw present in the file */ if(!ScaKwdTab(msh)) return(0); GmfMshTab[ MshIdx ] = msh; return(MshIdx); } else if(msh->mod == GmfWrite) { /*-----------------------*/ /* OPEN FILE FOR WRITING */ /*-----------------------*/ msh->cod = 1; /* Check if the user provided a valid version number and dimension */ va_start(VarArg, mod); msh->ver = va_arg(VarArg, int); msh->dim = va_arg(VarArg, int); va_end(VarArg); if( (msh->ver < 1) || (msh->ver > 3) ) return(0); if( (msh->ver == 3) && (sizeof(size_t) == 4) ) return(0); if( (msh->dim != 2) && (msh->dim != 3) ) return(0); /* Create the mesh file */ if(!(msh->hdl = fopen(msh->FilNam, "wb"))) return(0); GmfMshTab[ MshIdx ] = msh; /*------------*/ /* KW WRITING */ /*------------*/ /* Write the mesh version and dimension */ if(msh->typ & Asc) { fprintf(msh->hdl, "%s %d\n\n", GmfKwdFmt[ GmfVersionFormatted ][0], msh->ver); fprintf(msh->hdl, "%s %d\n", GmfKwdFmt[ GmfDimension ][0], msh->dim); } else { RecWrd(msh, (unsigned char *)&msh->cod); RecWrd(msh, (unsigned char *)&msh->ver); GmfSetKwd(MshIdx, GmfDimension, 0); RecWrd(msh, (unsigned char *)&msh->dim); } return(MshIdx); } else return(0); } /*----------------------------------------------------------*/ /* Close a meshfile in the right way */ /*----------------------------------------------------------*/ int GmfCloseMesh(int MshIdx) { int res = 1; GmfMshSct *msh; if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); msh = GmfMshTab[ MshIdx ]; RecBlk(msh, msh->buf, 0); /* In write down the "End" kw in write mode */ if(msh->mod == GmfWrite) { if(msh->typ & Asc) fprintf(msh->hdl, "\n%s\n", GmfKwdFmt[ GmfEnd ][0]); else GmfSetKwd(MshIdx, GmfEnd, 0); } /* Close the file and free the mesh structure */ if(fclose(msh->hdl)) res = 0; free(msh); GmfMshTab[ MshIdx ] = NULL; return(res); } /*----------------------------------------------------------*/ /* Read the number of lines and set the position to this kwd*/ /*----------------------------------------------------------*/ int GmfStatKwd(int MshIdx, int KwdCod, ...) { int i, *PtrNmbTyp, *PtrSolSiz, *TypTab; GmfMshSct *msh; KwdSct *kwd; va_list VarArg; if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); msh = GmfMshTab[ MshIdx ]; if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; if(!kwd->NmbLin) return(0); /* Read further arguments if this kw is a sol */ if(kwd->typ == SolKwd) { va_start(VarArg, KwdCod); PtrNmbTyp = va_arg(VarArg, int *); *PtrNmbTyp = kwd->NmbTyp; PtrSolSiz = va_arg(VarArg, int *); *PtrSolSiz = kwd->SolSiz; TypTab = va_arg(VarArg, int *); for(i=0;iNmbTyp;i++) TypTab[i] = kwd->TypTab[i]; va_end(VarArg); } return(kwd->NmbLin); } /*----------------------------------------------------------*/ /* Set the current file position to a given kwd */ /*----------------------------------------------------------*/ int GmfGotoKwd(int MshIdx, int KwdCod) { GmfMshSct *msh; KwdSct *kwd; if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); msh = GmfMshTab[ MshIdx ]; if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; if(!kwd->NmbLin) return(0); return(fseek(msh->hdl, kwd->pos, SEEK_SET)); } /*----------------------------------------------------------*/ /* Write the kwd and set the number of lines */ /*----------------------------------------------------------*/ int GmfSetKwd(int MshIdx, int KwdCod, ...) { int i, NmbLin=0, *TypTab; size_t CurPos; va_list VarArg; GmfMshSct *msh; KwdSct *kwd; if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); msh = GmfMshTab[ MshIdx ]; RecBlk(msh, msh->buf, 0); if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; /* Read further arguments if this kw has a header */ if(strlen(GmfKwdFmt[ KwdCod ][2])) { va_start(VarArg, KwdCod); NmbLin = va_arg(VarArg, int); if(!strcmp(GmfKwdFmt[ KwdCod ][3], "sr")) { kwd->NmbTyp = va_arg(VarArg, int); TypTab = va_arg(VarArg, int *); for(i=0;iNmbTyp;i++) kwd->TypTab[i] = TypTab[i]; } va_end(VarArg); } /* Setup the kwd info */ ExpFmt(msh, KwdCod); if(!kwd->typ) return(0); else if(kwd->typ == InfKwd) kwd->NmbLin = 1; else kwd->NmbLin = NmbLin; /* Store the next kwd position in binary file */ if( (msh->typ & Bin) && msh->NexKwdPos ) { CurPos = ftell(msh->hdl); fseek(msh->hdl, msh->NexKwdPos, SEEK_SET); SetPos(msh, CurPos); fseek(msh->hdl, CurPos, SEEK_SET); } /* Write the header */ if(msh->typ & Asc) { fprintf(msh->hdl, "\n%s\n", GmfKwdFmt[ KwdCod ][0]); if(kwd->typ != InfKwd) fprintf(msh->hdl, "%d\n", kwd->NmbLin); /* In case of solution field, write the extended header */ if(kwd->typ == SolKwd) { fprintf(msh->hdl, "%d ", kwd->NmbTyp); for(i=0;iNmbTyp;i++) fprintf(msh->hdl, "%d ", kwd->TypTab[i]); fprintf(msh->hdl, "\n\n"); } } else { RecWrd(msh, (unsigned char *)&KwdCod); msh->NexKwdPos = ftell(msh->hdl); SetPos(msh, 0); if(kwd->typ != InfKwd) RecWrd(msh, (unsigned char *)&kwd->NmbLin); /* In case of solution field, write the extended header at once */ if(kwd->typ == SolKwd) { RecWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) RecWrd(msh, (unsigned char *)&kwd->TypTab[i]); } } /* Reset write buffer position */ msh->pos = 0; /* Estimate the total file size and check whether it crosses the 2GB threshold */ msh->siz += kwd->NmbLin * kwd->NmbWrd * WrdSiz; if(msh->siz > 2E9) return(0); else return(kwd->NmbLin); } /*----------------------------------------------------------*/ /* Read a full line from the current kwd */ /*----------------------------------------------------------*/ void GmfGetLin(int MshIdx, int KwdCod, ...) { int i, j; float *FltSolTab; double *DblSolTab; va_list VarArg; GmfMshSct *msh = GmfMshTab[ MshIdx ]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Start decoding the arguments */ va_start(VarArg, KwdCod); if(kwd->typ != SolKwd) { if(msh->ver == 1) { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') fscanf(msh->hdl, "%f", va_arg(VarArg, float *)); else fscanf(msh->hdl, "%d", va_arg(VarArg, int *)); } else { ScaBlk(msh, msh->buf, kwd->SolSiz); for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') *(va_arg(VarArg, float *)) = msh->FltBuf[i]; else *(va_arg(VarArg, int *)) = msh->IntBuf[i]; } } else { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') fscanf(msh->hdl, "%lf", va_arg(VarArg, double *)); else fscanf(msh->hdl, "%d", va_arg(VarArg, int *)); } else for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') ScaDblWrd(msh, (unsigned char *)va_arg(VarArg, double *)); else ScaWrd(msh, (unsigned char *)va_arg(VarArg, int *)); } } else { if(msh->ver == 1) { FltSolTab = va_arg(VarArg, float *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) fscanf(msh->hdl, "%f", &FltSolTab[j]); else ScaBlk(msh, (unsigned char *)FltSolTab, kwd->NmbWrd); } else { DblSolTab = va_arg(VarArg, double *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) fscanf(msh->hdl, "%lf", &DblSolTab[j]); else for(j=0;jSolSiz;j++) ScaDblWrd(msh, (unsigned char *)&DblSolTab[j]); } } va_end(VarArg); } /*----------------------------------------------------------*/ /* Write a full line from the current kwd */ /*----------------------------------------------------------*/ void GmfSetLin(int MshIdx, int KwdCod, ...) { int i, j, pos, *IntBuf; float *FltSolTab; double *DblSolTab, *DblBuf; va_list VarArg; GmfMshSct *msh = GmfMshTab[ MshIdx ]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Start decoding the arguments */ va_start(VarArg, KwdCod); if(kwd->typ != SolKwd) { if(msh->ver == 1) { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') fprintf(msh->hdl, "%g ", (float)va_arg(VarArg, double)); else fprintf(msh->hdl, "%d ", va_arg(VarArg, int)); } else { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') msh->FltBuf[i] = va_arg(VarArg, double); else msh->IntBuf[i] = va_arg(VarArg, int); RecBlk(msh, msh->buf, kwd->SolSiz); } } else { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') fprintf(msh->hdl, "%.15lg ", va_arg(VarArg, double)); else fprintf(msh->hdl, "%d ", va_arg(VarArg, int)); } else { pos = 0; for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') { DblBuf = (void *)&msh->buf[ pos ]; *DblBuf = va_arg(VarArg, double); pos += 8; } else { IntBuf = (void *)&msh->buf[ pos ]; *IntBuf = va_arg(VarArg, int); pos += 4; } RecBlk(msh, msh->buf, kwd->NmbWrd); } } } else { if(msh->ver == 1) { FltSolTab = va_arg(VarArg, float *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) fprintf(msh->hdl, "%g ", FltSolTab[j]); else RecBlk(msh, (unsigned char *)FltSolTab, kwd->NmbWrd); } else { DblSolTab = va_arg(VarArg, double *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) fprintf(msh->hdl, "%.15lg ", DblSolTab[j]); else RecBlk(msh, (unsigned char *)DblSolTab, kwd->NmbWrd); } } va_end(VarArg); if(msh->typ & Asc) fprintf(msh->hdl, "\n"); } /*----------------------------------------------------------*/ /* Private procedure for transmesh : copy a whole line */ /*----------------------------------------------------------*/ void GmfCpyLin(int InpIdx, int OutIdx, int KwdCod) { double d; float f; int i, a; GmfMshSct *InpMsh = GmfMshTab[ InpIdx ], *OutMsh = GmfMshTab[ OutIdx ]; KwdSct *kwd = &InpMsh->KwdTab[ KwdCod ]; for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(InpMsh->ver == 1) { if(InpMsh->typ & Asc) fscanf(InpMsh->hdl, "%f", &f); else ScaWrd(InpMsh, (unsigned char *)&f); d = f; } else { if(InpMsh->typ & Asc) fscanf(InpMsh->hdl, "%lf", &d); else ScaDblWrd(InpMsh, (unsigned char *)&d); f = (float)d; } if(OutMsh->ver == 1) if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%g ", f); else RecWrd(OutMsh, (unsigned char *)&f); else if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%.15g ", d); else RecDblWrd(OutMsh, (unsigned char *)&d); } else { if(InpMsh->typ & Asc) fscanf(InpMsh->hdl, "%d", &a); else ScaWrd(InpMsh, (unsigned char *)&a); if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%d ", a); else RecWrd(OutMsh, (unsigned char *)&a); } } if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "\n"); } /*----------------------------------------------------------*/ /* Find every kw present in a meshfile */ /*----------------------------------------------------------*/ static int ScaKwdTab(GmfMshSct *msh) { int KwdCod; size_t NexPos, CurPos, EndPos; char str[ GmfStrSiz ]; if(msh->typ & Asc) { /* Scan each string in the file until the end */ while(fscanf(msh->hdl, "%s", str) != EOF) { /* Fast test in order to reject quickly the numeric values */ if(isalpha(str[0])) { /* Search which kwd code this string is associated with, then get its header and save the curent position in file (just before the data) */ for(KwdCod=1; KwdCod<= GmfMaxKwd; KwdCod++) if(!strcmp(str, GmfKwdFmt[ KwdCod ][0])) { ScaKwdHdr(msh, KwdCod); break; } } else if(str[0] == '#') while(fgetc(msh->hdl) != '\n'); } } else { /* Get file size */ CurPos = ftell(msh->hdl); fseek(msh->hdl, 0, SEEK_END); EndPos = ftell(msh->hdl); fseek(msh->hdl, CurPos, SEEK_SET); /* Jump through kwd positions in the file */ do { /* Get the kwd code and the next kwd position */ ScaWrd(msh, (unsigned char *)&KwdCod); NexPos = GetPos(msh); if(NexPos > EndPos) return(0); /* Check if this kwd belongs to this mesh version */ if( (KwdCod >= 1) && (KwdCod <= GmfMaxKwd) ) ScaKwdHdr(msh, KwdCod); /* Go to the next kwd */ if(NexPos) fseek(msh->hdl, NexPos, SEEK_SET); }while(NexPos && (KwdCod != GmfEnd)); } return(1); } /*----------------------------------------------------------*/ /* Read and setup the keyword's header */ /*----------------------------------------------------------*/ static void ScaKwdHdr(GmfMshSct *msh, int KwdCod) { int i; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; if(!strcmp("i", GmfKwdFmt[ KwdCod ][2])) { if(msh->typ & Asc) fscanf(msh->hdl, "%d", &kwd->NmbLin); else ScaWrd(msh, (unsigned char *)&kwd->NmbLin); } else kwd->NmbLin = 1; if(!strcmp("sr", GmfKwdFmt[ KwdCod ][3])) { if(msh->typ & Asc) { fscanf(msh->hdl, "%d", &kwd->NmbTyp); for(i=0;iNmbTyp;i++) fscanf(msh->hdl, "%d", &kwd->TypTab[i]); } else { ScaWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) ScaWrd(msh, (unsigned char *)&kwd->TypTab[i]); } } ExpFmt(msh, KwdCod); kwd->pos = ftell(msh->hdl); } /*----------------------------------------------------------*/ /* Expand the compacted format and compute the line size */ /*----------------------------------------------------------*/ static void ExpFmt(GmfMshSct *msh, int KwdCod) { int i, j, TmpSiz=0; char chr; const char *InpFmt = GmfKwdFmt[ KwdCod ][3]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Set the kwd's type */ if(!strlen(GmfKwdFmt[ KwdCod ][2])) kwd->typ = InfKwd; else if(!strcmp(InpFmt, "sr")) kwd->typ = SolKwd; else kwd->typ = RegKwd; /* Get the solution-field's size */ if(kwd->typ == SolKwd) for(i=0;iNmbTyp;i++) switch(kwd->TypTab[i]) { case GmfSca : TmpSiz += 1; break; case GmfVec : TmpSiz += msh->dim; break; case GmfSymMat : TmpSiz += (msh->dim * (msh->dim+1)) / 2; break; case GmfMat : TmpSiz += msh->dim * msh->dim; break; } /* Scan each character from the format string */ i = kwd->SolSiz = kwd->NmbWrd = 0; while(i < strlen(InpFmt)) { chr = InpFmt[ i++ ]; if(chr == 'd') { chr = InpFmt[i++]; for(j=0;jdim;j++) kwd->fmt[ kwd->SolSiz++ ] = chr; } else if(chr == 's') { chr = InpFmt[i++]; for(j=0;jfmt[ kwd->SolSiz++ ] = chr; } else kwd->fmt[ kwd->SolSiz++ ] = chr; } for(i=0;iSolSiz;i++) switch(kwd->fmt[i]) { case 'i' : kwd->NmbWrd++; break; case 'c' : kwd->NmbWrd += FilStrSiz; break; case 'r' : { if(msh->ver >= 2) kwd->NmbWrd += 2; else kwd->NmbWrd++; }break; } } /*----------------------------------------------------------*/ /* Read a four bytes word from a mesh file */ /*----------------------------------------------------------*/ static void ScaWrd(GmfMshSct *msh, unsigned char *wrd) { unsigned char swp; fread(wrd, WrdSiz, 1, msh->hdl); if(msh->cod == 1) return; swp = wrd[3]; wrd[3] = wrd[0]; wrd[0] = swp; swp = wrd[2]; wrd[2] = wrd[1]; wrd[1] = swp; } /*----------------------------------------------------------*/ /* Read an eight bytes word from a mesh file */ /*----------------------------------------------------------*/ static void ScaDblWrd(GmfMshSct *msh, unsigned char *wrd) { int i; unsigned char swp; fread(wrd, WrdSiz, 2, msh->hdl); if(msh->cod == 1) return; for(i=0;i<4;i++) { swp = wrd[7-i]; wrd[7-i] = wrd[i]; wrd[i] = swp; } } /*----------------------------------------------------------*/ /* Read ablock of four bytes word from a mesh file */ /*----------------------------------------------------------*/ static void ScaBlk(GmfMshSct *msh, unsigned char *blk, int siz) { int i, j; unsigned char swp, *wrd; fread(blk, WrdSiz, siz, msh->hdl); if(msh->cod == 1) return; for(i=0;iver >= 3) ScaDblWrd(msh, (unsigned char*)&pos); else { ScaWrd(msh, (unsigned char*)&IntVal); pos = IntVal; } return(pos); } /*----------------------------------------------------------*/ /* Write a four bytes word to a mesh file */ /*----------------------------------------------------------*/ static void RecWrd(GmfMshSct *msh, unsigned char *wrd) { fwrite(wrd, WrdSiz, 1, msh->hdl); } /*----------------------------------------------------------*/ /* Write an eight bytes word to a mesh file */ /*----------------------------------------------------------*/ static void RecDblWrd(GmfMshSct *msh, unsigned char *wrd) { fwrite(wrd, WrdSiz, 2, msh->hdl); } /*----------------------------------------------------------*/ /* Write a block of four bytes word to a mesh file */ /*----------------------------------------------------------*/ static void RecBlk(GmfMshSct *msh, unsigned char *blk, int siz) { /* Copy this line-block into the main mesh buffer */ if(siz) { memcpy(&msh->blk[ msh->pos ], blk, siz * WrdSiz); msh->pos += siz * WrdSiz; } /* When the buffer is full or this procedure is called with a 0 size, flush the cache on disk */ if( (msh->pos > BufSiz) || (!siz && msh->pos) ) { fwrite(msh->blk, 1, msh->pos, msh->hdl); msh->pos = 0; } } /*----------------------------------------------------------*/ /* Write a 4 or 8 bytes position in a mesh file */ /*----------------------------------------------------------*/ static void SetPos(GmfMshSct *msh, size_t pos) { int IntVal; if(msh->ver >= 3) RecDblWrd(msh, (unsigned char*)&pos); else { IntVal = pos; RecWrd(msh, (unsigned char*)&IntVal); } } libMeshb-7.80/legacy_sources/v5/libmesh5.h000066400000000000000000000072471456732543400204460ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* LIBMESH V 5.50 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: handle .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: feb 16 2007 */ /* Last modification: sep 25 2013 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------*/ #define GmfStrSiz 1024 #define GmfMaxTyp 1000 #define GmfMaxKwd GmfLastKeyword - 1 #define GmfMshVer 1 #define GmfRead 1 #define GmfWrite 2 #define GmfSca 1 #define GmfVec 2 #define GmfSymMat 3 #define GmfMat 4 #define GmfFloat 1 #define GmfDouble 2 enum GmfKwdCod { GmfReserved1, \ GmfVersionFormatted, \ GmfReserved2, \ GmfDimension, \ GmfVertices, \ GmfEdges, \ GmfTriangles, \ GmfQuadrilaterals, \ GmfTetrahedra, \ GmfPrisms, \ GmfHexahedra, \ GmfIterationsAll, \ GmfTimesAll, \ GmfCorners, \ GmfRidges, \ GmfRequiredVertices, \ GmfRequiredEdges, \ GmfRequiredTriangles, \ GmfRequiredQuadrilaterals, \ GmfTangentAtEdgeVertices, \ GmfNormalAtVertices, \ GmfNormalAtTriangleVertices, \ GmfNormalAtQuadrilateralVertices, \ GmfAngleOfCornerBound, \ GmfTrianglesP2, \ GmfEdgesP2, \ GmfSolAtPyramids, \ GmfQuadrilateralsQ2, \ GmfISolAtPyramids, \ GmfSubDomainFromGeom, \ GmfTetrahedraP2, \ GmfFault_NearTri, \ GmfFault_Inter, \ GmfHexahedraQ2, \ GmfExtraVerticesAtEdges, \ GmfExtraVerticesAtTriangles, \ GmfExtraVerticesAtQuadrilaterals, \ GmfExtraVerticesAtTetrahedra, \ GmfExtraVerticesAtPrisms, \ GmfExtraVerticesAtHexahedra, \ GmfVerticesOnGeometricVertices, \ GmfVerticesOnGeometricEdges, \ GmfVerticesOnGeometricTriangles, \ GmfVerticesOnGeometricQuadrilaterals, \ GmfEdgesOnGeometricEdges, \ GmfFault_FreeEdge, \ GmfPolyhedra, \ GmfPolygons, \ GmfFault_Overlap, \ GmfPyramids, \ GmfBoundingBox, \ GmfBody, \ GmfPrivateTable, \ GmfFault_BadShape, \ GmfEnd, \ GmfTrianglesOnGeometricTriangles, \ GmfTrianglesOnGeometricQuadrilaterals, \ GmfQuadrilateralsOnGeometricTriangles, \ GmfQuadrilateralsOnGeometricQuadrilaterals, \ GmfTangents, \ GmfNormals, \ GmfTangentAtVertices, \ GmfSolAtVertices, \ GmfSolAtEdges, \ GmfSolAtTriangles, \ GmfSolAtQuadrilaterals, \ GmfSolAtTetrahedra, \ GmfSolAtPrisms, \ GmfSolAtHexahedra, \ GmfDSolAtVertices, \ GmfISolAtVertices, \ GmfISolAtEdges, \ GmfISolAtTriangles, \ GmfISolAtQuadrilaterals, \ GmfISolAtTetrahedra, \ GmfISolAtPrisms, \ GmfISolAtHexahedra, \ GmfIterations, \ GmfTime, \ GmfFault_SmallTri, \ GmfCoarseHexahedra, \ GmfComments, \ GmfLastKeyword }; /*----------------------------------------------------------*/ /* External procedures */ /*----------------------------------------------------------*/ extern int GmfOpenMesh(char *, int, ...); extern int GmfCloseMesh(int); extern int GmfStatKwd(int, int, ...); extern int GmfGotoKwd(int, int); extern int GmfSetKwd(int, int, ...); extern void GmfGetLin(int, int, ...); extern void GmfSetLin(int, int, ...); /*----------------------------------------------------------*/ /* Fortran 77 API */ /*----------------------------------------------------------*/ #if defined(F77_NO_UNDER_SCORE) #define call(x) x #else #define call(x) x ## _ #endif /*----------------------------------------------------------*/ /* Transmesh private API */ /*----------------------------------------------------------*/ #ifdef TRANSMESH extern char *GmfKwdFmt[ GmfMaxKwd + 1 ][4]; extern int GmfCpyLin(int, int, int); #endif libMeshb-7.80/legacy_sources/v5/quad.mesh000066400000000000000000003123341456732543400203710ustar00rootroot00000000000000MeshVersionFormatted 1 Dimension 3 MeshVersionFormatted 2 Vertices 1982 0.491814 0.357873 0.793755 0 -0.185247 0.576968 0.795482 0 -0.605974 0.00211274 0.795482 0 -0.189262 -0.575662 0.795483 0 0.489311 -0.355541 0.796345 0 0.18688 0.575248 -0.796345 0 -0.492393 0.35579 -0.794332 0 -0.490535 -0.358348 -0.794332 0 0.189225 -0.577262 -0.794332 0 0.608238 -0.000444233 -0.793755 0 0.793286 0.579422 0.186998 0 0.301117 0.934866 -0.188027 0 -0.304976 0.933315 0.189508 0 -0.795969 0.576124 -0.185778 0 -0.981878 -0.00163909 0.189508 0 -0.793895 -0.57898 -0.185778 0 -0.301858 -0.934328 0.189508 0 0.305315 -0.933953 -0.185778 0 0.795319 -0.575807 0.189508 0 0.98259 0.0017648 -0.185778 0 0.000569249 0.000222193 1 0 0.000590977 0.000154955 -1 0 0.276627 0.850311 0.447715 0 -0.723276 0.525844 0.447616 0 -0.723612 -0.525382 0.447616 0 0.276059 -0.850548 0.447616 0 0.894253 -0.000431273 0.447562 0 -0.276504 0.850312 -0.44779 0 -0.894126 -0.000268137 -0.447815 0 -0.276045 -0.850447 -0.447815 0 0.723521 -0.525337 -0.447815 0 0.723249 0.525857 -0.447643 0 0.256714 -0.149484 0.954763 0 0.524775 0.00459358 0.851228 0 0.220485 0.200032 0.954566 0 0.119822 0.271828 -0.954763 0 0.427252 0.304739 -0.851228 0 0.295951 -0.0322319 -0.954566 0 0.0832626 0.750053 0.655992 0 0.1675 0.499739 0.849826 0 0.420045 0.656133 0.626804 0 -0.687614 0.310969 0.655991 0 -0.423351 0.313193 0.850108 0 -0.493357 0.605724 0.624116 0 -0.508233 -0.557865 0.655991 0 -0.428687 -0.305849 0.850108 0 -0.728533 -0.282031 0.624116 0 0.373505 -0.655741 0.656 0 0.158296 -0.502146 0.850172 0 0.0430982 -0.780028 0.624116 0 0.738017 0.145904 0.658679 0 0.756916 -0.201853 0.621397 0 -0.0832595 0.750045 -0.656002 0 -0.167033 0.499277 -0.85019 0 -0.420046 0.65614 -0.626795 0 -0.739145 0.149499 -0.656608 0 -0.526557 -0.00446402 -0.850128 0 -0.753829 -0.196733 -0.626793 0 -0.370591 -0.656771 -0.656608 0 -0.15847 -0.502165 -0.850128 0 -0.0458414 -0.777727 -0.626793 0 0.510108 -0.555406 -0.656608 0 0.429233 -0.305862 -0.849828 0 0.725492 -0.283925 -0.626801 0 0.682827 0.315755 -0.658681 0 0.493713 0.608207 -0.621396 0 -0.124845 0.269191 0.954857 0 -0.294571 -0.0355551 0.954864 0 -0.0571566 -0.29117 0.954859 0 0.0572024 -0.29117 -0.954856 0 -0.259226 -0.144362 -0.954863 0 -0.217382 0.201984 -0.954856 0 0.689546 0.502211 0.521833 0 0.540126 0.777696 0.321378 0 0.584161 0.811637 -0.0014475 0 0.278426 0.946647 0.16177 0 -0.0033168 0.999989 0.00336067 0 -0.00345595 0.92949 0.368602 0 -0.260374 0.807108 0.529888 0 -0.575197 0.753058 0.319162 0 -0.591381 0.806391 -0.00140495 0 -0.814271 0.557336 0.161773 0 -0.952064 0.30588 0.00335348 0 -0.885066 0.283941 0.368602 0 -0.848066 0.00177962 0.529888 0 -0.893946 -0.314337 0.319162 0 -0.94967 -0.313248 -0.00140496 0 -0.781681 -0.602192 0.161773 0 -0.585113 -0.810945 0.00335348 0 -0.543545 -0.754005 0.368602 0 -0.263759 -0.806009 0.529888 0 0.0227073 -0.947329 0.319162 0 0.00445275 -0.999989 -0.00140495 0 0.331165 -0.929511 0.161773 0 0.590445 -0.807071 0.00335348 0 0.549137 -0.749942 0.368602 0 0.685075 -0.499913 0.529867 0 0.90798 -0.271149 0.319159 0 0.952422 -0.304779 -0.00140495 0 0.986353 0.0277227 0.161775 0 0.950017 0.31218 0.00341563 0 0.880937 0.291644 0.37245 0 -0.689564 0.502267 -0.521757 0 -0.539139 0.779923 -0.317607 0 -0.270809 0.948542 -0.1635 0 0.00359873 0.928207 -0.371794 0 0.260381 0.807158 -0.52981 0 -0.690771 -0.500605 -0.521757 0 -0.908354 -0.271743 -0.317607 0 -0.985802 0.0355612 -0.163502 0 -0.879614 0.291205 -0.375873 0 0.262644 -0.811658 -0.521757 0 -0.0222541 -0.947869 -0.317607 0 -0.33845 -0.926564 -0.163502 0 -0.548768 -0.746576 -0.375873 0 0.853076 -0.00102413 -0.521785 0 0.8946 -0.314072 -0.317607 0 0.776628 -0.608209 -0.163502 0 0.540457 -0.752614 -0.375873 0 0.577849 0.752638 -0.315326 0 0.818421 0.550683 -0.163518 0 0.882785 0.28144 -0.375877 0 0.392326 -0.135659 0.909763 0 0.391632 0.0898775 0.91572 0 0.23644 -0.0163112 0.971459 0 0.23766 0.340354 -0.909763 0 0.369665 0.157483 -0.91572 0 0.181697 0.152172 -0.971459 0 0.0676954 0.648947 0.75781 0 0.283868 0.58442 0.760177 0 0.220029 0.730839 0.646037 0 -0.596269 0.264935 0.757803 0 -0.468053 0.451147 0.759862 0 -0.627088 0.435162 0.645986 0 -0.436225 -0.485216 0.757803 0 -0.573703 -0.305733 0.759862 0 -0.607644 -0.461923 0.645986 0 0.326611 -0.564746 0.757878 0 0.113479 -0.640094 0.759868 0 0.251543 -0.720646 0.645986 0 0.619602 0.108114 0.777438 0 0.663381 -0.106778 0.740615 0 0.764629 0.0136778 0.644258 0 -0.0676997 0.648861 -0.757884 0 -0.283854 0.584424 -0.760179 0 -0.220028 0.73084 -0.646037 0 -0.638177 0.13573 -0.757826 0 -0.643547 -0.0893953 -0.760166 0 -0.763115 0.0163528 -0.645981 0 -0.326294 -0.564999 -0.757825 0 -0.113847 -0.639674 -0.760166 0 -0.251368 -0.720712 -0.645981 0 0.436515 -0.484918 -0.757826 0 0.573191 -0.305925 -0.76017 0 0.607761 -0.461776 -0.645982 0 0.564816 0.276726 -0.777438 0 0.473924 0.476311 -0.740615 0 0.626638 0.438372 -0.644258 0 0.231373 0.364261 0.9021 0 0.0112916 0.380517 0.924698 0 0.0859406 0.218843 0.971923 0 -0.275359 0.33222 0.902115 0 -0.358427 0.128304 0.924692 0 -0.181557 0.149318 0.971933 0 -0.401049 -0.159221 0.902116 0 -0.232777 -0.301239 0.924693 0 -0.198001 -0.126573 0.97195 0 0.0274316 -0.430611 0.902123 0 0.213573 -0.315558 0.924552 0 0.0593613 -0.227845 0.971842 0 0.401284 -0.1587 -0.902103 0 0.232735 -0.301249 -0.9247 0 0.198155 -0.126536 -0.971923 0 -0.0275814 -0.430636 -0.902107 0 -0.214621 -0.314432 -0.924693 0 -0.0591211 -0.227514 -0.971933 0 -0.418081 -0.106841 -0.902107 0 -0.36536 0.106959 -0.924694 0 -0.234582 -0.0139765 -0.971951 0 -0.230866 0.364549 -0.902114 0 -0.0126935 0.380829 -0.924551 0 -0.0858992 0.219223 -0.971842 0 0.531718 0.565509 0.63045 0 0.62895 0.639706 0.441809 0 0.465511 0.720338 0.514117 0 0.607491 0.770122 0.194572 0 0.454521 0.887244 0.078775 0 0.438916 0.856343 0.271902 0 0.19133 0.980128 0.0522926 0 0.00167376 0.984955 0.172796 0 0.176842 0.950765 0.254313 0 -0.141623 0.905416 0.400195 0 -0.103573 0.79814 0.593499 0 0.0411958 0.873057 0.485775 0 -0.354729 0.708207 0.610421 0 -0.44038 0.791302 0.42414 0 -0.543473 0.665457 0.511582 0 -0.545358 0.81538 0.194249 0 -0.703348 0.706465 0.0787834 0 -0.678625 0.682302 0.271725 0 -0.873005 0.484889 0.0523097 0 -0.93623 0.305961 0.172796 0 -0.849584 0.46199 0.254312 0 -0.904866 0.145097 0.400195 0 -0.791082 0.148135 0.593499 0 -0.817597 0.308969 0.485774 0 -0.783162 -0.118519 0.610421 0 -0.888658 -0.174301 0.42414 0 -0.80083 -0.311236 0.511582 0 -0.943997 -0.2667 0.194249 0 -0.889234 -0.450614 0.0787834 0 -0.858614 -0.434568 0.271725 0 -0.730931 -0.680438 0.0523097 0 -0.580297 -0.795861 0.172796 0 -0.701914 -0.66524 0.254312 0 -0.417615 -0.815741 0.400195 0 -0.385343 -0.706588 0.593499 0 -0.546498 -0.682104 0.485774 0 -0.129292 -0.781456 0.610422 0 -0.10884 -0.899025 0.42414 0 0.0485329 -0.857811 0.511582 0 -0.0380643 -0.980209 0.194249 0 0.153771 -0.984959 0.0787834 0 0.147972 -0.950879 0.271725 0 0.421265 -0.905423 0.0523097 0 0.577587 -0.79783 0.172796 0 0.415777 -0.87313 0.254312 0 0.646766 -0.649251 0.400198 0 0.552925 -0.584794 0.593538 0 0.479843 -0.730531 0.485777 0 0.703707 -0.364686 0.609758 0 0.821391 -0.381358 0.424111 0 0.830864 -0.219 0.511484 0 0.920472 -0.339103 0.194249 0 0.98427 -0.158125 0.0787835 0 0.950066 -0.153109 0.271724 0 0.991285 0.120862 0.0523309 0 0.937065 0.30302 0.173449 0 0.958858 0.125619 0.254389 0 0.794739 0.431007 0.427349 0 0.731337 0.31417 0.605335 0 0.842759 0.227723 0.487661 0 -0.53174 0.565539 -0.630405 0 -0.628906 0.640171 -0.441199 0 -0.465484 0.720394 -0.514062 0 -0.603965 0.781339 -0.15729 0 -0.427216 0.899375 -0.0927217 0 -0.435805 0.857792 -0.272355 0 -0.153257 0.987186 -0.0445129 0 -0.00109441 0.978917 -0.204227 0 -0.175616 0.950149 -0.257465 0 0.141372 0.905148 -0.40089 0 0.103593 0.798097 -0.593554 0 -0.0408741 0.873122 -0.485685 0 -0.702176 -0.330954 -0.630405 0 -0.803181 -0.400302 -0.441198 0 -0.828977 -0.220088 -0.514062 0 -0.929733 -0.332958 -0.15729 0 -0.987374 -0.128385 -0.0927217 0 -0.95048 -0.149403 -0.272355 0 -0.986227 0.159305 -0.0445254 0 -0.93117 0.301325 -0.205214 0 -0.957889 0.126579 -0.257563 0 -0.794588 0.430738 -0.4279 0 -0.731349 0.315648 -0.604551 0 -0.842689 0.227853 -0.487721 0 0.0977715 -0.770079 -0.630405 0 0.132513 -0.88757 -0.441198 0 -0.0468515 -0.856416 -0.514062 0 0.0293588 -0.987118 -0.15729 0 -0.183014 -0.978722 -0.0927217 0 -0.151623 -0.950128 -0.272355 0 -0.456269 -0.888729 -0.0445254 0 -0.574325 -0.792481 -0.205214 0 -0.416388 -0.871891 -0.257563 0 -0.655197 -0.622593 -0.4279 0 -0.526198 -0.598014 -0.604551 0 -0.477106 -0.731034 -0.487721 0 0.762577 -0.144985 -0.630435 0 0.885077 -0.148246 -0.441202 0 0.800021 -0.309205 -0.514063 0 0.947878 -0.277114 -0.15729 0 0.874265 -0.476498 -0.0927217 0 0.856772 -0.437808 -0.272355 0 0.704237 -0.70857 -0.0445254 0 0.576218 -0.791105 -0.205214 0 0.700547 -0.665438 -0.257563 0 0.389654 -0.815521 -0.4279 0 0.406141 -0.685241 -0.604551 0 0.547821 -0.679657 -0.487721 0 0.354967 0.708677 -0.609737 0 0.441138 0.791197 -0.423548 0 0.543538 0.665526 -0.511423 0 0.557024 0.815527 -0.156985 0 0.723337 0.684219 -0.0928211 0 0.681215 0.679509 -0.272261 0 0.891464 0.450898 -0.0445717 0 0.930445 0.303556 -0.205214 0 0.84935 0.46063 -0.257561 0 0.895991 0.118616 -0.427942 0 0.776311 0.175686 -0.605362 0 0.815603 0.311092 -0.487778 0 0.140109 -0.105927 0.984464 0 0.143999 0.100239 0.984498 0 0.521606 -0.143864 0.840984 0 0.372042 -0.274472 0.886702 0 0.374802 0.274316 0.885589 0 0.515327 0.184808 0.836827 0 0.0510884 0.16805 -0.984464 0 0.175416 0.00354539 -0.984498 0 0.337427 0.422981 -0.840984 0 0.139658 0.440734 -0.886702 0 0.46446 -0.00162301 -0.885589 0 0.525536 0.153389 -0.836827 0 0.151099 0.810982 0.565241 0 0.347313 0.744978 0.569563 0 0.0234537 0.5377 0.842825 0 -0.0694694 0.680007 0.729902 0 0.450146 0.5091 0.733607 0 0.335363 0.435093 0.835597 0 -0.724603 0.394315 0.565232 0 -0.601375 0.560811 0.569086 0 -0.504126 0.188432 0.842838 0 -0.668193 0.144066 0.729901 0 -0.343675 0.589033 0.731383 0 -0.309909 0.453323 0.835734 0 -0.59893 -0.567289 0.565232 0 -0.719199 -0.398642 0.569086 0 -0.334992 -0.421224 0.842838 0 -0.343498 -0.59097 0.729902 0 -0.666405 -0.144833 0.731383 0 -0.526903 -0.154657 0.835734 0 0.354444 -0.744918 0.565233 0 0.156886 -0.807186 0.569086 0 0.296559 -0.448466 0.843182 0 0.455879 -0.509003 0.730126 0 -0.0681867 -0.678545 0.731383 0 -0.0157373 -0.548905 0.835735 0 0.817984 0.105392 0.56552 0 0.816592 -0.100965 0.568333 0 0.624177 0.269389 0.733365 0 0.627109 -0.27435 0.729011 0 -0.151078 0.81098 -0.565251 0 -0.34731 0.744982 -0.56956 0 -0.0236753 0.537128 -0.843183 0 0.0696302 0.67975 -0.730126 0 -0.45022 0.509081 -0.733574 0 -0.335202 0.434972 -0.835725 0 -0.817865 0.105929 -0.565593 0 -0.815845 -0.100119 -0.569556 0 -0.518618 0.144056 -0.842798 0 -0.626363 0.274649 -0.72954 0 -0.623291 -0.270871 -0.733573 0 -0.517269 -0.18438 -0.835723 0 -0.353478 -0.745102 -0.565593 0 -0.156891 -0.806853 -0.569556 0 -0.297267 -0.448719 -0.842798 0 -0.454764 -0.510835 -0.72954 0 0.065006 -0.676489 -0.733573 0 0.0155109 -0.548928 -0.835723 0 0.599403 -0.566427 -0.565593 0 0.718881 -0.398543 -0.569557 0 0.334936 -0.421377 -0.842784 0 0.345304 -0.590363 -0.72954 0 0.663418 -0.147281 -0.733606 0 0.527056 -0.154876 -0.835597 0 0.723704 0.395523 -0.565537 0 0.601296 0.56166 -0.56833 0 0.663312 0.148941 -0.733366 0 0.346083 0.59056 -0.72901 0 -0.0512894 0.167478 0.984551 0 -0.146528 0.438123 0.886887 0 -0.174867 0.00289383 0.984598 0 -0.46196 -0.00396923 0.886887 0 -0.0564016 -0.165708 0.98457 0 -0.138879 -0.440529 0.886926 0 0.056944 -0.16564 -0.984551 0 0.138729 -0.44071 -0.886859 0 -0.139772 -0.105123 -0.984598 0 -0.376271 -0.268127 -0.886859 0 -0.14303 0.100911 -0.98457 0 -0.371279 0.274997 -0.886859 0 0.439315 0.806606 0.395489 0 0.621151 0.448796 0.642479 0 0.684885 0.676736 0.270099 0 0.753888 0.549761 0.35974 0 0.300562 0.910724 0.283312 0 0.681184 0.72835 0.0743004 0 0.311169 0.950156 -0.0192143 0 0.449914 0.887899 -0.0959622 0 0.122414 0.913354 0.388356 0 0.1213 0.989659 -0.0767251 0 -0.154366 0.951594 0.265769 0 -0.156449 0.982778 0.09832 0 -0.28484 0.871958 0.398221 0 -0.226643 0.703461 0.673626 0 -0.632102 0.666905 0.394594 0 -0.434166 0.859432 0.26994 0 -0.773276 0.567288 0.283284 0 -0.482081 0.872958 0.0746144 0 -0.807303 0.589824 -0.0190137 0 -0.705376 0.702354 -0.0956058 0 -0.830828 0.398664 0.388347 0 -0.90367 0.421323 -0.0767649 0 -0.952721 0.147248 0.265769 0 -0.983023 0.154903 0.0983197 0 -0.917302 -0.0014487 0.398221 0 -0.739068 0.00183061 0.673626 0 -0.829595 -0.39508 0.394594 0 -0.951533 -0.147338 0.26994 0 -0.778479 -0.560127 0.283284 0 -0.979204 -0.188727 0.0746144 0 -0.810427 -0.585525 -0.0190137 0 -0.885951 -0.453813 -0.0956058 0 -0.635892 -0.66697 0.388347 0 -0.679951 -0.729245 -0.0767649 0 -0.434448 -0.86059 0.265769 0 -0.451093 -0.887043 0.0983197 0 -0.282084 -0.872854 0.398221 0 -0.230125 -0.702329 0.673626 0 0.119384 -0.911078 0.394594 0 -0.153913 -0.950491 0.26994 0 0.29215 -0.913466 0.283284 0 -0.1231 -0.989598 0.0746144 0 0.306432 -0.951699 -0.0190137 0 0.157828 -0.982826 -0.0956058 0 0.437825 -0.810874 0.388347 0 0.483437 -0.872021 -0.0767649 0 0.684218 -0.679121 0.265769 0 0.704232 -0.703126 0.0983197 0 0.742966 -0.538004 0.398219 0 0.597282 -0.435382 0.673568 0 0.903384 -0.168017 0.394574 0 0.856409 -0.440098 0.26994 0 0.959037 -0.00443457 0.283284 0 0.903123 -0.422878 0.0746144 0 0.999812 -0.00265669 -0.0190132 0 0.983494 -0.153607 -0.0956058 0 0.906319 0.16559 0.388827 0 0.978732 0.190308 -0.0767594 0 0.855132 0.443026 0.269205 0 0.886223 0.452784 0.0979399 0 -0.438923 0.806934 -0.395252 0 -0.621265 0.448822 -0.64235 0 -0.684883 0.678568 -0.265471 0 -0.754424 0.549225 -0.359433 0 -0.299064 0.911024 -0.283929 0 -0.305041 0.952177 0.0173019 0 -0.122116 0.912952 -0.389392 0 0.152747 0.951339 -0.267608 0 0.284657 0.872198 -0.397826 0 0.2273 0.703306 -0.673567 0 -0.903074 -0.168086 -0.395253 0 -0.618836 -0.452165 -0.64235 0 -0.856997 -0.441673 -0.265471 0 -0.755474 -0.54778 -0.359433 0 -0.958849 -0.00290817 -0.283936 0 -0.999837 0.00412821 0.0173016 0 -0.905848 0.165709 -0.389871 0 -0.855335 0.44089 -0.272045 0 -0.119206 -0.910816 -0.395253 0 0.238803 -0.728275 -0.64235 0 0.15523 -0.951537 -0.265471 0 0.287516 -0.887772 -0.359433 0 -0.293535 -0.912818 -0.283936 0 -0.312893 -0.949626 0.0173016 0 -0.437521 -0.810305 -0.389871 0 -0.683625 -0.677229 -0.272045 0 0.829401 -0.394829 -0.395253 0 0.766319 0.00201622 -0.642477 0 0.952934 -0.146409 -0.265471 0 0.933168 -0.000891708 -0.359434 0 0.777435 -0.561245 -0.283936 0 0.806459 -0.591029 0.0173016 0 0.635445 -0.666505 -0.389871 0 0.432832 -0.859441 -0.272045 0 0.632534 0.666606 -0.394406 0 0.436791 0.859609 -0.265096 0 0.774026 0.56595 -0.283908 0 0.811162 0.584567 0.0169739 0 0.830245 0.398401 -0.389857 0 0.951129 0.146067 -0.272046 0 0.324949 -0.0586432 0.943907 0 0.396508 -0.038851 0.917199 0 0.303846 0.0277655 0.952312 0 0.22842 0.238444 -0.943907 0 0.297945 0.264492 -0.917199 0 0.262137 0.156134 -0.952312 0 0.159881 0.68286 0.712833 0 0.161573 0.623564 0.764881 0 0.247406 0.672226 0.697778 0 -0.600035 0.363087 0.712823 0 -0.543121 0.346418 0.76485 0 -0.56288 0.443163 0.697684 0 -0.530737 -0.458468 0.712823 0 -0.497297 -0.40949 0.76485 0 -0.595413 -0.398386 0.697684 0 0.272021 -0.646433 0.712826 0 0.235764 -0.599483 0.764864 0 0.194894 -0.689378 0.697686 0 0.699023 0.0468839 0.713557 0 0.6436 0.00226604 0.765351 0 0.722287 -0.0357177 0.690663 0 -0.159881 0.682859 -0.712834 0 -0.161573 0.623551 -0.764892 0 -0.247403 0.672229 -0.697776 0 -0.698921 0.058656 -0.712783 0 -0.642993 0.0389067 -0.764871 0 -0.7158 -0.0276624 -0.697751 0 -0.271764 -0.646588 -0.712783 0 -0.235698 -0.5995 -0.764871 0 -0.194886 -0.689314 -0.697751 0 0.530961 -0.458268 -0.712785 0 0.497321 -0.409414 -0.764874 0 0.595353 -0.398353 -0.697755 0 0.593079 0.372945 -0.713557 0 0.522015 0.376465 -0.765351 0 0.563348 0.453446 -0.690663 0 0.145232 0.295338 0.944287 0 0.124656 0.376607 0.917941 0 0.0572624 0.291411 0.954877 0 -0.23632 0.229636 0.944148 0 -0.319774 0.234883 0.917912 0 -0.259517 0.144557 0.954853 0 -0.291421 -0.153793 0.944148 0 -0.322201 -0.231541 0.917913 0 -0.217631 -0.202165 0.954859 0 0.0561815 -0.324684 0.94415 0 0.120369 -0.377981 0.917949 0 0.124781 -0.270072 0.954715 0 0.291086 -0.153571 -0.944288 0 0.322188 -0.231424 -0.917946 0 0.217594 -0.202111 -0.954879 0 -0.0562187 -0.324683 -0.944148 0 -0.12068 -0.377966 -0.917914 0 -0.125006 -0.269475 -0.954854 0 -0.326162 -0.0468629 -0.944149 0 -0.396758 -0.00202375 -0.917914 0 -0.294889 0.0356579 -0.95486 0 -0.145389 0.295701 -0.944149 0 -0.124779 0.376554 -0.917946 0 -0.0577931 0.291839 -0.954715 0 0.515984 0.646574 0.561867 0 0.578655 0.599641 0.552783 0 0.536991 0.689172 0.486492 0 0.519263 0.826381 0.217835 0 0.546124 0.825267 0.143752 0 0.448252 0.873183 0.191344 0 0.16548 0.973771 0.156135 0 0.109229 0.988658 0.102979 0 0.103778 0.969891 0.220304 0 -0.0564479 0.88507 0.462013 0 -0.128181 0.864106 0.486695 0 -0.0204851 0.845669 0.533306 0 -0.457127 0.697205 0.552209 0 -0.39763 0.754535 0.522068 0 -0.498611 0.722804 0.478467 0 -0.625567 0.749182 0.217681 0 -0.616206 0.774355 0.143686 0 -0.691922 0.696158 0.191309 0 -0.874975 0.458293 0.156135 0 -0.906516 0.409397 0.102979 0 -0.890352 0.398411 0.220304 0 -0.859195 0.219817 0.462013 0 -0.861424 0.145116 0.486695 0 -0.810609 0.241844 0.533306 0 -0.804342 -0.219305 0.552209 0 -0.84048 -0.145004 0.522068 0 -0.841507 -0.250848 0.478467 0 -0.905825 -0.363439 0.217681 0 -0.926874 -0.346758 0.143686 0 -0.875901 -0.442933 0.191309 0 -0.706244 -0.69053 0.156135 0 -0.669488 -0.735637 0.102979 0 -0.654046 -0.723659 0.220304 0 -0.474564 -0.749216 0.462013 0 -0.404208 -0.774419 0.486695 0 -0.480499 -0.696202 0.533306 0 -0.0399837 -0.832743 0.552209 0 -0.121816 -0.844153 0.522068 0 -0.021469 -0.877837 0.478467 0 0.0657361 -0.973799 0.217681 0 0.0433666 -0.988663 0.143686 0 0.150586 -0.969905 0.191309 0 0.438492 -0.885064 0.156135 0 0.492749 -0.864045 0.102979 0 0.486129 -0.845657 0.220304 0 0.565899 -0.682856 0.462015 0 0.61161 -0.623726 0.486703 0 0.513645 -0.672111 0.533316 0 0.779449 -0.295765 0.552248 0 0.765221 -0.37681 0.521958 0 0.828207 -0.291806 0.478448 0 0.946452 -0.238402 0.217681 0 0.953676 -0.26427 0.143686 0 0.968968 -0.156502 0.191309 0 0.977244 0.143534 0.156154 0 0.974012 0.201648 0.103054 0 0.954443 0.201049 0.220473 0 0.819481 0.324482 0.472395 0 0.76724 0.377827 0.518244 0 0.798131 0.269577 0.538799 0 -0.515981 0.646592 -0.561849 0 -0.578652 0.599708 -0.552715 0 -0.536956 0.689294 -0.486357 0 -0.511974 0.832656 -0.211093 0 -0.521375 0.844189 -0.124506 0 -0.43729 0.877937 -0.194918 0 -0.154957 0.974619 -0.161554 0 -0.0780013 0.989432 -0.122182 0 -0.101703 0.967386 -0.231971 0 0.0565057 0.884987 -0.462166 0 0.128163 0.864039 -0.486818 0 0.0205263 0.845653 -0.533329 0 -0.774392 -0.290919 -0.561849 0 -0.749169 -0.365011 -0.552715 0 -0.821486 -0.297672 -0.486357 0 -0.950112 -0.229612 -0.211093 0 -0.963985 -0.234988 -0.124506 0 -0.970098 -0.14459 -0.194918 0 -0.974801 0.153802 -0.161565 0 -0.965099 0.231582 -0.122235 0 -0.951383 0.202192 -0.232334 0 -0.819342 0.324698 -0.472487 0 -0.767171 0.378049 -0.518186 0 -0.798097 0.270103 -0.538587 0 0.0373803 -0.82639 -0.561849 0 0.11564 -0.825297 -0.552715 0 0.0292497 -0.873265 -0.486357 0 -0.0752271 -0.974564 -0.211093 0 -0.0744004 -0.989419 -0.124506 0 -0.162264 -0.967299 -0.194918 0 -0.447505 -0.879563 -0.161565 0 -0.518479 -0.846301 -0.122235 0 -0.48629 -0.842338 -0.232334 0 -0.561997 -0.678904 -0.472487 0 -0.596614 -0.612799 -0.518186 0 -0.503508 -0.675569 -0.538587 0 0.797492 -0.219816 -0.561854 0 0.820631 -0.145047 -0.552727 0 0.839563 -0.242035 -0.486359 0 0.903619 -0.372702 -0.211093 0 0.918003 -0.376506 -0.124506 0 0.869814 -0.453234 -0.194918 0 0.698227 -0.697402 -0.161565 0 0.644661 -0.754625 -0.122235 0 0.650839 -0.722786 -0.232334 0 0.472009 -0.744284 -0.472487 0 0.398443 -0.756779 -0.518186 0 0.486911 -0.687627 -0.538587 0 0.45675 0.69743 -0.552236 0 0.397643 0.754657 -0.521883 0 0.498797 0.722842 -0.478216 0 0.63371 0.744277 -0.21085 0 0.641804 0.756701 -0.124417 0 0.699853 0.687186 -0.194864 0 0.87903 0.448551 -0.161565 0 0.916893 0.379938 -0.122236 0 0.888529 0.395635 -0.232334 0 0.853687 0.21895 -0.472518 0 0.842735 0.145269 -0.518346 0 0.804134 0.250974 -0.538861 0 0.133834 -0.0025591 0.990964 0 0.181759 -0.0545586 0.981836 0 0.262833 -0.0833502 0.961219 0 0.213695 -0.0926866 0.971282 0 0.191914 0.0440153 0.980424 0 0.248485 0.0928201 0.964153 0 0.443367 -0.228734 0.86666 0 0.457244 -0.14178 0.877974 0 0.465983 -0.0529018 0.883211 0 0.382662 -0.216383 0.898175 0 0.324234 -0.142831 0.935135 0 0.448114 0.229703 0.863957 0 0.383301 0.208124 0.899854 0 0.295039 0.155256 0.942787 0 0.471167 0.150057 0.869193 0 0.47813 0.0335719 0.877645 0 0.10677 0.0807363 -0.990964 0 0.114978 0.150974 -0.981836 0 0.163644 0.221921 -0.961219 0 0.118403 0.200592 -0.971282 0 0.181133 0.0771953 -0.980424 0 0.255587 0.0709626 -0.964153 0 0.224245 0.445654 -0.86666 0 0.286582 0.383464 -0.877974 0 0.345893 0.316696 -0.883211 0 0.182393 0.399981 -0.898175 0 0.178357 0.306132 -0.935135 0 0.497548 0.0775617 -0.863957 0 0.432429 0.0569227 -0.899854 0 0.329949 0.0478144 -0.942787 0 0.469384 0.155546 -0.869193 0 0.406549 0.253878 -0.877645 0 0.252905 0.786844 0.562889 0 0.193999 0.774859 0.601642 0 0.149355 0.731617 0.665132 0 0.149944 0.764219 0.625404 0 0.286134 0.738699 0.610288 0 0.319947 0.685627 0.653836 0 -0.039811 0.618626 0.784671 0 0.044375 0.595971 0.801786 0 0.12929 0.569392 0.811835 0 -0.011931 0.667944 0.744095 0 0.0763214 0.702042 0.70804 0 0.394549 0.472779 0.78791 0 0.391923 0.537647 0.746529 0 0.365504 0.628153 0.686898 0 0.317454 0.492316 0.810469 0 0.208361 0.53281 0.82018 0 -0.670189 0.483686 0.562871 0 -0.676991 0.423965 0.601625 0 -0.649656 0.36813 0.665129 0 -0.680482 0.378766 0.625399 0 -0.614162 0.500547 0.610129 0 -0.553214 0.516634 0.653448 0 -0.600651 0.153304 0.784671 0 -0.553091 0.226375 0.801784 0 -0.501574 0.298933 0.811827 0 -0.63894 0.195064 0.744093 0 -0.644098 0.289537 0.708035 0 -0.327351 0.522034 0.7876 0 -0.389912 0.54071 0.745369 0 -0.484171 0.543703 0.68554 0 -0.36996 0.45424 0.810437 0 -0.442303 0.362785 0.820214 0 -0.667112 -0.487921 0.562871 0 -0.612416 -0.512844 0.601626 0 -0.550868 -0.504101 0.665129 0 -0.570509 -0.530132 0.625399 0 -0.665835 -0.429425 0.610129 0 -0.662301 -0.366489 0.653448 0 -0.331412 -0.52388 0.784671 0 -0.38621 -0.456067 0.801784 0 -0.439297 -0.38465 0.811827 0 -0.38296 -0.54739 0.744093 0 -0.474403 -0.523102 0.708035 0 -0.59764 -0.150012 0.7876 0 -0.634735 -0.20374 0.745369 0 -0.666709 -0.292461 0.68554 0 -0.546332 -0.211485 0.810437 0 -0.481709 -0.308549 0.820214 0 0.257891 -0.785237 0.562871 0 0.298497 -0.74092 0.601626 0 0.309201 -0.679682 0.66513 0 0.327888 -0.706405 0.6254 0 0.202653 -0.765947 0.610129 0 0.143889 -0.743137 0.653448 0 0.395534 -0.476658 0.785075 0 0.314184 -0.508019 0.802008 0 0.229987 -0.536575 0.811907 0 0.402171 -0.533195 0.744265 0 0.350886 -0.612808 0.708063 0 -0.0420116 -0.614746 0.787601 0 -0.00237692 -0.666627 0.74537 0 0.0721205 -0.724452 0.685541 0 0.0323013 -0.58494 0.810441 0 0.144549 -0.553442 0.820246 0 0.826713 0.00214713 0.562556 0 0.797317 0.0535421 0.601192 0 0.741624 0.0825084 0.665701 0 0.773119 0.0917811 0.625704 0 0.792105 -0.0455753 0.608681 0 0.754007 -0.0963845 0.649715 0 0.569223 0.230541 0.789195 0 0.507844 0.251467 0.823906 0 0.558317 0.154666 0.81509 0 0.520732 0.0945109 0.848485 0 0.56735 0.039608 0.822522 0 0.62529 0.207689 0.752235 0 0.686783 0.13133 0.714898 0 0.578946 -0.2225 0.784414 0 0.510003 -0.2401 0.825958 0 0.639455 -0.210619 0.739395 0 0.717431 -0.160968 0.677772 0 0.588164 -0.128639 0.798454 0 0.582979 -0.0372631 0.811631 0 0.525255 -0.0585771 0.848931 0 -0.252904 0.786844 -0.56289 0 -0.193996 0.774859 -0.601644 0 -0.149355 0.731616 -0.665133 0 -0.149941 0.764219 -0.625405 0 -0.286133 0.7387 -0.610287 0 -0.319947 0.68563 -0.653833 0 0.0398214 0.618113 -0.785075 0 -0.0444174 0.595666 -0.802011 0 -0.129297 0.569271 -0.811919 0 0.0119632 0.667753 -0.744267 0 -0.0763195 0.702015 -0.708067 0 -0.394583 0.47283 -0.787863 0 -0.391945 0.537691 -0.746486 0 -0.365504 0.628164 -0.686889 0 -0.317327 0.492259 -0.810553 0 -0.208203 0.532671 -0.82031 0 -0.82648 0.00256302 -0.562897 0 -0.796881 0.0545695 -0.601679 0 -0.742195 0.0833536 -0.664959 0 -0.773167 0.0926916 -0.625512 0 -0.790974 -0.04392 -0.610272 0 -0.750946 -0.092449 -0.653823 0 -0.576387 0.229035 -0.784419 0 -0.580591 0.141934 -0.801736 0 -0.581483 0.0529859 -0.811831 0 -0.631985 0.216528 -0.744096 0 -0.691373 0.142863 -0.708237 0 -0.571622 -0.229158 -0.787862 0 -0.632494 -0.206611 -0.746483 0 -0.710369 -0.153515 -0.686883 0 -0.566233 -0.149682 -0.810548 0 -0.570989 -0.0333845 -0.820276 0 -0.257834 -0.785237 -0.562897 0 -0.298148 -0.741016 -0.601679 0 -0.308625 -0.680111 -0.664959 0 -0.327077 -0.706682 -0.625512 0 -0.202654 -0.765833 -0.610272 0 -0.144131 -0.742761 -0.653823 0 -0.395939 -0.477401 -0.784419 0 -0.3144 -0.508315 -0.801736 0 -0.230081 -0.536649 -0.811831 0 -0.401225 -0.534143 -0.744096 0 -0.349517 -0.613388 -0.708237 0 0.0413015 -0.614458 -0.787862 0 0.00104775 -0.665384 -0.746483 0 -0.0735144 -0.723039 -0.686883 0 -0.0326201 -0.584774 -0.810548 0 -0.144695 -0.553359 -0.820276 0 0.66713 -0.487866 -0.562897 0 0.612615 -0.512542 -0.60168 0 0.551454 -0.503685 -0.664959 0 0.571022 -0.529445 -0.625512 0 0.665726 -0.42939 -0.610273 0 0.661867 -0.366599 -0.653826 0 0.331683 -0.524085 -0.784419 0 0.386283 -0.456089 -0.801736 0 0.439297 -0.384647 -0.811828 0 0.384015 -0.546647 -0.744097 0 0.475359 -0.521957 -0.708238 0 0.597089 -0.150576 -0.78791 0 0.633097 -0.204594 -0.746528 0 0.664927 -0.293338 -0.686894 0 0.546205 -0.211692 -0.810468 0 0.48175 -0.308578 -0.820179 0 0.670087 0.484192 -0.562556 0 0.676513 0.425333 -0.601195 0 0.648483 0.369165 -0.665701 0 0.679413 0.380174 -0.625706 0 0.614039 0.502459 -0.608681 0 0.553351 0.521171 -0.649715 0 0.596019 0.148069 -0.789195 0 0.558663 0.095062 -0.823906 0 0.542598 0.203043 -0.81509 0 0.476833 0.229618 -0.848485 0 0.482277 0.301436 -0.822522 0 0.627946 0.199512 -0.752235 0 0.632813 0.297433 -0.714898 0 0.337595 0.520302 -0.784414 0 0.271474 0.494017 -0.825958 0 0.393531 0.546256 -0.739395 0 0.4858 0.551921 -0.677772 0 0.400223 0.449785 -0.798454 0 0.449737 0.372813 -0.811631 0 0.390509 0.356127 -0.84893 0 0.0443054 0.126599 0.990928 0 0.0810037 0.0565706 0.995076 0 0.107533 0.155947 0.981901 0 0.193026 0.142619 0.970777 0 0.160545 0.225474 0.960915 0 0.153981 0.174996 0.971237 0 0.016033 0.195236 0.980625 0 -0.0160632 0.261941 0.964923 0 0.357546 0.357457 0.862773 0 0.419479 0.305783 0.854725 0 0.395963 0.406776 0.823231 0 0.294737 0.407873 0.864165 0 0.252512 0.471141 0.845154 0 0.187709 0.446941 0.874647 0 0.318068 0.307832 0.896689 0 0.227486 0.274838 0.93419 0 0.30735 0.236958 0.921633 0 -0.0750626 0.488975 0.869057 0 -0.0706657 0.559056 0.826087 0 -0.0846986 0.42169 0.902757 0 -0.0649824 0.321257 0.944757 0 0.0170373 0.468563 0.883273 0 0.108633 0.454177 0.884263 0 0.106421 0.516844 0.849443 0 -0.106279 0.0812016 0.990979 0 -0.0281915 0.0943865 0.995105 0 -0.11507 0.15027 0.981932 0 -0.0775936 0.226699 0.970872 0 -0.164989 0.222219 0.960921 0 -0.119336 0.200134 0.971256 0 -0.180539 0.0755483 0.980662 0 -0.254035 0.0656711 0.964935 0 -0.2292 0.449959 0.863131 0 -0.159553 0.490725 0.856594 0 -0.263696 0.502251 0.823511 0 -0.296665 0.40596 0.864406 0 -0.369865 0.385319 0.845429 0 -0.366628 0.3152 0.875346 0 -0.196561 0.396935 0.896541 0 -0.192824 0.300002 0.934245 0 -0.134541 0.361722 0.922537 0 -0.488239 0.0797144 0.869056 0 -0.553531 0.105552 0.826087 0 -0.427228 0.0497544 0.902756 0 -0.325604 0.0374669 0.944761 0 -0.440339 0.160899 0.883304 0 -0.398261 0.243212 0.88444 0 -0.458613 0.260754 0.849522 0 -0.109569 -0.0761981 0.991018 0 -0.0979271 0.00213327 0.99516 0 -0.17824 -0.0630843 0.981969 0 -0.239489 -0.00376007 0.970895 0 -0.26232 -0.0882456 0.960923 0 -0.227116 -0.0516783 0.971279 0 -0.127377 -0.148489 0.980676 0 -0.140857 -0.221358 0.964939 0 -0.498763 -0.0789367 0.863131 0 -0.516012 -0.000100958 0.856594 0 -0.559155 -0.0955854 0.823511 0 -0.477765 -0.156697 0.864406 0 -0.480755 -0.232693 0.845429 0 -0.413067 -0.251282 0.875346 0 -0.438248 -0.0642807 0.896542 0 -0.344898 -0.0906821 0.934247 0 -0.385591 -0.0161799 0.922539 0 -0.226687 -0.43971 0.869056 0 -0.271436 -0.493822 0.826087 0 -0.179043 -0.390739 0.902903 0 -0.136203 -0.298098 0.944765 0 -0.289095 -0.369067 0.883304 0 -0.354378 -0.303612 0.88444 0 -0.389711 -0.35559 0.849522 0 0.0392692 -0.128581 0.990886 0 0.0789166 -0.0594678 0.995075 0 -0.0316348 -0.0929685 0.995135 0 0.00532359 -0.189488 0.981874 0 -0.070253 -0.229047 0.97088 0 0.0028993 -0.276783 0.960913 0 -0.02081 -0.232186 0.971228 0 0.102053 -0.167866 0.980514 0 0.166708 -0.203683 0.964712 0 0.195501 -0.139672 0.97071 0 -0.0790512 -0.498757 0.863124 0 -0.159342 -0.490782 0.856601 0 -0.0818812 -0.561328 0.82351 0 0.00137 -0.502799 0.864409 0 0.0727127 -0.529111 0.845444 0 0.111271 -0.470465 0.875374 0 -0.0742657 -0.436652 0.896549 0 -0.0203286 -0.356032 0.93425 0 -0.103677 -0.37167 0.922568 0 0.346279 -0.352586 0.869347 0 0.385049 -0.410098 0.82675 0 0.414961 -0.304464 0.857397 0 0.3149 -0.29973 0.900541 0 0.31647 -0.222084 0.922251 0 0.23958 -0.224839 0.94448 0 0.260748 -0.389218 0.883478 0 0.178869 -0.430772 0.884556 0 0.21751 -0.480372 0.84967 0 0.110256 -0.0763786 -0.990928 0 0.0987846 0.00184614 -0.995076 0 0.178658 -0.0629586 -0.981901 0 0.23999 -0.00192375 -0.970777 0 0.262414 -0.0880466 -0.960915 0 0.227432 -0.0510675 -0.971237 0 0.127724 -0.148527 -0.980626 0 0.140957 -0.221363 -0.964923 0 0.499368 -0.0790284 -0.862773 0 0.519101 -0.000820062 -0.854726 0 0.559437 -0.0963473 -0.823231 0 0.478186 -0.156736 -0.864166 0 0.481214 -0.232739 -0.845155 0 0.414552 -0.251259 -0.87465 0 0.438261 -0.0620863 -0.896689 0 0.345583 -0.0886372 -0.934191 0 0.387931 -0.0110474 -0.921633 0 0.226428 -0.439927 -0.869014 0 0.271198 -0.494258 -0.825905 0 0.179183 -0.391021 -0.902753 0 0.136217 -0.298119 -0.944756 0 0.28908 -0.369169 -0.883267 0 0.354795 -0.303624 -0.884269 0 0.389851 -0.355632 -0.84944 0 -0.0382528 -0.128162 -0.990979 0 0.032671 -0.0929309 -0.995105 0 -0.00476919 -0.189207 -0.981932 0 0.0704685 -0.229015 -0.970872 0 -0.0028629 -0.276757 -0.960921 0 0.0210883 -0.232056 -0.971256 0 -0.101657 -0.167235 -0.980662 0 -0.166929 -0.202437 -0.964936 0 0.0787629 -0.498876 -0.863082 0 0.159038 -0.491147 -0.856448 0 0.0814691 -0.561505 -0.82343 0 -0.00156452 -0.502826 -0.864392 0 -0.0728853 -0.529061 -0.84546 0 -0.111369 -0.470486 -0.87535 0 0.0741188 -0.436737 -0.89652 0 0.0202909 -0.356059 -0.934241 0 0.10367 -0.371765 -0.922531 0 -0.348425 -0.351292 -0.869013 0 -0.386262 -0.410659 -0.825905 0 -0.316517 -0.291246 -0.902751 0 -0.24143 -0.221663 -0.94476 0 -0.26181 -0.388915 -0.883297 0 -0.179306 -0.430818 -0.884445 0 -0.217827 -0.480487 -0.849524 0 -0.133432 -0.00275708 -0.991018 0 -0.0779711 -0.0592855 -0.99516 0 -0.181279 -0.0537281 -0.981969 0 -0.195966 -0.13772 -0.970895 0 -0.264091 -0.0827947 -0.960923 0 -0.214118 -0.0916838 -0.971279 0 -0.190328 0.0452643 -0.980677 0 -0.24406 0.0963018 -0.964939 0 -0.45012 -0.229069 -0.863082 0 -0.417963 -0.303028 -0.856448 0 -0.508847 -0.250996 -0.82343 0 -0.4787 -0.153894 -0.864392 0 -0.52569 -0.0941708 -0.84546 0 -0.481873 -0.0394697 -0.87535 0 -0.392457 -0.20545 -0.89652 0 -0.332357 -0.129321 -0.934243 0 -0.321533 -0.213475 -0.922532 0 -0.441768 0.222817 -0.869013 0 -0.509922 0.240457 -0.825905 0 -0.3748 0.211027 -0.902751 0 -0.285404 0.161149 -0.944759 0 -0.450783 0.128815 -0.883297 0 -0.46514 0.0374003 -0.884445 0 -0.524282 0.0586871 -0.849524 0 -0.0438084 0.127106 -0.990886 0 0.0288906 0.0944965 -0.995075 0 -0.0802385 0.056619 -0.995135 0 -0.107071 0.156429 -0.981874 0 -0.191464 0.144016 -0.97088 0 -0.160343 0.225627 -0.960913 0 -0.15331 0.175613 -0.971228 0 -0.0161068 0.195792 -0.980513 0 0.0151481 0.262771 -0.964712 0 0.0760668 0.22791 -0.97071 0 -0.356955 0.357298 -0.863083 0 -0.417355 0.303864 -0.856448 0 -0.395955 0.406379 -0.823431 0 -0.294302 0.407693 -0.864398 0 -0.252022 0.470826 -0.845475 0 -0.186494 0.446023 -0.875374 0 -0.316682 0.309748 -0.89652 0 -0.225711 0.276123 -0.934241 0 -0.302386 0.239832 -0.922531 0 0.0729003 0.488786 -0.869347 0 0.0704618 0.558102 -0.82675 0 0.156751 0.490225 -0.857397 0 0.0785825 0.42758 -0.900541 0 0.125492 0.365686 -0.922251 0 0.0616684 0.322721 -0.94448 0 -0.017824 0.468149 -0.883478 0 -0.108484 0.453641 -0.884556 0 -0.106372 0.516475 -0.849674 0 0.388312 0.784628 0.483221 0 0.317637 0.794428 0.517618 0 0.404875 0.740627 0.536249 0 0.376302 0.699235 0.607844 0 0.456772 0.679759 0.57381 0 0.412984 0.706372 0.572819 0 0.455367 0.765442 0.454685 0 0.520423 0.742581 0.421526 0 0.524913 0.477658 0.704487 0 0.467086 0.455193 0.758058 0 0.576626 0.508556 0.639442 0 0.623236 0.536791 0.568711 0 0.486206 0.534002 0.691678 0 0.476581 0.613519 0.62966 0 0.431674 0.579806 0.691016 0 0.722768 0.614816 0.315595 0 0.667973 0.665519 0.332972 0 0.581487 0.723006 0.373008 0 0.710137 0.585073 0.391672 0 0.668948 0.553428 0.496207 0 0.366396 0.862841 0.348122 0 0.368977 0.829064 0.420056 0 0.431455 0.83703 0.336515 0 0.49606 0.786762 0.367337 0 0.49981 0.818412 0.283483 0 0.476109 0.814137 0.328851 0 0.370203 0.886852 0.276481 0 0.370109 0.906644 0.202406 0 0.694023 0.695306 0.186744 0 0.726853 0.643282 0.240617 0 0.64665 0.750512 0.136335 0 0.592964 0.80066 0.0856586 0 0.653955 0.717978 0.238374 0 0.574283 0.776505 0.259318 0 0.621711 0.722888 0.301545 0 0.38187 0.92234 -0.0587877 0 0.364396 0.931104 0.0153504 0 0.353939 0.926719 0.126169 0 0.453354 0.89079 -0.0312295 0 0.540326 0.840959 0.0288418 0 0.216864 0.913297 0.344654 0 0.291019 0.887466 0.357282 0 0.236967 0.93073 0.278575 0 0.301195 0.928064 0.219054 0 0.219251 0.955888 0.195391 0 0.252349 0.938485 0.230674 0 0.147953 0.935019 0.322256 0 0.076559 0.95101 0.299449 0 0.235088 0.970513 -0.053202 0 0.308534 0.947814 -0.0804783 0 0.158513 0.987285 -0.0123907 0 0.0806559 0.996285 0.0301698 0 0.260917 0.965286 0.0107881 0 0.235574 0.965768 0.108644 0 0.304545 0.950289 0.0649901 0 -0.156871 0.970646 0.182289 0 -0.0991866 0.967465 0.232697 0 -0.00271868 0.957762 0.287547 0 -0.0980675 0.987139 0.126302 0 0.000217854 0.997946 0.0640371 0 0.145746 0.866202 0.477893 0 0.207386 0.831375 0.515505 0 0.191012 0.888874 0.416361 0 0.08974 0.892133 0.442787 0 0.0608021 0.927805 0.368086 0 0.00276044 0.902183 0.43131 0 0.0506769 0.907494 0.414152 0 0.0953823 0.843363 0.52881 0 0.0450687 0.814427 0.578472 0 0.106646 0.786452 0.60838 0 -0.217642 0.923344 0.316322 0 -0.209501 0.94815 0.239047 0 -0.213238 0.891913 0.398789 0 -0.205656 0.85346 0.478864 0 -0.149686 0.934299 0.323498 0 -0.0714649 0.919789 0.385858 0 -0.0814883 0.947805 0.308296 0 -0.148485 0.693853 0.704636 0 -0.111704 0.644219 0.756655 0 -0.0823977 0.725289 0.683477 0 -0.00399377 0.719246 0.694758 0 0.00412267 0.773515 0.633764 0 -0.181547 0.741376 0.646077 0 -0.20465 0.807597 0.553084 0 -0.626584 0.611745 0.482793 0 -0.657493 0.547606 0.517463 0 -0.579919 0.61412 0.535316 0 -0.548791 0.575004 0.606799 0 -0.504707 0.645395 0.573331 0 -0.544217 0.611708 0.57208 0 -0.588853 0.669353 0.453011 0 -0.549592 0.723525 0.417623 0 -0.284102 0.648887 0.705849 0 -0.286049 0.586319 0.75791 0 -0.212162 0.657993 0.722492 0 -0.27839 0.706999 0.650125 0 -0.242876 0.759309 0.603724 0 -0.302138 0.772126 0.559045 0 -0.352538 0.636911 0.685594 0 -0.432051 0.653711 0.621282 0 -0.416278 0.595469 0.687131 0 -0.367167 0.872523 0.322308 0 -0.294048 0.905226 0.30669 0 -0.431132 0.839896 0.329651 0 -0.516558 0.773875 0.366442 0 -0.356947 0.839066 0.410573 0 -0.333364 0.803803 0.492713 0 -0.272076 0.836759 0.475201 0 -0.707465 0.615102 0.347954 0 -0.674666 0.607074 0.419791 0 -0.6629 0.669081 0.336019 0 -0.596438 0.71449 0.365748 0 -0.623254 0.728902 0.283244 0 -0.627279 0.704634 0.32807 0 -0.729044 0.626165 0.276426 0 -0.747894 0.632174 0.202393 0 -0.447212 0.874572 0.187399 0 -0.388765 0.888744 0.242937 0 -0.514106 0.846801 0.13651 0 -0.578267 0.811334 0.0857058 0 -0.482328 0.843076 0.237812 0 -0.562568 0.78544 0.25808 0 -0.499233 0.813355 0.298732 0 -0.758997 0.648442 -0.0586322 0 -0.772823 0.634413 0.0154448 0 -0.771978 0.623001 0.126173 0 -0.707027 0.706511 -0.0310994 0 -0.632823 0.773755 0.0288733 0 -0.801589 0.488474 0.34464 0 -0.75413 0.551018 0.357218 0 -0.811952 0.512982 0.278566 0 -0.789566 0.573246 0.219048 0 -0.841351 0.503906 0.195391 0 -0.814572 0.530007 0.23067 0 -0.843538 0.429648 0.322252 0 -0.880807 0.36669 0.299449 0 -0.850225 0.523724 -0.0531409 0 -0.805762 0.586809 -0.0801549 0 -0.889932 0.455938 -0.0123812 0 -0.922588 0.384605 0.0301679 0 -0.837322 0.546577 0.0108632 0 -0.845688 0.522506 0.108656 0 -0.809619 0.58336 0.0650321 0 -0.971615 0.150753 0.182289 0 -0.950764 0.204631 0.232697 0 -0.911726 0.293379 0.287547 0 -0.969129 0.211776 0.126302 0 -0.949032 0.308599 0.0640355 0 -0.778775 0.406284 0.477883 0 -0.726614 0.454148 0.51548 0 -0.78636 0.456339 0.416331 0 -0.82074 0.361032 0.442783 0 -0.863607 0.344534 0.368085 0 -0.857174 0.281415 0.43131 0 -0.847419 0.328628 0.414151 0 -0.772613 0.351328 0.528807 0 -0.760639 0.294535 0.578472 0 -0.715006 0.344454 0.608378 0 -0.945408 0.0783391 0.316322 0 -0.966483 0.0937475 0.239047 0 -0.914154 0.0728154 0.398789 0 -0.87524 0.0681429 0.478864 0 -0.934826 0.146355 0.323498 0 -0.896855 0.216263 0.385858 0 -0.926597 0.215388 0.308296 0 -0.705778 0.0731946 0.704636 0 -0.647207 0.0928381 0.756654 0 -0.715254 0.145763 0.683477 0 -0.685278 0.218464 0.694757 0 -0.734383 0.242951 0.633763 0 -0.761191 0.0564363 0.646077 0 -0.831311 0.0549276 0.553083 0 -0.775429 -0.406877 0.482793 0 -0.723981 -0.456094 0.517463 0 -0.763268 -0.361762 0.535316 0 -0.716447 -0.344245 0.606799 0 -0.76977 -0.280567 0.573331 0 -0.749941 -0.328553 0.57208 0 -0.818558 -0.353191 0.453011 0 -0.857946 -0.299111 0.417623 0 -0.704921 -0.0696802 0.705849 0 -0.646017 -0.090866 0.75791 0 -0.69135 0.0015533 0.722492 0 -0.758423 -0.0462899 0.650125 0 -0.797198 0.00365093 0.603724 0 -0.827701 -0.0487508 0.559045 0 -0.714679 -0.138467 0.685594 0 -0.755227 -0.208897 0.621282 0 -0.694962 -0.211893 0.687131 0 -0.943279 -0.0795726 0.322308 0 -0.951788 7.378e-05 0.30669 0 -0.932016 -0.150489 0.329651 0 -0.895624 -0.252135 0.366442 0 -0.908302 -0.080191 0.410573 0 -0.867478 -0.0686593 0.492713 0 -0.879881 -0.000186698 0.475201 0 -0.803616 -0.482762 0.347954 0 -0.785845 -0.454049 0.419791 0 -0.841181 -0.423698 0.336019 0 -0.86383 -0.346456 0.365748 0 -0.885823 -0.367507 0.283244 0 -0.863987 -0.378834 0.32807 0 -0.820805 -0.499866 0.276426 0 -0.832345 -0.515937 0.202393 0 -0.969963 -0.155066 0.187399 0 -0.96538 -0.0951006 0.242937 0 -0.964223 -0.227268 0.13651 0 -0.950318 -0.299248 0.0857058 0 -0.95086 -0.198196 0.237812 0 -0.920841 -0.29232 0.25808 0 -0.927818 -0.223459 0.298732 0 -0.851248 -0.52147 -0.0586322 0 -0.842178 -0.538954 0.0154448 0 -0.831063 -0.541677 0.126173 0 -0.890415 -0.454098 -0.0310994 0 -0.931438 -0.362747 0.0288733 0 -0.712271 -0.61141 0.34464 0 -0.757089 -0.546946 0.357218 0 -0.738782 -0.613692 0.278566 0 -0.789178 -0.573779 0.219048 0 -0.739235 -0.644457 0.195391 0 -0.755784 -0.610923 0.23067 0 -0.669287 -0.669483 0.322252 0 -0.620927 -0.724384 0.299449 0 -0.760825 -0.646772 -0.0531409 0 -0.807083 -0.584991 -0.0801549 0 -0.708627 -0.705483 -0.0123812 0 -0.650876 -0.758584 0.0301679 0 -0.778572 -0.627439 0.0108632 0 -0.758264 -0.642834 0.108656 0 -0.804994 -0.589725 0.0650321 0 -0.44362 -0.877476 0.182289 0 -0.488418 -0.840996 0.232697 0 -0.560759 -0.776444 0.287547 0 -0.500888 -0.856254 0.126302 0 -0.586762 -0.807221 0.0640356 0 -0.627054 -0.615111 0.477883 0 -0.656456 -0.550712 0.51548 0 -0.677002 -0.606856 0.416331 0 -0.596985 -0.669005 0.442783 0 -0.59454 -0.714872 0.368085 0 -0.532523 -0.728259 0.43131 0 -0.57441 -0.704392 0.414151 0 -0.572883 -0.626233 0.528807 0 -0.51517 -0.632395 0.578472 0 -0.548545 -0.573569 0.608378 0 -0.366652 -0.874928 0.316322 0 -0.387819 -0.890211 0.239047 0 -0.351741 -0.846911 0.398789 0 -0.335272 -0.811346 0.478864 0 -0.428069 -0.843847 0.323498 0 -0.482822 -0.786131 0.385858 0 -0.49118 -0.814688 0.308296 0 -0.287709 -0.648616 0.704636 0 -0.288292 -0.586842 0.756655 0 -0.359654 -0.635203 0.683477 0 -0.419534 -0.584229 0.694757 0 -0.457997 -0.623363 0.633763 0 -0.288895 -0.706496 0.646077 0 -0.309128 -0.77365 0.553084 0 0.147343 -0.863209 0.482793 0 0.210049 -0.829488 0.517463 0 0.108194 -0.837702 0.535316 0 0.106002 -0.787759 0.6068 0 0.028963 -0.818794 0.573331 0 0.0807278 -0.814765 0.57208 0 0.0829561 -0.887637 0.453011 0 0.0193518 -0.908385 0.417623 0 -0.151563 -0.691952 0.705849 0 -0.113211 -0.642477 0.75791 0 -0.215115 -0.657033 0.722492 0 -0.190341 -0.735608 0.650125 0 -0.24982 -0.757052 0.603724 0 -0.209409 -0.802256 0.559045 0 -0.0891576 -0.722489 0.685595 0 -0.034705 -0.782816 0.621282 0 -0.0132332 -0.726426 0.687131 0 -0.215811 -0.921701 0.322308 0 -0.294189 -0.905181 0.30669 0 -0.144885 -0.932903 0.329651 0 -0.036968 -0.929703 0.366442 0 -0.204415 -0.888627 0.410573 0 -0.202766 -0.846237 0.492713 0 -0.271721 -0.836874 0.475201 0 0.210803 -0.913465 0.347954 0 0.188987 -0.887692 0.419791 0 0.143021 -0.930941 0.336019 0 0.0625613 -0.928612 0.365748 0 0.0757854 -0.956034 0.283244 0 0.0933063 -0.938766 0.32807 0 0.221758 -0.9351 0.276426 0 0.233477 -0.95104 0.202393 0 -0.152258 -0.970408 0.187399 0 -0.207873 -0.947519 0.242937 0 -0.0818168 -0.98726 0.13651 0 -0.00906227 -0.996279 0.0857058 0 -0.105336 -0.965568 0.237812 0 -0.00654298 -0.966104 0.25808 0 -0.0741899 -0.95146 0.298732 0 0.232897 -0.970728 -0.0586322 0 0.252328 -0.967505 0.0154448 0 0.258353 -0.957775 0.126173 0 0.15672 -0.987159 -0.0310994 0 0.0571628 -0.997945 0.0288733 0 0.361381 -0.866346 0.34464 0 0.286223 -0.88905 0.357218 0 0.355359 -0.892264 0.278566 0 0.301827 -0.927861 0.219048 0 0.384479 -0.902202 0.195391 0 0.347472 -0.907578 0.23067 0 0.429895 -0.843412 0.322252 0 0.497053 -0.814384 0.299449 0 0.380009 -0.923451 -0.0531409 0 0.306957 -0.948354 -0.0801549 0 0.451977 -0.89195 -0.0123812 0 0.520325 -0.853436 0.0301679 0 0.356138 -0.934355 0.0108632 0 0.377055 -0.919799 0.108656 0 0.312105 -0.94783 0.0650321 0 0.697443 -0.693063 0.182289 0 0.648905 -0.724395 0.232697 0 0.565158 -0.773248 0.287547 0 0.659563 -0.74097 0.126302 0 0.586393 -0.807489 0.0640355 0 0.391234 -0.786444 0.477883 0 0.320902 -0.794506 0.51548 0 0.367949 -0.831396 0.416331 0 0.451783 -0.7745 0.442783 0 0.496161 -0.786349 0.368085 0 0.528057 -0.731504 0.43131 0 0.492414 -0.763965 0.414151 0 0.418552 -0.73836 0.528809 0 0.442247 -0.685371 0.578478 0 0.375986 -0.698938 0.60838 0 0.718804 -0.619074 0.316322 0 0.726798 -0.643928 0.239047 0 0.696767 -0.596234 0.39879 0 0.668032 -0.569577 0.478869 0 0.670265 -0.66788 0.323499 0 0.598455 -0.702119 0.38586 0 0.623031 -0.718892 0.308296 0 0.527991 -0.473706 0.704854 0 0.469048 -0.45478 0.757094 0 0.492922 -0.538292 0.683553 0 0.425967 -0.579458 0.694838 0 0.45132 -0.628186 0.633791 0 0.58272 -0.49289 0.646149 0 0.640271 -0.533045 0.553093 0 0.86653 -0.126695 0.482705 0 0.853909 -0.0567902 0.517254 0 0.830294 -0.156176 0.535007 0 0.78278 -0.143983 0.605418 0 0.787782 -0.225571 0.57314 0 0.800138 -0.175464 0.571508 0 0.869842 -0.195437 0.452967 0 0.869903 -0.26233 0.417612 0 0.612183 -0.357087 0.705487 0 0.578682 -0.303559 0.756968 0 0.558749 -0.406704 0.72274 0 0.641216 -0.408046 0.649886 0 0.64291 -0.471425 0.603693 0 0.698338 -0.447074 0.558969 0 0.660717 -0.308709 0.684202 0 0.734864 -0.27588 0.619565 0 0.690119 -0.239254 0.683018 0 0.809901 -0.49007 0.322308 0 0.769969 -0.559506 0.306689 0 0.842472 -0.426079 0.329649 0 0.872776 -0.322466 0.366432 0 0.781971 -0.469016 0.410559 0 0.742177 -0.454365 0.492669 0 0.711954 -0.51703 0.475192 0 0.933902 -0.0818012 0.347946 0 0.902659 -0.0946161 0.419754 0 0.929574 -0.151661 0.336014 0 0.902495 -0.227466 0.365743 0 0.932661 -0.223355 0.283244 0 0.921653 -0.201358 0.328068 0 0.95786 -0.0780606 0.276423 0 0.976641 -0.0718385 0.202393 0 0.875862 -0.444679 0.187399 0 0.836908 -0.490498 0.242937 0 0.913658 -0.382893 0.13651 0 0.944717 -0.316486 0.0857058 0 0.885759 -0.398558 0.237811 0 0.916797 -0.304766 0.258079 0 0.881966 -0.364579 0.298729 0 0.995186 -0.078473 -0.0586322 0 0.998126 -0.0589969 0.015445 0 0.990734 -0.0502609 0.126173 0 0.987274 -0.156 -0.0310994 0 0.966767 -0.254017 0.0288733 0 0.935614 0.0759611 0.344653 0 0.933989 -0.00254736 0.357205 0 0.958401 0.0622371 0.278586 0 0.975717 0.000328091 0.219049 0 0.976855 0.0868654 0.195395 0 0.970532 0.0500069 0.230676 0 0.934912 0.148208 0.322448 0 0.927918 0.221164 0.300009 0 0.995683 0.0760483 -0.05314 0 0.996793 -0.00112396 -0.0801547 0 0.987963 0.154231 -0.0123706 0 0.97245 0.231144 0.0302067 0 0.998677 0.0499766 0.0108676 0 0.991296 0.0743687 0.108666 0 0.997886 0.00393461 0.0650347 0 0.874168 0.449819 0.182991 0 0.888597 0.394091 0.234648 0 0.909127 0.299281 0.289687 0 0.908352 0.398618 0.126538 0 0.949135 0.308244 0.0642128 0 0.868805 0.128496 0.478117 0 0.854836 0.0592524 0.515444 0 0.904385 0.0928441 0.416419 0 0.876038 0.189426 0.443495 0 0.900636 0.228889 0.36942 0 0.858269 0.276809 0.432114 0 0.878359 0.232146 0.415001 0 0.831403 0.167615 0.529788 0 0.788229 0.203023 0.580882 0 0.780672 0.138612 0.60938 0 0.80654 0.500226 0.315053 0 0.835302 0.494855 0.239608 0 0.772033 0.56261 0.295629 0 0.772172 0.503438 0.387699 0 0.723497 0.529267 0.443225 0 0.733166 0.470516 0.490998 0 0.835276 0.437934 0.332427 0 0.845485 0.356565 0.39751 0 0.872941 0.373205 0.314184 0 0.621699 0.351914 0.699741 0 0.56637 0.410827 0.714426 0 0.578263 0.304363 0.756966 0 0.665522 0.292841 0.686508 0 0.680635 0.215484 0.70023 0 0.736842 0.222209 0.638499 0 0.673241 0.388969 0.628858 0 0.711075 0.430755 0.555716 0 0.662538 0.480533 0.574576 0 -0.388297 0.78464 -0.483213 0 -0.317631 0.794432 -0.517617 0 -0.404865 0.740643 -0.536235 0 -0.376301 0.699238 -0.607841 0 -0.456771 0.679763 -0.573806 0 -0.412982 0.706377 -0.572814 0 -0.455271 0.765577 -0.454554 0 -0.520261 0.742952 -0.421073 0 -0.525021 0.477601 -0.704445 0 -0.467286 0.454854 -0.758138 0 -0.576677 0.508562 -0.639391 0 -0.623253 0.536827 -0.568659 0 -0.486256 0.534008 -0.691637 0 -0.476588 0.613538 -0.629636 0 -0.431691 0.579829 -0.690986 0 -0.723002 0.615238 -0.314234 0 -0.667775 0.666763 -0.330872 0 -0.581114 0.724348 -0.37098 0 -0.710346 0.585179 -0.391135 0 -0.668967 0.553562 -0.496033 0 -0.365867 0.863027 -0.348215 0 -0.36881 0.82914 -0.420052 0 -0.430435 0.837569 -0.336478 0 -0.495459 0.787607 -0.366335 0 -0.499863 0.818782 -0.282318 0 -0.475642 0.814672 -0.328193 0 -0.367878 0.88762 -0.277121 0 -0.364276 0.908576 -0.204303 0 -0.699137 0.692023 -0.179731 0 -0.728281 0.642967 -0.237112 0 -0.74214 0.657358 -0.130655 0 -0.666428 0.735748 -0.120664 0 -0.651288 0.757387 -0.0470183 0 -0.592425 0.803118 -0.0634949 0 -0.654205 0.721907 -0.225492 0 -0.571579 0.782628 -0.246552 0 -0.621032 0.726183 -0.294952 0 -0.383414 0.922269 0.0490425 0 -0.405335 0.905253 0.127196 0 -0.35594 0.934255 -0.0210268 0 -0.341771 0.930582 -0.131163 0 -0.458074 0.888921 -0.000707395 0 -0.530865 0.84655 -0.0391559 0 -0.546313 0.837029 0.0305256 0 -0.21658 0.913164 -0.345185 0 -0.29063 0.887506 -0.357498 0 -0.236044 0.930624 -0.279703 0 -0.297872 0.928917 -0.21998 0 -0.217917 0.956251 -0.195108 0 -0.250692 0.938789 -0.231221 0 -0.147417 0.934352 -0.32443 0 -0.07575 0.949336 -0.304911 0 -0.232101 0.97078 0.0608806 0 -0.307672 0.948143 0.0799002 0 -0.213499 0.967826 0.133014 0 -0.155725 0.986947 0.0411914 0 -0.0786776 0.995552 0.0520327 0 -0.060021 0.997955 -0.0219418 0 -0.247086 0.968946 -0.00849674 0 -0.219613 0.969454 -0.109195 0 -0.292863 0.953787 -0.0673956 0 0.146788 0.971849 -0.184263 0 0.203766 0.970876 -0.125849 0 0.099157 0.966128 -0.238192 0 0.00283148 0.954501 -0.298185 0 0.0669554 0.988483 -0.135762 0 -0.00466162 0.996915 -0.078342 0 0.0495046 0.998294 -0.0310657 0 -0.145648 0.866148 -0.478021 0 -0.20735 0.831366 -0.515534 0 -0.190866 0.888766 -0.416658 0 -0.0894461 0.892009 -0.443095 0 -0.0604288 0.927028 -0.370101 0 -0.00198093 0.902419 -0.430822 0 -0.0500512 0.907331 -0.414559 0 -0.0953249 0.843359 -0.528828 0 -0.0450488 0.814422 -0.578481 0 -0.106639 0.786451 -0.608383 0 0.216652 0.923623 -0.316188 0 0.205942 0.948922 -0.239076 0 0.212935 0.891995 -0.398767 0 0.205591 0.853482 -0.478854 0 0.148952 0.933878 -0.32505 0 0.0713798 0.918993 -0.387765 0 0.0812901 0.946299 -0.312939 0 0.148716 0.693582 -0.704854 0 0.112155 0.643624 -0.757094 0 0.0823834 0.725217 -0.683556 0 0.00402131 0.719167 -0.694841 0 -0.00410781 0.77349 -0.633794 0 0.181717 0.74127 -0.64615 0 0.204658 0.807598 -0.55308 0 -0.866227 -0.126829 -0.483213 0 -0.8537 -0.0566122 -0.517618 0 -0.829503 -0.156183 -0.536234 0 -0.781299 -0.141817 -0.607838 0 -0.787643 -0.224357 -0.573806 0 -0.799423 -0.17449 -0.572813 0 -0.868793 -0.196413 -0.454554 0 -0.867359 -0.265213 -0.421073 0 -0.616466 -0.351738 -0.704445 0 -0.576991 -0.303858 -0.758138 0 -0.661875 -0.391298 -0.639391 0 -0.703149 -0.42686 -0.568659 0 -0.658133 -0.297441 -0.691637 0 -0.730783 -0.26367 -0.629635 0 -0.684851 -0.23139 -0.690983 0 -0.808546 -0.497497 -0.314234 0 -0.840483 -0.429051 -0.330872 0 -0.86847 -0.328836 -0.37098 0 -0.776047 -0.494749 -0.391135 0 -0.733191 -0.465165 -0.496033 0 -0.933847 -0.0812723 -0.348215 0 -0.902526 -0.0945477 -0.420053 0 -0.929587 -0.150545 -0.336478 0 -0.902164 -0.227826 -0.366335 0 -0.933175 -0.22238 -0.282318 0 -0.921781 -0.200615 -0.328193 0 -0.957857 -0.0755837 -0.277122 0 -0.976674 -0.0656814 -0.204303 0 -0.874198 -0.451072 -0.179731 0 -0.836549 -0.493949 -0.237112 0 -0.854519 -0.502682 -0.130655 0 -0.905675 -0.406452 -0.120664 0 -0.921576 -0.385366 -0.0470183 0 -0.94688 -0.315253 -0.0634949 0 -0.888735 -0.399104 -0.225492 0 -0.920951 -0.301759 -0.246552 0 -0.88255 -0.366234 -0.294952 0 -0.995611 -0.0796512 0.0490425 0 -0.986202 -0.105758 0.127196 0 -0.99852 -0.0498181 -0.0210269 0 -0.990649 -0.0374778 -0.131163 0 -0.986967 -0.160962 -0.000707397 0 -0.969163 -0.243284 -0.0391559 0 -0.964882 -0.260918 0.0305256 0 -0.935391 0.0761922 -0.345205 0 -0.933876 -0.00216074 -0.357505 0 -0.95801 0.0630821 -0.27973 0 -0.9755 0.00375795 -0.219982 0 -0.976789 0.0882467 -0.195109 0 -0.970308 0.0516777 -0.231228 0 -0.934109 0.148493 -0.32464 0 -0.926063 0.221374 -0.305529 0 -0.99499 0.0792462 0.06088 0 -0.996814 0.00037892 0.0799 0 -0.986432 0.0960248 0.133014 0 -0.986764 0.156882 0.0411886 0 -0.971138 0.23282 0.0520307 0 -0.967657 0.251307 -0.0219477 0 -0.997876 0.0644295 -0.00849958 0 -0.98987 0.0907145 -0.109201 0 -0.997604 0.0162079 -0.0673972 0 -0.878593 0.440092 -0.18543 0 -0.860213 0.49413 -0.125808 0 -0.887615 0.391154 -0.243115 0 -0.905937 0.298164 -0.300616 0 -0.919323 0.36922 -0.136146 0 -0.949545 0.303669 -0.0784061 0 -0.934117 0.355622 -0.0310824 0 -0.868708 0.128578 -0.478271 0 -0.854715 0.0594602 -0.51562 0 -0.904213 0.0929562 -0.41677 0 -0.875832 0.18949 -0.443873 0 -0.899801 0.229057 -0.371346 0 -0.85817 0.276785 -0.432326 0 -0.877999 0.23219 -0.415732 0 -0.831353 0.167871 -0.529785 0 -0.788299 0.203698 -0.580551 0 -0.780793 0.139678 -0.608982 0 -0.807257 0.49912 -0.314972 0 -0.837318 0.491222 -0.240045 0 -0.773043 0.56178 -0.294568 0 -0.772472 0.503034 -0.387626 0 -0.723621 0.529266 -0.443025 0 -0.733169 0.470521 -0.49099 0 -0.835072 0.436895 -0.334302 0 -0.844706 0.356114 -0.399563 0 -0.871529 0.37186 -0.31965 0 -0.622268 0.352864 -0.698756 0 -0.566679 0.410543 -0.714344 0 -0.580673 0.304741 -0.754965 0 -0.664492 0.29983 -0.684489 0 -0.68325 0.222162 -0.695582 0 -0.737581 0.224883 -0.636707 0 -0.673383 0.38943 -0.628421 0 -0.711084 0.430898 -0.555594 0 -0.66257 0.480574 -0.574505 0 -0.147057 -0.863023 -0.483213 0 -0.209966 -0.829411 -0.517618 0 -0.107791 -0.837168 -0.536234 0 -0.106558 -0.786883 -0.607838 0 -0.0300187 -0.818423 -0.573806 0 -0.0810856 -0.814217 -0.572813 0 -0.0816717 -0.886967 -0.454554 0 -0.0157956 -0.906863 -0.421073 0 0.144024 -0.694987 -0.704445 0 0.110686 -0.642649 -0.758138 0 0.167616 -0.750398 -0.639391 0 0.188683 -0.800641 -0.568659 0 0.0795085 -0.717836 -0.691637 0 0.0249405 -0.776495 -0.629635 0 0.00843468 -0.722836 -0.690983 0 0.223293 -0.922708 -0.314234 0 0.148328 -0.931931 -0.330872 0 0.04437 -0.92758 -0.37098 0 0.230722 -0.890951 -0.391135 0 0.21583 -0.84105 -0.496033 0 -0.21128 -0.913255 -0.348215 0 -0.188976 -0.88757 -0.420053 0 -0.144081 -0.930611 -0.336478 0 -0.0621087 -0.928412 -0.366335 0 -0.0768706 -0.956221 -0.282318 0 -0.0940501 -0.938659 -0.328193 0 -0.22411 -0.934333 -0.277122 0 -0.239342 -0.949169 -0.204303 0 0.158853 -0.970801 -0.179731 0 0.211266 -0.948244 -0.237112 0 0.214018 -0.968033 -0.130655 0 0.10669 -0.986949 -0.120664 0 0.081722 -0.995556 -0.0470183 0 0.00722113 -0.997955 -0.0634949 0 0.104936 -0.968567 -0.225492 0 0.0024002 -0.969125 -0.246552 0 0.0755859 -0.952528 -0.294952 0 -0.231908 -0.971496 0.0490425 0 -0.204172 -0.970615 0.127196 0 -0.26118 -0.965044 -0.0210269 0 -0.270484 -0.953745 -0.131163 0 -0.151906 -0.988402 -0.00070739 0 -0.0681112 -0.996908 -0.0391559 0 -0.0500171 -0.998285 0.0305256 0 -0.361515 -0.866065 -0.345205 0 -0.286528 -0.888836 -0.357505 0 -0.356036 -0.891628 -0.27973 0 -0.30502 -0.926594 -0.219982 0 -0.385772 -0.901712 -0.195109 0 -0.34899 -0.906849 -0.231228 0 -0.42988 -0.842503 -0.32464 0 -0.496709 -0.81233 -0.305529 0 -0.382836 -0.921803 0.06088 0 -0.308393 -0.947909 0.0799 0 -0.396149 -0.90848 0.133014 0 -0.45413 -0.889989 0.0411886 0 -0.521523 -0.851662 0.0520308 0 -0.53803 -0.842638 -0.0219477 0 -0.369637 -0.929127 -0.00849958 0 -0.392161 -0.91339 -0.109201 0 -0.323691 -0.94377 -0.0673972 0 -0.690053 -0.699595 -0.18543 0 -0.735766 -0.665416 -0.125808 0 -0.646298 -0.723299 -0.243115 0 -0.563521 -0.76946 -0.300616 0 -0.635235 -0.760233 -0.136146 0 -0.582232 -0.809232 -0.0784061 0 -0.626874 -0.778504 -0.0310824 0 -0.390731 -0.786458 -0.478271 0 -0.320672 -0.794508 -0.51562 0 -0.367824 -0.831232 -0.41677 0 -0.450863 -0.77441 -0.443873 0 -0.4959 -0.784979 -0.371346 0 -0.528427 -0.730637 -0.432326 0 -0.492143 -0.763276 -0.415732 0 -0.416557 -0.738789 -0.529785 0 -0.437326 -0.686771 -0.580551 0 -0.37412 -0.699415 -0.608982 0 -0.724147 -0.613511 -0.314972 0 -0.725926 -0.64454 -0.240045 0 -0.773168 -0.561608 -0.294568 0 -0.717121 -0.579219 -0.387626 0 -0.726973 -0.524652 -0.443025 0 -0.674053 -0.551886 -0.49099 0 -0.673563 -0.659192 -0.334302 0 -0.599713 -0.693317 -0.399563 0 -0.622978 -0.713962 -0.31965 0 -0.527885 -0.482771 -0.698756 0 -0.565563 -0.412078 -0.714344 0 -0.469264 -0.458083 -0.754965 0 -0.490495 -0.539317 -0.684489 0 -0.422425 -0.581158 -0.695582 0 -0.441801 -0.631989 -0.636707 0 -0.578457 -0.520085 -0.628421 0 -0.629545 -0.543126 -0.555594 0 -0.661798 -0.481636 -0.574505 0 0.77534 -0.406548 -0.483213 0 0.723934 -0.455992 -0.517618 0 0.762884 -0.361214 -0.536234 0 0.715441 -0.344502 -0.60784 0 0.76909 -0.281456 -0.573807 0 0.749309 -0.328723 -0.572814 0 0.818317 -0.351762 -0.454554 0 0.857596 -0.295258 -0.421073 0 0.705424 -0.0778977 -0.704487 0 0.645436 -0.0937125 -0.758058 0 0.765427 -0.0725051 -0.639435 0 0.819745 -0.0679689 -0.568681 0 0.707229 -0.146234 -0.691674 0 0.746184 -0.216226 -0.629653 0 0.690037 -0.215339 -0.691013 0 0.946548 -0.0727678 -0.314234 0 0.932154 -0.146914 -0.330873 0 0.895892 -0.244439 -0.370981 0 0.91864 -0.0558881 -0.391137 0 0.866575 -0.0546335 -0.496044 0 0.803268 -0.483151 -0.348215 0 0.785733 -0.454001 -0.420054 0 0.84054 -0.424604 -0.336478 0 0.863779 -0.345964 -0.366335 0 0.885666 -0.368597 -0.282318 0 0.863655 -0.379509 -0.328193 0 0.81935 -0.501866 -0.277122 0 0.828753 -0.520937 -0.204303 0 0.972374 -0.148916 -0.179731 0 0.967118 -0.0920978 -0.237112 0 0.986789 -0.0955952 -0.130655 0 0.971613 -0.203516 -0.120664 0 0.972084 -0.229921 -0.0470183 0 0.951343 -0.301517 -0.0634949 0 0.953589 -0.199503 -0.225492 0 0.922435 -0.297193 -0.246553 0 0.929265 -0.222461 -0.294953 0 0.852284 -0.520766 0.0490425 0 0.860017 -0.494115 0.127196 0 0.837102 -0.546612 -0.0210269 0 0.823481 -0.551969 -0.131163 0 0.893084 -0.449904 -0.000707404 0 0.927068 -0.372839 -0.0391559 0 0.933969 -0.356056 0.0305256 0 0.711962 -0.61145 -0.345205 0 0.756791 -0.54717 -0.357505 0 0.737968 -0.614139 -0.27973 0 0.786987 -0.576425 -0.219982 0 0.738369 -0.645535 -0.195109 0 0.75462 -0.612141 -0.231228 0 0.668428 -0.669188 -0.32464 0 0.61908 -0.723422 -0.305529 0 0.758384 -0.648952 0.06088 0 0.806217 -0.586219 0.0799 0 0.741599 -0.657496 0.133014 0 0.706096 -0.706925 0.0411886 0 0.648819 -0.759175 0.0520307 0 0.635136 -0.772086 -0.0219477 0 0.769428 -0.638661 -0.00849958 0 0.747501 -0.65522 -0.109201 0 0.797552 -0.59949 -0.0673972 0 0.452116 -0.872466 -0.18543 0 0.405484 -0.90538 -0.125808 0 0.488181 -0.838178 -0.243115 0 0.557662 -0.773716 -0.300616 0 0.526726 -0.83907 -0.136146 0 0.589706 -0.803802 -0.0784061 0 0.546687 -0.836764 -0.0310824 0 0.627223 -0.614636 -0.478271 0 0.656529 -0.550493 -0.51562 0 0.676885 -0.606686 -0.41677 0 0.597183 -0.668102 -0.443873 0 0.593317 -0.714201 -0.371346 0 0.531584 -0.728344 -0.432326 0 0.573838 -0.703921 -0.415732 0 0.573907 -0.624468 -0.529785 0 0.518017 -0.628146 -0.580551 0 0.549574 -0.57194 -0.608982 0 0.35971 -0.87829 -0.314972 0 0.388671 -0.88957 -0.240045 0 0.295199 -0.908873 -0.294568 0 0.329267 -0.861011 -0.387626 0 0.274326 -0.853519 -0.443025 0 0.316581 -0.811605 -0.49099 0 0.418787 -0.844299 -0.334302 0 0.474063 -0.784608 -0.399563 0 0.486508 -0.813113 -0.31965 0 0.296017 -0.651233 -0.698756 0 0.217141 -0.665222 -0.714344 0 0.290652 -0.587852 -0.754965 0 0.36135 -0.633146 -0.684489 0 0.422177 -0.581337 -0.695582 0 0.464533 -0.615473 -0.636707 0 0.315877 -0.71086 -0.628421 0 0.322004 -0.766568 -0.555594 0 0.253556 -0.778241 -0.574505 0 0.626586 0.61182 -0.482696 0 0.657452 0.547855 -0.517253 0 0.579947 0.614376 -0.534991 0 0.548652 0.576591 -0.605417 0 0.504742 0.645537 -0.573139 0 0.544196 0.612262 -0.571504 0 0.589014 0.669327 -0.452841 0 0.550028 0.723474 -0.417134 0 0.285377 0.648722 -0.705486 0 0.289737 0.585725 -0.756968 0 0.212983 0.657456 -0.72274 0 0.278914 0.707019 -0.649879 0 0.243027 0.759293 -0.603683 0 0.30219 0.772182 -0.558939 0 0.353079 0.638112 -0.684199 0 0.432364 0.655137 -0.619558 0 0.417689 0.599203 -0.683016 0 0.367889 0.872701 -0.321 0 0.293402 0.905785 -0.305657 0 0.435573 0.838343 -0.327757 0 0.518215 0.773767 -0.364324 0 0.357178 0.839216 -0.410065 0 0.333404 0.803904 -0.492521 0 0.272035 0.836856 -0.475053 0 0.707799 0.614629 -0.34811 0 0.674776 0.606966 -0.41977 0 0.663835 0.66806 -0.336202 0 0.597337 0.714239 -0.36477 0 0.624405 0.728336 -0.282165 0 0.628342 0.703909 -0.327614 0 0.730525 0.624149 -0.277076 0 0.75154 0.627215 -0.204293 0 0.442582 0.878396 -0.180371 0 0.388172 0.889947 -0.239457 0 0.395379 0.909039 -0.131474 0 0.493967 0.861045 -0.120863 0 0.519058 0.853453 -0.0470988 0 0.580751 0.8116 -0.0634945 0 0.486285 0.844377 -0.224798 0 0.569387 0.784629 -0.245259 0 0.503424 0.813188 -0.292076 0 0.758467 0.649889 0.0486013 0 0.735514 0.665599 0.126312 0 0.778514 0.627239 -0.0213189 0 0.779406 0.612622 -0.131206 0 0.70376 0.710447 -0.000903493 0 0.641033 0.766511 -0.0391954 0 0.627203 0.778266 0.030426 0 0.801537 0.488173 -0.345187 0 0.754275 0.550676 -0.357439 0 0.812128 0.512071 -0.27972 0 0.791403 0.570348 -0.219979 0 0.842108 0.50275 -0.195109 0 0.815371 0.528527 -0.231225 0 0.842992 0.428926 -0.324633 0 0.879321 0.365232 -0.305528 0 0.851337 0.521099 0.0605989 0 0.806409 0.586065 0.0790791 0 0.854213 0.502725 0.132481 0 0.890419 0.453299 0.0410576 0 0.92245 0.382612 0.0521165 0 0.930558 0.365484 -0.0219365 0 0.845056 0.534589 -0.00866481 0 0.854115 0.508479 -0.109236 0 0.816557 0.57332 -0.0675143 0 0.969476 0.160382 -0.18543 0 0.986369 0.105861 -0.125808 0 0.94801 0.205278 -0.243115 0 0.908174 0.29128 -0.300617 0 0.960769 0.241662 -0.136144 0 0.946687 0.312465 -0.0784007 0 0.964744 0.261364 -0.031065 0 0.778365 0.406664 -0.478228 0 0.726402 0.454494 -0.515474 0 0.786169 0.456316 -0.416716 0 0.819923 0.361544 -0.443873 0 0.862589 0.343583 -0.371344 0 0.856963 0.280498 -0.432328 0 0.84679 0.328241 -0.415732 0 0.771117 0.353061 -0.529838 0 0.757016 0.299045 -0.580901 0 0.713049 0.346724 -0.609385 0 0.946459 0.0707 -0.314974 0 0.966137 0.0947563 -0.240045 0 0.955611 -0.000105984 -0.294569 0 0.920614 0.0470944 -0.387637 0 0.896512 -0.00284881 -0.443033 0 0.8697 0.0502961 -0.491008 0 0.932383 0.137398 -0.334312 0 0.892687 0.208424 -0.399582 0 0.923653 0.211437 -0.319656 0 0.709815 0.0807207 -0.699741 0 0.699681 0.000537471 -0.714426 0 0.646724 0.0936593 -0.756966 0 0.710543 0.15427 -0.686511 0 0.677301 0.225736 -0.700233 0 0.726722 0.253328 -0.638509 0 0.773289 0.0810355 -0.628864 0 0.82845 0.0694624 -0.555737 0 0.818461 0.000659717 -0.574567 0 Quadrilaterals 1980 124 485 483 484 0 485 125 665 483 0 484 483 673 123 0 483 665 33 673 0 127 488 486 487 0 488 128 681 486 0 487 486 689 126 0 486 681 36 689 0 130 491 489 490 0 491 131 697 489 0 490 489 705 129 0 489 697 39 705 0 133 494 492 493 0 494 134 713 492 0 493 492 721 132 0 492 713 42 721 0 136 497 495 496 0 497 137 729 495 0 496 495 737 135 0 495 729 45 737 0 139 500 498 499 0 500 140 745 498 0 499 498 753 138 0 498 745 48 753 0 142 503 501 502 0 503 143 761 501 0 502 501 771 141 0 501 761 51 771 0 145 506 504 505 0 506 146 781 504 0 505 504 789 144 0 504 781 53 789 0 148 509 507 508 0 509 149 797 507 0 508 507 805 147 0 507 797 56 805 0 151 512 510 511 0 512 152 813 510 0 511 510 821 150 0 510 813 59 821 0 154 515 513 514 0 515 155 829 513 0 514 513 837 153 0 513 829 62 837 0 157 518 516 517 0 518 158 845 516 0 517 516 855 156 0 516 845 65 855 0 160 521 519 520 0 521 161 867 519 0 520 519 878 159 0 519 867 35 878 0 163 524 522 523 0 524 164 891 522 0 523 522 902 162 0 522 891 67 902 0 166 527 525 526 0 527 167 915 525 0 526 525 926 165 0 525 915 68 926 0 169 530 528 529 0 530 170 940 528 0 529 528 952 168 0 528 940 69 952 0 172 533 531 532 0 533 173 967 531 0 532 531 978 171 0 531 967 38 978 0 175 536 534 535 0 536 176 991 534 0 535 534 1002 174 0 534 991 70 1002 0 178 539 537 538 0 539 179 1015 537 0 538 537 1026 177 0 537 1015 71 1026 0 181 542 540 541 0 542 182 1040 540 0 541 540 1052 180 0 540 1040 72 1052 0 184 545 543 544 0 545 185 1067 543 0 544 543 1076 183 0 543 1067 41 1076 0 187 548 546 547 0 548 188 1087 546 0 547 546 1096 186 0 546 1087 74 1096 0 190 551 549 550 0 551 191 1107 549 0 550 549 1116 189 0 549 1107 76 1116 0 193 554 552 553 0 554 194 1128 552 0 553 552 1138 192 0 552 1128 78 1138 0 196 557 555 556 0 557 197 1151 555 0 556 555 1162 195 0 555 1151 44 1162 0 199 560 558 559 0 560 200 1175 558 0 559 558 1184 198 0 558 1175 80 1184 0 202 563 561 562 0 563 203 1195 561 0 562 561 1204 201 0 561 1195 82 1204 0 205 566 564 565 0 566 206 1216 564 0 565 564 1226 204 0 564 1216 84 1226 0 208 569 567 568 0 569 209 1239 567 0 568 567 1250 207 0 567 1239 47 1250 0 211 572 570 571 0 572 212 1263 570 0 571 570 1272 210 0 570 1263 86 1272 0 214 575 573 574 0 575 215 1283 573 0 574 573 1292 213 0 573 1283 88 1292 0 217 578 576 577 0 578 218 1304 576 0 577 576 1314 216 0 576 1304 90 1314 0 220 581 579 580 0 581 221 1327 579 0 580 579 1338 219 0 579 1327 50 1338 0 223 584 582 583 0 584 224 1351 582 0 583 582 1360 222 0 582 1351 92 1360 0 226 587 585 586 0 587 227 1371 585 0 586 585 1380 225 0 585 1371 94 1380 0 229 590 588 589 0 590 230 1392 588 0 589 588 1402 228 0 588 1392 96 1402 0 232 593 591 592 0 593 233 1415 591 0 592 591 1426 231 0 591 1415 52 1426 0 235 596 594 595 0 596 236 1439 594 0 595 594 1448 234 0 594 1439 98 1448 0 238 599 597 598 0 599 239 1459 597 0 598 597 1468 237 0 597 1459 100 1468 0 241 602 600 601 0 602 242 1480 600 0 601 600 1492 240 0 600 1480 102 1492 0 244 605 603 604 0 605 245 1507 603 0 604 603 1516 243 0 603 1507 55 1516 0 247 608 606 607 0 608 248 1527 606 0 607 606 1538 246 0 606 1527 104 1538 0 250 611 609 610 0 611 251 1551 609 0 610 609 1562 249 0 609 1551 105 1562 0 253 614 612 613 0 614 254 1576 612 0 613 612 1586 252 0 612 1576 106 1586 0 256 617 615 616 0 617 257 1599 615 0 616 615 1608 255 0 615 1599 58 1608 0 259 620 618 619 0 620 260 1619 618 0 619 618 1630 258 0 618 1619 109 1630 0 262 623 621 622 0 623 263 1643 621 0 622 621 1654 261 0 621 1643 110 1654 0 265 626 624 625 0 626 266 1668 624 0 625 624 1680 264 0 624 1668 111 1680 0 268 629 627 628 0 629 269 1695 627 0 628 627 1704 267 0 627 1695 61 1704 0 271 632 630 631 0 632 272 1715 630 0 631 630 1726 270 0 630 1715 113 1726 0 274 635 633 634 0 635 275 1739 633 0 634 633 1750 273 0 633 1739 114 1750 0 277 638 636 637 0 638 278 1764 636 0 637 636 1776 276 0 636 1764 115 1776 0 280 641 639 640 0 641 281 1791 639 0 640 639 1800 279 0 639 1791 64 1800 0 283 644 642 643 0 644 284 1811 642 0 643 642 1822 282 0 642 1811 117 1822 0 286 647 645 646 0 647 287 1835 645 0 646 645 1846 285 0 645 1835 118 1846 0 289 650 648 649 0 650 290 1860 648 0 649 648 1872 288 0 648 1860 119 1872 0 292 653 651 652 0 653 293 1887 651 0 652 651 1898 291 0 651 1887 66 1898 0 295 656 654 655 0 656 296 1911 654 0 655 654 1922 294 0 654 1911 120 1922 0 298 659 657 658 0 659 299 1935 657 0 658 657 1946 297 0 657 1935 121 1946 0 301 662 660 661 0 662 302 1960 660 0 661 660 1972 300 0 660 1960 122 1972 0 125 667 663 664 0 667 304 864 663 0 664 663 936 303 0 663 864 21 936 0 123 672 669 670 0 672 306 956 669 0 670 669 773 305 0 669 956 5 773 0 124 677 674 675 0 677 308 766 674 0 675 674 872 307 0 674 766 1 872 0 128 683 679 680 0 683 310 964 679 0 680 679 1036 309 0 679 964 22 1036 0 126 688 685 686 0 688 312 1056 685 0 686 685 857 311 0 685 1056 6 857 0 127 693 690 691 0 693 314 850 690 0 691 690 972 313 0 690 850 10 972 0 131 699 695 696 0 699 316 1064 695 0 696 695 1124 315 0 695 1064 23 1124 0 129 704 701 702 0 704 318 1141 701 0 702 701 881 317 0 701 1141 2 881 0 130 709 706 707 0 709 320 873 706 0 707 706 1072 319 0 706 873 1 1072 0 134 715 711 712 0 715 322 1148 711 0 712 711 1212 321 0 711 1148 24 1212 0 132 720 717 718 0 720 324 1229 717 0 718 717 905 323 0 717 1229 3 905 0 133 725 722 723 0 725 326 897 722 0 723 722 1156 325 0 722 897 2 1156 0 137 731 727 728 0 731 328 1236 727 0 728 727 1300 327 0 727 1236 25 1300 0 135 736 733 734 0 736 330 1317 733 0 734 733 929 329 0 733 1317 4 929 0 136 741 738 739 0 741 332 921 738 0 739 738 1244 331 0 738 921 3 1244 0 140 747 743 744 0 747 334 1324 743 0 744 743 1388 333 0 743 1324 26 1388 0 138 752 749 750 0 752 336 1405 749 0 750 749 955 335 0 749 1405 5 955 0 139 757 754 755 0 757 338 947 754 0 755 754 1332 337 0 754 947 4 1332 0 143 763 759 760 0 763 340 1412 759 0 760 759 1476 339 0 759 1412 27 1476 0 141 770 765 767 0 770 341 1496 765 0 767 765 766 308 0 765 1496 1 766 0 142 776 772 774 0 776 305 773 772 0 774 772 1420 342 0 772 773 5 1420 0 146 783 779 780 0 783 344 1504 779 0 780 779 1572 343 0 779 1504 28 1572 0 144 788 785 786 0 788 346 1589 785 0 786 785 1055 345 0 785 1589 6 1055 0 145 793 790 791 0 793 348 1047 790 0 791 790 1512 347 0 790 1047 7 1512 0 149 799 795 796 0 799 350 1596 795 0 796 795 1664 349 0 795 1596 29 1664 0 147 804 801 802 0 804 352 1684 801 0 802 801 1029 351 0 801 1684 7 1029 0 148 809 806 807 0 809 354 1021 806 0 807 806 1604 353 0 806 1021 8 1604 0 152 815 811 812 0 815 356 1692 811 0 812 811 1760 355 0 811 1692 30 1760 0 150 820 817 818 0 820 358 1780 817 0 818 817 1005 357 0 817 1780 8 1005 0 151 825 822 823 0 825 360 997 822 0 823 822 1700 359 0 822 997 9 1700 0 155 831 827 828 0 831 362 1788 827 0 828 827 1856 361 0 827 1788 31 1856 0 153 836 833 834 0 836 364 1876 833 0 834 833 981 363 0 833 1876 9 981 0 154 841 838 839 0 841 366 973 838 0 839 838 1796 365 0 838 973 10 1796 0 158 847 843 844 0 847 368 1884 843 0 844 843 1956 367 0 843 1884 32 1956 0 156 854 849 851 0 854 369 1976 849 0 851 849 850 314 0 849 1976 10 850 0 157 860 856 858 0 860 311 857 856 0 858 856 1892 370 0 856 857 6 1892 0 161 869 863 865 0 869 371 888 863 0 865 863 864 304 0 863 888 21 864 0 159 877 871 874 0 877 307 872 871 0 874 871 873 320 0 871 872 1 873 0 160 884 880 882 0 884 317 881 880 0 882 880 896 372 0 880 881 2 896 0 164 893 887 889 0 893 373 912 887 0 889 887 888 371 0 887 912 21 888 0 162 901 895 898 0 901 372 896 895 0 898 895 897 326 0 895 896 2 897 0 163 908 904 906 0 908 323 905 904 0 906 904 920 374 0 904 905 3 920 0 167 917 911 913 0 917 375 937 911 0 913 911 912 373 0 911 937 21 912 0 165 925 919 922 0 925 374 920 919 0 922 919 921 332 0 919 920 3 921 0 166 932 928 930 0 932 329 929 928 0 930 928 946 376 0 928 929 4 946 0 170 942 935 938 0 942 303 936 935 0 938 935 937 375 0 935 936 21 937 0 168 951 945 948 0 951 376 946 945 0 948 945 947 338 0 945 946 4 947 0 169 960 954 957 0 960 335 955 954 0 957 954 956 306 0 954 955 5 956 0 173 969 963 965 0 969 377 988 963 0 965 963 964 310 0 963 988 22 964 0 171 977 971 974 0 977 313 972 971 0 974 971 973 366 0 971 972 10 973 0 172 984 980 982 0 984 363 981 980 0 982 980 996 378 0 980 981 9 996 0 176 993 987 989 0 993 379 1012 987 0 989 987 988 377 0 987 1012 22 988 0 174 1001 995 998 0 1001 378 996 995 0 998 995 997 360 0 995 996 9 997 0 175 1008 1004 1006 0 1008 357 1005 1004 0 1006 1004 1020 380 0 1004 1005 8 1020 0 179 1017 1011 1013 0 1017 381 1037 1011 0 1013 1011 1012 379 0 1011 1037 22 1012 0 177 1025 1019 1022 0 1025 380 1020 1019 0 1022 1019 1021 354 0 1019 1020 8 1021 0 178 1032 1028 1030 0 1032 351 1029 1028 0 1030 1028 1046 382 0 1028 1029 7 1046 0 182 1042 1035 1038 0 1042 309 1036 1035 0 1038 1035 1037 381 0 1035 1036 22 1037 0 180 1051 1045 1048 0 1051 382 1046 1045 0 1048 1045 1047 348 0 1045 1046 7 1047 0 181 1060 1054 1057 0 1060 345 1055 1054 0 1057 1054 1056 312 0 1054 1055 6 1056 0 185 1069 1063 1065 0 1069 383 1084 1063 0 1065 1063 1064 316 0 1063 1084 23 1064 0 183 1075 1071 1073 0 1075 319 1072 1071 0 1073 1071 1495 384 0 1071 1072 1 1495 0 184 1081 1078 1079 0 1081 386 1487 1078 0 1079 1078 1092 385 0 1078 1487 11 1092 0 188 1089 1083 1085 0 1089 387 1104 1083 0 1085 1083 1084 383 0 1083 1104 23 1084 0 186 1095 1091 1093 0 1095 385 1092 1091 0 1093 1091 1925 388 0 1091 1092 11 1925 0 187 1101 1098 1099 0 1101 390 1917 1098 0 1099 1098 1112 389 0 1098 1917 12 1112 0 191 1109 1103 1105 0 1109 391 1125 1103 0 1105 1103 1104 387 0 1103 1125 23 1104 0 189 1115 1111 1113 0 1115 389 1112 1111 0 1113 1111 1565 392 0 1111 1112 12 1565 0 190 1121 1118 1119 0 1121 394 1557 1118 0 1119 1118 1134 393 0 1118 1557 13 1134 0 194 1130 1123 1126 0 1130 315 1124 1123 0 1126 1123 1125 391 0 1123 1124 23 1125 0 192 1137 1133 1135 0 1137 393 1134 1133 0 1135 1133 1165 395 0 1133 1134 13 1165 0 193 1145 1140 1142 0 1145 396 1157 1140 0 1142 1140 1141 318 0 1140 1157 2 1141 0 197 1153 1147 1149 0 1153 397 1172 1147 0 1149 1147 1148 322 0 1147 1172 24 1148 0 195 1161 1155 1158 0 1161 325 1156 1155 0 1158 1155 1157 396 0 1155 1156 2 1157 0 196 1168 1164 1166 0 1168 395 1165 1164 0 1166 1164 1180 398 0 1164 1165 13 1180 0 200 1177 1171 1173 0 1177 399 1192 1171 0 1173 1171 1172 397 0 1171 1192 24 1172 0 198 1183 1179 1181 0 1183 398 1180 1179 0 1181 1179 1541 400 0 1179 1180 13 1541 0 199 1189 1186 1187 0 1189 402 1533 1186 0 1187 1186 1200 401 0 1186 1533 14 1200 0 203 1197 1191 1193 0 1197 403 1213 1191 0 1193 1191 1192 399 0 1191 1213 24 1192 0 201 1203 1199 1201 0 1203 401 1200 1199 0 1201 1199 1657 404 0 1199 1200 14 1657 0 202 1209 1206 1207 0 1209 406 1649 1206 0 1207 1206 1222 405 0 1206 1649 15 1222 0 206 1218 1211 1214 0 1218 321 1212 1211 0 1214 1211 1213 403 0 1211 1212 24 1213 0 204 1225 1221 1223 0 1225 405 1222 1221 0 1223 1221 1253 407 0 1221 1222 15 1253 0 205 1233 1228 1230 0 1233 408 1245 1228 0 1230 1228 1229 324 0 1228 1245 3 1229 0 209 1241 1235 1237 0 1241 409 1260 1235 0 1237 1235 1236 328 0 1235 1260 25 1236 0 207 1249 1243 1246 0 1249 331 1244 1243 0 1246 1243 1245 408 0 1243 1244 3 1245 0 208 1256 1252 1254 0 1256 407 1253 1252 0 1254 1252 1268 410 0 1252 1253 15 1268 0 212 1265 1259 1261 0 1265 411 1280 1259 0 1261 1259 1260 409 0 1259 1280 25 1260 0 210 1271 1267 1269 0 1271 410 1268 1267 0 1269 1267 1633 412 0 1267 1268 15 1633 0 211 1277 1274 1275 0 1277 414 1625 1274 0 1275 1274 1288 413 0 1274 1625 16 1288 0 215 1285 1279 1281 0 1285 415 1301 1279 0 1281 1279 1280 411 0 1279 1301 25 1280 0 213 1291 1287 1289 0 1291 413 1288 1287 0 1289 1287 1753 416 0 1287 1288 16 1753 0 214 1297 1294 1295 0 1297 418 1745 1294 0 1295 1294 1310 417 0 1294 1745 17 1310 0 218 1306 1299 1302 0 1306 327 1300 1299 0 1302 1299 1301 415 0 1299 1300 25 1301 0 216 1313 1309 1311 0 1313 417 1310 1309 0 1311 1309 1341 419 0 1309 1310 17 1341 0 217 1321 1316 1318 0 1321 420 1333 1316 0 1318 1316 1317 330 0 1316 1333 4 1317 0 221 1329 1323 1325 0 1329 421 1348 1323 0 1325 1323 1324 334 0 1323 1348 26 1324 0 219 1337 1331 1334 0 1337 337 1332 1331 0 1334 1331 1333 420 0 1331 1332 4 1333 0 220 1344 1340 1342 0 1344 419 1341 1340 0 1342 1340 1356 422 0 1340 1341 17 1356 0 224 1353 1347 1349 0 1353 423 1368 1347 0 1349 1347 1348 421 0 1347 1368 26 1348 0 222 1359 1355 1357 0 1359 422 1356 1355 0 1357 1355 1729 424 0 1355 1356 17 1729 0 223 1365 1362 1363 0 1365 426 1721 1362 0 1363 1362 1376 425 0 1362 1721 18 1376 0 227 1373 1367 1369 0 1373 427 1389 1367 0 1369 1367 1368 423 0 1367 1389 26 1368 0 225 1379 1375 1377 0 1379 425 1376 1375 0 1377 1375 1849 428 0 1375 1376 18 1849 0 226 1385 1382 1383 0 1385 430 1841 1382 0 1383 1382 1398 429 0 1382 1841 19 1398 0 230 1394 1387 1390 0 1394 333 1388 1387 0 1390 1387 1389 427 0 1387 1388 26 1389 0 228 1401 1397 1399 0 1401 429 1398 1397 0 1399 1397 1429 431 0 1397 1398 19 1429 0 229 1409 1404 1406 0 1409 432 1421 1404 0 1406 1404 1405 336 0 1404 1421 5 1405 0 233 1417 1411 1413 0 1417 433 1436 1411 0 1413 1411 1412 340 0 1411 1436 27 1412 0 231 1425 1419 1422 0 1425 342 1420 1419 0 1422 1419 1421 432 0 1419 1420 5 1421 0 232 1432 1428 1430 0 1432 431 1429 1428 0 1430 1428 1444 434 0 1428 1429 19 1444 0 236 1441 1435 1437 0 1441 435 1456 1435 0 1437 1435 1436 433 0 1435 1456 27 1436 0 234 1447 1443 1445 0 1447 434 1444 1443 0 1445 1443 1825 436 0 1443 1444 19 1825 0 235 1453 1450 1451 0 1453 438 1817 1450 0 1451 1450 1464 437 0 1450 1817 20 1464 0 239 1461 1455 1457 0 1461 439 1477 1455 0 1457 1455 1456 435 0 1455 1477 27 1456 0 237 1467 1463 1465 0 1467 437 1464 1463 0 1465 1463 1949 440 0 1463 1464 20 1949 0 238 1473 1470 1471 0 1473 442 1941 1470 0 1471 1470 1486 441 0 1470 1941 11 1486 0 242 1482 1475 1478 0 1482 339 1476 1475 0 1478 1475 1477 439 0 1475 1476 27 1477 0 240 1491 1485 1488 0 1491 441 1486 1485 0 1488 1485 1487 386 0 1485 1486 11 1487 0 241 1500 1494 1497 0 1500 384 1495 1494 0 1497 1494 1496 341 0 1494 1495 1 1496 0 245 1509 1503 1505 0 1509 443 1524 1503 0 1505 1503 1504 344 0 1503 1524 28 1504 0 243 1515 1511 1513 0 1515 347 1512 1511 0 1513 1511 1683 444 0 1511 1512 7 1683 0 244 1521 1518 1519 0 1521 446 1675 1518 0 1519 1518 1532 445 0 1518 1675 14 1532 0 248 1529 1523 1525 0 1529 447 1548 1523 0 1525 1523 1524 443 0 1523 1548 28 1524 0 246 1537 1531 1534 0 1537 445 1532 1531 0 1534 1531 1533 402 0 1531 1532 14 1533 0 247 1544 1540 1542 0 1544 400 1541 1540 0 1542 1540 1556 448 0 1540 1541 13 1556 0 251 1553 1547 1549 0 1553 449 1573 1547 0 1549 1547 1548 447 0 1547 1573 28 1548 0 249 1561 1555 1558 0 1561 448 1556 1555 0 1558 1555 1557 394 0 1555 1556 13 1557 0 250 1568 1564 1566 0 1568 392 1565 1564 0 1566 1564 1582 450 0 1564 1565 12 1582 0 254 1578 1571 1574 0 1578 343 1572 1571 0 1574 1571 1573 449 0 1571 1572 28 1573 0 252 1585 1581 1583 0 1585 450 1582 1581 0 1583 1581 1901 451 0 1581 1582 12 1901 0 253 1593 1588 1590 0 1593 452 1893 1588 0 1590 1588 1589 346 0 1588 1893 6 1589 0 257 1601 1595 1597 0 1601 453 1616 1595 0 1597 1595 1596 350 0 1595 1616 29 1596 0 255 1607 1603 1605 0 1607 353 1604 1603 0 1605 1603 1779 454 0 1603 1604 8 1779 0 256 1613 1610 1611 0 1613 456 1771 1610 0 1611 1610 1624 455 0 1610 1771 16 1624 0 260 1621 1615 1617 0 1621 457 1640 1615 0 1617 1615 1616 453 0 1615 1640 29 1616 0 258 1629 1623 1626 0 1629 455 1624 1623 0 1626 1623 1625 414 0 1623 1624 16 1625 0 259 1636 1632 1634 0 1636 412 1633 1632 0 1634 1632 1648 458 0 1632 1633 15 1648 0 263 1645 1639 1641 0 1645 459 1665 1639 0 1641 1639 1640 457 0 1639 1665 29 1640 0 261 1653 1647 1650 0 1653 458 1648 1647 0 1650 1647 1649 406 0 1647 1648 15 1649 0 262 1660 1656 1658 0 1660 404 1657 1656 0 1658 1656 1674 460 0 1656 1657 14 1674 0 266 1670 1663 1666 0 1670 349 1664 1663 0 1666 1663 1665 459 0 1663 1664 29 1665 0 264 1679 1673 1676 0 1679 460 1674 1673 0 1676 1673 1675 446 0 1673 1674 14 1675 0 265 1688 1682 1685 0 1688 444 1683 1682 0 1685 1682 1684 352 0 1682 1683 7 1684 0 269 1697 1691 1693 0 1697 461 1712 1691 0 1693 1691 1692 356 0 1691 1712 30 1692 0 267 1703 1699 1701 0 1703 359 1700 1699 0 1701 1699 1875 462 0 1699 1700 9 1875 0 268 1709 1706 1707 0 1709 464 1867 1706 0 1707 1706 1720 463 0 1706 1867 18 1720 0 272 1717 1711 1713 0 1717 465 1736 1711 0 1713 1711 1712 461 0 1711 1736 30 1712 0 270 1725 1719 1722 0 1725 463 1720 1719 0 1722 1719 1721 426 0 1719 1720 18 1721 0 271 1732 1728 1730 0 1732 424 1729 1728 0 1730 1728 1744 466 0 1728 1729 17 1744 0 275 1741 1735 1737 0 1741 467 1761 1735 0 1737 1735 1736 465 0 1735 1761 30 1736 0 273 1749 1743 1746 0 1749 466 1744 1743 0 1746 1743 1745 418 0 1743 1744 17 1745 0 274 1756 1752 1754 0 1756 416 1753 1752 0 1754 1752 1770 468 0 1752 1753 16 1770 0 278 1766 1759 1762 0 1766 355 1760 1759 0 1762 1759 1761 467 0 1759 1760 30 1761 0 276 1775 1769 1772 0 1775 468 1770 1769 0 1772 1769 1771 456 0 1769 1770 16 1771 0 277 1784 1778 1781 0 1784 454 1779 1778 0 1781 1778 1780 358 0 1778 1779 8 1780 0 281 1793 1787 1789 0 1793 469 1808 1787 0 1789 1787 1788 362 0 1787 1808 31 1788 0 279 1799 1795 1797 0 1799 365 1796 1795 0 1797 1795 1975 470 0 1795 1796 10 1975 0 280 1805 1802 1803 0 1805 472 1967 1802 0 1803 1802 1816 471 0 1802 1967 20 1816 0 284 1813 1807 1809 0 1813 473 1832 1807 0 1809 1807 1808 469 0 1807 1832 31 1808 0 282 1821 1815 1818 0 1821 471 1816 1815 0 1818 1815 1817 438 0 1815 1816 20 1817 0 283 1828 1824 1826 0 1828 436 1825 1824 0 1826 1824 1840 474 0 1824 1825 19 1840 0 287 1837 1831 1833 0 1837 475 1857 1831 0 1833 1831 1832 473 0 1831 1857 31 1832 0 285 1845 1839 1842 0 1845 474 1840 1839 0 1842 1839 1841 430 0 1839 1840 19 1841 0 286 1852 1848 1850 0 1852 428 1849 1848 0 1850 1848 1866 476 0 1848 1849 18 1866 0 290 1862 1855 1858 0 1862 361 1856 1855 0 1858 1855 1857 475 0 1855 1856 31 1857 0 288 1871 1865 1868 0 1871 476 1866 1865 0 1868 1865 1867 464 0 1865 1866 18 1867 0 289 1880 1874 1877 0 1880 462 1875 1874 0 1877 1874 1876 364 0 1874 1875 9 1876 0 293 1889 1883 1885 0 1889 477 1908 1883 0 1885 1883 1884 368 0 1883 1908 32 1884 0 291 1897 1891 1894 0 1897 370 1892 1891 0 1894 1891 1893 452 0 1891 1892 6 1893 0 292 1904 1900 1902 0 1904 451 1901 1900 0 1902 1900 1916 478 0 1900 1901 12 1916 0 296 1913 1907 1909 0 1913 479 1932 1907 0 1909 1907 1908 477 0 1907 1932 32 1908 0 294 1921 1915 1918 0 1921 478 1916 1915 0 1918 1915 1917 390 0 1915 1916 12 1917 0 295 1928 1924 1926 0 1928 388 1925 1924 0 1926 1924 1940 480 0 1924 1925 11 1940 0 299 1937 1931 1933 0 1937 481 1957 1931 0 1933 1931 1932 479 0 1931 1957 32 1932 0 297 1945 1939 1942 0 1945 480 1940 1939 0 1942 1939 1941 442 0 1939 1940 11 1941 0 298 1952 1948 1950 0 1952 440 1949 1948 0 1950 1948 1966 482 0 1948 1949 20 1966 0 302 1962 1955 1958 0 1962 367 1956 1955 0 1958 1955 1957 481 0 1955 1956 32 1957 0 300 1971 1965 1968 0 1971 482 1966 1965 0 1968 1965 1967 472 0 1965 1966 20 1967 0 301 1980 1974 1977 0 1980 470 1975 1974 0 1977 1974 1976 369 0 1974 1975 10 1976 0 124 484 671 678 0 484 123 670 671 0 678 671 778 34 0 671 670 305 778 0 124 676 668 485 0 676 35 866 668 0 485 668 667 125 0 668 866 304 667 0 127 487 687 694 0 487 126 686 687 0 694 687 862 37 0 687 686 311 862 0 127 692 684 488 0 692 38 966 684 0 488 684 683 128 0 684 966 310 683 0 130 490 703 710 0 490 129 702 703 0 710 703 886 40 0 703 702 317 886 0 130 708 700 491 0 708 41 1066 700 0 491 700 699 131 0 700 1066 316 699 0 133 493 719 726 0 493 132 718 719 0 726 719 910 43 0 719 718 323 910 0 133 724 716 494 0 724 44 1150 716 0 494 716 715 134 0 716 1150 322 715 0 136 496 735 742 0 496 135 734 735 0 742 735 934 46 0 735 734 329 934 0 136 740 732 497 0 740 47 1238 732 0 497 732 731 137 0 732 1238 328 731 0 139 499 751 758 0 499 138 750 751 0 758 751 962 49 0 751 750 335 962 0 139 756 748 500 0 756 50 1326 748 0 500 748 747 140 0 748 1326 334 747 0 141 769 777 502 0 769 34 778 777 0 502 777 776 142 0 777 778 305 776 0 142 775 764 503 0 775 52 1414 764 0 503 764 763 143 0 764 1414 340 763 0 145 505 787 794 0 505 144 786 787 0 794 787 1062 54 0 787 786 345 1062 0 145 792 784 506 0 792 55 1506 784 0 506 784 783 146 0 784 1506 344 783 0 148 508 803 810 0 508 147 802 803 0 810 803 1034 57 0 803 802 351 1034 0 148 808 800 509 0 808 58 1598 800 0 509 800 799 149 0 800 1598 350 799 0 151 511 819 826 0 511 150 818 819 0 826 819 1010 60 0 819 818 357 1010 0 151 824 816 512 0 824 61 1694 816 0 512 816 815 152 0 816 1694 356 815 0 154 514 835 842 0 514 153 834 835 0 842 835 986 63 0 835 834 363 986 0 154 840 832 515 0 840 64 1790 832 0 515 832 831 155 0 832 1790 362 831 0 156 853 861 517 0 853 37 862 861 0 517 861 860 157 0 861 862 311 860 0 157 859 848 518 0 859 66 1886 848 0 518 848 847 158 0 848 1886 368 847 0 159 876 885 520 0 876 40 886 885 0 520 885 884 160 0 885 886 317 884 0 160 883 870 521 0 883 67 890 870 0 521 870 869 161 0 870 890 371 869 0 162 900 909 523 0 900 43 910 909 0 523 909 908 163 0 909 910 323 908 0 163 907 894 524 0 907 68 914 894 0 524 894 893 164 0 894 914 373 893 0 165 924 933 526 0 924 46 934 933 0 526 933 932 166 0 933 934 329 932 0 166 931 918 527 0 931 69 939 918 0 527 918 917 167 0 918 939 375 917 0 168 950 961 529 0 950 49 962 961 0 529 961 960 169 0 961 962 335 960 0 169 959 943 530 0 959 33 944 943 0 530 943 942 170 0 943 944 303 942 0 171 976 985 532 0 976 63 986 985 0 532 985 984 172 0 985 986 363 984 0 172 983 970 533 0 983 70 990 970 0 533 970 969 173 0 970 990 377 969 0 174 1000 1009 535 0 1000 60 1010 1009 0 535 1009 1008 175 0 1009 1010 357 1008 0 175 1007 994 536 0 1007 71 1014 994 0 536 994 993 176 0 994 1014 379 993 0 177 1024 1033 538 0 1024 57 1034 1033 0 538 1033 1032 178 0 1033 1034 351 1032 0 178 1031 1018 539 0 1031 72 1039 1018 0 539 1018 1017 179 0 1018 1039 381 1017 0 180 1050 1061 541 0 1050 54 1062 1061 0 541 1061 1060 181 0 1061 1062 345 1060 0 181 1059 1043 542 0 1059 36 1044 1043 0 542 1043 1042 182 0 1043 1044 309 1042 0 184 544 1074 1082 0 544 183 1073 1074 0 1082 1074 1502 73 0 1074 1073 384 1502 0 184 1080 1070 545 0 1080 74 1086 1070 0 545 1070 1069 185 0 1070 1086 383 1069 0 187 547 1094 1102 0 547 186 1093 1094 0 1102 1094 1930 75 0 1094 1093 388 1930 0 187 1100 1090 548 0 1100 76 1106 1090 0 548 1090 1089 188 0 1090 1106 387 1089 0 190 550 1114 1122 0 550 189 1113 1114 0 1122 1114 1570 77 0 1114 1113 392 1570 0 190 1120 1110 551 0 1120 78 1127 1110 0 551 1110 1109 191 0 1110 1127 391 1109 0 193 553 1136 1146 0 553 192 1135 1136 0 1146 1136 1170 79 0 1136 1135 395 1170 0 193 1144 1131 554 0 1144 39 1132 1131 0 554 1131 1130 194 0 1131 1132 315 1130 0 195 1160 1169 556 0 1160 79 1170 1169 0 556 1169 1168 196 0 1169 1170 395 1168 0 196 1167 1154 557 0 1167 80 1174 1154 0 557 1154 1153 197 0 1154 1174 397 1153 0 199 559 1182 1190 0 559 198 1181 1182 0 1190 1182 1546 81 0 1182 1181 400 1546 0 199 1188 1178 560 0 1188 82 1194 1178 0 560 1178 1177 200 0 1178 1194 399 1177 0 202 562 1202 1210 0 562 201 1201 1202 0 1210 1202 1662 83 0 1202 1201 404 1662 0 202 1208 1198 563 0 1208 84 1215 1198 0 563 1198 1197 203 0 1198 1215 403 1197 0 205 565 1224 1234 0 565 204 1223 1224 0 1234 1224 1258 85 0 1224 1223 407 1258 0 205 1232 1219 566 0 1232 42 1220 1219 0 566 1219 1218 206 0 1219 1220 321 1218 0 207 1248 1257 568 0 1248 85 1258 1257 0 568 1257 1256 208 0 1257 1258 407 1256 0 208 1255 1242 569 0 1255 86 1262 1242 0 569 1242 1241 209 0 1242 1262 409 1241 0 211 571 1270 1278 0 571 210 1269 1270 0 1278 1270 1638 87 0 1270 1269 412 1638 0 211 1276 1266 572 0 1276 88 1282 1266 0 572 1266 1265 212 0 1266 1282 411 1265 0 214 574 1290 1298 0 574 213 1289 1290 0 1298 1290 1758 89 0 1290 1289 416 1758 0 214 1296 1286 575 0 1296 90 1303 1286 0 575 1286 1285 215 0 1286 1303 415 1285 0 217 577 1312 1322 0 577 216 1311 1312 0 1322 1312 1346 91 0 1312 1311 419 1346 0 217 1320 1307 578 0 1320 45 1308 1307 0 578 1307 1306 218 0 1307 1308 327 1306 0 219 1336 1345 580 0 1336 91 1346 1345 0 580 1345 1344 220 0 1345 1346 419 1344 0 220 1343 1330 581 0 1343 92 1350 1330 0 581 1330 1329 221 0 1330 1350 421 1329 0 223 583 1358 1366 0 583 222 1357 1358 0 1366 1358 1734 93 0 1358 1357 424 1734 0 223 1364 1354 584 0 1364 94 1370 1354 0 584 1354 1353 224 0 1354 1370 423 1353 0 226 586 1378 1386 0 586 225 1377 1378 0 1386 1378 1854 95 0 1378 1377 428 1854 0 226 1384 1374 587 0 1384 96 1391 1374 0 587 1374 1373 227 0 1374 1391 427 1373 0 229 589 1400 1410 0 589 228 1399 1400 0 1410 1400 1434 97 0 1400 1399 431 1434 0 229 1408 1395 590 0 1408 48 1396 1395 0 590 1395 1394 230 0 1395 1396 333 1394 0 231 1424 1433 592 0 1424 97 1434 1433 0 592 1433 1432 232 0 1433 1434 431 1432 0 232 1431 1418 593 0 1431 98 1438 1418 0 593 1418 1417 233 0 1418 1438 433 1417 0 235 595 1446 1454 0 595 234 1445 1446 0 1454 1446 1830 99 0 1446 1445 436 1830 0 235 1452 1442 596 0 1452 100 1458 1442 0 596 1442 1441 236 0 1442 1458 435 1441 0 238 598 1466 1474 0 598 237 1465 1466 0 1474 1466 1954 101 0 1466 1465 440 1954 0 238 1472 1462 599 0 1472 102 1479 1462 0 599 1462 1461 239 0 1462 1479 439 1461 0 240 1490 1501 601 0 1490 73 1502 1501 0 601 1501 1500 241 0 1501 1502 384 1500 0 241 1499 1483 602 0 1499 51 1484 1483 0 602 1483 1482 242 0 1483 1484 339 1482 0 244 604 1514 1522 0 604 243 1513 1514 0 1522 1514 1690 103 0 1514 1513 444 1690 0 244 1520 1510 605 0 1520 104 1526 1510 0 605 1510 1509 245 0 1510 1526 443 1509 0 246 1536 1545 607 0 1536 81 1546 1545 0 607 1545 1544 247 0 1545 1546 400 1544 0 247 1543 1530 608 0 1543 105 1550 1530 0 608 1530 1529 248 0 1530 1550 447 1529 0 249 1560 1569 610 0 1560 77 1570 1569 0 610 1569 1568 250 0 1569 1570 392 1568 0 250 1567 1554 611 0 1567 106 1575 1554 0 611 1554 1553 251 0 1554 1575 449 1553 0 253 613 1584 1594 0 613 252 1583 1584 0 1594 1584 1906 107 0 1584 1583 451 1906 0 253 1592 1579 614 0 1592 53 1580 1579 0 614 1579 1578 254 0 1579 1580 343 1578 0 256 616 1606 1614 0 616 255 1605 1606 0 1614 1606 1786 108 0 1606 1605 454 1786 0 256 1612 1602 617 0 1612 109 1618 1602 0 617 1602 1601 257 0 1602 1618 453 1601 0 258 1628 1637 619 0 1628 87 1638 1637 0 619 1637 1636 259 0 1637 1638 412 1636 0 259 1635 1622 620 0 1635 110 1642 1622 0 620 1622 1621 260 0 1622 1642 457 1621 0 261 1652 1661 622 0 1652 83 1662 1661 0 622 1661 1660 262 0 1661 1662 404 1660 0 262 1659 1646 623 0 1659 111 1667 1646 0 623 1646 1645 263 0 1646 1667 459 1645 0 264 1678 1689 625 0 1678 103 1690 1689 0 625 1689 1688 265 0 1689 1690 444 1688 0 265 1687 1671 626 0 1687 56 1672 1671 0 626 1671 1670 266 0 1671 1672 349 1670 0 268 628 1702 1710 0 628 267 1701 1702 0 1710 1702 1882 112 0 1702 1701 462 1882 0 268 1708 1698 629 0 1708 113 1714 1698 0 629 1698 1697 269 0 1698 1714 461 1697 0 270 1724 1733 631 0 1724 93 1734 1733 0 631 1733 1732 271 0 1733 1734 424 1732 0 271 1731 1718 632 0 1731 114 1738 1718 0 632 1718 1717 272 0 1718 1738 465 1717 0 273 1748 1757 634 0 1748 89 1758 1757 0 634 1757 1756 274 0 1757 1758 416 1756 0 274 1755 1742 635 0 1755 115 1763 1742 0 635 1742 1741 275 0 1742 1763 467 1741 0 276 1774 1785 637 0 1774 108 1786 1785 0 637 1785 1784 277 0 1785 1786 454 1784 0 277 1783 1767 638 0 1783 59 1768 1767 0 638 1767 1766 278 0 1767 1768 355 1766 0 280 640 1798 1806 0 640 279 1797 1798 0 1806 1798 1982 116 0 1798 1797 470 1982 0 280 1804 1794 641 0 1804 117 1810 1794 0 641 1794 1793 281 0 1794 1810 469 1793 0 282 1820 1829 643 0 1820 99 1830 1829 0 643 1829 1828 283 0 1829 1830 436 1828 0 283 1827 1814 644 0 1827 118 1834 1814 0 644 1814 1813 284 0 1814 1834 473 1813 0 285 1844 1853 646 0 1844 95 1854 1853 0 646 1853 1852 286 0 1853 1854 428 1852 0 286 1851 1838 647 0 1851 119 1859 1838 0 647 1838 1837 287 0 1838 1859 475 1837 0 288 1870 1881 649 0 1870 112 1882 1881 0 649 1881 1880 289 0 1881 1882 462 1880 0 289 1879 1863 650 0 1879 62 1864 1863 0 650 1863 1862 290 0 1863 1864 361 1862 0 291 1896 1905 652 0 1896 107 1906 1905 0 652 1905 1904 292 0 1905 1906 451 1904 0 292 1903 1890 653 0 1903 120 1910 1890 0 653 1890 1889 293 0 1890 1910 477 1889 0 294 1920 1929 655 0 1920 75 1930 1929 0 655 1929 1928 295 0 1929 1930 388 1928 0 295 1927 1914 656 0 1927 121 1934 1914 0 656 1914 1913 296 0 1914 1934 479 1913 0 297 1944 1953 658 0 1944 101 1954 1953 0 658 1953 1952 298 0 1953 1954 440 1952 0 298 1951 1938 659 0 1951 122 1959 1938 0 659 1938 1937 299 0 1938 1959 481 1937 0 300 1970 1981 661 0 1970 116 1982 1981 0 661 1981 1980 301 0 1981 1982 470 1980 0 301 1979 1963 662 0 1979 65 1964 1963 0 662 1963 1962 302 0 1963 1964 367 1962 0 33 665 666 944 0 665 125 664 666 0 944 666 664 303 0 123 673 958 672 0 673 33 959 958 0 672 958 957 306 0 958 959 169 957 0 124 675 879 676 0 675 307 877 879 0 676 879 878 35 0 879 877 159 878 0 124 678 768 677 0 678 34 769 768 0 677 768 767 308 0 768 769 141 767 0 36 681 682 1044 0 681 128 680 682 0 1044 682 680 309 0 126 689 1058 688 0 689 36 1059 1058 0 688 1058 1057 312 0 1058 1059 181 1057 0 127 691 979 692 0 691 313 977 979 0 692 979 978 38 0 979 977 171 978 0 127 694 852 693 0 694 37 853 852 0 693 852 851 314 0 852 853 156 851 0 39 697 698 1132 0 697 131 696 698 0 1132 698 696 315 0 129 705 1143 704 0 705 39 1144 1143 0 704 1143 1142 318 0 1143 1144 193 1142 0 130 707 1077 708 0 707 319 1075 1077 0 708 1077 1076 41 0 1077 1075 183 1076 0 130 710 875 709 0 710 40 876 875 0 709 875 874 320 0 875 876 159 874 0 42 713 714 1220 0 713 134 712 714 0 1220 714 712 321 0 132 721 1231 720 0 721 42 1232 1231 0 720 1231 1230 324 0 1231 1232 205 1230 0 133 723 1163 724 0 723 325 1161 1163 0 724 1163 1162 44 0 1163 1161 195 1162 0 133 726 899 725 0 726 43 900 899 0 725 899 898 326 0 899 900 162 898 0 45 729 730 1308 0 729 137 728 730 0 1308 730 728 327 0 135 737 1319 736 0 737 45 1320 1319 0 736 1319 1318 330 0 1319 1320 217 1318 0 136 739 1251 740 0 739 331 1249 1251 0 740 1251 1250 47 0 1251 1249 207 1250 0 136 742 923 741 0 742 46 924 923 0 741 923 922 332 0 923 924 165 922 0 48 745 746 1396 0 745 140 744 746 0 1396 746 744 333 0 138 753 1407 752 0 753 48 1408 1407 0 752 1407 1406 336 0 1407 1408 229 1406 0 139 755 1339 756 0 755 337 1337 1339 0 756 1339 1338 50 0 1339 1337 219 1338 0 139 758 949 757 0 758 49 950 949 0 757 949 948 338 0 949 950 168 948 0 51 761 762 1484 0 761 143 760 762 0 1484 762 760 339 0 141 771 1498 770 0 771 51 1499 1498 0 770 1498 1497 341 0 1498 1499 241 1497 0 142 774 1427 775 0 774 342 1425 1427 0 775 1427 1426 52 0 1427 1425 231 1426 0 53 781 782 1580 0 781 146 780 782 0 1580 782 780 343 0 144 789 1591 788 0 789 53 1592 1591 0 788 1591 1590 346 0 1591 1592 253 1590 0 145 791 1517 792 0 791 347 1515 1517 0 792 1517 1516 55 0 1517 1515 243 1516 0 145 794 1049 793 0 794 54 1050 1049 0 793 1049 1048 348 0 1049 1050 180 1048 0 56 797 798 1672 0 797 149 796 798 0 1672 798 796 349 0 147 805 1686 804 0 805 56 1687 1686 0 804 1686 1685 352 0 1686 1687 265 1685 0 148 807 1609 808 0 807 353 1607 1609 0 808 1609 1608 58 0 1609 1607 255 1608 0 148 810 1023 809 0 810 57 1024 1023 0 809 1023 1022 354 0 1023 1024 177 1022 0 59 813 814 1768 0 813 152 812 814 0 1768 814 812 355 0 150 821 1782 820 0 821 59 1783 1782 0 820 1782 1781 358 0 1782 1783 277 1781 0 151 823 1705 824 0 823 359 1703 1705 0 824 1705 1704 61 0 1705 1703 267 1704 0 151 826 999 825 0 826 60 1000 999 0 825 999 998 360 0 999 1000 174 998 0 62 829 830 1864 0 829 155 828 830 0 1864 830 828 361 0 153 837 1878 836 0 837 62 1879 1878 0 836 1878 1877 364 0 1878 1879 289 1877 0 154 839 1801 840 0 839 365 1799 1801 0 840 1801 1800 64 0 1801 1799 279 1800 0 154 842 975 841 0 842 63 976 975 0 841 975 974 366 0 975 976 171 974 0 65 845 846 1964 0 845 158 844 846 0 1964 846 844 367 0 156 855 1978 854 0 855 65 1979 1978 0 854 1978 1977 369 0 1978 1979 301 1977 0 157 858 1899 859 0 858 370 1897 1899 0 859 1899 1898 66 0 1899 1897 291 1898 0 35 867 868 866 0 867 161 865 868 0 866 868 865 304 0 160 882 903 883 0 882 372 901 903 0 883 903 902 67 0 903 901 162 902 0 67 891 892 890 0 891 164 889 892 0 890 892 889 371 0 163 906 927 907 0 906 374 925 927 0 907 927 926 68 0 927 925 165 926 0 68 915 916 914 0 915 167 913 916 0 914 916 913 373 0 166 930 953 931 0 930 376 951 953 0 931 953 952 69 0 953 951 168 952 0 69 940 941 939 0 940 170 938 941 0 939 941 938 375 0 38 967 968 966 0 967 173 965 968 0 966 968 965 310 0 172 982 1003 983 0 982 378 1001 1003 0 983 1003 1002 70 0 1003 1001 174 1002 0 70 991 992 990 0 991 176 989 992 0 990 992 989 377 0 175 1006 1027 1007 0 1006 380 1025 1027 0 1007 1027 1026 71 0 1027 1025 177 1026 0 71 1015 1016 1014 0 1015 179 1013 1016 0 1014 1016 1013 379 0 178 1030 1053 1031 0 1030 382 1051 1053 0 1031 1053 1052 72 0 1053 1051 180 1052 0 72 1040 1041 1039 0 1040 182 1038 1041 0 1039 1041 1038 381 0 41 1067 1068 1066 0 1067 185 1065 1068 0 1066 1068 1065 316 0 184 1079 1097 1080 0 1079 385 1095 1097 0 1080 1097 1096 74 0 1097 1095 186 1096 0 184 1082 1489 1081 0 1082 73 1490 1489 0 1081 1489 1488 386 0 1489 1490 240 1488 0 74 1087 1088 1086 0 1087 188 1085 1088 0 1086 1088 1085 383 0 187 1099 1117 1100 0 1099 389 1115 1117 0 1100 1117 1116 76 0 1117 1115 189 1116 0 187 1102 1919 1101 0 1102 75 1920 1919 0 1101 1919 1918 390 0 1919 1920 294 1918 0 76 1107 1108 1106 0 1107 191 1105 1108 0 1106 1108 1105 387 0 190 1119 1139 1120 0 1119 393 1137 1139 0 1120 1139 1138 78 0 1139 1137 192 1138 0 190 1122 1559 1121 0 1122 77 1560 1559 0 1121 1559 1558 394 0 1559 1560 249 1558 0 78 1128 1129 1127 0 1128 194 1126 1129 0 1127 1129 1126 391 0 193 1146 1159 1145 0 1146 79 1160 1159 0 1145 1159 1158 396 0 1159 1160 195 1158 0 44 1151 1152 1150 0 1151 197 1149 1152 0 1150 1152 1149 322 0 196 1166 1185 1167 0 1166 398 1183 1185 0 1167 1185 1184 80 0 1185 1183 198 1184 0 80 1175 1176 1174 0 1175 200 1173 1176 0 1174 1176 1173 397 0 199 1187 1205 1188 0 1187 401 1203 1205 0 1188 1205 1204 82 0 1205 1203 201 1204 0 199 1190 1535 1189 0 1190 81 1536 1535 0 1189 1535 1534 402 0 1535 1536 246 1534 0 82 1195 1196 1194 0 1195 203 1193 1196 0 1194 1196 1193 399 0 202 1207 1227 1208 0 1207 405 1225 1227 0 1208 1227 1226 84 0 1227 1225 204 1226 0 202 1210 1651 1209 0 1210 83 1652 1651 0 1209 1651 1650 406 0 1651 1652 261 1650 0 84 1216 1217 1215 0 1216 206 1214 1217 0 1215 1217 1214 403 0 205 1234 1247 1233 0 1234 85 1248 1247 0 1233 1247 1246 408 0 1247 1248 207 1246 0 47 1239 1240 1238 0 1239 209 1237 1240 0 1238 1240 1237 328 0 208 1254 1273 1255 0 1254 410 1271 1273 0 1255 1273 1272 86 0 1273 1271 210 1272 0 86 1263 1264 1262 0 1263 212 1261 1264 0 1262 1264 1261 409 0 211 1275 1293 1276 0 1275 413 1291 1293 0 1276 1293 1292 88 0 1293 1291 213 1292 0 211 1278 1627 1277 0 1278 87 1628 1627 0 1277 1627 1626 414 0 1627 1628 258 1626 0 88 1283 1284 1282 0 1283 215 1281 1284 0 1282 1284 1281 411 0 214 1295 1315 1296 0 1295 417 1313 1315 0 1296 1315 1314 90 0 1315 1313 216 1314 0 214 1298 1747 1297 0 1298 89 1748 1747 0 1297 1747 1746 418 0 1747 1748 273 1746 0 90 1304 1305 1303 0 1304 218 1302 1305 0 1303 1305 1302 415 0 217 1322 1335 1321 0 1322 91 1336 1335 0 1321 1335 1334 420 0 1335 1336 219 1334 0 50 1327 1328 1326 0 1327 221 1325 1328 0 1326 1328 1325 334 0 220 1342 1361 1343 0 1342 422 1359 1361 0 1343 1361 1360 92 0 1361 1359 222 1360 0 92 1351 1352 1350 0 1351 224 1349 1352 0 1350 1352 1349 421 0 223 1363 1381 1364 0 1363 425 1379 1381 0 1364 1381 1380 94 0 1381 1379 225 1380 0 223 1366 1723 1365 0 1366 93 1724 1723 0 1365 1723 1722 426 0 1723 1724 270 1722 0 94 1371 1372 1370 0 1371 227 1369 1372 0 1370 1372 1369 423 0 226 1383 1403 1384 0 1383 429 1401 1403 0 1384 1403 1402 96 0 1403 1401 228 1402 0 226 1386 1843 1385 0 1386 95 1844 1843 0 1385 1843 1842 430 0 1843 1844 285 1842 0 96 1392 1393 1391 0 1392 230 1390 1393 0 1391 1393 1390 427 0 229 1410 1423 1409 0 1410 97 1424 1423 0 1409 1423 1422 432 0 1423 1424 231 1422 0 52 1415 1416 1414 0 1415 233 1413 1416 0 1414 1416 1413 340 0 232 1430 1449 1431 0 1430 434 1447 1449 0 1431 1449 1448 98 0 1449 1447 234 1448 0 98 1439 1440 1438 0 1439 236 1437 1440 0 1438 1440 1437 433 0 235 1451 1469 1452 0 1451 437 1467 1469 0 1452 1469 1468 100 0 1469 1467 237 1468 0 235 1454 1819 1453 0 1454 99 1820 1819 0 1453 1819 1818 438 0 1819 1820 282 1818 0 100 1459 1460 1458 0 1459 239 1457 1460 0 1458 1460 1457 435 0 238 1471 1493 1472 0 1471 441 1491 1493 0 1472 1493 1492 102 0 1493 1491 240 1492 0 238 1474 1943 1473 0 1474 101 1944 1943 0 1473 1943 1942 442 0 1943 1944 297 1942 0 102 1480 1481 1479 0 1480 242 1478 1481 0 1479 1481 1478 439 0 55 1507 1508 1506 0 1507 245 1505 1508 0 1506 1508 1505 344 0 244 1519 1539 1520 0 1519 445 1537 1539 0 1520 1539 1538 104 0 1539 1537 246 1538 0 244 1522 1677 1521 0 1522 103 1678 1677 0 1521 1677 1676 446 0 1677 1678 264 1676 0 104 1527 1528 1526 0 1527 248 1525 1528 0 1526 1528 1525 443 0 247 1542 1563 1543 0 1542 448 1561 1563 0 1543 1563 1562 105 0 1563 1561 249 1562 0 105 1551 1552 1550 0 1551 251 1549 1552 0 1550 1552 1549 447 0 250 1566 1587 1567 0 1566 450 1585 1587 0 1567 1587 1586 106 0 1587 1585 252 1586 0 106 1576 1577 1575 0 1576 254 1574 1577 0 1575 1577 1574 449 0 253 1594 1895 1593 0 1594 107 1896 1895 0 1593 1895 1894 452 0 1895 1896 291 1894 0 58 1599 1600 1598 0 1599 257 1597 1600 0 1598 1600 1597 350 0 256 1611 1631 1612 0 1611 455 1629 1631 0 1612 1631 1630 109 0 1631 1629 258 1630 0 256 1614 1773 1613 0 1614 108 1774 1773 0 1613 1773 1772 456 0 1773 1774 276 1772 0 109 1619 1620 1618 0 1619 260 1617 1620 0 1618 1620 1617 453 0 259 1634 1655 1635 0 1634 458 1653 1655 0 1635 1655 1654 110 0 1655 1653 261 1654 0 110 1643 1644 1642 0 1643 263 1641 1644 0 1642 1644 1641 457 0 262 1658 1681 1659 0 1658 460 1679 1681 0 1659 1681 1680 111 0 1681 1679 264 1680 0 111 1668 1669 1667 0 1668 266 1666 1669 0 1667 1669 1666 459 0 61 1695 1696 1694 0 1695 269 1693 1696 0 1694 1696 1693 356 0 268 1707 1727 1708 0 1707 463 1725 1727 0 1708 1727 1726 113 0 1727 1725 270 1726 0 268 1710 1869 1709 0 1710 112 1870 1869 0 1709 1869 1868 464 0 1869 1870 288 1868 0 113 1715 1716 1714 0 1715 272 1713 1716 0 1714 1716 1713 461 0 271 1730 1751 1731 0 1730 466 1749 1751 0 1731 1751 1750 114 0 1751 1749 273 1750 0 114 1739 1740 1738 0 1739 275 1737 1740 0 1738 1740 1737 465 0 274 1754 1777 1755 0 1754 468 1775 1777 0 1755 1777 1776 115 0 1777 1775 276 1776 0 115 1764 1765 1763 0 1764 278 1762 1765 0 1763 1765 1762 467 0 64 1791 1792 1790 0 1791 281 1789 1792 0 1790 1792 1789 362 0 280 1803 1823 1804 0 1803 471 1821 1823 0 1804 1823 1822 117 0 1823 1821 282 1822 0 280 1806 1969 1805 0 1806 116 1970 1969 0 1805 1969 1968 472 0 1969 1970 300 1968 0 117 1811 1812 1810 0 1811 284 1809 1812 0 1810 1812 1809 469 0 283 1826 1847 1827 0 1826 474 1845 1847 0 1827 1847 1846 118 0 1847 1845 285 1846 0 118 1835 1836 1834 0 1835 287 1833 1836 0 1834 1836 1833 473 0 286 1850 1873 1851 0 1850 476 1871 1873 0 1851 1873 1872 119 0 1873 1871 288 1872 0 119 1860 1861 1859 0 1860 290 1858 1861 0 1859 1861 1858 475 0 66 1887 1888 1886 0 1887 293 1885 1888 0 1886 1888 1885 368 0 292 1902 1923 1903 0 1902 478 1921 1923 0 1903 1923 1922 120 0 1923 1921 294 1922 0 120 1911 1912 1910 0 1911 296 1909 1912 0 1910 1912 1909 477 0 295 1926 1947 1927 0 1926 480 1945 1947 0 1927 1947 1946 121 0 1947 1945 297 1946 0 121 1935 1936 1934 0 1935 299 1933 1936 0 1934 1936 1933 479 0 298 1950 1973 1951 0 1950 482 1971 1973 0 1951 1973 1972 122 0 1973 1971 300 1972 0 122 1960 1961 1959 0 1960 302 1958 1961 0 1959 1961 1958 481 0 End libMeshb-7.80/legacy_sources/v5/test.sol000066400000000000000000000002771456732543400202570ustar00rootroot00000000000000MeshVersionFormatted 1 Dimension 3 SolAtVertices 5 3 1 2 3 5 1 6 8 1 2 3 4 5 6 6 2 4 8 1 2 3 4 5 6 9 3 2 6 1 2 3 4 5 6 8 4 5 6 1 2 3 4 5 6 8 5 2 6 1 2 3 4 5 6 Iterations 8 Time 23.68 End libMeshb-7.80/legacy_sources/v5/test.solb000066400000000000000000000004001456732543400204050ustar00rootroot00000000000000>@?@A?@@@@@@@@@A?@@@@@@A@@@@?@@@@@@A@@@?@@@@@@A@@@?@@@@@@6libMeshb-7.80/legacy_sources/v5/test_libmesh5.c000066400000000000000000000046471456732543400215010ustar00rootroot00000000000000 /* Exemple d'utilisation de la libmesh5 : transformation de quadrangles en triangles dans un maillage surfacique */ #include #include #include int main() { int i, NmbVer, NmbQad, InpMsh, OutMsh, ver, dim, *RefTab, (*QadTab)[5]; float (*VerTab)[3]; /*-----------------------------------*/ /* Ouverture du maillage "quad.mesh" */ /*-----------------------------------*/ if(!(InpMsh = GmfOpenMesh("quad.mesh", GmfRead, &ver, &dim))) return(1); printf("InpMsh : idx = %d, version = %d, dimension = %d\n", InpMsh, ver, dim); if( (ver != GmfFloat) || (dim != 3) ) exit(1); /* Lecture des nombres d'elements et de noeuds pour l'allocation de memoire */ NmbVer = GmfStatKwd(InpMsh, GmfVertices); printf("InpMsh : nmb vertices = %d\n", NmbVer); VerTab = malloc((NmbVer+1) * 3 * sizeof(float)); RefTab = malloc((NmbVer+1) * sizeof(int)); NmbQad = GmfStatKwd(InpMsh, GmfQuadrilaterals); printf("InpMsh : nmb quads = %d\n", NmbQad); QadTab = malloc((NmbQad+1) * 5 * sizeof(int)); /* Lecture des noeuds */ GmfGotoKwd(InpMsh, GmfVertices); for(i=1;i<=NmbVer;i++) GmfGetLin(InpMsh, GmfVertices, &VerTab[i][0], &VerTab[i][1], &VerTab[i][2], &RefTab[i]); /* Lecture des quadrangles */ GmfGotoKwd(InpMsh, GmfQuadrilaterals); for(i=1;i<=NmbQad;i++) GmfGetLin(InpMsh, GmfQuadrilaterals, &QadTab[i][0], &QadTab[i][1], &QadTab[i][2], &QadTab[i][3], &QadTab[i][4]); /* Fermeture du maillage quad */ GmfCloseMesh(InpMsh); /*-----------------------------------*/ /* Creation du maillage en triangles */ /*-----------------------------------*/ if(!(OutMsh = GmfOpenMesh("tri.mesh", GmfWrite, 3, dim))) return(1); /* Ecriture du nombre de noeuds */ GmfSetKwd(OutMsh, GmfVertices, NmbVer); /* Puis boucle d'ecriture sur les noeuds */ for(i=1;i<=NmbVer;i++) GmfSetLin(OutMsh, GmfVertices, VerTab[i][0], VerTab[i][1], VerTab[i][2], RefTab[i]); /* Ecriture du nombre de triangles */ GmfSetKwd(OutMsh, GmfTriangles, 2*NmbQad); printf("OutMsh : nmb triangles = %d\n", 2*NmbQad); /* Puis boucle d'ecriture sur les triangles (2 triangles par quad) */ for(i=1;i<=NmbQad;i++) { GmfSetLin(OutMsh, GmfTriangles, QadTab[i][0], QadTab[i][1], QadTab[i][2], QadTab[i][4]); GmfSetLin(OutMsh, GmfTriangles, QadTab[i][0], QadTab[i][2], QadTab[i][3], QadTab[i][4]); } /* Ne pas oublier de fermer le fichier */ GmfCloseMesh(OutMsh); free(QadTab); free(RefTab); free(VerTab); return(0); } libMeshb-7.80/legacy_sources/v5/test_libmesh5.f000066400000000000000000000046111456732543400214730ustar00rootroot00000000000000 c libmesh5 example : transform a quadrilateral mesh into a triangular one include 'libmesh5_api.ins' integer i, NmbVer, NmbQad, InpMsh, OutMsh, ver, dim +, RefTab(10000), QadTab(10000,5), ParIdx real*8 VerTab(3,10000) c -------------------------------------------- c Open the quadrilateral mesh file for reading c -------------------------------------------- InpMsh = GmfOpenMeshF77('quad.mesh',GmfRead,ver,dim) print*, 'InpMsh = ', InpMsh, ' version = ', ver, ' dim = ', dim if(InpMsh.eq.0) STOP ' InpMsh = 0' if(ver.ne.GmfDouble) STOP ' version <> GmfDouble' if(dim.ne.3) STOP ' dimension <> 3' c Check memory bounds NmbVer = GmfStatKwdF77(InpMsh, GmfVertices) print*, 'NmbVer = ', NmbVer if(NmbVer.gt.10000) STOP ' NmbVer > 10000' NmbQad = GmfStatKwdF77(InpMsh, GmfQuadrilaterals) print*, 'NmbQad = ', NmbQad if(NmbQad.gt.10000) STOP ' NmbQad > 10000' c Read the vertices res = GmfGotoKwdF77(InpMsh, GmfVertices) do i = 1, NmbVer res = GmfGetVertex3dr8(InpMsh, VerTab(1,i), VerTab(2,i) +, VerTab(3,i), RefTab(i)) end do c Read the quads res = GmfGotoKwdF77(InpMsh, GmfQuadrilaterals) do i = 1, NmbQad res = GmfGetQuadrilateral(InpMsh, QadTab(i,1), QadTab(i,2) +, QadTab(i,3), QadTab(i,4), QadTab(i,5)) end do c Close the quadrilateral mesh res = GmfCloseMeshF77(InpMsh) c ------------------------ c Create a triangular mesh c ------------------------ OutMsh = GmfOpenMeshf77('tri.mesh', GmfWrite, ver, dim) if(OutMsh.eq.0) STOP ' OutMsh = 0' c Set the number of vertices res = GmfSetKwdF77(OutMsh, GmfVertices, NmbVer, 0 , 0) c Then write them down do i = 1, NmbVer res = GmfSetVertex3dr8(OutMsh, VerTab(1,i), VerTab(2,i) +, VerTab(3,i), RefTab(i)) end do c Build two triangles from each quad res = GmfSetKwdF77(OutMsh, GmfTriangles, 2*NmbQad, 0, 0) do i = 1, NmbQad res = GmfSetTriangle(OutMsh, QadTab(i,1) + , QadTab(i,2), QadTab(i,3), QadTab(i,5)) res = GmfSetTriangle(OutMsh, QadTab(i,1) + , QadTab(i,3), QadTab(i,4), QadTab(i,5)) end do c Don't forget to close the file res = GmfCloseMeshf77(OutMsh) end libMeshb-7.80/legacy_sources/v5/test_sol.c000066400000000000000000000037701456732543400205620ustar00rootroot00000000000000/* Extraction d'un champ de solution en utilisant la libmesh5 */ #include #include int main() { int i, NmbSol, InpSol, OutSol, ver, dim, NmbTyp, SolSiz, TypTab[20], itr; float InpSolTab[100], OutSolTab[100], tim; /* Ouverture du fichier .sol a lire */ if(!(InpSol = GmfOpenMesh("test.sol", GmfRead, &ver, &dim))) return(1); printf("\nInpSol : idx = %d, version = %d, dim = %d\n", InpSol, ver, dim); NmbSol = GmfStatKwd(InpSol, GmfSolAtVertices, &NmbTyp, &SolSiz, TypTab); printf("InpSol : NmbSol = %d, NmbTyp = %d, siz = %d floats\n\n", NmbSol,NmbTyp,SolSiz); if(!(OutSol = GmfOpenMesh("out.sol", GmfWrite, ver, dim))) return(1); printf("OutSol : idx = %d\n\n", OutSol); /* Lecture des infos sur les champs */ for(i=0;i/9-.>0A?@B?ABA@CD?C@EFDEDCEFGBHEKIJKLIKGLJMNJIMPNONMOHPOLGQRHOUSTVSUVUWYTXTSX[YZYXZ[Z\(VW*\Z%] &^_ `ba_  acd e f c-d.9gh>j6ij76j97ki;;i6lk=;=kl=>'#%&$)] ^mgmgnmnhnhh9->.%op%qoq%]sprpor&stsrt&t^q]^tQGHRJuvKJvKvGNwuuJNxwPPwNxPH+yz{y+'{+|}z|zy,}~}|~,~)58828/25:5:3<:30<3 QR AF1W23\4W1(*4\UW[\cd_ac  doq@qA@qAroDDo@FtrFrDFtVzS+zV+V(XS}Sz}X,Z},X*Z,`_`bbabLQ_aRO1!("4*imgjig9jgmknmiknlhkln>hlTUTUYTY[Y[[22W233\!1/"04c-d.e  f{py{%p{'%|yssyp&~|&|s~&)]^eeeff_Q a RBu?BvuBGvwC?uw?xECxCwExHc dILL_LMIIOMMOa9/8<0>`e`e` bffbf6libMeshb-7.80/legacy_sources/v6/libmesh6.c000066400000000000000000001400031456732543400204270ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* LIBMESH V 6.05 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: handle .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: feb 16 2007 */ /* Last modification: jan 18 2016 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include #include #include #include #include #include #include "libmesh6.h" /*----------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------*/ #define Asc 1 #define Bin 2 #define MshFil 4 #define SolFil 8 #define MaxMsh 100 #define InfKwd 1 #define RegKwd 2 #define SolKwd 3 #define CmtKwd 4 #define WrdSiz 4 #define FilStrSiz 64 #define BufSiz 10000 /*----------------------------------------------------------*/ /* Fortran 77 API */ /*----------------------------------------------------------*/ #if defined(F77_NO_UNDER_SCORE) #define call(x) x #else #define call(x) x ## _ #endif #define ARG(a,n) ARG ## n (a) #define ARG1(a) a[0] #define ARG2(a) ARG1(a),a[1] #define ARG3(a) ARG2(a),a[2] #define ARG4(a) ARG3(a),a[3] #define ARG5(a) ARG4(a),a[4] #define ARG6(a) ARG5(a),a[5] #define ARG7(a) ARG6(a),a[6] #define ARG8(a) ARG7(a),a[7] #define ARG9(a) ARG8(a),a[8] #define ARG10(a) ARG9(a),a[9] #define ARG11(a) ARG10(a),a[10] #define ARG12(a) ARG11(a),a[11] #define ARG13(a) ARG12(a),a[12] #define ARG14(a) ARG13(a),a[13] #define ARG15(a) ARG14(a),a[14] #define ARG16(a) ARG15(a),a[15] #define ARG17(a) ARG16(a),a[16] #define ARG18(a) ARG17(a),a[17] #define ARG19(a) ARG18(a),a[18] #define ARG20(a) ARG19(a),a[19] #define TARG(a,b,c,n) TARG ## n (a,b,c) #define TARG1(a,b,c) a[0],b[0],c[0] #define TARG2(a,b,c) TARG1(a,b,c),a[1],b[1],c[1] #define TARG3(a,b,c) TARG2(a,b,c),a[2],b[2],c[2] #define TARG4(a,b,c) TARG3(a,b,c),a[3],b[3],c[3] #define TARG5(a,b,c) TARG4(a,b,c),a[4],b[4],c[4] #define TARG6(a,b,c) TARG5(a,b,c),a[5],b[5],c[5] #define TARG7(a,b,c) TARG6(a,b,c),a[6],b[6],c[6] #define TARG8(a,b,c) TARG7(a,b,c),a[7],b[7],c[7] #define TARG9(a,b,c) TARG8(a,b,c),a[8],b[8],c[8] #define TARG10(a,b,c) TARG9(a,b,c),a[9],b[9],c[9] #define TARG11(a,b,c) TARG10(a,b,c),a[10],b[10],c[10] #define TARG12(a,b,c) TARG11(a,b,c),a[11],b[11],c[11] #define TARG13(a,b,c) TARG12(a,b,c),a[12],b[12],c[12] #define TARG14(a,b,c) TARG13(a,b,c),a[13],b[13],c[13] #define TARG15(a,b,c) TARG14(a,b,c),a[14],b[14],c[14] #define TARG16(a,b,c) TARG15(a,b,c),a[15],b[15],c[15] #define TARG17(a,b,c) TARG16(a,b,c),a[16],b[16],c[16] #define TARG18(a,b,c) TARG17(a,b,c),a[17],b[17],c[17] #define TARG19(a,b,c) TARG18(a,b,c),a[18],b[18],c[18] #define TARG20(a,b,c) TARG19(a,b,c),a[19],b[19],c[19] /*----------------------------------------------------------*/ /* Structures */ /*----------------------------------------------------------*/ typedef struct { int typ, SolSiz, NmbWrd, NmbTyp, TypTab[ GmfMaxTyp ]; long NmbLin; long pos; char fmt[ GmfMaxTyp*9 ]; }KwdSct; typedef struct { int dim, ver, mod, typ, cod; long NexKwdPos, siz, pos; KwdSct KwdTab[ GmfMaxKwd + 1 ]; FILE *hdl; int *IntBuf; float *FltBuf; char *buf; char FilNam[ GmfStrSiz ]; double DblBuf[1000/8]; unsigned char blk[ BufSiz + 1000 ]; }GmfMshSct; /*----------------------------------------------------------*/ /* Global variables */ /*----------------------------------------------------------*/ static jmp_buf GmfEnv; static int GmfIniFlg=0; static GmfMshSct *GmfMshTab[ MaxMsh + 1 ]; const char *GmfKwdFmt[ GmfMaxKwd + 1 ][4] = { {"Reserved", "", "", ""}, {"MeshVersionFormatted", "", "", "i"}, {"Reserved", "", "", ""}, {"Dimension", "", "", "i"}, {"Vertices", "Vertex", "i", "dri"}, {"Edges", "Edge", "i", "iii"}, {"Triangles", "Triangle", "i", "iiii"}, {"Quadrilaterals", "Quadrilateral", "i", "iiiii"}, {"Tetrahedra", "Tetrahedron", "i", "iiiii"}, {"Prisms", "Prism", "i", "iiiiiii"}, {"Hexahedra", "Hexahedron", "i", "iiiiiiiii"}, {"IterationsAll", "IterationAll","","i"}, {"TimesAll", "TimeAll","","r"}, {"Corners", "Corner", "i", "i"}, {"Ridges", "Ridge", "i", "i"}, {"RequiredVertices", "RequiredVertex", "i", "i"}, {"RequiredEdges", "RequiredEdge", "i", "i"}, {"RequiredTriangles", "RequiredTriangle", "i", "i"}, {"RequiredQuadrilaterals", "RequiredQuadrilateral", "i", "i"}, {"TangentAtEdgeVertices", "TangentAtEdgeVertex", "i", "iii"}, {"NormalAtVertices", "NormalAtVertex", "i", "ii"}, {"NormalAtTriangleVertices", "NormalAtTriangleVertex", "i", "iii"}, {"NormalAtQuadrilateralVertices", "NormalAtQuadrilateralVertex", "i", "iiii"}, {"AngleOfCornerBound", "", "", "r"}, {"TrianglesP2", "TriangleP2", "i", "iiiiiii"}, {"EdgesP2", "EdgeP2", "i", "iiii"}, {"SolAtPyramids", "SolAtPyramid", "i", "sr"}, {"QuadrilateralsQ2", "QuadrilateralQ2", "i", "iiiiiiiiii"}, {"ISolAtPyramids", "ISolAtPyramid", "i", "iiiii"}, {"SubDomainFromGeom", "SubDomainFromGeom", "i", "iii"}, {"TetrahedraP2", "TetrahedronP2", "i", "iiiiiiiiiii"}, {"Fault_NearTri", "Fault_NearTri", "i", "i"}, {"Fault_Inter", "Fault_Inter", "i", "i"}, {"HexahedraQ2", "HexahedronQ2", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"ExtraVerticesAtEdges", "ExtraVerticesAtEdge", "i", "in"}, {"ExtraVerticesAtTriangles", "ExtraVerticesAtTriangle", "i", "in"}, {"ExtraVerticesAtQuadrilaterals", "ExtraVerticesAtQuadrilateral", "i", "in"}, {"ExtraVerticesAtTetrahedra", "ExtraVerticesAtTetrahedron", "i", "in"}, {"ExtraVerticesAtPrisms", "ExtraVerticesAtPrism", "i", "in"}, {"ExtraVerticesAtHexahedra", "ExtraVerticesAtHexahedron", "i", "in"}, {"VerticesOnGeometricVertices", "VertexOnGeometricVertex", "i", "iir"}, {"VerticesOnGeometricEdges", "VertexOnGeometricEdge", "i", "iirr"}, {"VerticesOnGeometricTriangles", "VertexOnGeometricTriangle", "i", "iirrr"}, {"VerticesOnGeometricQuadrilaterals", "VertexOnGeometricQuadrilateral", "i", "iirrr"}, {"EdgesOnGeometricEdges", "EdgeOnGeometricEdge", "i", "iir"}, {"Fault_FreeEdge", "Fault_FreeEdge", "i", "i"}, {"Polyhedra", "Polyhedron", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"Polygons", "Polygon", "", "iiiiiiiii"}, {"Fault_Overlap", "Fault_Overlap", "i", "i"}, {"Pyramids", "Pyramid", "i", "iiiiii"}, {"BoundingBox", "", "", "drdr"}, {"Body","i", "drdrdrdr"}, {"PrivateTable", "PrivateTable", "i", "i"}, {"Fault_BadShape", "Fault_BadShape", "i", "i"}, {"End", "", "", ""}, {"TrianglesOnGeometricTriangles", "TriangleOnGeometricTriangle", "i", "iir"}, {"TrianglesOnGeometricQuadrilaterals", "TriangleOnGeometricQuadrilateral", "i", "iir"}, {"QuadrilateralsOnGeometricTriangles", "QuadrilateralOnGeometricTriangle", "i", "iir"}, {"QuadrilateralsOnGeometricQuadrilaterals", "QuadrilateralOnGeometricQuadrilateral", "i", "iir"}, {"Tangents", "Tangent", "i", "dr"}, {"Normals", "Normal", "i", "dr"}, {"TangentAtVertices", "TangentAtVertex", "i", "ii"}, {"SolAtVertices", "SolAtVertex", "i", "sr"}, {"SolAtEdges", "SolAtEdge", "i", "sr"}, {"SolAtTriangles", "SolAtTriangle", "i", "sr"}, {"SolAtQuadrilaterals", "SolAtQuadrilateral", "i", "sr"}, {"SolAtTetrahedra", "SolAtTetrahedron", "i", "sr"}, {"SolAtPrisms", "SolAtPrism", "i", "sr"}, {"SolAtHexahedra", "SolAtHexahedron", "i", "sr"}, {"DSolAtVertices", "DSolAtVertex", "i", "sr"}, {"ISolAtVertices", "ISolAtVertex", "i", "i"}, {"ISolAtEdges", "ISolAtEdge", "i", "ii"}, {"ISolAtTriangles", "ISolAtTriangle", "i", "iii"}, {"ISolAtQuadrilaterals", "ISolAtQuadrilateral", "i", "iiii"}, {"ISolAtTetrahedra", "ISolAtTetrahedron", "i", "iiii"}, {"ISolAtPrisms", "ISolAtPrism", "i", "iiiiii"}, {"ISolAtHexahedra", "ISolAtHexahedron", "i", "iiiiiiii"}, {"Iterations", "","","i"}, {"Time", "","","r"}, {"Fault_SmallTri", "Fault_SmallTri","i","i"}, {"CoarseHexahedra", "CoarseHexahedron", "i", "i"}, {"Comments", "Comment", "i", "c"}, {"PeriodicVertices", "PeriodicVertex", "i", "ii"}, {"PeriodicEdges", "PeriodicEdge", "i", "ii"}, {"PeriodicTriangles", "PeriodicTriangle", "i", "ii"}, {"PeriodicQuadrilaterals", "PeriodicQuadrilateral", "i", "ii"}, {"PrismsP2", "PrismP2", "i", "iiiiiiiiiiiiiiiiiii"}, {"PyramidsP2", "PyramidP2", "i", "iiiiiiiiiiiiiii"}, {"QuadrilateralsQ3", "QuadrilateralQ3", "i", "iiiiiiiiiiiiiiiii"}, {"QuadrilateralsQ4", "QuadrilateralQ4", "i", "iiiiiiiiiiiiiiiiiiiiiiiiii"}, {"TrianglesP3", "TriangleP3", "i", "iiiiiiiiiii"}, {"TrianglesP4", "TriangleP4", "i", "iiiiiiiiiiiiiiii"}, {"EdgesP3", "EdgeP3", "i", "iiiii"}, {"EdgesP4", "EdgeP4", "i", "iiiiii"} }; /*----------------------------------------------------------*/ /* Prototypes of local procedures */ /*----------------------------------------------------------*/ static void ScaWrd(GmfMshSct *, void *); static void ScaDblWrd(GmfMshSct *, void *); static long GetPos(GmfMshSct *); static void RecWrd(GmfMshSct *, const void *); static void RecDblWrd(GmfMshSct *, const void *); static void RecBlk(GmfMshSct *, const void *, int); static void SetPos(GmfMshSct *, long); static int ScaKwdTab(GmfMshSct *); static void ExpFmt(GmfMshSct *, int); static void ScaKwdHdr(GmfMshSct *, int); static void SwpWrd(char *, int); #define safe_fscanf(hdl, format, ptr) \ do { \ if( fscanf(hdl, format, ptr) != 1 ) \ longjmp(GmfEnv, -1); \ } while(0) #define safe_fgets(ptr, siz, hdl) \ do { \ if( fgets(ptr, siz, hdl) == NULL ) \ longjmp(GmfEnv, -1); \ } while(0) /*----------------------------------------------------------*/ /* Open a mesh file in read or write mod */ /*----------------------------------------------------------*/ int GmfOpenMesh(char *FilNam, int mod, ...) { int i, KwdCod, res, *PtrVer, *PtrDim, MshIdx=0; char str[ GmfStrSiz ]; va_list VarArg; GmfMshSct *msh; if(!GmfIniFlg) { for(i=0;i<=MaxMsh;i++) GmfMshTab[i] = NULL; GmfIniFlg = 1; } /*---------------------*/ /* MESH STRUCTURE INIT */ /*---------------------*/ for(i=1;i<=MaxMsh;i++) if(!GmfMshTab[i]) { MshIdx = i; break; } if( !MshIdx || !(msh = calloc(1, sizeof(GmfMshSct))) ) return(0); /* Save the current stack environment for longjmp */ if(setjmp(GmfEnv) != 0) { if(msh->hdl != NULL) fclose(msh->hdl); free(msh); return(0); } /* Copy the FilNam into the structure */ if(strlen(FilNam) + 7 >= GmfStrSiz) longjmp(GmfEnv, -1); strcpy(msh->FilNam, FilNam); /* Store the opening mod (read or write) and guess the filetype (binary or ascii) depending on the extension */ msh->mod = mod; msh->buf = (void *)msh->DblBuf; msh->FltBuf = (void *)msh->DblBuf; msh->IntBuf = (void *)msh->DblBuf; if(strstr(msh->FilNam, ".meshb")) msh->typ |= (Bin | MshFil); else if(strstr(msh->FilNam, ".mesh")) msh->typ |= (Asc | MshFil); else if(strstr(msh->FilNam, ".solb")) msh->typ |= (Bin | SolFil); else if(strstr(msh->FilNam, ".sol")) msh->typ |= (Asc | SolFil); else longjmp(GmfEnv, -1); /* Open the file in the required mod and initialyse the mesh structure */ if(msh->mod == GmfRead) { /*-----------------------*/ /* OPEN FILE FOR READING */ /*-----------------------*/ va_start(VarArg, mod); PtrVer = va_arg(VarArg, int *); PtrDim = va_arg(VarArg, int *); va_end(VarArg); /* Create the name string and open the file */ if(!(msh->hdl = fopen(msh->FilNam, "rb"))) longjmp(GmfEnv, -1); /* Read the endian coding tag, the mesh version and the mesh dimension (mandatory kwd) */ if(msh->typ & Bin) { if( fread(&msh->cod, WrdSiz, 1, msh->hdl) != 1 ) longjmp(GmfEnv, -1); if( (msh->cod != 1) && (msh->cod != 16777216) ) longjmp(GmfEnv, -1); ScaWrd(msh, (unsigned char *)&msh->ver); if( (msh->ver < 1) || (msh->ver > 4) ) longjmp(GmfEnv, -1); if( (msh->ver >= 3) && (sizeof(long) == 4) ) longjmp(GmfEnv, -1); ScaWrd(msh, (unsigned char *)&KwdCod); if(KwdCod != GmfDimension) longjmp(GmfEnv, -1); GetPos(msh); ScaWrd(msh, (unsigned char *)&msh->dim); } else { do { res = fscanf(msh->hdl, "%s", str); }while( (res != EOF) && strcmp(str, "MeshVersionFormatted") ); if(res == EOF) longjmp(GmfEnv, -1); safe_fscanf(msh->hdl, "%d", &msh->ver); if( (msh->ver < 1) || (msh->ver > 4) ) longjmp(GmfEnv, -1); do { res = fscanf(msh->hdl, "%s", str); }while( (res != EOF) && strcmp(str, "Dimension") ); if(res == EOF) longjmp(GmfEnv, -1); safe_fscanf(msh->hdl, "%d", &msh->dim); } if( (msh->dim != 2) && (msh->dim != 3) ) longjmp(GmfEnv, -1); (*PtrVer) = msh->ver; (*PtrDim) = msh->dim; /*------------*/ /* KW READING */ /*------------*/ /* Read the list of kw present in the file */ if(!ScaKwdTab(msh)) return(0); GmfMshTab[ MshIdx ] = msh; return(MshIdx); } else if(msh->mod == GmfWrite) { /*-----------------------*/ /* OPEN FILE FOR WRITING */ /*-----------------------*/ msh->cod = 1; /* Check if the user provided a valid version number and dimension */ va_start(VarArg, mod); msh->ver = va_arg(VarArg, int); msh->dim = va_arg(VarArg, int); va_end(VarArg); if( (msh->ver < 1) || (msh->ver > 4) ) longjmp(GmfEnv, -1); if( (msh->ver >= 3) && (sizeof(long) == 4) ) longjmp(GmfEnv, -1); if( (msh->dim != 2) && (msh->dim != 3) ) longjmp(GmfEnv, -1); /* Create the mesh file */ if(!(msh->hdl = fopen(msh->FilNam, "wb"))) longjmp(GmfEnv, -1); GmfMshTab[ MshIdx ] = msh; /*------------*/ /* KW WRITING */ /*------------*/ /* Write the mesh version and dimension */ if(msh->typ & Asc) { fprintf(msh->hdl, "%s %d\n\n", GmfKwdFmt[ GmfVersionFormatted ][0], msh->ver); fprintf(msh->hdl, "%s %d\n", GmfKwdFmt[ GmfDimension ][0], msh->dim); } else { RecWrd(msh, (unsigned char *)&msh->cod); RecWrd(msh, (unsigned char *)&msh->ver); GmfSetKwd(MshIdx, GmfDimension, 0); RecWrd(msh, (unsigned char *)&msh->dim); } return(MshIdx); } else { free(msh); return(0); } } /*----------------------------------------------------------*/ /* Close a meshfile in the right way */ /*----------------------------------------------------------*/ int GmfCloseMesh(int MshIdx) { int res = 1; GmfMshSct *msh; if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); msh = GmfMshTab[ MshIdx ]; RecBlk(msh, msh->buf, 0); /* In write down the "End" kw in write mode */ if(msh->mod == GmfWrite) { if(msh->typ & Asc) fprintf(msh->hdl, "\n%s\n", GmfKwdFmt[ GmfEnd ][0]); else GmfSetKwd(MshIdx, GmfEnd, 0); } /* Close the file and free the mesh structure */ if(fclose(msh->hdl)) res = 0; free(msh); GmfMshTab[ MshIdx ] = NULL; return(res); } /*----------------------------------------------------------*/ /* Read the number of lines and set the position to this kwd*/ /*----------------------------------------------------------*/ long GmfStatKwd(int MshIdx, int KwdCod, ...) { int i, *PtrNmbTyp, *PtrSolSiz, *TypTab; GmfMshSct *msh; KwdSct *kwd; va_list VarArg; if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); msh = GmfMshTab[ MshIdx ]; if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; if(!kwd->NmbLin) return(0); /* Read further arguments if this kw is a sol */ if(kwd->typ == SolKwd) { va_start(VarArg, KwdCod); PtrNmbTyp = va_arg(VarArg, int *); *PtrNmbTyp = kwd->NmbTyp; PtrSolSiz = va_arg(VarArg, int *); *PtrSolSiz = kwd->SolSiz; TypTab = va_arg(VarArg, int *); for(i=0;iNmbTyp;i++) TypTab[i] = kwd->TypTab[i]; va_end(VarArg); } return(kwd->NmbLin); } /*----------------------------------------------------------*/ /* Set the current file position to a given kwd */ /*----------------------------------------------------------*/ int GmfGotoKwd(int MshIdx, int KwdCod) { GmfMshSct *msh; KwdSct *kwd; if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); msh = GmfMshTab[ MshIdx ]; if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; if(!kwd->NmbLin) return(0); return(fseek(msh->hdl, kwd->pos, SEEK_SET) == 0); } /*----------------------------------------------------------*/ /* Write the kwd and set the number of lines */ /*----------------------------------------------------------*/ long GmfSetKwd(int MshIdx, int KwdCod, ...) { int i, *TypTab; long NmbLin=0, CurPos; va_list VarArg; GmfMshSct *msh; KwdSct *kwd; if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); msh = GmfMshTab[ MshIdx ]; RecBlk(msh, msh->buf, 0); if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; /* Read further arguments if this kw has a header */ if(strlen(GmfKwdFmt[ KwdCod ][2])) { va_start(VarArg, KwdCod); NmbLin = va_arg(VarArg, long); if(!strcmp(GmfKwdFmt[ KwdCod ][3], "sr")) { kwd->NmbTyp = va_arg(VarArg, int); TypTab = va_arg(VarArg, int *); for(i=0;iNmbTyp;i++) kwd->TypTab[i] = TypTab[i]; } va_end(VarArg); } /* Setup the kwd info */ ExpFmt(msh, KwdCod); if(!kwd->typ) return(0); else if(kwd->typ == InfKwd) kwd->NmbLin = 1; else kwd->NmbLin = NmbLin; /* Store the next kwd position in binary file */ if( (msh->typ & Bin) && msh->NexKwdPos ) { CurPos = ftell(msh->hdl); if(fseek(msh->hdl, msh->NexKwdPos, SEEK_SET) != 0) return(0); SetPos(msh, CurPos); if(fseek(msh->hdl, CurPos, SEEK_SET) != 0) return(0); } /* Write the header */ if(msh->typ & Asc) { fprintf(msh->hdl, "\n%s\n", GmfKwdFmt[ KwdCod ][0]); if(kwd->typ != InfKwd) fprintf(msh->hdl, "%ld\n", kwd->NmbLin); /* In case of solution field, write the extended header */ if(kwd->typ == SolKwd) { fprintf(msh->hdl, "%d ", kwd->NmbTyp); for(i=0;iNmbTyp;i++) fprintf(msh->hdl, "%d ", kwd->TypTab[i]); fprintf(msh->hdl, "\n\n"); } } else { RecWrd(msh, (unsigned char *)&KwdCod); msh->NexKwdPos = ftell(msh->hdl); SetPos(msh, 0); if(kwd->typ != InfKwd) { if(msh->ver < 4) { i = (int)kwd->NmbLin; RecWrd(msh, (unsigned char *)&i); } else RecDblWrd(msh, (unsigned char *)&kwd->NmbLin); } /* In case of solution field, write the extended header at once */ if(kwd->typ == SolKwd) { RecWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) RecWrd(msh, (unsigned char *)&kwd->TypTab[i]); } } /* Reset write buffer position */ msh->pos = 0; /* Estimate the total file size and check whether it crosses the 2GB threshold */ msh->siz += kwd->NmbLin * kwd->NmbWrd * WrdSiz; return(kwd->NmbLin); } /*----------------------------------------------------------*/ /* Read a full line from the current kwd */ /*----------------------------------------------------------*/ int GmfGetLin(int MshIdx, int KwdCod, ...) { int i, j; float *FltSolTab; double *DblSolTab; va_list VarArg; GmfMshSct *msh = GmfMshTab[ MshIdx ]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Save the current stack environment for longjmp */ if(setjmp(GmfEnv) != 0) return(0); /* Start decoding the arguments */ va_start(VarArg, KwdCod); switch(kwd->typ) { case InfKwd : case RegKwd : case CmtKwd : { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') if(msh->ver <= 1) safe_fscanf(msh->hdl, "%f", va_arg(VarArg, float *)); else safe_fscanf(msh->hdl, "%lf", va_arg(VarArg, double *)); else if(kwd->fmt[i] == 'i') if(msh->ver <= 3) safe_fscanf(msh->hdl, "%d", va_arg(VarArg, int *)); else safe_fscanf(msh->hdl, "%ld", va_arg(VarArg, long *)); else if(kwd->fmt[i] == 'c') safe_fgets(va_arg(VarArg, char *), WrdSiz * FilStrSiz, msh->hdl); } else { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') if(msh->ver <= 1) ScaWrd(msh, (unsigned char *)va_arg(VarArg, float *)); else ScaDblWrd(msh, (unsigned char *)va_arg(VarArg, double *)); else if(kwd->fmt[i] == 'i') if(msh->ver <= 3) ScaWrd(msh, (unsigned char *)va_arg(VarArg, int *)); else ScaDblWrd(msh, (unsigned char *)va_arg(VarArg, long *)); else if(kwd->fmt[i] == 'c') fread(va_arg(VarArg, char *), WrdSiz, FilStrSiz, msh->hdl); } }break; case SolKwd : { if(msh->ver == 1) { FltSolTab = va_arg(VarArg, float *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) safe_fscanf(msh->hdl, "%f", &FltSolTab[j]); else for(j=0;jSolSiz;j++) ScaWrd(msh, (unsigned char *)&FltSolTab[j]); } else { DblSolTab = va_arg(VarArg, double *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) safe_fscanf(msh->hdl, "%lf", &DblSolTab[j]); else for(j=0;jSolSiz;j++) ScaDblWrd(msh, (unsigned char *)&DblSolTab[j]); } }break; } va_end(VarArg); return(1); } /*----------------------------------------------------------*/ /* Write a full line from the current kwd */ /*----------------------------------------------------------*/ void GmfSetLin(int MshIdx, int KwdCod, ...) { int i, j, pos, *IntBuf; long *LngBuf; float *FltSolTab, *FltBuf; double *DblSolTab, *DblBuf; va_list VarArg; GmfMshSct *msh = GmfMshTab[ MshIdx ]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Start decoding the arguments */ va_start(VarArg, KwdCod); if(kwd->typ != SolKwd) { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(msh->ver <= 1) fprintf(msh->hdl, "%g ", va_arg(VarArg, double)); else fprintf(msh->hdl, "%.15g ", va_arg(VarArg, double)); } else if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) fprintf(msh->hdl, "%d ", va_arg(VarArg, int)); else fprintf(msh->hdl, "%ld ", va_arg(VarArg, long)); } else if(kwd->fmt[i] == 'c') fprintf(msh->hdl, "%s", va_arg(VarArg, char *)); } } else { pos = 0; for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(msh->ver <= 1) { FltBuf = (void *)&msh->buf[ pos ]; *FltBuf = (float)va_arg(VarArg, double); pos += 4; } else { DblBuf = (void *)&msh->buf[ pos ]; *DblBuf = va_arg(VarArg, double); pos += 8; } } else if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) { IntBuf = (void *)&msh->buf[ pos ]; *IntBuf = va_arg(VarArg, int); pos += 4; } else { LngBuf = (void *)&msh->buf[ pos ]; *LngBuf = va_arg(VarArg, long); pos += 8; } } else if(kwd->fmt[i] == 'c') { memset(&msh->buf[ pos ], 0, FilStrSiz * WrdSiz); strncpy(&msh->buf[ pos ], va_arg(VarArg, char *), FilStrSiz * WrdSiz); pos += FilStrSiz; } } RecBlk(msh, msh->buf, kwd->NmbWrd); } } else { if(msh->ver == 1) { FltSolTab = va_arg(VarArg, float *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) fprintf(msh->hdl, "%g ", (double)FltSolTab[j]); else RecBlk(msh, (unsigned char *)FltSolTab, kwd->NmbWrd); } else { DblSolTab = va_arg(VarArg, double *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) fprintf(msh->hdl, "%.15g ", DblSolTab[j]); else RecBlk(msh, (unsigned char *)DblSolTab, kwd->NmbWrd); } } va_end(VarArg); if(msh->typ & Asc) fprintf(msh->hdl, "\n"); } /*----------------------------------------------------------*/ /* Private procedure for transmesh : copy a whole line */ /*----------------------------------------------------------*/ int GmfCpyLin(int InpIdx, int OutIdx, int KwdCod) { char s[ WrdSiz * FilStrSiz ]; double d; float f; int i, a; long l; GmfMshSct *InpMsh = GmfMshTab[ InpIdx ], *OutMsh = GmfMshTab[ OutIdx ]; KwdSct *kwd = &InpMsh->KwdTab[ KwdCod ]; /* Save the current stack environment for longjmp */ if(setjmp(GmfEnv) != 0) return(0); for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(InpMsh->ver == 1) { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%f", &f); else ScaWrd(InpMsh, (unsigned char *)&f); d = (double)f; } else { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%lf", &d); else ScaDblWrd(InpMsh, (unsigned char *)&d); f = (float)d; } if(OutMsh->ver == 1) if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%g ", (double)f); else RecWrd(OutMsh, (unsigned char *)&f); else if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%.15g ", d); else RecDblWrd(OutMsh, (unsigned char *)&d); } else if(kwd->fmt[i] == 'i') { if(InpMsh->ver <= 3) { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%d", &a); else ScaWrd(InpMsh, (unsigned char *)&a); l = (long)a; } else { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%ld", &l); else ScaDblWrd(InpMsh, (unsigned char *)&l); a = (int)l; } if(OutMsh->ver <= 3) { if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%d ", a); else RecWrd(OutMsh, (unsigned char *)&a); } else { if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%ld ", l); else RecDblWrd(OutMsh, (unsigned char *)&l); } } else if(kwd->fmt[i] == 'c') { memset(s, 0, FilStrSiz * WrdSiz); if(InpMsh->typ & Asc) safe_fgets(s, WrdSiz * FilStrSiz, InpMsh->hdl); else fread(s, WrdSiz, FilStrSiz, InpMsh->hdl); if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%s", s); else fwrite(s, WrdSiz, FilStrSiz, OutMsh->hdl); } } if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "\n"); return(1); } /*----------------------------------------------------------*/ /* Bufferized reading of all keyword's lines */ /*----------------------------------------------------------*/ extern int GmfGetBlock(int MshIdx, int KwdCod, ...) { char *UsrDat[ GmfMaxTyp ], *FilBuf=NULL, *FilPos; char *StrTab[5] = { "", "%f", "%lf", "%d", "%ld" }; int b, i, j, LinSiz, *FilPtrI32, *UsrPtrI32, FilTyp[ GmfMaxTyp ], UsrTyp[ GmfMaxTyp ], SizTab[5] = {0,4,8,4,8}; long NmbLin, *FilPtrI64, *UsrPtrI64; float *FilPtrR32, *UsrPtrR32; double *FilPtrR64, *UsrPtrR64; size_t UsrLen[ GmfMaxTyp ]; va_list VarArg; GmfMshSct *msh = GmfMshTab[ MshIdx ]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Save the current stack environment for longjmp */ if(setjmp(GmfEnv) != 0) { if(FilBuf) free(FilBuf); return(0); } /* Check mesh and keyword */ if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); if(!kwd->NmbLin) return(0); /* Make shure it's not a simple information keyword */ if( (kwd->typ != RegKwd) && (kwd->typ != SolKwd) ) return(0); /* Start decoding the arguments */ va_start(VarArg, KwdCod); LinSiz = 0; if(kwd->typ == RegKwd) { for(i=0;iSolSiz;i++) { /* Get the user's data type */ UsrTyp[i] = va_arg(VarArg, int); if(kwd->fmt[i] == 'r') { /* Get the data pointer */ if(UsrTyp[i] == GmfFloat) UsrDat[i] = (char *)va_arg(VarArg, float *); else if(UsrTyp[i] == GmfDouble) UsrDat[i] = (char *)va_arg(VarArg, double *); else return(0); /* Get the file's data type */ if(msh->ver <= 1) FilTyp[i] = GmfFloat; else FilTyp[i] = GmfDouble; } else { /* Get the data pointer */ if(UsrTyp[i] == GmfInt) UsrDat[i] = (char *)va_arg(VarArg, int *); else if(UsrTyp[i] == GmfLong) UsrDat[i] = (char *)va_arg(VarArg, long *); else return(0); /* Get the file's data type */ if(msh->ver <= 3) FilTyp[i] = GmfInt; else FilTyp[i] = GmfLong; } /* Then get the data second adress and compute the stride */ UsrLen[i] = (size_t)(va_arg(VarArg, char *) - UsrDat[i]); LinSiz += SizTab[ FilTyp[i] ]; } } else { /* Get the user's data type */ UsrTyp[0] = va_arg(VarArg, int); /* Get the data pointer */ if(UsrTyp[0] == GmfFloat) UsrDat[0] = (char *)va_arg(VarArg, float *); else if(UsrTyp[0] == GmfDouble) UsrDat[0] = (char *)va_arg(VarArg, double *); else return(0); /* Get the file's data type */ if(msh->ver <= 1) FilTyp[0] = GmfFloat; else FilTyp[0] = GmfDouble; /* Then get the data second adress and compute the stride */ UsrLen[0] = (size_t)(va_arg(VarArg, char *) - UsrDat[0]); for(i=1;iSolSiz;i++) { UsrTyp[i] = UsrTyp[0]; UsrDat[i] = UsrDat[i-1] + SizTab[ UsrTyp[0] ]; UsrLen[i] = UsrLen[0]; FilTyp[i] = FilTyp[0]; } LinSiz = kwd->SolSiz * SizTab[ FilTyp[0] ]; } va_end(VarArg); /* Read the whole kwd data */ if(msh->typ & Asc) { for(i=0;iNmbLin;i++) for(j=0;jSolSiz;j++) { safe_fscanf(msh->hdl, StrTab[ UsrTyp[j] ], UsrDat[j]); UsrDat[j] += UsrLen[j]; } } else { /* Allocate a small buffer and split the main loop into chunks */ if(!(FilBuf = malloc((size_t)(BufSiz * LinSiz)))) return(0); for(b=0;b<=kwd->NmbLin/BufSiz;b++) { if(b == kwd->NmbLin/BufSiz) NmbLin = kwd->NmbLin - b * BufSiz; else NmbLin = BufSiz; /* Read a chunk of data */ if(fread(FilBuf, (size_t)LinSiz, (size_t)NmbLin, msh->hdl) != NmbLin) longjmp(GmfEnv, -1); FilPos = FilBuf; /* Then decode it and store it in the user's data structure */ for(i=0;iSolSiz;j++) { if(msh->cod != 1) SwpWrd(FilPos, SizTab[ FilTyp[j] ]); if(FilTyp[j] == GmfInt) { FilPtrI32 = (int *)FilPos; if(UsrTyp[j] == GmfInt) { UsrPtrI32 = (int *)UsrDat[j]; *UsrPtrI32 = *FilPtrI32; } else { UsrPtrI64 = (long *)UsrDat[j]; *UsrPtrI64 = (long)*FilPtrI32; } } else if(FilTyp[j] == GmfLong) { FilPtrI64 = (long *)FilPos; if(UsrTyp[j] == GmfLong) { UsrPtrI64 = (long *)UsrDat[j]; *UsrPtrI64 = *FilPtrI64; } else { UsrPtrI32 = (int *)UsrDat[j]; *UsrPtrI32 = (int)*FilPtrI64; } } else if(FilTyp[j] == GmfFloat) { FilPtrR32 = (float *)FilPos; if(UsrTyp[j] == GmfFloat) { UsrPtrR32 = (float *)UsrDat[j]; *UsrPtrR32 = *FilPtrR32; } else { UsrPtrR64 = (double *)UsrDat[j]; *UsrPtrR64 = (double)*FilPtrR32; } } else if(FilTyp[j] == GmfDouble) { FilPtrR64 = (double *)FilPos; if(UsrTyp[j] == GmfDouble) { UsrPtrR64 = (double *)UsrDat[j]; *UsrPtrR64 = *FilPtrR64; } else { UsrPtrR32 = (float *)UsrDat[j]; *UsrPtrR32 = (float)*FilPtrR64; } } FilPos += SizTab[ FilTyp[j] ]; UsrDat[j] += UsrLen[j]; } } free(FilBuf); } return(1); } /*----------------------------------------------------------*/ /* Bufferized writing of all keyword's lines */ /*----------------------------------------------------------*/ extern int GmfSetBlock(int MshIdx, int KwdCod, ...) { char *UsrDat[ GmfMaxTyp ], *FilBuf, *FilPos; char *StrTab[5] = { "", "%g", "%.15g", "%d", "%ld" }; int i, j, LinSiz, *FilPtrI32, *UsrPtrI32, FilTyp[ GmfMaxTyp ], UsrTyp[ GmfMaxTyp ]; int SizTab[5] = {0,4,8,4,8}; long NmbLin, b, *FilPtrI64, *UsrPtrI64; float *FilPtrR32, *UsrPtrR32; double *FilPtrR64, *UsrPtrR64; size_t UsrLen[ GmfMaxTyp ]; va_list VarArg; GmfMshSct *msh = GmfMshTab[ MshIdx ]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Check mesh and keyword */ if( (MshIdx < 1) || (MshIdx > MaxMsh) ) return(0); if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); if(!kwd->NmbLin) return(0); if( (kwd->typ != RegKwd) && (kwd->typ != SolKwd) ) return(0); /* Start decoding the arguments */ va_start(VarArg, KwdCod); LinSiz = 0; if(kwd->typ == RegKwd) { for(i=0;iSolSiz;i++) { /* Get the user's data type */ UsrTyp[i] = va_arg(VarArg, int); if(kwd->fmt[i] == 'r') { /* Get the data pointer */ if(UsrTyp[i] == GmfFloat) UsrDat[i] = (char *)va_arg(VarArg, float *); else if(UsrTyp[i] == GmfDouble) UsrDat[i] = (char *)va_arg(VarArg, double *); else return(0); /* Get the file's data type */ if(msh->ver <= 1) FilTyp[i] = GmfFloat; else FilTyp[i] = GmfDouble; } else { /* Get the data pointer */ if(UsrTyp[i] == GmfInt) UsrDat[i] = (char *)va_arg(VarArg, int *); else if(UsrTyp[i] == GmfLong) UsrDat[i] = (char *)va_arg(VarArg, long *); else return(0); /* Get the file's data type */ if(msh->ver <= 3) FilTyp[i] = GmfInt; else FilTyp[i] = GmfLong; } /* Then get the data second adress and compute the stride */ UsrLen[i] = (size_t)(va_arg(VarArg, char *) - UsrDat[i]); LinSiz += SizTab[ FilTyp[i] ]; } } else { /* Get the user's data type */ UsrTyp[0] = va_arg(VarArg, int); /* Get the data pointer */ if(UsrTyp[0] == GmfFloat) UsrDat[0] = (char *)va_arg(VarArg, float *); else if(UsrTyp[0] == GmfDouble) UsrDat[0] = (char *)va_arg(VarArg, double *); else return(0); /* Get the file's data type */ if(msh->ver <= 1) FilTyp[0] = GmfFloat; else FilTyp[0] = GmfDouble; /* Then get the data second adress and compute the stride */ UsrLen[0] = (size_t)(va_arg(VarArg, char *) - UsrDat[0]); for(i=1;iSolSiz;i++) { UsrTyp[i] = UsrTyp[0]; UsrDat[i] = UsrDat[i-1] + SizTab[ UsrTyp[0] ]; UsrLen[i] = UsrLen[0]; FilTyp[i] = FilTyp[0]; } LinSiz = kwd->SolSiz * SizTab[ FilTyp[0] ]; } va_end(VarArg); /* Write the whole kwd data */ if(msh->typ & Asc) { for(i=0;iNmbLin;i++) for(j=0;jSolSiz;j++) { if(UsrTyp[j] == GmfFloat) { UsrPtrR32 = (float *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] ], (double)*UsrPtrR32); } else if(UsrTyp[j] == GmfDouble) { UsrPtrR64 = (double *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] ], *UsrPtrR64); } else if(UsrTyp[j] == GmfInt) { UsrPtrI32 = (int *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] ], *UsrPtrI32); } else if(UsrTyp[j] == GmfLong) { UsrPtrI64 = (long *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] ], *UsrPtrI64); } if(j < kwd->SolSiz -1) fprintf(msh->hdl, " "); else fprintf(msh->hdl, "\n"); UsrDat[j] += UsrLen[j]; } } else { if(!(FilBuf = malloc((size_t)BufSiz * (size_t)LinSiz))) return(0); for(b=0;b<=kwd->NmbLin/BufSiz;b++) { if(b == kwd->NmbLin/BufSiz) NmbLin = kwd->NmbLin - b * BufSiz; else NmbLin = BufSiz; FilPos = FilBuf; for(i=0;iSolSiz;j++) { if(FilTyp[j] == GmfInt) { FilPtrI32 = (int *)FilPos; if(UsrTyp[j] == GmfInt) { UsrPtrI32 = (int *)UsrDat[j]; *FilPtrI32 = *UsrPtrI32; } else { UsrPtrI64 = (long *)UsrDat[j]; *FilPtrI32 = (int)*UsrPtrI64; } } else if(FilTyp[j] == GmfLong) { FilPtrI64 = (long *)FilPos; if(UsrTyp[j] == GmfLong) { UsrPtrI64 = (long *)UsrDat[j]; *FilPtrI64 = *UsrPtrI64; } else { UsrPtrI32 = (int *)UsrDat[j]; *FilPtrI64 = (long)*UsrPtrI32; } } else if(FilTyp[j] == GmfFloat) { FilPtrR32 = (float *)FilPos; if(UsrTyp[j] == GmfFloat) { UsrPtrR32 = (float *)UsrDat[j]; *FilPtrR32 = *UsrPtrR32; } else { UsrPtrR64 = (double *)UsrDat[j]; *FilPtrR32 = (float)*UsrPtrR64; } } else if(FilTyp[j] == GmfDouble) { FilPtrR64 = (double *)FilPos; if(UsrTyp[j] == GmfDouble) { UsrPtrR64 = (double *)UsrDat[j]; *FilPtrR64 = *UsrPtrR64; } else { UsrPtrR32 = (float *)UsrDat[j]; *FilPtrR64 = (double)*UsrPtrR32; } } FilPos += SizTab[ FilTyp[j] ]; UsrDat[j] += UsrLen[j]; } if(fwrite(FilBuf, (size_t)LinSiz, (size_t)NmbLin, msh->hdl) != NmbLin) { free(FilBuf); return(0); } } free(FilBuf); } return(1); } /*----------------------------------------------------------*/ /* Find every kw present in a meshfile */ /*----------------------------------------------------------*/ static int ScaKwdTab(GmfMshSct *msh) { int KwdCod, c; long NexPos, CurPos, EndPos; char str[ GmfStrSiz ]; if(msh->typ & Asc) { /* Scan each string in the file until the end */ while(fscanf(msh->hdl, "%s", str) != EOF) { /* Fast test in order to reject quickly the numeric values */ if(isalpha(str[0])) { /* Search which kwd code this string is associated with, then get its header and save the curent position in file (just before the data) */ for(KwdCod=1; KwdCod<= GmfMaxKwd; KwdCod++) if(!strcmp(str, GmfKwdFmt[ KwdCod ][0])) { ScaKwdHdr(msh, KwdCod); break; } } else if(str[0] == '#') while((c = fgetc(msh->hdl)) != '\n' && c != EOF); } } else { /* Get file size */ CurPos = ftell(msh->hdl); if(fseek(msh->hdl, 0, SEEK_END) != 0) longjmp(GmfEnv, -1); EndPos = ftell(msh->hdl); if(fseek(msh->hdl, CurPos, SEEK_SET) != 0) longjmp(GmfEnv, -1); /* Jump through kwd positions in the file */ do { /* Get the kwd code and the next kwd position */ ScaWrd(msh, (unsigned char *)&KwdCod); NexPos = GetPos(msh); if(NexPos > EndPos) longjmp(GmfEnv, -1); /* Check if this kwd belongs to this mesh version */ if( (KwdCod >= 1) && (KwdCod <= GmfMaxKwd) ) ScaKwdHdr(msh, KwdCod); /* Go to the next kwd */ if(NexPos && (fseek(msh->hdl, NexPos, SEEK_SET) != 0)) longjmp(GmfEnv, -1); }while(NexPos && (KwdCod != GmfEnd)); } return(1); } /*----------------------------------------------------------*/ /* Read and setup the keyword's header */ /*----------------------------------------------------------*/ static void ScaKwdHdr(GmfMshSct *msh, int KwdCod) { int i; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; if(!strcmp("i", GmfKwdFmt[ KwdCod ][2])) if(msh->typ & Asc) safe_fscanf(msh->hdl, "%ld", &kwd->NmbLin); else if(msh->ver <= 3) { ScaWrd(msh, (unsigned char *)&i); kwd->NmbLin = i; } else ScaDblWrd(msh, (unsigned char *)&kwd->NmbLin); else kwd->NmbLin = 1; if(!strcmp("sr", GmfKwdFmt[ KwdCod ][3])) { if(msh->typ & Asc) { safe_fscanf(msh->hdl, "%d", &kwd->NmbTyp); for(i=0;iNmbTyp;i++) safe_fscanf(msh->hdl, "%d", &kwd->TypTab[i]); } else { ScaWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) ScaWrd(msh, (unsigned char *)&kwd->TypTab[i]); } } ExpFmt(msh, KwdCod); kwd->pos = ftell(msh->hdl); } /*----------------------------------------------------------*/ /* Expand the compacted format and compute the line size */ /*----------------------------------------------------------*/ static void ExpFmt(GmfMshSct *msh, int KwdCod) { int i, j, TmpSiz=0, IntWrd, FltWrd; char chr; const char *InpFmt = GmfKwdFmt[ KwdCod ][3]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Set the kwd's type */ if(!strlen(GmfKwdFmt[ KwdCod ][2])) kwd->typ = InfKwd; else if(!strcmp(InpFmt, "sr")) kwd->typ = SolKwd; else kwd->typ = RegKwd; /* Get the solution-field's size */ if(kwd->typ == SolKwd) for(i=0;iNmbTyp;i++) switch(kwd->TypTab[i]) { case GmfSca : TmpSiz += 1; break; case GmfVec : TmpSiz += msh->dim; break; case GmfSymMat : TmpSiz += (msh->dim * (msh->dim+1)) / 2; break; case GmfMat : TmpSiz += msh->dim * msh->dim; break; } /* Scan each character from the format string */ i = kwd->SolSiz = kwd->NmbWrd = 0; while(i < (int)strlen(InpFmt)) { chr = InpFmt[ i++ ]; if(chr == 'd') { chr = InpFmt[i++]; for(j=0;jdim;j++) kwd->fmt[ kwd->SolSiz++ ] = chr; } else if(chr == 's') { chr = InpFmt[i++]; for(j=0;jfmt[ kwd->SolSiz++ ] = chr; } else kwd->fmt[ kwd->SolSiz++ ] = chr; } if(msh->ver <= 1) FltWrd = 1; else FltWrd = 2; if(msh->ver <= 3) IntWrd = 1; else IntWrd = 2; for(i=0;iSolSiz;i++) switch(kwd->fmt[i]) { case 'i' : kwd->NmbWrd += IntWrd; break; case 'c' : kwd->NmbWrd += FilStrSiz; break; case 'r' : kwd->NmbWrd += FltWrd;break; } } /*----------------------------------------------------------*/ /* Read a four bytes word from a mesh file */ /*----------------------------------------------------------*/ static void ScaWrd(GmfMshSct *msh, void *ptr) { if( fread(ptr, WrdSiz, 1, msh->hdl) != 1) longjmp(GmfEnv, -1); if(msh->cod != 1) SwpWrd((char *)ptr, WrdSiz); } /*----------------------------------------------------------*/ /* Read an eight bytes word from a mesh file */ /*----------------------------------------------------------*/ static void ScaDblWrd(GmfMshSct *msh, void *ptr) { if( fread(ptr, WrdSiz, 2, msh->hdl) != 2 ) longjmp(GmfEnv, -1); if(msh->cod != 1) SwpWrd((char *)ptr, 2 * WrdSiz); } /*----------------------------------------------------------*/ /* Read a 4 or 8 bytes position in mesh file */ /*----------------------------------------------------------*/ static long GetPos(GmfMshSct *msh) { int IntVal; long pos; if(msh->ver >= 3) ScaDblWrd(msh, (unsigned char*)&pos); else { ScaWrd(msh, (unsigned char*)&IntVal); pos = (long)IntVal; } return(pos); } /*----------------------------------------------------------*/ /* Write a four bytes word to a mesh file */ /*----------------------------------------------------------*/ static void RecWrd(GmfMshSct *msh, const void *wrd) { fwrite(wrd, WrdSiz, 1, msh->hdl); } /*----------------------------------------------------------*/ /* Write an eight bytes word to a mesh file */ /*----------------------------------------------------------*/ static void RecDblWrd(GmfMshSct *msh, const void *wrd) { fwrite(wrd, WrdSiz, 2, msh->hdl); } /*----------------------------------------------------------*/ /* Write a block of four bytes word to a mesh file */ /*----------------------------------------------------------*/ static void RecBlk(GmfMshSct *msh, const void *blk, int siz) { /* Copy this line-block into the main mesh buffer */ if(siz) { memcpy(&msh->blk[ msh->pos ], blk, (size_t)(siz * WrdSiz)); msh->pos += siz * WrdSiz; } /* When the buffer is full or this procedure is called with a 0 size, flush the cache on disk */ if( (msh->pos > BufSiz) || (!siz && msh->pos) ) { fwrite(msh->blk, 1, (size_t)msh->pos, msh->hdl); msh->pos = 0; } } /*----------------------------------------------------------*/ /* Write a 4 or 8 bytes position in a mesh file */ /*----------------------------------------------------------*/ static void SetPos(GmfMshSct *msh, long pos) { int IntVal; if(msh->ver >= 3) RecDblWrd(msh, (unsigned char*)&pos); else { IntVal = (int)pos; RecWrd(msh, (unsigned char*)&IntVal); } } /*----------------------------------------------------------*/ /* Endianness conversion */ /*----------------------------------------------------------*/ static void SwpWrd(char *wrd, int siz) { char swp; int i; for(i=0;iKwdTab[ *KwdIdx ]; va_start(ArgLst, KwdIdx); for(i=0;iSolSiz;i++) ArgTab[i] = va_arg(ArgLst, void *); va_end(ArgLst); switch(*KwdIdx) { case GmfVertices : { if(msh->dim == 2) ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,3)); else ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,4)); }break; case GmfEdges : ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,3)); break; case GmfTriangles : ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,4)); break; case GmfQuadrilaterals : ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,5)); break; case GmfTetrahedra : ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,5)); break; case GmfPrisms : ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,7)); break; case GmfCorners : ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,1)); break; case GmfRidges : ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,1)); break; case GmfPyramids : ret = GmfGetLin(*MshIdx, *KwdIdx, ARG(ArgTab,6)); break; } return(ret); } int call(gmfgetblock)(int *MshIdx, int *KwdIdx, ...) { int i, ret = 0; va_list ArgLst; void *ItmOneTab[20], *ItmTwoTab[20]; int ItmTypTab[20]; GmfMshSct *msh = GmfMshTab[ *MshIdx ]; KwdSct *kwd = &msh->KwdTab[ *KwdIdx ]; va_start(ArgLst, KwdIdx); for(i=0;iSolSiz;i++) { ItmTypTab[i] = *va_arg(ArgLst, int *); ItmOneTab[i] = va_arg(ArgLst, void *); ItmTwoTab[i] = va_arg(ArgLst, void *); } va_end(ArgLst); switch(*KwdIdx) { case GmfVertices : { if(msh->dim == 2) ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,3)); else ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,4)); }break; case GmfEdges : ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,3)); break; case GmfTriangles : ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,4)); break; case GmfQuadrilaterals : ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,5)); break; case GmfTetrahedra : ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,5)); break; case GmfPrisms : ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,7)); break; case GmfCorners : ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,1)); break; case GmfRidges : ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,1)); break; case GmfPyramids : ret = GmfGetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,6)); break; } return(ret); } int call(gmfsetblock)(int *MshIdx, int *KwdIdx, ...) { int i, ret = 0; va_list ArgLst; void *ItmOneTab[20], *ItmTwoTab[20]; int ItmTypTab[20]; GmfMshSct *msh = GmfMshTab[ *MshIdx ]; KwdSct *kwd = &msh->KwdTab[ *KwdIdx ]; va_start(ArgLst, KwdIdx); for(i=0;iSolSiz;i++) { ItmTypTab[i] = *va_arg(ArgLst, int *); ItmOneTab[i] = va_arg(ArgLst, void *); ItmTwoTab[i] = va_arg(ArgLst, void *); } va_end(ArgLst); switch(*KwdIdx) { case GmfVertices : { if(msh->dim == 2) ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,3)); else ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,4)); }break; case GmfEdges : ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,3)); break; case GmfTriangles : ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,4)); break; case GmfQuadrilaterals : ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,5)); break; case GmfTetrahedra : ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,5)); break; case GmfPrisms : ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,7)); break; case GmfCorners : ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,1)); break; case GmfRidges : ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,1)); break; case GmfPyramids : ret = GmfSetBlock(*MshIdx, *KwdIdx, TARG(ItmTypTab,ItmOneTab,ItmTwoTab,6)); break; } return(ret); } libMeshb-7.80/legacy_sources/v6/libmesh6.h000066400000000000000000000074351456732543400204470ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* LIBMESH V 6.05 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: handle .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: feb 16 2007 */ /* Last modification: dec 03 2015 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------*/ #define GmfStrSiz 1024 #define GmfMaxTyp 1000 #define GmfMaxKwd GmfLastKeyword - 1 #define GmfMshVer 1 #define GmfRead 1 #define GmfWrite 2 #define GmfSca 1 #define GmfVec 2 #define GmfSymMat 3 #define GmfMat 4 #define GmfFloat 1 #define GmfDouble 2 #define GmfInt 3 #define GmfLong 4 enum GmfKwdCod { GmfReserved1, \ GmfVersionFormatted, \ GmfReserved2, \ GmfDimension, \ GmfVertices, \ GmfEdges, \ GmfTriangles, \ GmfQuadrilaterals, \ GmfTetrahedra, \ GmfPrisms, \ GmfHexahedra, \ GmfIterationsAll, \ GmfTimesAll, \ GmfCorners, \ GmfRidges, \ GmfRequiredVertices, \ GmfRequiredEdges, \ GmfRequiredTriangles, \ GmfRequiredQuadrilaterals, \ GmfTangentAtEdgeVertices, \ GmfNormalAtVertices, \ GmfNormalAtTriangleVertices, \ GmfNormalAtQuadrilateralVertices, \ GmfAngleOfCornerBound, \ GmfTrianglesP2, \ GmfEdgesP2, \ GmfSolAtPyramids, \ GmfQuadrilateralsQ2, \ GmfISolAtPyramids, \ GmfSubDomainFromGeom, \ GmfTetrahedraP2, \ GmfFault_NearTri, \ GmfFault_Inter, \ GmfHexahedraQ2, \ GmfExtraVerticesAtEdges, \ GmfExtraVerticesAtTriangles, \ GmfExtraVerticesAtQuadrilaterals, \ GmfExtraVerticesAtTetrahedra, \ GmfExtraVerticesAtPrisms, \ GmfExtraVerticesAtHexahedra, \ GmfVerticesOnGeometricVertices, \ GmfVerticesOnGeometricEdges, \ GmfVerticesOnGeometricTriangles, \ GmfVerticesOnGeometricQuadrilaterals, \ GmfEdgesOnGeometricEdges, \ GmfFault_FreeEdge, \ GmfPolyhedra, \ GmfPolygons, \ GmfFault_Overlap, \ GmfPyramids, \ GmfBoundingBox, \ GmfBody, \ GmfPrivateTable, \ GmfFault_BadShape, \ GmfEnd, \ GmfTrianglesOnGeometricTriangles, \ GmfTrianglesOnGeometricQuadrilaterals, \ GmfQuadrilateralsOnGeometricTriangles, \ GmfQuadrilateralsOnGeometricQuadrilaterals, \ GmfTangents, \ GmfNormals, \ GmfTangentAtVertices, \ GmfSolAtVertices, \ GmfSolAtEdges, \ GmfSolAtTriangles, \ GmfSolAtQuadrilaterals, \ GmfSolAtTetrahedra, \ GmfSolAtPrisms, \ GmfSolAtHexahedra, \ GmfDSolAtVertices, \ GmfISolAtVertices, \ GmfISolAtEdges, \ GmfISolAtTriangles, \ GmfISolAtQuadrilaterals, \ GmfISolAtTetrahedra, \ GmfISolAtPrisms, \ GmfISolAtHexahedra, \ GmfIterations, \ GmfTime, \ GmfFault_SmallTri, \ GmfCoarseHexahedra, \ GmfComments, \ GmfPeriodicVertices, \ GmfPeriodicEdges, \ GmfPeriodicTriangles, \ GmfPeriodicQuadrilaterals, \ GmfPrismsP2, \ GmfPyramidsP2, \ GmfQuadrilateralsQ3, \ GmfQuadrilateralsQ4, \ GmfTrianglesP3, \ GmfTrianglesP4, \ GmfEdgesP3, \ GmfEdgesP4, \ GmfLastKeyword }; /*----------------------------------------------------------*/ /* External procedures */ /*----------------------------------------------------------*/ extern int GmfOpenMesh(char *, int, ...); extern int GmfCloseMesh(int); extern long GmfStatKwd(int, int, ...); extern int GmfGotoKwd(int, int); extern long GmfSetKwd(int, int, ...); extern int GmfGetLin(int, int, ...); extern void GmfSetLin(int, int, ...); extern int GmfGetBlock(int, int, ...); extern int GmfSetBlock(int, int, ...); /*----------------------------------------------------------*/ /* Transmesh private API */ /*----------------------------------------------------------*/ #ifdef TRANSMESH extern char *GmfKwdFmt[ GmfMaxKwd + 1 ][4]; extern int GmfCpyLin(int, int, int); #endif libMeshb-7.80/legacy_sources/v6/libmesh6.ins000066400000000000000000000154021456732543400210020ustar00rootroot00000000000000 external GmfOpenMesh external GmfCloseMesh external GmfStatKwd external GmfSetKwd external GmfGotoKwd external GmfGetLin external GmfGetBlock external GmfSetBlock integer GmfOpenMesh integer GmfCloseMesh integer GmfStatKwd integer GmfSetKwd integer GmfGotoKwd integer GmfGetLin integer GmfGetBlock integer GmfSetBlock integer GmfMaxTyp integer GmfMaxKwd integer GmfRead integer GmfWrite integer GmfSca integer GmfVec integer GmfSymMat integer GmfMat integer GmfFloat integer GmfDouble integer GmfInt integer GmfLong parameter (GmfMaxTyp=1000) parameter (GmfMaxKwd=81) parameter (GmfRead=1) parameter (GmfWrite=2) parameter (GmfSca=1) parameter (GmfVec=2) parameter (GmfSymMat=3) parameter (GmfMat=4) parameter (GmfFloat=1) parameter (GmfDouble=2) parameter (GmfInt=3) parameter (GmfLong=4) integer GmfMeshVersionFormatted integer GmfDimension integer GmfVertices integer GmfEdges integer GmfTriangles integer GmfQuadrilaterals integer GmfTetrahedra integer GmfPrisms integer GmfHexahedra integer GmfIterationsAll integer GmfTimesAll integer GmfCorners integer GmfRidges integer GmfRequiredVertices integer GmfRequiredEdges integer GmfRequiredTriangles integer GmfRequiredQuadrilaterals integer GmfTangentAtEdgeVertices integer GmfNormalAtVertices integer GmfNormalAtTriangleVertices integer GmfNormalAtQuadrilateralVertices integer GmfAngleOfCornerBound integer GmfTrianglesP2 integer GmfEdgesP2 integer GmfSolAtPyramids integer GmfQuadrilateralsQ2 integer GmfISolAtPyramids integer GmfSubDomainFromGeom integer GmfTetrahedraP2 integer GmfFault_NearTri integer GmfFault_Inter integer GmfHexahedraQ2 integer GmfExtraVerticesAtEdges integer GmfExtraVerticesAtTriangles integer GmfExtraVerticesAtQuadrilaterals integer GmfExtraVerticesAtTetrahedra integer GmfExtraVerticesAtPrisms integer GmfExtraVerticesAtHexahedra integer GmfVerticesOnGeometricVertices integer GmfVerticesOnGeometricEdges integer GmfVerticesOnGeometricTriangles integer GmfVerticesOnGeometricQuadrilaterals integer GmfEdgesOnGeometricEdges integer GmfFault_FreeEdge integer GmfPolyhedra integer GmfPolygons integer GmfFault_Overlap integer GmfPyramids integer GmfBoundingBox integer GmfBody integer GmfPrivateTable integer GmfFault_BadShape integer GmfEnd integer GmfTrianglesOnGeometricTriangles integer GmfTrianglesOnGeometricQuadrilaterals integer GmfQuadrilateralsOnGeometricTriangles integer GmfQuadrilateralsOnGeometricQuadrilaterals integer GmfTangents integer GmfNormals integer GmfTangentAtVertices integer GmfSolAtVertices integer GmfSolAtEdges integer GmfSolAtTriangles integer GmfSolAtQuadrilaterals integer GmfSolAtTetrahedra integer GmfSolAtPrisms integer GmfSolAtHexahedra integer GmfDSolAtVertices integer GmfISolAtVertices integer GmfISolAtEdges integer GmfISolAtTriangles integer GmfISolAtQuadrilaterals integer GmfISolAtTetrahedra integer GmfISolAtPrisms integer GmfISolAtHexahedra integer GmfIterations integer GmfTime integer GmfFault_SmallTri integer GmfCoarseHexahedra integer GmfComments parameter (GmfMeshVersionFormatted=1) parameter (GmfDimension=3) parameter (GmfVertices=4) parameter (GmfEdges=5) parameter (GmfTriangles=6) parameter (GmfQuadrilaterals=7) parameter (GmfTetrahedra=8) parameter (GmfPrisms=9) parameter (GmfHexahedra=10) parameter (GmfIterationsAll=11) parameter (GmfTimesAll=12) parameter (GmfCorners=13) parameter (GmfRidges=14) parameter (GmfRequiredVertices=15) parameter (GmfRequiredEdges=16) parameter (GmfRequiredTriangles=17) parameter (GmfRequiredQuadrilaterals=18) parameter (GmfTangentAtEdgeVertices=19) parameter (GmfNormalAtVertices=20) parameter (GmfNormalAtTriangleVertices=21) parameter (GmfNormalAtQuadrilateralVertices=22) parameter (GmfAngleOfCornerBound=23) parameter (GmfTrianglesP2=24) parameter (GmfEdgesP2=25) parameter (GmfSolAtPyramids=26) parameter (GmfQuadrilateralsQ2=27) parameter (GmfISolAtPyramids=28) parameter (GmfSubDomainFromGeom=29) parameter (GmfTetrahedraP2=30) parameter (GmfFault_NearTri=31) parameter (GmfFault_Inter=32) parameter (GmfHexahedraQ2=33) parameter (GmfExtraVerticesAtEdges=34) parameter (GmfExtraVerticesAtTriangles=35) parameter (GmfExtraVerticesAtQuadrilaterals=36) parameter (GmfExtraVerticesAtTetrahedra=37) parameter (GmfExtraVerticesAtPrisms=38) parameter (GmfExtraVerticesAtHexahedra=39) parameter (GmfVerticesOnGeometricVertices=40) parameter (GmfVerticesOnGeometricEdges=41) parameter (GmfVerticesOnGeometricTriangles=42) parameter (GmfVerticesOnGeometricQuadrilaterals=43) parameter (GmfEdgesOnGeometricEdges=44) parameter (GmfFault_FreeEdge=45) parameter (GmfPolyhedra=46) parameter (GmfPolygons=47) parameter (GmfFault_Overlap=48) parameter (GmfPyramids=49) parameter (GmfBoundingBox=50) parameter (GmfBody=51) parameter (GmfPrivateTable=52) parameter (GmfFault_BadShape=53) parameter (GmfEnd=54) parameter (GmfTrianglesOnGeometricTriangles=55) parameter (GmfTrianglesOnGeometricQuadrilaterals=56) parameter (GmfQuadrilateralsOnGeometricTriangles=57) parameter (GmfQuadrilateralsOnGeometricQuadrilaterals=58) parameter (GmfTangents=59) parameter (GmfNormals=60) parameter (GmfTangentAtVertices=61) parameter (GmfSolAtVertices=62) parameter (GmfSolAtEdges=63) parameter (GmfSolAtTriangles=64) parameter (GmfSolAtQuadrilaterals=65) parameter (GmfSolAtTetrahedra=66) parameter (GmfSolAtPrisms=67) parameter (GmfSolAtHexahedra=68) parameter (GmfDSolAtVertices=69) parameter (GmfISolAtVertices=70) parameter (GmfISolAtEdges=71) parameter (GmfISolAtTriangles=72) parameter (GmfISolAtQuadrilaterals=73) parameter (GmfISolAtTetrahedra=74) parameter (GmfISolAtPrisms=75) parameter (GmfISolAtHexahedra=76) parameter (GmfIterations=77) parameter (GmfTime=78) parameter (GmfFault_SmallTri=79) parameter (GmfCoarseHexahedra=80) parameter (GmfComments=81) libMeshb-7.80/legacy_sources/v6/quad.mesh000066400000000000000000003123041456732543400203670ustar00rootroot00000000000000MeshVersionFormatted 2 Dimension 3 Vertices 1982 0.491814 0.357873 0.793755 0 -0.185247 0.576968 0.795482 0 -0.605974 0.00211274 0.795482 0 -0.189262 -0.575662 0.795483 0 0.489311 -0.355541 0.796345 0 0.18688 0.575248 -0.796345 0 -0.492393 0.35579 -0.794332 0 -0.490535 -0.358348 -0.794332 0 0.189225 -0.577262 -0.794332 0 0.608238 -0.000444233 -0.793755 0 0.793286 0.579422 0.186998 0 0.301117 0.934866 -0.188027 0 -0.304976 0.933315 0.189508 0 -0.795969 0.576124 -0.185778 0 -0.981878 -0.00163909 0.189508 0 -0.793895 -0.57898 -0.185778 0 -0.301858 -0.934328 0.189508 0 0.305315 -0.933953 -0.185778 0 0.795319 -0.575807 0.189508 0 0.98259 0.0017648 -0.185778 0 0.000569249 0.000222193 1 0 0.000590977 0.000154955 -1 0 0.276627 0.850311 0.447715 0 -0.723276 0.525844 0.447616 0 -0.723612 -0.525382 0.447616 0 0.276059 -0.850548 0.447616 0 0.894253 -0.000431273 0.447562 0 -0.276504 0.850312 -0.44779 0 -0.894126 -0.000268137 -0.447815 0 -0.276045 -0.850447 -0.447815 0 0.723521 -0.525337 -0.447815 0 0.723249 0.525857 -0.447643 0 0.256714 -0.149484 0.954763 0 0.524775 0.00459358 0.851228 0 0.220485 0.200032 0.954566 0 0.119822 0.271828 -0.954763 0 0.427252 0.304739 -0.851228 0 0.295951 -0.0322319 -0.954566 0 0.0832626 0.750053 0.655992 0 0.1675 0.499739 0.849826 0 0.420045 0.656133 0.626804 0 -0.687614 0.310969 0.655991 0 -0.423351 0.313193 0.850108 0 -0.493357 0.605724 0.624116 0 -0.508233 -0.557865 0.655991 0 -0.428687 -0.305849 0.850108 0 -0.728533 -0.282031 0.624116 0 0.373505 -0.655741 0.656 0 0.158296 -0.502146 0.850172 0 0.0430982 -0.780028 0.624116 0 0.738017 0.145904 0.658679 0 0.756916 -0.201853 0.621397 0 -0.0832595 0.750045 -0.656002 0 -0.167033 0.499277 -0.85019 0 -0.420046 0.65614 -0.626795 0 -0.739145 0.149499 -0.656608 0 -0.526557 -0.00446402 -0.850128 0 -0.753829 -0.196733 -0.626793 0 -0.370591 -0.656771 -0.656608 0 -0.15847 -0.502165 -0.850128 0 -0.0458414 -0.777727 -0.626793 0 0.510108 -0.555406 -0.656608 0 0.429233 -0.305862 -0.849828 0 0.725492 -0.283925 -0.626801 0 0.682827 0.315755 -0.658681 0 0.493713 0.608207 -0.621396 0 -0.124845 0.269191 0.954857 0 -0.294571 -0.0355551 0.954864 0 -0.0571566 -0.29117 0.954859 0 0.0572024 -0.29117 -0.954856 0 -0.259226 -0.144362 -0.954863 0 -0.217382 0.201984 -0.954856 0 0.689546 0.502211 0.521833 0 0.540126 0.777696 0.321378 0 0.584161 0.811637 -0.0014475 0 0.278426 0.946647 0.16177 0 -0.0033168 0.999989 0.00336067 0 -0.00345595 0.92949 0.368602 0 -0.260374 0.807108 0.529888 0 -0.575197 0.753058 0.319162 0 -0.591381 0.806391 -0.00140495 0 -0.814271 0.557336 0.161773 0 -0.952064 0.30588 0.00335348 0 -0.885066 0.283941 0.368602 0 -0.848066 0.00177962 0.529888 0 -0.893946 -0.314337 0.319162 0 -0.94967 -0.313248 -0.00140496 0 -0.781681 -0.602192 0.161773 0 -0.585113 -0.810945 0.00335348 0 -0.543545 -0.754005 0.368602 0 -0.263759 -0.806009 0.529888 0 0.0227073 -0.947329 0.319162 0 0.00445275 -0.999989 -0.00140495 0 0.331165 -0.929511 0.161773 0 0.590445 -0.807071 0.00335348 0 0.549137 -0.749942 0.368602 0 0.685075 -0.499913 0.529867 0 0.90798 -0.271149 0.319159 0 0.952422 -0.304779 -0.00140495 0 0.986353 0.0277227 0.161775 0 0.950017 0.31218 0.00341563 0 0.880937 0.291644 0.37245 0 -0.689564 0.502267 -0.521757 0 -0.539139 0.779923 -0.317607 0 -0.270809 0.948542 -0.1635 0 0.00359873 0.928207 -0.371794 0 0.260381 0.807158 -0.52981 0 -0.690771 -0.500605 -0.521757 0 -0.908354 -0.271743 -0.317607 0 -0.985802 0.0355612 -0.163502 0 -0.879614 0.291205 -0.375873 0 0.262644 -0.811658 -0.521757 0 -0.0222541 -0.947869 -0.317607 0 -0.33845 -0.926564 -0.163502 0 -0.548768 -0.746576 -0.375873 0 0.853076 -0.00102413 -0.521785 0 0.8946 -0.314072 -0.317607 0 0.776628 -0.608209 -0.163502 0 0.540457 -0.752614 -0.375873 0 0.577849 0.752638 -0.315326 0 0.818421 0.550683 -0.163518 0 0.882785 0.28144 -0.375877 0 0.392326 -0.135659 0.909763 0 0.391632 0.0898775 0.91572 0 0.23644 -0.0163112 0.971459 0 0.23766 0.340354 -0.909763 0 0.369665 0.157483 -0.91572 0 0.181697 0.152172 -0.971459 0 0.0676954 0.648947 0.75781 0 0.283868 0.58442 0.760177 0 0.220029 0.730839 0.646037 0 -0.596269 0.264935 0.757803 0 -0.468053 0.451147 0.759862 0 -0.627088 0.435162 0.645986 0 -0.436225 -0.485216 0.757803 0 -0.573703 -0.305733 0.759862 0 -0.607644 -0.461923 0.645986 0 0.326611 -0.564746 0.757878 0 0.113479 -0.640094 0.759868 0 0.251543 -0.720646 0.645986 0 0.619602 0.108114 0.777438 0 0.663381 -0.106778 0.740615 0 0.764629 0.0136778 0.644258 0 -0.0676997 0.648861 -0.757884 0 -0.283854 0.584424 -0.760179 0 -0.220028 0.73084 -0.646037 0 -0.638177 0.13573 -0.757826 0 -0.643547 -0.0893953 -0.760166 0 -0.763115 0.0163528 -0.645981 0 -0.326294 -0.564999 -0.757825 0 -0.113847 -0.639674 -0.760166 0 -0.251368 -0.720712 -0.645981 0 0.436515 -0.484918 -0.757826 0 0.573191 -0.305925 -0.76017 0 0.607761 -0.461776 -0.645982 0 0.564816 0.276726 -0.777438 0 0.473924 0.476311 -0.740615 0 0.626638 0.438372 -0.644258 0 0.231373 0.364261 0.9021 0 0.0112916 0.380517 0.924698 0 0.0859406 0.218843 0.971923 0 -0.275359 0.33222 0.902115 0 -0.358427 0.128304 0.924692 0 -0.181557 0.149318 0.971933 0 -0.401049 -0.159221 0.902116 0 -0.232777 -0.301239 0.924693 0 -0.198001 -0.126573 0.97195 0 0.0274316 -0.430611 0.902123 0 0.213573 -0.315558 0.924552 0 0.0593613 -0.227845 0.971842 0 0.401284 -0.1587 -0.902103 0 0.232735 -0.301249 -0.9247 0 0.198155 -0.126536 -0.971923 0 -0.0275814 -0.430636 -0.902107 0 -0.214621 -0.314432 -0.924693 0 -0.0591211 -0.227514 -0.971933 0 -0.418081 -0.106841 -0.902107 0 -0.36536 0.106959 -0.924694 0 -0.234582 -0.0139765 -0.971951 0 -0.230866 0.364549 -0.902114 0 -0.0126935 0.380829 -0.924551 0 -0.0858992 0.219223 -0.971842 0 0.531718 0.565509 0.63045 0 0.62895 0.639706 0.441809 0 0.465511 0.720338 0.514117 0 0.607491 0.770122 0.194572 0 0.454521 0.887244 0.078775 0 0.438916 0.856343 0.271902 0 0.19133 0.980128 0.0522926 0 0.00167376 0.984955 0.172796 0 0.176842 0.950765 0.254313 0 -0.141623 0.905416 0.400195 0 -0.103573 0.79814 0.593499 0 0.0411958 0.873057 0.485775 0 -0.354729 0.708207 0.610421 0 -0.44038 0.791302 0.42414 0 -0.543473 0.665457 0.511582 0 -0.545358 0.81538 0.194249 0 -0.703348 0.706465 0.0787834 0 -0.678625 0.682302 0.271725 0 -0.873005 0.484889 0.0523097 0 -0.93623 0.305961 0.172796 0 -0.849584 0.46199 0.254312 0 -0.904866 0.145097 0.400195 0 -0.791082 0.148135 0.593499 0 -0.817597 0.308969 0.485774 0 -0.783162 -0.118519 0.610421 0 -0.888658 -0.174301 0.42414 0 -0.80083 -0.311236 0.511582 0 -0.943997 -0.2667 0.194249 0 -0.889234 -0.450614 0.0787834 0 -0.858614 -0.434568 0.271725 0 -0.730931 -0.680438 0.0523097 0 -0.580297 -0.795861 0.172796 0 -0.701914 -0.66524 0.254312 0 -0.417615 -0.815741 0.400195 0 -0.385343 -0.706588 0.593499 0 -0.546498 -0.682104 0.485774 0 -0.129292 -0.781456 0.610422 0 -0.10884 -0.899025 0.42414 0 0.0485329 -0.857811 0.511582 0 -0.0380643 -0.980209 0.194249 0 0.153771 -0.984959 0.0787834 0 0.147972 -0.950879 0.271725 0 0.421265 -0.905423 0.0523097 0 0.577587 -0.79783 0.172796 0 0.415777 -0.87313 0.254312 0 0.646766 -0.649251 0.400198 0 0.552925 -0.584794 0.593538 0 0.479843 -0.730531 0.485777 0 0.703707 -0.364686 0.609758 0 0.821391 -0.381358 0.424111 0 0.830864 -0.219 0.511484 0 0.920472 -0.339103 0.194249 0 0.98427 -0.158125 0.0787835 0 0.950066 -0.153109 0.271724 0 0.991285 0.120862 0.0523309 0 0.937065 0.30302 0.173449 0 0.958858 0.125619 0.254389 0 0.794739 0.431007 0.427349 0 0.731337 0.31417 0.605335 0 0.842759 0.227723 0.487661 0 -0.53174 0.565539 -0.630405 0 -0.628906 0.640171 -0.441199 0 -0.465484 0.720394 -0.514062 0 -0.603965 0.781339 -0.15729 0 -0.427216 0.899375 -0.0927217 0 -0.435805 0.857792 -0.272355 0 -0.153257 0.987186 -0.0445129 0 -0.00109441 0.978917 -0.204227 0 -0.175616 0.950149 -0.257465 0 0.141372 0.905148 -0.40089 0 0.103593 0.798097 -0.593554 0 -0.0408741 0.873122 -0.485685 0 -0.702176 -0.330954 -0.630405 0 -0.803181 -0.400302 -0.441198 0 -0.828977 -0.220088 -0.514062 0 -0.929733 -0.332958 -0.15729 0 -0.987374 -0.128385 -0.0927217 0 -0.95048 -0.149403 -0.272355 0 -0.986227 0.159305 -0.0445254 0 -0.93117 0.301325 -0.205214 0 -0.957889 0.126579 -0.257563 0 -0.794588 0.430738 -0.4279 0 -0.731349 0.315648 -0.604551 0 -0.842689 0.227853 -0.487721 0 0.0977715 -0.770079 -0.630405 0 0.132513 -0.88757 -0.441198 0 -0.0468515 -0.856416 -0.514062 0 0.0293588 -0.987118 -0.15729 0 -0.183014 -0.978722 -0.0927217 0 -0.151623 -0.950128 -0.272355 0 -0.456269 -0.888729 -0.0445254 0 -0.574325 -0.792481 -0.205214 0 -0.416388 -0.871891 -0.257563 0 -0.655197 -0.622593 -0.4279 0 -0.526198 -0.598014 -0.604551 0 -0.477106 -0.731034 -0.487721 0 0.762577 -0.144985 -0.630435 0 0.885077 -0.148246 -0.441202 0 0.800021 -0.309205 -0.514063 0 0.947878 -0.277114 -0.15729 0 0.874265 -0.476498 -0.0927217 0 0.856772 -0.437808 -0.272355 0 0.704237 -0.70857 -0.0445254 0 0.576218 -0.791105 -0.205214 0 0.700547 -0.665438 -0.257563 0 0.389654 -0.815521 -0.4279 0 0.406141 -0.685241 -0.604551 0 0.547821 -0.679657 -0.487721 0 0.354967 0.708677 -0.609737 0 0.441138 0.791197 -0.423548 0 0.543538 0.665526 -0.511423 0 0.557024 0.815527 -0.156985 0 0.723337 0.684219 -0.0928211 0 0.681215 0.679509 -0.272261 0 0.891464 0.450898 -0.0445717 0 0.930445 0.303556 -0.205214 0 0.84935 0.46063 -0.257561 0 0.895991 0.118616 -0.427942 0 0.776311 0.175686 -0.605362 0 0.815603 0.311092 -0.487778 0 0.140109 -0.105927 0.984464 0 0.143999 0.100239 0.984498 0 0.521606 -0.143864 0.840984 0 0.372042 -0.274472 0.886702 0 0.374802 0.274316 0.885589 0 0.515327 0.184808 0.836827 0 0.0510884 0.16805 -0.984464 0 0.175416 0.00354539 -0.984498 0 0.337427 0.422981 -0.840984 0 0.139658 0.440734 -0.886702 0 0.46446 -0.00162301 -0.885589 0 0.525536 0.153389 -0.836827 0 0.151099 0.810982 0.565241 0 0.347313 0.744978 0.569563 0 0.0234537 0.5377 0.842825 0 -0.0694694 0.680007 0.729902 0 0.450146 0.5091 0.733607 0 0.335363 0.435093 0.835597 0 -0.724603 0.394315 0.565232 0 -0.601375 0.560811 0.569086 0 -0.504126 0.188432 0.842838 0 -0.668193 0.144066 0.729901 0 -0.343675 0.589033 0.731383 0 -0.309909 0.453323 0.835734 0 -0.59893 -0.567289 0.565232 0 -0.719199 -0.398642 0.569086 0 -0.334992 -0.421224 0.842838 0 -0.343498 -0.59097 0.729902 0 -0.666405 -0.144833 0.731383 0 -0.526903 -0.154657 0.835734 0 0.354444 -0.744918 0.565233 0 0.156886 -0.807186 0.569086 0 0.296559 -0.448466 0.843182 0 0.455879 -0.509003 0.730126 0 -0.0681867 -0.678545 0.731383 0 -0.0157373 -0.548905 0.835735 0 0.817984 0.105392 0.56552 0 0.816592 -0.100965 0.568333 0 0.624177 0.269389 0.733365 0 0.627109 -0.27435 0.729011 0 -0.151078 0.81098 -0.565251 0 -0.34731 0.744982 -0.56956 0 -0.0236753 0.537128 -0.843183 0 0.0696302 0.67975 -0.730126 0 -0.45022 0.509081 -0.733574 0 -0.335202 0.434972 -0.835725 0 -0.817865 0.105929 -0.565593 0 -0.815845 -0.100119 -0.569556 0 -0.518618 0.144056 -0.842798 0 -0.626363 0.274649 -0.72954 0 -0.623291 -0.270871 -0.733573 0 -0.517269 -0.18438 -0.835723 0 -0.353478 -0.745102 -0.565593 0 -0.156891 -0.806853 -0.569556 0 -0.297267 -0.448719 -0.842798 0 -0.454764 -0.510835 -0.72954 0 0.065006 -0.676489 -0.733573 0 0.0155109 -0.548928 -0.835723 0 0.599403 -0.566427 -0.565593 0 0.718881 -0.398543 -0.569557 0 0.334936 -0.421377 -0.842784 0 0.345304 -0.590363 -0.72954 0 0.663418 -0.147281 -0.733606 0 0.527056 -0.154876 -0.835597 0 0.723704 0.395523 -0.565537 0 0.601296 0.56166 -0.56833 0 0.663312 0.148941 -0.733366 0 0.346083 0.59056 -0.72901 0 -0.0512894 0.167478 0.984551 0 -0.146528 0.438123 0.886887 0 -0.174867 0.00289383 0.984598 0 -0.46196 -0.00396923 0.886887 0 -0.0564016 -0.165708 0.98457 0 -0.138879 -0.440529 0.886926 0 0.056944 -0.16564 -0.984551 0 0.138729 -0.44071 -0.886859 0 -0.139772 -0.105123 -0.984598 0 -0.376271 -0.268127 -0.886859 0 -0.14303 0.100911 -0.98457 0 -0.371279 0.274997 -0.886859 0 0.439315 0.806606 0.395489 0 0.621151 0.448796 0.642479 0 0.684885 0.676736 0.270099 0 0.753888 0.549761 0.35974 0 0.300562 0.910724 0.283312 0 0.681184 0.72835 0.0743004 0 0.311169 0.950156 -0.0192143 0 0.449914 0.887899 -0.0959622 0 0.122414 0.913354 0.388356 0 0.1213 0.989659 -0.0767251 0 -0.154366 0.951594 0.265769 0 -0.156449 0.982778 0.09832 0 -0.28484 0.871958 0.398221 0 -0.226643 0.703461 0.673626 0 -0.632102 0.666905 0.394594 0 -0.434166 0.859432 0.26994 0 -0.773276 0.567288 0.283284 0 -0.482081 0.872958 0.0746144 0 -0.807303 0.589824 -0.0190137 0 -0.705376 0.702354 -0.0956058 0 -0.830828 0.398664 0.388347 0 -0.90367 0.421323 -0.0767649 0 -0.952721 0.147248 0.265769 0 -0.983023 0.154903 0.0983197 0 -0.917302 -0.0014487 0.398221 0 -0.739068 0.00183061 0.673626 0 -0.829595 -0.39508 0.394594 0 -0.951533 -0.147338 0.26994 0 -0.778479 -0.560127 0.283284 0 -0.979204 -0.188727 0.0746144 0 -0.810427 -0.585525 -0.0190137 0 -0.885951 -0.453813 -0.0956058 0 -0.635892 -0.66697 0.388347 0 -0.679951 -0.729245 -0.0767649 0 -0.434448 -0.86059 0.265769 0 -0.451093 -0.887043 0.0983197 0 -0.282084 -0.872854 0.398221 0 -0.230125 -0.702329 0.673626 0 0.119384 -0.911078 0.394594 0 -0.153913 -0.950491 0.26994 0 0.29215 -0.913466 0.283284 0 -0.1231 -0.989598 0.0746144 0 0.306432 -0.951699 -0.0190137 0 0.157828 -0.982826 -0.0956058 0 0.437825 -0.810874 0.388347 0 0.483437 -0.872021 -0.0767649 0 0.684218 -0.679121 0.265769 0 0.704232 -0.703126 0.0983197 0 0.742966 -0.538004 0.398219 0 0.597282 -0.435382 0.673568 0 0.903384 -0.168017 0.394574 0 0.856409 -0.440098 0.26994 0 0.959037 -0.00443457 0.283284 0 0.903123 -0.422878 0.0746144 0 0.999812 -0.00265669 -0.0190132 0 0.983494 -0.153607 -0.0956058 0 0.906319 0.16559 0.388827 0 0.978732 0.190308 -0.0767594 0 0.855132 0.443026 0.269205 0 0.886223 0.452784 0.0979399 0 -0.438923 0.806934 -0.395252 0 -0.621265 0.448822 -0.64235 0 -0.684883 0.678568 -0.265471 0 -0.754424 0.549225 -0.359433 0 -0.299064 0.911024 -0.283929 0 -0.305041 0.952177 0.0173019 0 -0.122116 0.912952 -0.389392 0 0.152747 0.951339 -0.267608 0 0.284657 0.872198 -0.397826 0 0.2273 0.703306 -0.673567 0 -0.903074 -0.168086 -0.395253 0 -0.618836 -0.452165 -0.64235 0 -0.856997 -0.441673 -0.265471 0 -0.755474 -0.54778 -0.359433 0 -0.958849 -0.00290817 -0.283936 0 -0.999837 0.00412821 0.0173016 0 -0.905848 0.165709 -0.389871 0 -0.855335 0.44089 -0.272045 0 -0.119206 -0.910816 -0.395253 0 0.238803 -0.728275 -0.64235 0 0.15523 -0.951537 -0.265471 0 0.287516 -0.887772 -0.359433 0 -0.293535 -0.912818 -0.283936 0 -0.312893 -0.949626 0.0173016 0 -0.437521 -0.810305 -0.389871 0 -0.683625 -0.677229 -0.272045 0 0.829401 -0.394829 -0.395253 0 0.766319 0.00201622 -0.642477 0 0.952934 -0.146409 -0.265471 0 0.933168 -0.000891708 -0.359434 0 0.777435 -0.561245 -0.283936 0 0.806459 -0.591029 0.0173016 0 0.635445 -0.666505 -0.389871 0 0.432832 -0.859441 -0.272045 0 0.632534 0.666606 -0.394406 0 0.436791 0.859609 -0.265096 0 0.774026 0.56595 -0.283908 0 0.811162 0.584567 0.0169739 0 0.830245 0.398401 -0.389857 0 0.951129 0.146067 -0.272046 0 0.324949 -0.0586432 0.943907 0 0.396508 -0.038851 0.917199 0 0.303846 0.0277655 0.952312 0 0.22842 0.238444 -0.943907 0 0.297945 0.264492 -0.917199 0 0.262137 0.156134 -0.952312 0 0.159881 0.68286 0.712833 0 0.161573 0.623564 0.764881 0 0.247406 0.672226 0.697778 0 -0.600035 0.363087 0.712823 0 -0.543121 0.346418 0.76485 0 -0.56288 0.443163 0.697684 0 -0.530737 -0.458468 0.712823 0 -0.497297 -0.40949 0.76485 0 -0.595413 -0.398386 0.697684 0 0.272021 -0.646433 0.712826 0 0.235764 -0.599483 0.764864 0 0.194894 -0.689378 0.697686 0 0.699023 0.0468839 0.713557 0 0.6436 0.00226604 0.765351 0 0.722287 -0.0357177 0.690663 0 -0.159881 0.682859 -0.712834 0 -0.161573 0.623551 -0.764892 0 -0.247403 0.672229 -0.697776 0 -0.698921 0.058656 -0.712783 0 -0.642993 0.0389067 -0.764871 0 -0.7158 -0.0276624 -0.697751 0 -0.271764 -0.646588 -0.712783 0 -0.235698 -0.5995 -0.764871 0 -0.194886 -0.689314 -0.697751 0 0.530961 -0.458268 -0.712785 0 0.497321 -0.409414 -0.764874 0 0.595353 -0.398353 -0.697755 0 0.593079 0.372945 -0.713557 0 0.522015 0.376465 -0.765351 0 0.563348 0.453446 -0.690663 0 0.145232 0.295338 0.944287 0 0.124656 0.376607 0.917941 0 0.0572624 0.291411 0.954877 0 -0.23632 0.229636 0.944148 0 -0.319774 0.234883 0.917912 0 -0.259517 0.144557 0.954853 0 -0.291421 -0.153793 0.944148 0 -0.322201 -0.231541 0.917913 0 -0.217631 -0.202165 0.954859 0 0.0561815 -0.324684 0.94415 0 0.120369 -0.377981 0.917949 0 0.124781 -0.270072 0.954715 0 0.291086 -0.153571 -0.944288 0 0.322188 -0.231424 -0.917946 0 0.217594 -0.202111 -0.954879 0 -0.0562187 -0.324683 -0.944148 0 -0.12068 -0.377966 -0.917914 0 -0.125006 -0.269475 -0.954854 0 -0.326162 -0.0468629 -0.944149 0 -0.396758 -0.00202375 -0.917914 0 -0.294889 0.0356579 -0.95486 0 -0.145389 0.295701 -0.944149 0 -0.124779 0.376554 -0.917946 0 -0.0577931 0.291839 -0.954715 0 0.515984 0.646574 0.561867 0 0.578655 0.599641 0.552783 0 0.536991 0.689172 0.486492 0 0.519263 0.826381 0.217835 0 0.546124 0.825267 0.143752 0 0.448252 0.873183 0.191344 0 0.16548 0.973771 0.156135 0 0.109229 0.988658 0.102979 0 0.103778 0.969891 0.220304 0 -0.0564479 0.88507 0.462013 0 -0.128181 0.864106 0.486695 0 -0.0204851 0.845669 0.533306 0 -0.457127 0.697205 0.552209 0 -0.39763 0.754535 0.522068 0 -0.498611 0.722804 0.478467 0 -0.625567 0.749182 0.217681 0 -0.616206 0.774355 0.143686 0 -0.691922 0.696158 0.191309 0 -0.874975 0.458293 0.156135 0 -0.906516 0.409397 0.102979 0 -0.890352 0.398411 0.220304 0 -0.859195 0.219817 0.462013 0 -0.861424 0.145116 0.486695 0 -0.810609 0.241844 0.533306 0 -0.804342 -0.219305 0.552209 0 -0.84048 -0.145004 0.522068 0 -0.841507 -0.250848 0.478467 0 -0.905825 -0.363439 0.217681 0 -0.926874 -0.346758 0.143686 0 -0.875901 -0.442933 0.191309 0 -0.706244 -0.69053 0.156135 0 -0.669488 -0.735637 0.102979 0 -0.654046 -0.723659 0.220304 0 -0.474564 -0.749216 0.462013 0 -0.404208 -0.774419 0.486695 0 -0.480499 -0.696202 0.533306 0 -0.0399837 -0.832743 0.552209 0 -0.121816 -0.844153 0.522068 0 -0.021469 -0.877837 0.478467 0 0.0657361 -0.973799 0.217681 0 0.0433666 -0.988663 0.143686 0 0.150586 -0.969905 0.191309 0 0.438492 -0.885064 0.156135 0 0.492749 -0.864045 0.102979 0 0.486129 -0.845657 0.220304 0 0.565899 -0.682856 0.462015 0 0.61161 -0.623726 0.486703 0 0.513645 -0.672111 0.533316 0 0.779449 -0.295765 0.552248 0 0.765221 -0.37681 0.521958 0 0.828207 -0.291806 0.478448 0 0.946452 -0.238402 0.217681 0 0.953676 -0.26427 0.143686 0 0.968968 -0.156502 0.191309 0 0.977244 0.143534 0.156154 0 0.974012 0.201648 0.103054 0 0.954443 0.201049 0.220473 0 0.819481 0.324482 0.472395 0 0.76724 0.377827 0.518244 0 0.798131 0.269577 0.538799 0 -0.515981 0.646592 -0.561849 0 -0.578652 0.599708 -0.552715 0 -0.536956 0.689294 -0.486357 0 -0.511974 0.832656 -0.211093 0 -0.521375 0.844189 -0.124506 0 -0.43729 0.877937 -0.194918 0 -0.154957 0.974619 -0.161554 0 -0.0780013 0.989432 -0.122182 0 -0.101703 0.967386 -0.231971 0 0.0565057 0.884987 -0.462166 0 0.128163 0.864039 -0.486818 0 0.0205263 0.845653 -0.533329 0 -0.774392 -0.290919 -0.561849 0 -0.749169 -0.365011 -0.552715 0 -0.821486 -0.297672 -0.486357 0 -0.950112 -0.229612 -0.211093 0 -0.963985 -0.234988 -0.124506 0 -0.970098 -0.14459 -0.194918 0 -0.974801 0.153802 -0.161565 0 -0.965099 0.231582 -0.122235 0 -0.951383 0.202192 -0.232334 0 -0.819342 0.324698 -0.472487 0 -0.767171 0.378049 -0.518186 0 -0.798097 0.270103 -0.538587 0 0.0373803 -0.82639 -0.561849 0 0.11564 -0.825297 -0.552715 0 0.0292497 -0.873265 -0.486357 0 -0.0752271 -0.974564 -0.211093 0 -0.0744004 -0.989419 -0.124506 0 -0.162264 -0.967299 -0.194918 0 -0.447505 -0.879563 -0.161565 0 -0.518479 -0.846301 -0.122235 0 -0.48629 -0.842338 -0.232334 0 -0.561997 -0.678904 -0.472487 0 -0.596614 -0.612799 -0.518186 0 -0.503508 -0.675569 -0.538587 0 0.797492 -0.219816 -0.561854 0 0.820631 -0.145047 -0.552727 0 0.839563 -0.242035 -0.486359 0 0.903619 -0.372702 -0.211093 0 0.918003 -0.376506 -0.124506 0 0.869814 -0.453234 -0.194918 0 0.698227 -0.697402 -0.161565 0 0.644661 -0.754625 -0.122235 0 0.650839 -0.722786 -0.232334 0 0.472009 -0.744284 -0.472487 0 0.398443 -0.756779 -0.518186 0 0.486911 -0.687627 -0.538587 0 0.45675 0.69743 -0.552236 0 0.397643 0.754657 -0.521883 0 0.498797 0.722842 -0.478216 0 0.63371 0.744277 -0.21085 0 0.641804 0.756701 -0.124417 0 0.699853 0.687186 -0.194864 0 0.87903 0.448551 -0.161565 0 0.916893 0.379938 -0.122236 0 0.888529 0.395635 -0.232334 0 0.853687 0.21895 -0.472518 0 0.842735 0.145269 -0.518346 0 0.804134 0.250974 -0.538861 0 0.133834 -0.0025591 0.990964 0 0.181759 -0.0545586 0.981836 0 0.262833 -0.0833502 0.961219 0 0.213695 -0.0926866 0.971282 0 0.191914 0.0440153 0.980424 0 0.248485 0.0928201 0.964153 0 0.443367 -0.228734 0.86666 0 0.457244 -0.14178 0.877974 0 0.465983 -0.0529018 0.883211 0 0.382662 -0.216383 0.898175 0 0.324234 -0.142831 0.935135 0 0.448114 0.229703 0.863957 0 0.383301 0.208124 0.899854 0 0.295039 0.155256 0.942787 0 0.471167 0.150057 0.869193 0 0.47813 0.0335719 0.877645 0 0.10677 0.0807363 -0.990964 0 0.114978 0.150974 -0.981836 0 0.163644 0.221921 -0.961219 0 0.118403 0.200592 -0.971282 0 0.181133 0.0771953 -0.980424 0 0.255587 0.0709626 -0.964153 0 0.224245 0.445654 -0.86666 0 0.286582 0.383464 -0.877974 0 0.345893 0.316696 -0.883211 0 0.182393 0.399981 -0.898175 0 0.178357 0.306132 -0.935135 0 0.497548 0.0775617 -0.863957 0 0.432429 0.0569227 -0.899854 0 0.329949 0.0478144 -0.942787 0 0.469384 0.155546 -0.869193 0 0.406549 0.253878 -0.877645 0 0.252905 0.786844 0.562889 0 0.193999 0.774859 0.601642 0 0.149355 0.731617 0.665132 0 0.149944 0.764219 0.625404 0 0.286134 0.738699 0.610288 0 0.319947 0.685627 0.653836 0 -0.039811 0.618626 0.784671 0 0.044375 0.595971 0.801786 0 0.12929 0.569392 0.811835 0 -0.011931 0.667944 0.744095 0 0.0763214 0.702042 0.70804 0 0.394549 0.472779 0.78791 0 0.391923 0.537647 0.746529 0 0.365504 0.628153 0.686898 0 0.317454 0.492316 0.810469 0 0.208361 0.53281 0.82018 0 -0.670189 0.483686 0.562871 0 -0.676991 0.423965 0.601625 0 -0.649656 0.36813 0.665129 0 -0.680482 0.378766 0.625399 0 -0.614162 0.500547 0.610129 0 -0.553214 0.516634 0.653448 0 -0.600651 0.153304 0.784671 0 -0.553091 0.226375 0.801784 0 -0.501574 0.298933 0.811827 0 -0.63894 0.195064 0.744093 0 -0.644098 0.289537 0.708035 0 -0.327351 0.522034 0.7876 0 -0.389912 0.54071 0.745369 0 -0.484171 0.543703 0.68554 0 -0.36996 0.45424 0.810437 0 -0.442303 0.362785 0.820214 0 -0.667112 -0.487921 0.562871 0 -0.612416 -0.512844 0.601626 0 -0.550868 -0.504101 0.665129 0 -0.570509 -0.530132 0.625399 0 -0.665835 -0.429425 0.610129 0 -0.662301 -0.366489 0.653448 0 -0.331412 -0.52388 0.784671 0 -0.38621 -0.456067 0.801784 0 -0.439297 -0.38465 0.811827 0 -0.38296 -0.54739 0.744093 0 -0.474403 -0.523102 0.708035 0 -0.59764 -0.150012 0.7876 0 -0.634735 -0.20374 0.745369 0 -0.666709 -0.292461 0.68554 0 -0.546332 -0.211485 0.810437 0 -0.481709 -0.308549 0.820214 0 0.257891 -0.785237 0.562871 0 0.298497 -0.74092 0.601626 0 0.309201 -0.679682 0.66513 0 0.327888 -0.706405 0.6254 0 0.202653 -0.765947 0.610129 0 0.143889 -0.743137 0.653448 0 0.395534 -0.476658 0.785075 0 0.314184 -0.508019 0.802008 0 0.229987 -0.536575 0.811907 0 0.402171 -0.533195 0.744265 0 0.350886 -0.612808 0.708063 0 -0.0420116 -0.614746 0.787601 0 -0.00237692 -0.666627 0.74537 0 0.0721205 -0.724452 0.685541 0 0.0323013 -0.58494 0.810441 0 0.144549 -0.553442 0.820246 0 0.826713 0.00214713 0.562556 0 0.797317 0.0535421 0.601192 0 0.741624 0.0825084 0.665701 0 0.773119 0.0917811 0.625704 0 0.792105 -0.0455753 0.608681 0 0.754007 -0.0963845 0.649715 0 0.569223 0.230541 0.789195 0 0.507844 0.251467 0.823906 0 0.558317 0.154666 0.81509 0 0.520732 0.0945109 0.848485 0 0.56735 0.039608 0.822522 0 0.62529 0.207689 0.752235 0 0.686783 0.13133 0.714898 0 0.578946 -0.2225 0.784414 0 0.510003 -0.2401 0.825958 0 0.639455 -0.210619 0.739395 0 0.717431 -0.160968 0.677772 0 0.588164 -0.128639 0.798454 0 0.582979 -0.0372631 0.811631 0 0.525255 -0.0585771 0.848931 0 -0.252904 0.786844 -0.56289 0 -0.193996 0.774859 -0.601644 0 -0.149355 0.731616 -0.665133 0 -0.149941 0.764219 -0.625405 0 -0.286133 0.7387 -0.610287 0 -0.319947 0.68563 -0.653833 0 0.0398214 0.618113 -0.785075 0 -0.0444174 0.595666 -0.802011 0 -0.129297 0.569271 -0.811919 0 0.0119632 0.667753 -0.744267 0 -0.0763195 0.702015 -0.708067 0 -0.394583 0.47283 -0.787863 0 -0.391945 0.537691 -0.746486 0 -0.365504 0.628164 -0.686889 0 -0.317327 0.492259 -0.810553 0 -0.208203 0.532671 -0.82031 0 -0.82648 0.00256302 -0.562897 0 -0.796881 0.0545695 -0.601679 0 -0.742195 0.0833536 -0.664959 0 -0.773167 0.0926916 -0.625512 0 -0.790974 -0.04392 -0.610272 0 -0.750946 -0.092449 -0.653823 0 -0.576387 0.229035 -0.784419 0 -0.580591 0.141934 -0.801736 0 -0.581483 0.0529859 -0.811831 0 -0.631985 0.216528 -0.744096 0 -0.691373 0.142863 -0.708237 0 -0.571622 -0.229158 -0.787862 0 -0.632494 -0.206611 -0.746483 0 -0.710369 -0.153515 -0.686883 0 -0.566233 -0.149682 -0.810548 0 -0.570989 -0.0333845 -0.820276 0 -0.257834 -0.785237 -0.562897 0 -0.298148 -0.741016 -0.601679 0 -0.308625 -0.680111 -0.664959 0 -0.327077 -0.706682 -0.625512 0 -0.202654 -0.765833 -0.610272 0 -0.144131 -0.742761 -0.653823 0 -0.395939 -0.477401 -0.784419 0 -0.3144 -0.508315 -0.801736 0 -0.230081 -0.536649 -0.811831 0 -0.401225 -0.534143 -0.744096 0 -0.349517 -0.613388 -0.708237 0 0.0413015 -0.614458 -0.787862 0 0.00104775 -0.665384 -0.746483 0 -0.0735144 -0.723039 -0.686883 0 -0.0326201 -0.584774 -0.810548 0 -0.144695 -0.553359 -0.820276 0 0.66713 -0.487866 -0.562897 0 0.612615 -0.512542 -0.60168 0 0.551454 -0.503685 -0.664959 0 0.571022 -0.529445 -0.625512 0 0.665726 -0.42939 -0.610273 0 0.661867 -0.366599 -0.653826 0 0.331683 -0.524085 -0.784419 0 0.386283 -0.456089 -0.801736 0 0.439297 -0.384647 -0.811828 0 0.384015 -0.546647 -0.744097 0 0.475359 -0.521957 -0.708238 0 0.597089 -0.150576 -0.78791 0 0.633097 -0.204594 -0.746528 0 0.664927 -0.293338 -0.686894 0 0.546205 -0.211692 -0.810468 0 0.48175 -0.308578 -0.820179 0 0.670087 0.484192 -0.562556 0 0.676513 0.425333 -0.601195 0 0.648483 0.369165 -0.665701 0 0.679413 0.380174 -0.625706 0 0.614039 0.502459 -0.608681 0 0.553351 0.521171 -0.649715 0 0.596019 0.148069 -0.789195 0 0.558663 0.095062 -0.823906 0 0.542598 0.203043 -0.81509 0 0.476833 0.229618 -0.848485 0 0.482277 0.301436 -0.822522 0 0.627946 0.199512 -0.752235 0 0.632813 0.297433 -0.714898 0 0.337595 0.520302 -0.784414 0 0.271474 0.494017 -0.825958 0 0.393531 0.546256 -0.739395 0 0.4858 0.551921 -0.677772 0 0.400223 0.449785 -0.798454 0 0.449737 0.372813 -0.811631 0 0.390509 0.356127 -0.84893 0 0.0443054 0.126599 0.990928 0 0.0810037 0.0565706 0.995076 0 0.107533 0.155947 0.981901 0 0.193026 0.142619 0.970777 0 0.160545 0.225474 0.960915 0 0.153981 0.174996 0.971237 0 0.016033 0.195236 0.980625 0 -0.0160632 0.261941 0.964923 0 0.357546 0.357457 0.862773 0 0.419479 0.305783 0.854725 0 0.395963 0.406776 0.823231 0 0.294737 0.407873 0.864165 0 0.252512 0.471141 0.845154 0 0.187709 0.446941 0.874647 0 0.318068 0.307832 0.896689 0 0.227486 0.274838 0.93419 0 0.30735 0.236958 0.921633 0 -0.0750626 0.488975 0.869057 0 -0.0706657 0.559056 0.826087 0 -0.0846986 0.42169 0.902757 0 -0.0649824 0.321257 0.944757 0 0.0170373 0.468563 0.883273 0 0.108633 0.454177 0.884263 0 0.106421 0.516844 0.849443 0 -0.106279 0.0812016 0.990979 0 -0.0281915 0.0943865 0.995105 0 -0.11507 0.15027 0.981932 0 -0.0775936 0.226699 0.970872 0 -0.164989 0.222219 0.960921 0 -0.119336 0.200134 0.971256 0 -0.180539 0.0755483 0.980662 0 -0.254035 0.0656711 0.964935 0 -0.2292 0.449959 0.863131 0 -0.159553 0.490725 0.856594 0 -0.263696 0.502251 0.823511 0 -0.296665 0.40596 0.864406 0 -0.369865 0.385319 0.845429 0 -0.366628 0.3152 0.875346 0 -0.196561 0.396935 0.896541 0 -0.192824 0.300002 0.934245 0 -0.134541 0.361722 0.922537 0 -0.488239 0.0797144 0.869056 0 -0.553531 0.105552 0.826087 0 -0.427228 0.0497544 0.902756 0 -0.325604 0.0374669 0.944761 0 -0.440339 0.160899 0.883304 0 -0.398261 0.243212 0.88444 0 -0.458613 0.260754 0.849522 0 -0.109569 -0.0761981 0.991018 0 -0.0979271 0.00213327 0.99516 0 -0.17824 -0.0630843 0.981969 0 -0.239489 -0.00376007 0.970895 0 -0.26232 -0.0882456 0.960923 0 -0.227116 -0.0516783 0.971279 0 -0.127377 -0.148489 0.980676 0 -0.140857 -0.221358 0.964939 0 -0.498763 -0.0789367 0.863131 0 -0.516012 -0.000100958 0.856594 0 -0.559155 -0.0955854 0.823511 0 -0.477765 -0.156697 0.864406 0 -0.480755 -0.232693 0.845429 0 -0.413067 -0.251282 0.875346 0 -0.438248 -0.0642807 0.896542 0 -0.344898 -0.0906821 0.934247 0 -0.385591 -0.0161799 0.922539 0 -0.226687 -0.43971 0.869056 0 -0.271436 -0.493822 0.826087 0 -0.179043 -0.390739 0.902903 0 -0.136203 -0.298098 0.944765 0 -0.289095 -0.369067 0.883304 0 -0.354378 -0.303612 0.88444 0 -0.389711 -0.35559 0.849522 0 0.0392692 -0.128581 0.990886 0 0.0789166 -0.0594678 0.995075 0 -0.0316348 -0.0929685 0.995135 0 0.00532359 -0.189488 0.981874 0 -0.070253 -0.229047 0.97088 0 0.0028993 -0.276783 0.960913 0 -0.02081 -0.232186 0.971228 0 0.102053 -0.167866 0.980514 0 0.166708 -0.203683 0.964712 0 0.195501 -0.139672 0.97071 0 -0.0790512 -0.498757 0.863124 0 -0.159342 -0.490782 0.856601 0 -0.0818812 -0.561328 0.82351 0 0.00137 -0.502799 0.864409 0 0.0727127 -0.529111 0.845444 0 0.111271 -0.470465 0.875374 0 -0.0742657 -0.436652 0.896549 0 -0.0203286 -0.356032 0.93425 0 -0.103677 -0.37167 0.922568 0 0.346279 -0.352586 0.869347 0 0.385049 -0.410098 0.82675 0 0.414961 -0.304464 0.857397 0 0.3149 -0.29973 0.900541 0 0.31647 -0.222084 0.922251 0 0.23958 -0.224839 0.94448 0 0.260748 -0.389218 0.883478 0 0.178869 -0.430772 0.884556 0 0.21751 -0.480372 0.84967 0 0.110256 -0.0763786 -0.990928 0 0.0987846 0.00184614 -0.995076 0 0.178658 -0.0629586 -0.981901 0 0.23999 -0.00192375 -0.970777 0 0.262414 -0.0880466 -0.960915 0 0.227432 -0.0510675 -0.971237 0 0.127724 -0.148527 -0.980626 0 0.140957 -0.221363 -0.964923 0 0.499368 -0.0790284 -0.862773 0 0.519101 -0.000820062 -0.854726 0 0.559437 -0.0963473 -0.823231 0 0.478186 -0.156736 -0.864166 0 0.481214 -0.232739 -0.845155 0 0.414552 -0.251259 -0.87465 0 0.438261 -0.0620863 -0.896689 0 0.345583 -0.0886372 -0.934191 0 0.387931 -0.0110474 -0.921633 0 0.226428 -0.439927 -0.869014 0 0.271198 -0.494258 -0.825905 0 0.179183 -0.391021 -0.902753 0 0.136217 -0.298119 -0.944756 0 0.28908 -0.369169 -0.883267 0 0.354795 -0.303624 -0.884269 0 0.389851 -0.355632 -0.84944 0 -0.0382528 -0.128162 -0.990979 0 0.032671 -0.0929309 -0.995105 0 -0.00476919 -0.189207 -0.981932 0 0.0704685 -0.229015 -0.970872 0 -0.0028629 -0.276757 -0.960921 0 0.0210883 -0.232056 -0.971256 0 -0.101657 -0.167235 -0.980662 0 -0.166929 -0.202437 -0.964936 0 0.0787629 -0.498876 -0.863082 0 0.159038 -0.491147 -0.856448 0 0.0814691 -0.561505 -0.82343 0 -0.00156452 -0.502826 -0.864392 0 -0.0728853 -0.529061 -0.84546 0 -0.111369 -0.470486 -0.87535 0 0.0741188 -0.436737 -0.89652 0 0.0202909 -0.356059 -0.934241 0 0.10367 -0.371765 -0.922531 0 -0.348425 -0.351292 -0.869013 0 -0.386262 -0.410659 -0.825905 0 -0.316517 -0.291246 -0.902751 0 -0.24143 -0.221663 -0.94476 0 -0.26181 -0.388915 -0.883297 0 -0.179306 -0.430818 -0.884445 0 -0.217827 -0.480487 -0.849524 0 -0.133432 -0.00275708 -0.991018 0 -0.0779711 -0.0592855 -0.99516 0 -0.181279 -0.0537281 -0.981969 0 -0.195966 -0.13772 -0.970895 0 -0.264091 -0.0827947 -0.960923 0 -0.214118 -0.0916838 -0.971279 0 -0.190328 0.0452643 -0.980677 0 -0.24406 0.0963018 -0.964939 0 -0.45012 -0.229069 -0.863082 0 -0.417963 -0.303028 -0.856448 0 -0.508847 -0.250996 -0.82343 0 -0.4787 -0.153894 -0.864392 0 -0.52569 -0.0941708 -0.84546 0 -0.481873 -0.0394697 -0.87535 0 -0.392457 -0.20545 -0.89652 0 -0.332357 -0.129321 -0.934243 0 -0.321533 -0.213475 -0.922532 0 -0.441768 0.222817 -0.869013 0 -0.509922 0.240457 -0.825905 0 -0.3748 0.211027 -0.902751 0 -0.285404 0.161149 -0.944759 0 -0.450783 0.128815 -0.883297 0 -0.46514 0.0374003 -0.884445 0 -0.524282 0.0586871 -0.849524 0 -0.0438084 0.127106 -0.990886 0 0.0288906 0.0944965 -0.995075 0 -0.0802385 0.056619 -0.995135 0 -0.107071 0.156429 -0.981874 0 -0.191464 0.144016 -0.97088 0 -0.160343 0.225627 -0.960913 0 -0.15331 0.175613 -0.971228 0 -0.0161068 0.195792 -0.980513 0 0.0151481 0.262771 -0.964712 0 0.0760668 0.22791 -0.97071 0 -0.356955 0.357298 -0.863083 0 -0.417355 0.303864 -0.856448 0 -0.395955 0.406379 -0.823431 0 -0.294302 0.407693 -0.864398 0 -0.252022 0.470826 -0.845475 0 -0.186494 0.446023 -0.875374 0 -0.316682 0.309748 -0.89652 0 -0.225711 0.276123 -0.934241 0 -0.302386 0.239832 -0.922531 0 0.0729003 0.488786 -0.869347 0 0.0704618 0.558102 -0.82675 0 0.156751 0.490225 -0.857397 0 0.0785825 0.42758 -0.900541 0 0.125492 0.365686 -0.922251 0 0.0616684 0.322721 -0.94448 0 -0.017824 0.468149 -0.883478 0 -0.108484 0.453641 -0.884556 0 -0.106372 0.516475 -0.849674 0 0.388312 0.784628 0.483221 0 0.317637 0.794428 0.517618 0 0.404875 0.740627 0.536249 0 0.376302 0.699235 0.607844 0 0.456772 0.679759 0.57381 0 0.412984 0.706372 0.572819 0 0.455367 0.765442 0.454685 0 0.520423 0.742581 0.421526 0 0.524913 0.477658 0.704487 0 0.467086 0.455193 0.758058 0 0.576626 0.508556 0.639442 0 0.623236 0.536791 0.568711 0 0.486206 0.534002 0.691678 0 0.476581 0.613519 0.62966 0 0.431674 0.579806 0.691016 0 0.722768 0.614816 0.315595 0 0.667973 0.665519 0.332972 0 0.581487 0.723006 0.373008 0 0.710137 0.585073 0.391672 0 0.668948 0.553428 0.496207 0 0.366396 0.862841 0.348122 0 0.368977 0.829064 0.420056 0 0.431455 0.83703 0.336515 0 0.49606 0.786762 0.367337 0 0.49981 0.818412 0.283483 0 0.476109 0.814137 0.328851 0 0.370203 0.886852 0.276481 0 0.370109 0.906644 0.202406 0 0.694023 0.695306 0.186744 0 0.726853 0.643282 0.240617 0 0.64665 0.750512 0.136335 0 0.592964 0.80066 0.0856586 0 0.653955 0.717978 0.238374 0 0.574283 0.776505 0.259318 0 0.621711 0.722888 0.301545 0 0.38187 0.92234 -0.0587877 0 0.364396 0.931104 0.0153504 0 0.353939 0.926719 0.126169 0 0.453354 0.89079 -0.0312295 0 0.540326 0.840959 0.0288418 0 0.216864 0.913297 0.344654 0 0.291019 0.887466 0.357282 0 0.236967 0.93073 0.278575 0 0.301195 0.928064 0.219054 0 0.219251 0.955888 0.195391 0 0.252349 0.938485 0.230674 0 0.147953 0.935019 0.322256 0 0.076559 0.95101 0.299449 0 0.235088 0.970513 -0.053202 0 0.308534 0.947814 -0.0804783 0 0.158513 0.987285 -0.0123907 0 0.0806559 0.996285 0.0301698 0 0.260917 0.965286 0.0107881 0 0.235574 0.965768 0.108644 0 0.304545 0.950289 0.0649901 0 -0.156871 0.970646 0.182289 0 -0.0991866 0.967465 0.232697 0 -0.00271868 0.957762 0.287547 0 -0.0980675 0.987139 0.126302 0 0.000217854 0.997946 0.0640371 0 0.145746 0.866202 0.477893 0 0.207386 0.831375 0.515505 0 0.191012 0.888874 0.416361 0 0.08974 0.892133 0.442787 0 0.0608021 0.927805 0.368086 0 0.00276044 0.902183 0.43131 0 0.0506769 0.907494 0.414152 0 0.0953823 0.843363 0.52881 0 0.0450687 0.814427 0.578472 0 0.106646 0.786452 0.60838 0 -0.217642 0.923344 0.316322 0 -0.209501 0.94815 0.239047 0 -0.213238 0.891913 0.398789 0 -0.205656 0.85346 0.478864 0 -0.149686 0.934299 0.323498 0 -0.0714649 0.919789 0.385858 0 -0.0814883 0.947805 0.308296 0 -0.148485 0.693853 0.704636 0 -0.111704 0.644219 0.756655 0 -0.0823977 0.725289 0.683477 0 -0.00399377 0.719246 0.694758 0 0.00412267 0.773515 0.633764 0 -0.181547 0.741376 0.646077 0 -0.20465 0.807597 0.553084 0 -0.626584 0.611745 0.482793 0 -0.657493 0.547606 0.517463 0 -0.579919 0.61412 0.535316 0 -0.548791 0.575004 0.606799 0 -0.504707 0.645395 0.573331 0 -0.544217 0.611708 0.57208 0 -0.588853 0.669353 0.453011 0 -0.549592 0.723525 0.417623 0 -0.284102 0.648887 0.705849 0 -0.286049 0.586319 0.75791 0 -0.212162 0.657993 0.722492 0 -0.27839 0.706999 0.650125 0 -0.242876 0.759309 0.603724 0 -0.302138 0.772126 0.559045 0 -0.352538 0.636911 0.685594 0 -0.432051 0.653711 0.621282 0 -0.416278 0.595469 0.687131 0 -0.367167 0.872523 0.322308 0 -0.294048 0.905226 0.30669 0 -0.431132 0.839896 0.329651 0 -0.516558 0.773875 0.366442 0 -0.356947 0.839066 0.410573 0 -0.333364 0.803803 0.492713 0 -0.272076 0.836759 0.475201 0 -0.707465 0.615102 0.347954 0 -0.674666 0.607074 0.419791 0 -0.6629 0.669081 0.336019 0 -0.596438 0.71449 0.365748 0 -0.623254 0.728902 0.283244 0 -0.627279 0.704634 0.32807 0 -0.729044 0.626165 0.276426 0 -0.747894 0.632174 0.202393 0 -0.447212 0.874572 0.187399 0 -0.388765 0.888744 0.242937 0 -0.514106 0.846801 0.13651 0 -0.578267 0.811334 0.0857058 0 -0.482328 0.843076 0.237812 0 -0.562568 0.78544 0.25808 0 -0.499233 0.813355 0.298732 0 -0.758997 0.648442 -0.0586322 0 -0.772823 0.634413 0.0154448 0 -0.771978 0.623001 0.126173 0 -0.707027 0.706511 -0.0310994 0 -0.632823 0.773755 0.0288733 0 -0.801589 0.488474 0.34464 0 -0.75413 0.551018 0.357218 0 -0.811952 0.512982 0.278566 0 -0.789566 0.573246 0.219048 0 -0.841351 0.503906 0.195391 0 -0.814572 0.530007 0.23067 0 -0.843538 0.429648 0.322252 0 -0.880807 0.36669 0.299449 0 -0.850225 0.523724 -0.0531409 0 -0.805762 0.586809 -0.0801549 0 -0.889932 0.455938 -0.0123812 0 -0.922588 0.384605 0.0301679 0 -0.837322 0.546577 0.0108632 0 -0.845688 0.522506 0.108656 0 -0.809619 0.58336 0.0650321 0 -0.971615 0.150753 0.182289 0 -0.950764 0.204631 0.232697 0 -0.911726 0.293379 0.287547 0 -0.969129 0.211776 0.126302 0 -0.949032 0.308599 0.0640355 0 -0.778775 0.406284 0.477883 0 -0.726614 0.454148 0.51548 0 -0.78636 0.456339 0.416331 0 -0.82074 0.361032 0.442783 0 -0.863607 0.344534 0.368085 0 -0.857174 0.281415 0.43131 0 -0.847419 0.328628 0.414151 0 -0.772613 0.351328 0.528807 0 -0.760639 0.294535 0.578472 0 -0.715006 0.344454 0.608378 0 -0.945408 0.0783391 0.316322 0 -0.966483 0.0937475 0.239047 0 -0.914154 0.0728154 0.398789 0 -0.87524 0.0681429 0.478864 0 -0.934826 0.146355 0.323498 0 -0.896855 0.216263 0.385858 0 -0.926597 0.215388 0.308296 0 -0.705778 0.0731946 0.704636 0 -0.647207 0.0928381 0.756654 0 -0.715254 0.145763 0.683477 0 -0.685278 0.218464 0.694757 0 -0.734383 0.242951 0.633763 0 -0.761191 0.0564363 0.646077 0 -0.831311 0.0549276 0.553083 0 -0.775429 -0.406877 0.482793 0 -0.723981 -0.456094 0.517463 0 -0.763268 -0.361762 0.535316 0 -0.716447 -0.344245 0.606799 0 -0.76977 -0.280567 0.573331 0 -0.749941 -0.328553 0.57208 0 -0.818558 -0.353191 0.453011 0 -0.857946 -0.299111 0.417623 0 -0.704921 -0.0696802 0.705849 0 -0.646017 -0.090866 0.75791 0 -0.69135 0.0015533 0.722492 0 -0.758423 -0.0462899 0.650125 0 -0.797198 0.00365093 0.603724 0 -0.827701 -0.0487508 0.559045 0 -0.714679 -0.138467 0.685594 0 -0.755227 -0.208897 0.621282 0 -0.694962 -0.211893 0.687131 0 -0.943279 -0.0795726 0.322308 0 -0.951788 7.378e-05 0.30669 0 -0.932016 -0.150489 0.329651 0 -0.895624 -0.252135 0.366442 0 -0.908302 -0.080191 0.410573 0 -0.867478 -0.0686593 0.492713 0 -0.879881 -0.000186698 0.475201 0 -0.803616 -0.482762 0.347954 0 -0.785845 -0.454049 0.419791 0 -0.841181 -0.423698 0.336019 0 -0.86383 -0.346456 0.365748 0 -0.885823 -0.367507 0.283244 0 -0.863987 -0.378834 0.32807 0 -0.820805 -0.499866 0.276426 0 -0.832345 -0.515937 0.202393 0 -0.969963 -0.155066 0.187399 0 -0.96538 -0.0951006 0.242937 0 -0.964223 -0.227268 0.13651 0 -0.950318 -0.299248 0.0857058 0 -0.95086 -0.198196 0.237812 0 -0.920841 -0.29232 0.25808 0 -0.927818 -0.223459 0.298732 0 -0.851248 -0.52147 -0.0586322 0 -0.842178 -0.538954 0.0154448 0 -0.831063 -0.541677 0.126173 0 -0.890415 -0.454098 -0.0310994 0 -0.931438 -0.362747 0.0288733 0 -0.712271 -0.61141 0.34464 0 -0.757089 -0.546946 0.357218 0 -0.738782 -0.613692 0.278566 0 -0.789178 -0.573779 0.219048 0 -0.739235 -0.644457 0.195391 0 -0.755784 -0.610923 0.23067 0 -0.669287 -0.669483 0.322252 0 -0.620927 -0.724384 0.299449 0 -0.760825 -0.646772 -0.0531409 0 -0.807083 -0.584991 -0.0801549 0 -0.708627 -0.705483 -0.0123812 0 -0.650876 -0.758584 0.0301679 0 -0.778572 -0.627439 0.0108632 0 -0.758264 -0.642834 0.108656 0 -0.804994 -0.589725 0.0650321 0 -0.44362 -0.877476 0.182289 0 -0.488418 -0.840996 0.232697 0 -0.560759 -0.776444 0.287547 0 -0.500888 -0.856254 0.126302 0 -0.586762 -0.807221 0.0640356 0 -0.627054 -0.615111 0.477883 0 -0.656456 -0.550712 0.51548 0 -0.677002 -0.606856 0.416331 0 -0.596985 -0.669005 0.442783 0 -0.59454 -0.714872 0.368085 0 -0.532523 -0.728259 0.43131 0 -0.57441 -0.704392 0.414151 0 -0.572883 -0.626233 0.528807 0 -0.51517 -0.632395 0.578472 0 -0.548545 -0.573569 0.608378 0 -0.366652 -0.874928 0.316322 0 -0.387819 -0.890211 0.239047 0 -0.351741 -0.846911 0.398789 0 -0.335272 -0.811346 0.478864 0 -0.428069 -0.843847 0.323498 0 -0.482822 -0.786131 0.385858 0 -0.49118 -0.814688 0.308296 0 -0.287709 -0.648616 0.704636 0 -0.288292 -0.586842 0.756655 0 -0.359654 -0.635203 0.683477 0 -0.419534 -0.584229 0.694757 0 -0.457997 -0.623363 0.633763 0 -0.288895 -0.706496 0.646077 0 -0.309128 -0.77365 0.553084 0 0.147343 -0.863209 0.482793 0 0.210049 -0.829488 0.517463 0 0.108194 -0.837702 0.535316 0 0.106002 -0.787759 0.6068 0 0.028963 -0.818794 0.573331 0 0.0807278 -0.814765 0.57208 0 0.0829561 -0.887637 0.453011 0 0.0193518 -0.908385 0.417623 0 -0.151563 -0.691952 0.705849 0 -0.113211 -0.642477 0.75791 0 -0.215115 -0.657033 0.722492 0 -0.190341 -0.735608 0.650125 0 -0.24982 -0.757052 0.603724 0 -0.209409 -0.802256 0.559045 0 -0.0891576 -0.722489 0.685595 0 -0.034705 -0.782816 0.621282 0 -0.0132332 -0.726426 0.687131 0 -0.215811 -0.921701 0.322308 0 -0.294189 -0.905181 0.30669 0 -0.144885 -0.932903 0.329651 0 -0.036968 -0.929703 0.366442 0 -0.204415 -0.888627 0.410573 0 -0.202766 -0.846237 0.492713 0 -0.271721 -0.836874 0.475201 0 0.210803 -0.913465 0.347954 0 0.188987 -0.887692 0.419791 0 0.143021 -0.930941 0.336019 0 0.0625613 -0.928612 0.365748 0 0.0757854 -0.956034 0.283244 0 0.0933063 -0.938766 0.32807 0 0.221758 -0.9351 0.276426 0 0.233477 -0.95104 0.202393 0 -0.152258 -0.970408 0.187399 0 -0.207873 -0.947519 0.242937 0 -0.0818168 -0.98726 0.13651 0 -0.00906227 -0.996279 0.0857058 0 -0.105336 -0.965568 0.237812 0 -0.00654298 -0.966104 0.25808 0 -0.0741899 -0.95146 0.298732 0 0.232897 -0.970728 -0.0586322 0 0.252328 -0.967505 0.0154448 0 0.258353 -0.957775 0.126173 0 0.15672 -0.987159 -0.0310994 0 0.0571628 -0.997945 0.0288733 0 0.361381 -0.866346 0.34464 0 0.286223 -0.88905 0.357218 0 0.355359 -0.892264 0.278566 0 0.301827 -0.927861 0.219048 0 0.384479 -0.902202 0.195391 0 0.347472 -0.907578 0.23067 0 0.429895 -0.843412 0.322252 0 0.497053 -0.814384 0.299449 0 0.380009 -0.923451 -0.0531409 0 0.306957 -0.948354 -0.0801549 0 0.451977 -0.89195 -0.0123812 0 0.520325 -0.853436 0.0301679 0 0.356138 -0.934355 0.0108632 0 0.377055 -0.919799 0.108656 0 0.312105 -0.94783 0.0650321 0 0.697443 -0.693063 0.182289 0 0.648905 -0.724395 0.232697 0 0.565158 -0.773248 0.287547 0 0.659563 -0.74097 0.126302 0 0.586393 -0.807489 0.0640355 0 0.391234 -0.786444 0.477883 0 0.320902 -0.794506 0.51548 0 0.367949 -0.831396 0.416331 0 0.451783 -0.7745 0.442783 0 0.496161 -0.786349 0.368085 0 0.528057 -0.731504 0.43131 0 0.492414 -0.763965 0.414151 0 0.418552 -0.73836 0.528809 0 0.442247 -0.685371 0.578478 0 0.375986 -0.698938 0.60838 0 0.718804 -0.619074 0.316322 0 0.726798 -0.643928 0.239047 0 0.696767 -0.596234 0.39879 0 0.668032 -0.569577 0.478869 0 0.670265 -0.66788 0.323499 0 0.598455 -0.702119 0.38586 0 0.623031 -0.718892 0.308296 0 0.527991 -0.473706 0.704854 0 0.469048 -0.45478 0.757094 0 0.492922 -0.538292 0.683553 0 0.425967 -0.579458 0.694838 0 0.45132 -0.628186 0.633791 0 0.58272 -0.49289 0.646149 0 0.640271 -0.533045 0.553093 0 0.86653 -0.126695 0.482705 0 0.853909 -0.0567902 0.517254 0 0.830294 -0.156176 0.535007 0 0.78278 -0.143983 0.605418 0 0.787782 -0.225571 0.57314 0 0.800138 -0.175464 0.571508 0 0.869842 -0.195437 0.452967 0 0.869903 -0.26233 0.417612 0 0.612183 -0.357087 0.705487 0 0.578682 -0.303559 0.756968 0 0.558749 -0.406704 0.72274 0 0.641216 -0.408046 0.649886 0 0.64291 -0.471425 0.603693 0 0.698338 -0.447074 0.558969 0 0.660717 -0.308709 0.684202 0 0.734864 -0.27588 0.619565 0 0.690119 -0.239254 0.683018 0 0.809901 -0.49007 0.322308 0 0.769969 -0.559506 0.306689 0 0.842472 -0.426079 0.329649 0 0.872776 -0.322466 0.366432 0 0.781971 -0.469016 0.410559 0 0.742177 -0.454365 0.492669 0 0.711954 -0.51703 0.475192 0 0.933902 -0.0818012 0.347946 0 0.902659 -0.0946161 0.419754 0 0.929574 -0.151661 0.336014 0 0.902495 -0.227466 0.365743 0 0.932661 -0.223355 0.283244 0 0.921653 -0.201358 0.328068 0 0.95786 -0.0780606 0.276423 0 0.976641 -0.0718385 0.202393 0 0.875862 -0.444679 0.187399 0 0.836908 -0.490498 0.242937 0 0.913658 -0.382893 0.13651 0 0.944717 -0.316486 0.0857058 0 0.885759 -0.398558 0.237811 0 0.916797 -0.304766 0.258079 0 0.881966 -0.364579 0.298729 0 0.995186 -0.078473 -0.0586322 0 0.998126 -0.0589969 0.015445 0 0.990734 -0.0502609 0.126173 0 0.987274 -0.156 -0.0310994 0 0.966767 -0.254017 0.0288733 0 0.935614 0.0759611 0.344653 0 0.933989 -0.00254736 0.357205 0 0.958401 0.0622371 0.278586 0 0.975717 0.000328091 0.219049 0 0.976855 0.0868654 0.195395 0 0.970532 0.0500069 0.230676 0 0.934912 0.148208 0.322448 0 0.927918 0.221164 0.300009 0 0.995683 0.0760483 -0.05314 0 0.996793 -0.00112396 -0.0801547 0 0.987963 0.154231 -0.0123706 0 0.97245 0.231144 0.0302067 0 0.998677 0.0499766 0.0108676 0 0.991296 0.0743687 0.108666 0 0.997886 0.00393461 0.0650347 0 0.874168 0.449819 0.182991 0 0.888597 0.394091 0.234648 0 0.909127 0.299281 0.289687 0 0.908352 0.398618 0.126538 0 0.949135 0.308244 0.0642128 0 0.868805 0.128496 0.478117 0 0.854836 0.0592524 0.515444 0 0.904385 0.0928441 0.416419 0 0.876038 0.189426 0.443495 0 0.900636 0.228889 0.36942 0 0.858269 0.276809 0.432114 0 0.878359 0.232146 0.415001 0 0.831403 0.167615 0.529788 0 0.788229 0.203023 0.580882 0 0.780672 0.138612 0.60938 0 0.80654 0.500226 0.315053 0 0.835302 0.494855 0.239608 0 0.772033 0.56261 0.295629 0 0.772172 0.503438 0.387699 0 0.723497 0.529267 0.443225 0 0.733166 0.470516 0.490998 0 0.835276 0.437934 0.332427 0 0.845485 0.356565 0.39751 0 0.872941 0.373205 0.314184 0 0.621699 0.351914 0.699741 0 0.56637 0.410827 0.714426 0 0.578263 0.304363 0.756966 0 0.665522 0.292841 0.686508 0 0.680635 0.215484 0.70023 0 0.736842 0.222209 0.638499 0 0.673241 0.388969 0.628858 0 0.711075 0.430755 0.555716 0 0.662538 0.480533 0.574576 0 -0.388297 0.78464 -0.483213 0 -0.317631 0.794432 -0.517617 0 -0.404865 0.740643 -0.536235 0 -0.376301 0.699238 -0.607841 0 -0.456771 0.679763 -0.573806 0 -0.412982 0.706377 -0.572814 0 -0.455271 0.765577 -0.454554 0 -0.520261 0.742952 -0.421073 0 -0.525021 0.477601 -0.704445 0 -0.467286 0.454854 -0.758138 0 -0.576677 0.508562 -0.639391 0 -0.623253 0.536827 -0.568659 0 -0.486256 0.534008 -0.691637 0 -0.476588 0.613538 -0.629636 0 -0.431691 0.579829 -0.690986 0 -0.723002 0.615238 -0.314234 0 -0.667775 0.666763 -0.330872 0 -0.581114 0.724348 -0.37098 0 -0.710346 0.585179 -0.391135 0 -0.668967 0.553562 -0.496033 0 -0.365867 0.863027 -0.348215 0 -0.36881 0.82914 -0.420052 0 -0.430435 0.837569 -0.336478 0 -0.495459 0.787607 -0.366335 0 -0.499863 0.818782 -0.282318 0 -0.475642 0.814672 -0.328193 0 -0.367878 0.88762 -0.277121 0 -0.364276 0.908576 -0.204303 0 -0.699137 0.692023 -0.179731 0 -0.728281 0.642967 -0.237112 0 -0.74214 0.657358 -0.130655 0 -0.666428 0.735748 -0.120664 0 -0.651288 0.757387 -0.0470183 0 -0.592425 0.803118 -0.0634949 0 -0.654205 0.721907 -0.225492 0 -0.571579 0.782628 -0.246552 0 -0.621032 0.726183 -0.294952 0 -0.383414 0.922269 0.0490425 0 -0.405335 0.905253 0.127196 0 -0.35594 0.934255 -0.0210268 0 -0.341771 0.930582 -0.131163 0 -0.458074 0.888921 -0.000707395 0 -0.530865 0.84655 -0.0391559 0 -0.546313 0.837029 0.0305256 0 -0.21658 0.913164 -0.345185 0 -0.29063 0.887506 -0.357498 0 -0.236044 0.930624 -0.279703 0 -0.297872 0.928917 -0.21998 0 -0.217917 0.956251 -0.195108 0 -0.250692 0.938789 -0.231221 0 -0.147417 0.934352 -0.32443 0 -0.07575 0.949336 -0.304911 0 -0.232101 0.97078 0.0608806 0 -0.307672 0.948143 0.0799002 0 -0.213499 0.967826 0.133014 0 -0.155725 0.986947 0.0411914 0 -0.0786776 0.995552 0.0520327 0 -0.060021 0.997955 -0.0219418 0 -0.247086 0.968946 -0.00849674 0 -0.219613 0.969454 -0.109195 0 -0.292863 0.953787 -0.0673956 0 0.146788 0.971849 -0.184263 0 0.203766 0.970876 -0.125849 0 0.099157 0.966128 -0.238192 0 0.00283148 0.954501 -0.298185 0 0.0669554 0.988483 -0.135762 0 -0.00466162 0.996915 -0.078342 0 0.0495046 0.998294 -0.0310657 0 -0.145648 0.866148 -0.478021 0 -0.20735 0.831366 -0.515534 0 -0.190866 0.888766 -0.416658 0 -0.0894461 0.892009 -0.443095 0 -0.0604288 0.927028 -0.370101 0 -0.00198093 0.902419 -0.430822 0 -0.0500512 0.907331 -0.414559 0 -0.0953249 0.843359 -0.528828 0 -0.0450488 0.814422 -0.578481 0 -0.106639 0.786451 -0.608383 0 0.216652 0.923623 -0.316188 0 0.205942 0.948922 -0.239076 0 0.212935 0.891995 -0.398767 0 0.205591 0.853482 -0.478854 0 0.148952 0.933878 -0.32505 0 0.0713798 0.918993 -0.387765 0 0.0812901 0.946299 -0.312939 0 0.148716 0.693582 -0.704854 0 0.112155 0.643624 -0.757094 0 0.0823834 0.725217 -0.683556 0 0.00402131 0.719167 -0.694841 0 -0.00410781 0.77349 -0.633794 0 0.181717 0.74127 -0.64615 0 0.204658 0.807598 -0.55308 0 -0.866227 -0.126829 -0.483213 0 -0.8537 -0.0566122 -0.517618 0 -0.829503 -0.156183 -0.536234 0 -0.781299 -0.141817 -0.607838 0 -0.787643 -0.224357 -0.573806 0 -0.799423 -0.17449 -0.572813 0 -0.868793 -0.196413 -0.454554 0 -0.867359 -0.265213 -0.421073 0 -0.616466 -0.351738 -0.704445 0 -0.576991 -0.303858 -0.758138 0 -0.661875 -0.391298 -0.639391 0 -0.703149 -0.42686 -0.568659 0 -0.658133 -0.297441 -0.691637 0 -0.730783 -0.26367 -0.629635 0 -0.684851 -0.23139 -0.690983 0 -0.808546 -0.497497 -0.314234 0 -0.840483 -0.429051 -0.330872 0 -0.86847 -0.328836 -0.37098 0 -0.776047 -0.494749 -0.391135 0 -0.733191 -0.465165 -0.496033 0 -0.933847 -0.0812723 -0.348215 0 -0.902526 -0.0945477 -0.420053 0 -0.929587 -0.150545 -0.336478 0 -0.902164 -0.227826 -0.366335 0 -0.933175 -0.22238 -0.282318 0 -0.921781 -0.200615 -0.328193 0 -0.957857 -0.0755837 -0.277122 0 -0.976674 -0.0656814 -0.204303 0 -0.874198 -0.451072 -0.179731 0 -0.836549 -0.493949 -0.237112 0 -0.854519 -0.502682 -0.130655 0 -0.905675 -0.406452 -0.120664 0 -0.921576 -0.385366 -0.0470183 0 -0.94688 -0.315253 -0.0634949 0 -0.888735 -0.399104 -0.225492 0 -0.920951 -0.301759 -0.246552 0 -0.88255 -0.366234 -0.294952 0 -0.995611 -0.0796512 0.0490425 0 -0.986202 -0.105758 0.127196 0 -0.99852 -0.0498181 -0.0210269 0 -0.990649 -0.0374778 -0.131163 0 -0.986967 -0.160962 -0.000707397 0 -0.969163 -0.243284 -0.0391559 0 -0.964882 -0.260918 0.0305256 0 -0.935391 0.0761922 -0.345205 0 -0.933876 -0.00216074 -0.357505 0 -0.95801 0.0630821 -0.27973 0 -0.9755 0.00375795 -0.219982 0 -0.976789 0.0882467 -0.195109 0 -0.970308 0.0516777 -0.231228 0 -0.934109 0.148493 -0.32464 0 -0.926063 0.221374 -0.305529 0 -0.99499 0.0792462 0.06088 0 -0.996814 0.00037892 0.0799 0 -0.986432 0.0960248 0.133014 0 -0.986764 0.156882 0.0411886 0 -0.971138 0.23282 0.0520307 0 -0.967657 0.251307 -0.0219477 0 -0.997876 0.0644295 -0.00849958 0 -0.98987 0.0907145 -0.109201 0 -0.997604 0.0162079 -0.0673972 0 -0.878593 0.440092 -0.18543 0 -0.860213 0.49413 -0.125808 0 -0.887615 0.391154 -0.243115 0 -0.905937 0.298164 -0.300616 0 -0.919323 0.36922 -0.136146 0 -0.949545 0.303669 -0.0784061 0 -0.934117 0.355622 -0.0310824 0 -0.868708 0.128578 -0.478271 0 -0.854715 0.0594602 -0.51562 0 -0.904213 0.0929562 -0.41677 0 -0.875832 0.18949 -0.443873 0 -0.899801 0.229057 -0.371346 0 -0.85817 0.276785 -0.432326 0 -0.877999 0.23219 -0.415732 0 -0.831353 0.167871 -0.529785 0 -0.788299 0.203698 -0.580551 0 -0.780793 0.139678 -0.608982 0 -0.807257 0.49912 -0.314972 0 -0.837318 0.491222 -0.240045 0 -0.773043 0.56178 -0.294568 0 -0.772472 0.503034 -0.387626 0 -0.723621 0.529266 -0.443025 0 -0.733169 0.470521 -0.49099 0 -0.835072 0.436895 -0.334302 0 -0.844706 0.356114 -0.399563 0 -0.871529 0.37186 -0.31965 0 -0.622268 0.352864 -0.698756 0 -0.566679 0.410543 -0.714344 0 -0.580673 0.304741 -0.754965 0 -0.664492 0.29983 -0.684489 0 -0.68325 0.222162 -0.695582 0 -0.737581 0.224883 -0.636707 0 -0.673383 0.38943 -0.628421 0 -0.711084 0.430898 -0.555594 0 -0.66257 0.480574 -0.574505 0 -0.147057 -0.863023 -0.483213 0 -0.209966 -0.829411 -0.517618 0 -0.107791 -0.837168 -0.536234 0 -0.106558 -0.786883 -0.607838 0 -0.0300187 -0.818423 -0.573806 0 -0.0810856 -0.814217 -0.572813 0 -0.0816717 -0.886967 -0.454554 0 -0.0157956 -0.906863 -0.421073 0 0.144024 -0.694987 -0.704445 0 0.110686 -0.642649 -0.758138 0 0.167616 -0.750398 -0.639391 0 0.188683 -0.800641 -0.568659 0 0.0795085 -0.717836 -0.691637 0 0.0249405 -0.776495 -0.629635 0 0.00843468 -0.722836 -0.690983 0 0.223293 -0.922708 -0.314234 0 0.148328 -0.931931 -0.330872 0 0.04437 -0.92758 -0.37098 0 0.230722 -0.890951 -0.391135 0 0.21583 -0.84105 -0.496033 0 -0.21128 -0.913255 -0.348215 0 -0.188976 -0.88757 -0.420053 0 -0.144081 -0.930611 -0.336478 0 -0.0621087 -0.928412 -0.366335 0 -0.0768706 -0.956221 -0.282318 0 -0.0940501 -0.938659 -0.328193 0 -0.22411 -0.934333 -0.277122 0 -0.239342 -0.949169 -0.204303 0 0.158853 -0.970801 -0.179731 0 0.211266 -0.948244 -0.237112 0 0.214018 -0.968033 -0.130655 0 0.10669 -0.986949 -0.120664 0 0.081722 -0.995556 -0.0470183 0 0.00722113 -0.997955 -0.0634949 0 0.104936 -0.968567 -0.225492 0 0.0024002 -0.969125 -0.246552 0 0.0755859 -0.952528 -0.294952 0 -0.231908 -0.971496 0.0490425 0 -0.204172 -0.970615 0.127196 0 -0.26118 -0.965044 -0.0210269 0 -0.270484 -0.953745 -0.131163 0 -0.151906 -0.988402 -0.00070739 0 -0.0681112 -0.996908 -0.0391559 0 -0.0500171 -0.998285 0.0305256 0 -0.361515 -0.866065 -0.345205 0 -0.286528 -0.888836 -0.357505 0 -0.356036 -0.891628 -0.27973 0 -0.30502 -0.926594 -0.219982 0 -0.385772 -0.901712 -0.195109 0 -0.34899 -0.906849 -0.231228 0 -0.42988 -0.842503 -0.32464 0 -0.496709 -0.81233 -0.305529 0 -0.382836 -0.921803 0.06088 0 -0.308393 -0.947909 0.0799 0 -0.396149 -0.90848 0.133014 0 -0.45413 -0.889989 0.0411886 0 -0.521523 -0.851662 0.0520308 0 -0.53803 -0.842638 -0.0219477 0 -0.369637 -0.929127 -0.00849958 0 -0.392161 -0.91339 -0.109201 0 -0.323691 -0.94377 -0.0673972 0 -0.690053 -0.699595 -0.18543 0 -0.735766 -0.665416 -0.125808 0 -0.646298 -0.723299 -0.243115 0 -0.563521 -0.76946 -0.300616 0 -0.635235 -0.760233 -0.136146 0 -0.582232 -0.809232 -0.0784061 0 -0.626874 -0.778504 -0.0310824 0 -0.390731 -0.786458 -0.478271 0 -0.320672 -0.794508 -0.51562 0 -0.367824 -0.831232 -0.41677 0 -0.450863 -0.77441 -0.443873 0 -0.4959 -0.784979 -0.371346 0 -0.528427 -0.730637 -0.432326 0 -0.492143 -0.763276 -0.415732 0 -0.416557 -0.738789 -0.529785 0 -0.437326 -0.686771 -0.580551 0 -0.37412 -0.699415 -0.608982 0 -0.724147 -0.613511 -0.314972 0 -0.725926 -0.64454 -0.240045 0 -0.773168 -0.561608 -0.294568 0 -0.717121 -0.579219 -0.387626 0 -0.726973 -0.524652 -0.443025 0 -0.674053 -0.551886 -0.49099 0 -0.673563 -0.659192 -0.334302 0 -0.599713 -0.693317 -0.399563 0 -0.622978 -0.713962 -0.31965 0 -0.527885 -0.482771 -0.698756 0 -0.565563 -0.412078 -0.714344 0 -0.469264 -0.458083 -0.754965 0 -0.490495 -0.539317 -0.684489 0 -0.422425 -0.581158 -0.695582 0 -0.441801 -0.631989 -0.636707 0 -0.578457 -0.520085 -0.628421 0 -0.629545 -0.543126 -0.555594 0 -0.661798 -0.481636 -0.574505 0 0.77534 -0.406548 -0.483213 0 0.723934 -0.455992 -0.517618 0 0.762884 -0.361214 -0.536234 0 0.715441 -0.344502 -0.60784 0 0.76909 -0.281456 -0.573807 0 0.749309 -0.328723 -0.572814 0 0.818317 -0.351762 -0.454554 0 0.857596 -0.295258 -0.421073 0 0.705424 -0.0778977 -0.704487 0 0.645436 -0.0937125 -0.758058 0 0.765427 -0.0725051 -0.639435 0 0.819745 -0.0679689 -0.568681 0 0.707229 -0.146234 -0.691674 0 0.746184 -0.216226 -0.629653 0 0.690037 -0.215339 -0.691013 0 0.946548 -0.0727678 -0.314234 0 0.932154 -0.146914 -0.330873 0 0.895892 -0.244439 -0.370981 0 0.91864 -0.0558881 -0.391137 0 0.866575 -0.0546335 -0.496044 0 0.803268 -0.483151 -0.348215 0 0.785733 -0.454001 -0.420054 0 0.84054 -0.424604 -0.336478 0 0.863779 -0.345964 -0.366335 0 0.885666 -0.368597 -0.282318 0 0.863655 -0.379509 -0.328193 0 0.81935 -0.501866 -0.277122 0 0.828753 -0.520937 -0.204303 0 0.972374 -0.148916 -0.179731 0 0.967118 -0.0920978 -0.237112 0 0.986789 -0.0955952 -0.130655 0 0.971613 -0.203516 -0.120664 0 0.972084 -0.229921 -0.0470183 0 0.951343 -0.301517 -0.0634949 0 0.953589 -0.199503 -0.225492 0 0.922435 -0.297193 -0.246553 0 0.929265 -0.222461 -0.294953 0 0.852284 -0.520766 0.0490425 0 0.860017 -0.494115 0.127196 0 0.837102 -0.546612 -0.0210269 0 0.823481 -0.551969 -0.131163 0 0.893084 -0.449904 -0.000707404 0 0.927068 -0.372839 -0.0391559 0 0.933969 -0.356056 0.0305256 0 0.711962 -0.61145 -0.345205 0 0.756791 -0.54717 -0.357505 0 0.737968 -0.614139 -0.27973 0 0.786987 -0.576425 -0.219982 0 0.738369 -0.645535 -0.195109 0 0.75462 -0.612141 -0.231228 0 0.668428 -0.669188 -0.32464 0 0.61908 -0.723422 -0.305529 0 0.758384 -0.648952 0.06088 0 0.806217 -0.586219 0.0799 0 0.741599 -0.657496 0.133014 0 0.706096 -0.706925 0.0411886 0 0.648819 -0.759175 0.0520307 0 0.635136 -0.772086 -0.0219477 0 0.769428 -0.638661 -0.00849958 0 0.747501 -0.65522 -0.109201 0 0.797552 -0.59949 -0.0673972 0 0.452116 -0.872466 -0.18543 0 0.405484 -0.90538 -0.125808 0 0.488181 -0.838178 -0.243115 0 0.557662 -0.773716 -0.300616 0 0.526726 -0.83907 -0.136146 0 0.589706 -0.803802 -0.0784061 0 0.546687 -0.836764 -0.0310824 0 0.627223 -0.614636 -0.478271 0 0.656529 -0.550493 -0.51562 0 0.676885 -0.606686 -0.41677 0 0.597183 -0.668102 -0.443873 0 0.593317 -0.714201 -0.371346 0 0.531584 -0.728344 -0.432326 0 0.573838 -0.703921 -0.415732 0 0.573907 -0.624468 -0.529785 0 0.518017 -0.628146 -0.580551 0 0.549574 -0.57194 -0.608982 0 0.35971 -0.87829 -0.314972 0 0.388671 -0.88957 -0.240045 0 0.295199 -0.908873 -0.294568 0 0.329267 -0.861011 -0.387626 0 0.274326 -0.853519 -0.443025 0 0.316581 -0.811605 -0.49099 0 0.418787 -0.844299 -0.334302 0 0.474063 -0.784608 -0.399563 0 0.486508 -0.813113 -0.31965 0 0.296017 -0.651233 -0.698756 0 0.217141 -0.665222 -0.714344 0 0.290652 -0.587852 -0.754965 0 0.36135 -0.633146 -0.684489 0 0.422177 -0.581337 -0.695582 0 0.464533 -0.615473 -0.636707 0 0.315877 -0.71086 -0.628421 0 0.322004 -0.766568 -0.555594 0 0.253556 -0.778241 -0.574505 0 0.626586 0.61182 -0.482696 0 0.657452 0.547855 -0.517253 0 0.579947 0.614376 -0.534991 0 0.548652 0.576591 -0.605417 0 0.504742 0.645537 -0.573139 0 0.544196 0.612262 -0.571504 0 0.589014 0.669327 -0.452841 0 0.550028 0.723474 -0.417134 0 0.285377 0.648722 -0.705486 0 0.289737 0.585725 -0.756968 0 0.212983 0.657456 -0.72274 0 0.278914 0.707019 -0.649879 0 0.243027 0.759293 -0.603683 0 0.30219 0.772182 -0.558939 0 0.353079 0.638112 -0.684199 0 0.432364 0.655137 -0.619558 0 0.417689 0.599203 -0.683016 0 0.367889 0.872701 -0.321 0 0.293402 0.905785 -0.305657 0 0.435573 0.838343 -0.327757 0 0.518215 0.773767 -0.364324 0 0.357178 0.839216 -0.410065 0 0.333404 0.803904 -0.492521 0 0.272035 0.836856 -0.475053 0 0.707799 0.614629 -0.34811 0 0.674776 0.606966 -0.41977 0 0.663835 0.66806 -0.336202 0 0.597337 0.714239 -0.36477 0 0.624405 0.728336 -0.282165 0 0.628342 0.703909 -0.327614 0 0.730525 0.624149 -0.277076 0 0.75154 0.627215 -0.204293 0 0.442582 0.878396 -0.180371 0 0.388172 0.889947 -0.239457 0 0.395379 0.909039 -0.131474 0 0.493967 0.861045 -0.120863 0 0.519058 0.853453 -0.0470988 0 0.580751 0.8116 -0.0634945 0 0.486285 0.844377 -0.224798 0 0.569387 0.784629 -0.245259 0 0.503424 0.813188 -0.292076 0 0.758467 0.649889 0.0486013 0 0.735514 0.665599 0.126312 0 0.778514 0.627239 -0.0213189 0 0.779406 0.612622 -0.131206 0 0.70376 0.710447 -0.000903493 0 0.641033 0.766511 -0.0391954 0 0.627203 0.778266 0.030426 0 0.801537 0.488173 -0.345187 0 0.754275 0.550676 -0.357439 0 0.812128 0.512071 -0.27972 0 0.791403 0.570348 -0.219979 0 0.842108 0.50275 -0.195109 0 0.815371 0.528527 -0.231225 0 0.842992 0.428926 -0.324633 0 0.879321 0.365232 -0.305528 0 0.851337 0.521099 0.0605989 0 0.806409 0.586065 0.0790791 0 0.854213 0.502725 0.132481 0 0.890419 0.453299 0.0410576 0 0.92245 0.382612 0.0521165 0 0.930558 0.365484 -0.0219365 0 0.845056 0.534589 -0.00866481 0 0.854115 0.508479 -0.109236 0 0.816557 0.57332 -0.0675143 0 0.969476 0.160382 -0.18543 0 0.986369 0.105861 -0.125808 0 0.94801 0.205278 -0.243115 0 0.908174 0.29128 -0.300617 0 0.960769 0.241662 -0.136144 0 0.946687 0.312465 -0.0784007 0 0.964744 0.261364 -0.031065 0 0.778365 0.406664 -0.478228 0 0.726402 0.454494 -0.515474 0 0.786169 0.456316 -0.416716 0 0.819923 0.361544 -0.443873 0 0.862589 0.343583 -0.371344 0 0.856963 0.280498 -0.432328 0 0.84679 0.328241 -0.415732 0 0.771117 0.353061 -0.529838 0 0.757016 0.299045 -0.580901 0 0.713049 0.346724 -0.609385 0 0.946459 0.0707 -0.314974 0 0.966137 0.0947563 -0.240045 0 0.955611 -0.000105984 -0.294569 0 0.920614 0.0470944 -0.387637 0 0.896512 -0.00284881 -0.443033 0 0.8697 0.0502961 -0.491008 0 0.932383 0.137398 -0.334312 0 0.892687 0.208424 -0.399582 0 0.923653 0.211437 -0.319656 0 0.709815 0.0807207 -0.699741 0 0.699681 0.000537471 -0.714426 0 0.646724 0.0936593 -0.756966 0 0.710543 0.15427 -0.686511 0 0.677301 0.225736 -0.700233 0 0.726722 0.253328 -0.638509 0 0.773289 0.0810355 -0.628864 0 0.82845 0.0694624 -0.555737 0 0.818461 0.000659717 -0.574567 0 Quadrilaterals 1980 124 485 483 484 0 485 125 665 483 0 484 483 673 123 0 483 665 33 673 0 127 488 486 487 0 488 128 681 486 0 487 486 689 126 0 486 681 36 689 0 130 491 489 490 0 491 131 697 489 0 490 489 705 129 0 489 697 39 705 0 133 494 492 493 0 494 134 713 492 0 493 492 721 132 0 492 713 42 721 0 136 497 495 496 0 497 137 729 495 0 496 495 737 135 0 495 729 45 737 0 139 500 498 499 0 500 140 745 498 0 499 498 753 138 0 498 745 48 753 0 142 503 501 502 0 503 143 761 501 0 502 501 771 141 0 501 761 51 771 0 145 506 504 505 0 506 146 781 504 0 505 504 789 144 0 504 781 53 789 0 148 509 507 508 0 509 149 797 507 0 508 507 805 147 0 507 797 56 805 0 151 512 510 511 0 512 152 813 510 0 511 510 821 150 0 510 813 59 821 0 154 515 513 514 0 515 155 829 513 0 514 513 837 153 0 513 829 62 837 0 157 518 516 517 0 518 158 845 516 0 517 516 855 156 0 516 845 65 855 0 160 521 519 520 0 521 161 867 519 0 520 519 878 159 0 519 867 35 878 0 163 524 522 523 0 524 164 891 522 0 523 522 902 162 0 522 891 67 902 0 166 527 525 526 0 527 167 915 525 0 526 525 926 165 0 525 915 68 926 0 169 530 528 529 0 530 170 940 528 0 529 528 952 168 0 528 940 69 952 0 172 533 531 532 0 533 173 967 531 0 532 531 978 171 0 531 967 38 978 0 175 536 534 535 0 536 176 991 534 0 535 534 1002 174 0 534 991 70 1002 0 178 539 537 538 0 539 179 1015 537 0 538 537 1026 177 0 537 1015 71 1026 0 181 542 540 541 0 542 182 1040 540 0 541 540 1052 180 0 540 1040 72 1052 0 184 545 543 544 0 545 185 1067 543 0 544 543 1076 183 0 543 1067 41 1076 0 187 548 546 547 0 548 188 1087 546 0 547 546 1096 186 0 546 1087 74 1096 0 190 551 549 550 0 551 191 1107 549 0 550 549 1116 189 0 549 1107 76 1116 0 193 554 552 553 0 554 194 1128 552 0 553 552 1138 192 0 552 1128 78 1138 0 196 557 555 556 0 557 197 1151 555 0 556 555 1162 195 0 555 1151 44 1162 0 199 560 558 559 0 560 200 1175 558 0 559 558 1184 198 0 558 1175 80 1184 0 202 563 561 562 0 563 203 1195 561 0 562 561 1204 201 0 561 1195 82 1204 0 205 566 564 565 0 566 206 1216 564 0 565 564 1226 204 0 564 1216 84 1226 0 208 569 567 568 0 569 209 1239 567 0 568 567 1250 207 0 567 1239 47 1250 0 211 572 570 571 0 572 212 1263 570 0 571 570 1272 210 0 570 1263 86 1272 0 214 575 573 574 0 575 215 1283 573 0 574 573 1292 213 0 573 1283 88 1292 0 217 578 576 577 0 578 218 1304 576 0 577 576 1314 216 0 576 1304 90 1314 0 220 581 579 580 0 581 221 1327 579 0 580 579 1338 219 0 579 1327 50 1338 0 223 584 582 583 0 584 224 1351 582 0 583 582 1360 222 0 582 1351 92 1360 0 226 587 585 586 0 587 227 1371 585 0 586 585 1380 225 0 585 1371 94 1380 0 229 590 588 589 0 590 230 1392 588 0 589 588 1402 228 0 588 1392 96 1402 0 232 593 591 592 0 593 233 1415 591 0 592 591 1426 231 0 591 1415 52 1426 0 235 596 594 595 0 596 236 1439 594 0 595 594 1448 234 0 594 1439 98 1448 0 238 599 597 598 0 599 239 1459 597 0 598 597 1468 237 0 597 1459 100 1468 0 241 602 600 601 0 602 242 1480 600 0 601 600 1492 240 0 600 1480 102 1492 0 244 605 603 604 0 605 245 1507 603 0 604 603 1516 243 0 603 1507 55 1516 0 247 608 606 607 0 608 248 1527 606 0 607 606 1538 246 0 606 1527 104 1538 0 250 611 609 610 0 611 251 1551 609 0 610 609 1562 249 0 609 1551 105 1562 0 253 614 612 613 0 614 254 1576 612 0 613 612 1586 252 0 612 1576 106 1586 0 256 617 615 616 0 617 257 1599 615 0 616 615 1608 255 0 615 1599 58 1608 0 259 620 618 619 0 620 260 1619 618 0 619 618 1630 258 0 618 1619 109 1630 0 262 623 621 622 0 623 263 1643 621 0 622 621 1654 261 0 621 1643 110 1654 0 265 626 624 625 0 626 266 1668 624 0 625 624 1680 264 0 624 1668 111 1680 0 268 629 627 628 0 629 269 1695 627 0 628 627 1704 267 0 627 1695 61 1704 0 271 632 630 631 0 632 272 1715 630 0 631 630 1726 270 0 630 1715 113 1726 0 274 635 633 634 0 635 275 1739 633 0 634 633 1750 273 0 633 1739 114 1750 0 277 638 636 637 0 638 278 1764 636 0 637 636 1776 276 0 636 1764 115 1776 0 280 641 639 640 0 641 281 1791 639 0 640 639 1800 279 0 639 1791 64 1800 0 283 644 642 643 0 644 284 1811 642 0 643 642 1822 282 0 642 1811 117 1822 0 286 647 645 646 0 647 287 1835 645 0 646 645 1846 285 0 645 1835 118 1846 0 289 650 648 649 0 650 290 1860 648 0 649 648 1872 288 0 648 1860 119 1872 0 292 653 651 652 0 653 293 1887 651 0 652 651 1898 291 0 651 1887 66 1898 0 295 656 654 655 0 656 296 1911 654 0 655 654 1922 294 0 654 1911 120 1922 0 298 659 657 658 0 659 299 1935 657 0 658 657 1946 297 0 657 1935 121 1946 0 301 662 660 661 0 662 302 1960 660 0 661 660 1972 300 0 660 1960 122 1972 0 125 667 663 664 0 667 304 864 663 0 664 663 936 303 0 663 864 21 936 0 123 672 669 670 0 672 306 956 669 0 670 669 773 305 0 669 956 5 773 0 124 677 674 675 0 677 308 766 674 0 675 674 872 307 0 674 766 1 872 0 128 683 679 680 0 683 310 964 679 0 680 679 1036 309 0 679 964 22 1036 0 126 688 685 686 0 688 312 1056 685 0 686 685 857 311 0 685 1056 6 857 0 127 693 690 691 0 693 314 850 690 0 691 690 972 313 0 690 850 10 972 0 131 699 695 696 0 699 316 1064 695 0 696 695 1124 315 0 695 1064 23 1124 0 129 704 701 702 0 704 318 1141 701 0 702 701 881 317 0 701 1141 2 881 0 130 709 706 707 0 709 320 873 706 0 707 706 1072 319 0 706 873 1 1072 0 134 715 711 712 0 715 322 1148 711 0 712 711 1212 321 0 711 1148 24 1212 0 132 720 717 718 0 720 324 1229 717 0 718 717 905 323 0 717 1229 3 905 0 133 725 722 723 0 725 326 897 722 0 723 722 1156 325 0 722 897 2 1156 0 137 731 727 728 0 731 328 1236 727 0 728 727 1300 327 0 727 1236 25 1300 0 135 736 733 734 0 736 330 1317 733 0 734 733 929 329 0 733 1317 4 929 0 136 741 738 739 0 741 332 921 738 0 739 738 1244 331 0 738 921 3 1244 0 140 747 743 744 0 747 334 1324 743 0 744 743 1388 333 0 743 1324 26 1388 0 138 752 749 750 0 752 336 1405 749 0 750 749 955 335 0 749 1405 5 955 0 139 757 754 755 0 757 338 947 754 0 755 754 1332 337 0 754 947 4 1332 0 143 763 759 760 0 763 340 1412 759 0 760 759 1476 339 0 759 1412 27 1476 0 141 770 765 767 0 770 341 1496 765 0 767 765 766 308 0 765 1496 1 766 0 142 776 772 774 0 776 305 773 772 0 774 772 1420 342 0 772 773 5 1420 0 146 783 779 780 0 783 344 1504 779 0 780 779 1572 343 0 779 1504 28 1572 0 144 788 785 786 0 788 346 1589 785 0 786 785 1055 345 0 785 1589 6 1055 0 145 793 790 791 0 793 348 1047 790 0 791 790 1512 347 0 790 1047 7 1512 0 149 799 795 796 0 799 350 1596 795 0 796 795 1664 349 0 795 1596 29 1664 0 147 804 801 802 0 804 352 1684 801 0 802 801 1029 351 0 801 1684 7 1029 0 148 809 806 807 0 809 354 1021 806 0 807 806 1604 353 0 806 1021 8 1604 0 152 815 811 812 0 815 356 1692 811 0 812 811 1760 355 0 811 1692 30 1760 0 150 820 817 818 0 820 358 1780 817 0 818 817 1005 357 0 817 1780 8 1005 0 151 825 822 823 0 825 360 997 822 0 823 822 1700 359 0 822 997 9 1700 0 155 831 827 828 0 831 362 1788 827 0 828 827 1856 361 0 827 1788 31 1856 0 153 836 833 834 0 836 364 1876 833 0 834 833 981 363 0 833 1876 9 981 0 154 841 838 839 0 841 366 973 838 0 839 838 1796 365 0 838 973 10 1796 0 158 847 843 844 0 847 368 1884 843 0 844 843 1956 367 0 843 1884 32 1956 0 156 854 849 851 0 854 369 1976 849 0 851 849 850 314 0 849 1976 10 850 0 157 860 856 858 0 860 311 857 856 0 858 856 1892 370 0 856 857 6 1892 0 161 869 863 865 0 869 371 888 863 0 865 863 864 304 0 863 888 21 864 0 159 877 871 874 0 877 307 872 871 0 874 871 873 320 0 871 872 1 873 0 160 884 880 882 0 884 317 881 880 0 882 880 896 372 0 880 881 2 896 0 164 893 887 889 0 893 373 912 887 0 889 887 888 371 0 887 912 21 888 0 162 901 895 898 0 901 372 896 895 0 898 895 897 326 0 895 896 2 897 0 163 908 904 906 0 908 323 905 904 0 906 904 920 374 0 904 905 3 920 0 167 917 911 913 0 917 375 937 911 0 913 911 912 373 0 911 937 21 912 0 165 925 919 922 0 925 374 920 919 0 922 919 921 332 0 919 920 3 921 0 166 932 928 930 0 932 329 929 928 0 930 928 946 376 0 928 929 4 946 0 170 942 935 938 0 942 303 936 935 0 938 935 937 375 0 935 936 21 937 0 168 951 945 948 0 951 376 946 945 0 948 945 947 338 0 945 946 4 947 0 169 960 954 957 0 960 335 955 954 0 957 954 956 306 0 954 955 5 956 0 173 969 963 965 0 969 377 988 963 0 965 963 964 310 0 963 988 22 964 0 171 977 971 974 0 977 313 972 971 0 974 971 973 366 0 971 972 10 973 0 172 984 980 982 0 984 363 981 980 0 982 980 996 378 0 980 981 9 996 0 176 993 987 989 0 993 379 1012 987 0 989 987 988 377 0 987 1012 22 988 0 174 1001 995 998 0 1001 378 996 995 0 998 995 997 360 0 995 996 9 997 0 175 1008 1004 1006 0 1008 357 1005 1004 0 1006 1004 1020 380 0 1004 1005 8 1020 0 179 1017 1011 1013 0 1017 381 1037 1011 0 1013 1011 1012 379 0 1011 1037 22 1012 0 177 1025 1019 1022 0 1025 380 1020 1019 0 1022 1019 1021 354 0 1019 1020 8 1021 0 178 1032 1028 1030 0 1032 351 1029 1028 0 1030 1028 1046 382 0 1028 1029 7 1046 0 182 1042 1035 1038 0 1042 309 1036 1035 0 1038 1035 1037 381 0 1035 1036 22 1037 0 180 1051 1045 1048 0 1051 382 1046 1045 0 1048 1045 1047 348 0 1045 1046 7 1047 0 181 1060 1054 1057 0 1060 345 1055 1054 0 1057 1054 1056 312 0 1054 1055 6 1056 0 185 1069 1063 1065 0 1069 383 1084 1063 0 1065 1063 1064 316 0 1063 1084 23 1064 0 183 1075 1071 1073 0 1075 319 1072 1071 0 1073 1071 1495 384 0 1071 1072 1 1495 0 184 1081 1078 1079 0 1081 386 1487 1078 0 1079 1078 1092 385 0 1078 1487 11 1092 0 188 1089 1083 1085 0 1089 387 1104 1083 0 1085 1083 1084 383 0 1083 1104 23 1084 0 186 1095 1091 1093 0 1095 385 1092 1091 0 1093 1091 1925 388 0 1091 1092 11 1925 0 187 1101 1098 1099 0 1101 390 1917 1098 0 1099 1098 1112 389 0 1098 1917 12 1112 0 191 1109 1103 1105 0 1109 391 1125 1103 0 1105 1103 1104 387 0 1103 1125 23 1104 0 189 1115 1111 1113 0 1115 389 1112 1111 0 1113 1111 1565 392 0 1111 1112 12 1565 0 190 1121 1118 1119 0 1121 394 1557 1118 0 1119 1118 1134 393 0 1118 1557 13 1134 0 194 1130 1123 1126 0 1130 315 1124 1123 0 1126 1123 1125 391 0 1123 1124 23 1125 0 192 1137 1133 1135 0 1137 393 1134 1133 0 1135 1133 1165 395 0 1133 1134 13 1165 0 193 1145 1140 1142 0 1145 396 1157 1140 0 1142 1140 1141 318 0 1140 1157 2 1141 0 197 1153 1147 1149 0 1153 397 1172 1147 0 1149 1147 1148 322 0 1147 1172 24 1148 0 195 1161 1155 1158 0 1161 325 1156 1155 0 1158 1155 1157 396 0 1155 1156 2 1157 0 196 1168 1164 1166 0 1168 395 1165 1164 0 1166 1164 1180 398 0 1164 1165 13 1180 0 200 1177 1171 1173 0 1177 399 1192 1171 0 1173 1171 1172 397 0 1171 1192 24 1172 0 198 1183 1179 1181 0 1183 398 1180 1179 0 1181 1179 1541 400 0 1179 1180 13 1541 0 199 1189 1186 1187 0 1189 402 1533 1186 0 1187 1186 1200 401 0 1186 1533 14 1200 0 203 1197 1191 1193 0 1197 403 1213 1191 0 1193 1191 1192 399 0 1191 1213 24 1192 0 201 1203 1199 1201 0 1203 401 1200 1199 0 1201 1199 1657 404 0 1199 1200 14 1657 0 202 1209 1206 1207 0 1209 406 1649 1206 0 1207 1206 1222 405 0 1206 1649 15 1222 0 206 1218 1211 1214 0 1218 321 1212 1211 0 1214 1211 1213 403 0 1211 1212 24 1213 0 204 1225 1221 1223 0 1225 405 1222 1221 0 1223 1221 1253 407 0 1221 1222 15 1253 0 205 1233 1228 1230 0 1233 408 1245 1228 0 1230 1228 1229 324 0 1228 1245 3 1229 0 209 1241 1235 1237 0 1241 409 1260 1235 0 1237 1235 1236 328 0 1235 1260 25 1236 0 207 1249 1243 1246 0 1249 331 1244 1243 0 1246 1243 1245 408 0 1243 1244 3 1245 0 208 1256 1252 1254 0 1256 407 1253 1252 0 1254 1252 1268 410 0 1252 1253 15 1268 0 212 1265 1259 1261 0 1265 411 1280 1259 0 1261 1259 1260 409 0 1259 1280 25 1260 0 210 1271 1267 1269 0 1271 410 1268 1267 0 1269 1267 1633 412 0 1267 1268 15 1633 0 211 1277 1274 1275 0 1277 414 1625 1274 0 1275 1274 1288 413 0 1274 1625 16 1288 0 215 1285 1279 1281 0 1285 415 1301 1279 0 1281 1279 1280 411 0 1279 1301 25 1280 0 213 1291 1287 1289 0 1291 413 1288 1287 0 1289 1287 1753 416 0 1287 1288 16 1753 0 214 1297 1294 1295 0 1297 418 1745 1294 0 1295 1294 1310 417 0 1294 1745 17 1310 0 218 1306 1299 1302 0 1306 327 1300 1299 0 1302 1299 1301 415 0 1299 1300 25 1301 0 216 1313 1309 1311 0 1313 417 1310 1309 0 1311 1309 1341 419 0 1309 1310 17 1341 0 217 1321 1316 1318 0 1321 420 1333 1316 0 1318 1316 1317 330 0 1316 1333 4 1317 0 221 1329 1323 1325 0 1329 421 1348 1323 0 1325 1323 1324 334 0 1323 1348 26 1324 0 219 1337 1331 1334 0 1337 337 1332 1331 0 1334 1331 1333 420 0 1331 1332 4 1333 0 220 1344 1340 1342 0 1344 419 1341 1340 0 1342 1340 1356 422 0 1340 1341 17 1356 0 224 1353 1347 1349 0 1353 423 1368 1347 0 1349 1347 1348 421 0 1347 1368 26 1348 0 222 1359 1355 1357 0 1359 422 1356 1355 0 1357 1355 1729 424 0 1355 1356 17 1729 0 223 1365 1362 1363 0 1365 426 1721 1362 0 1363 1362 1376 425 0 1362 1721 18 1376 0 227 1373 1367 1369 0 1373 427 1389 1367 0 1369 1367 1368 423 0 1367 1389 26 1368 0 225 1379 1375 1377 0 1379 425 1376 1375 0 1377 1375 1849 428 0 1375 1376 18 1849 0 226 1385 1382 1383 0 1385 430 1841 1382 0 1383 1382 1398 429 0 1382 1841 19 1398 0 230 1394 1387 1390 0 1394 333 1388 1387 0 1390 1387 1389 427 0 1387 1388 26 1389 0 228 1401 1397 1399 0 1401 429 1398 1397 0 1399 1397 1429 431 0 1397 1398 19 1429 0 229 1409 1404 1406 0 1409 432 1421 1404 0 1406 1404 1405 336 0 1404 1421 5 1405 0 233 1417 1411 1413 0 1417 433 1436 1411 0 1413 1411 1412 340 0 1411 1436 27 1412 0 231 1425 1419 1422 0 1425 342 1420 1419 0 1422 1419 1421 432 0 1419 1420 5 1421 0 232 1432 1428 1430 0 1432 431 1429 1428 0 1430 1428 1444 434 0 1428 1429 19 1444 0 236 1441 1435 1437 0 1441 435 1456 1435 0 1437 1435 1436 433 0 1435 1456 27 1436 0 234 1447 1443 1445 0 1447 434 1444 1443 0 1445 1443 1825 436 0 1443 1444 19 1825 0 235 1453 1450 1451 0 1453 438 1817 1450 0 1451 1450 1464 437 0 1450 1817 20 1464 0 239 1461 1455 1457 0 1461 439 1477 1455 0 1457 1455 1456 435 0 1455 1477 27 1456 0 237 1467 1463 1465 0 1467 437 1464 1463 0 1465 1463 1949 440 0 1463 1464 20 1949 0 238 1473 1470 1471 0 1473 442 1941 1470 0 1471 1470 1486 441 0 1470 1941 11 1486 0 242 1482 1475 1478 0 1482 339 1476 1475 0 1478 1475 1477 439 0 1475 1476 27 1477 0 240 1491 1485 1488 0 1491 441 1486 1485 0 1488 1485 1487 386 0 1485 1486 11 1487 0 241 1500 1494 1497 0 1500 384 1495 1494 0 1497 1494 1496 341 0 1494 1495 1 1496 0 245 1509 1503 1505 0 1509 443 1524 1503 0 1505 1503 1504 344 0 1503 1524 28 1504 0 243 1515 1511 1513 0 1515 347 1512 1511 0 1513 1511 1683 444 0 1511 1512 7 1683 0 244 1521 1518 1519 0 1521 446 1675 1518 0 1519 1518 1532 445 0 1518 1675 14 1532 0 248 1529 1523 1525 0 1529 447 1548 1523 0 1525 1523 1524 443 0 1523 1548 28 1524 0 246 1537 1531 1534 0 1537 445 1532 1531 0 1534 1531 1533 402 0 1531 1532 14 1533 0 247 1544 1540 1542 0 1544 400 1541 1540 0 1542 1540 1556 448 0 1540 1541 13 1556 0 251 1553 1547 1549 0 1553 449 1573 1547 0 1549 1547 1548 447 0 1547 1573 28 1548 0 249 1561 1555 1558 0 1561 448 1556 1555 0 1558 1555 1557 394 0 1555 1556 13 1557 0 250 1568 1564 1566 0 1568 392 1565 1564 0 1566 1564 1582 450 0 1564 1565 12 1582 0 254 1578 1571 1574 0 1578 343 1572 1571 0 1574 1571 1573 449 0 1571 1572 28 1573 0 252 1585 1581 1583 0 1585 450 1582 1581 0 1583 1581 1901 451 0 1581 1582 12 1901 0 253 1593 1588 1590 0 1593 452 1893 1588 0 1590 1588 1589 346 0 1588 1893 6 1589 0 257 1601 1595 1597 0 1601 453 1616 1595 0 1597 1595 1596 350 0 1595 1616 29 1596 0 255 1607 1603 1605 0 1607 353 1604 1603 0 1605 1603 1779 454 0 1603 1604 8 1779 0 256 1613 1610 1611 0 1613 456 1771 1610 0 1611 1610 1624 455 0 1610 1771 16 1624 0 260 1621 1615 1617 0 1621 457 1640 1615 0 1617 1615 1616 453 0 1615 1640 29 1616 0 258 1629 1623 1626 0 1629 455 1624 1623 0 1626 1623 1625 414 0 1623 1624 16 1625 0 259 1636 1632 1634 0 1636 412 1633 1632 0 1634 1632 1648 458 0 1632 1633 15 1648 0 263 1645 1639 1641 0 1645 459 1665 1639 0 1641 1639 1640 457 0 1639 1665 29 1640 0 261 1653 1647 1650 0 1653 458 1648 1647 0 1650 1647 1649 406 0 1647 1648 15 1649 0 262 1660 1656 1658 0 1660 404 1657 1656 0 1658 1656 1674 460 0 1656 1657 14 1674 0 266 1670 1663 1666 0 1670 349 1664 1663 0 1666 1663 1665 459 0 1663 1664 29 1665 0 264 1679 1673 1676 0 1679 460 1674 1673 0 1676 1673 1675 446 0 1673 1674 14 1675 0 265 1688 1682 1685 0 1688 444 1683 1682 0 1685 1682 1684 352 0 1682 1683 7 1684 0 269 1697 1691 1693 0 1697 461 1712 1691 0 1693 1691 1692 356 0 1691 1712 30 1692 0 267 1703 1699 1701 0 1703 359 1700 1699 0 1701 1699 1875 462 0 1699 1700 9 1875 0 268 1709 1706 1707 0 1709 464 1867 1706 0 1707 1706 1720 463 0 1706 1867 18 1720 0 272 1717 1711 1713 0 1717 465 1736 1711 0 1713 1711 1712 461 0 1711 1736 30 1712 0 270 1725 1719 1722 0 1725 463 1720 1719 0 1722 1719 1721 426 0 1719 1720 18 1721 0 271 1732 1728 1730 0 1732 424 1729 1728 0 1730 1728 1744 466 0 1728 1729 17 1744 0 275 1741 1735 1737 0 1741 467 1761 1735 0 1737 1735 1736 465 0 1735 1761 30 1736 0 273 1749 1743 1746 0 1749 466 1744 1743 0 1746 1743 1745 418 0 1743 1744 17 1745 0 274 1756 1752 1754 0 1756 416 1753 1752 0 1754 1752 1770 468 0 1752 1753 16 1770 0 278 1766 1759 1762 0 1766 355 1760 1759 0 1762 1759 1761 467 0 1759 1760 30 1761 0 276 1775 1769 1772 0 1775 468 1770 1769 0 1772 1769 1771 456 0 1769 1770 16 1771 0 277 1784 1778 1781 0 1784 454 1779 1778 0 1781 1778 1780 358 0 1778 1779 8 1780 0 281 1793 1787 1789 0 1793 469 1808 1787 0 1789 1787 1788 362 0 1787 1808 31 1788 0 279 1799 1795 1797 0 1799 365 1796 1795 0 1797 1795 1975 470 0 1795 1796 10 1975 0 280 1805 1802 1803 0 1805 472 1967 1802 0 1803 1802 1816 471 0 1802 1967 20 1816 0 284 1813 1807 1809 0 1813 473 1832 1807 0 1809 1807 1808 469 0 1807 1832 31 1808 0 282 1821 1815 1818 0 1821 471 1816 1815 0 1818 1815 1817 438 0 1815 1816 20 1817 0 283 1828 1824 1826 0 1828 436 1825 1824 0 1826 1824 1840 474 0 1824 1825 19 1840 0 287 1837 1831 1833 0 1837 475 1857 1831 0 1833 1831 1832 473 0 1831 1857 31 1832 0 285 1845 1839 1842 0 1845 474 1840 1839 0 1842 1839 1841 430 0 1839 1840 19 1841 0 286 1852 1848 1850 0 1852 428 1849 1848 0 1850 1848 1866 476 0 1848 1849 18 1866 0 290 1862 1855 1858 0 1862 361 1856 1855 0 1858 1855 1857 475 0 1855 1856 31 1857 0 288 1871 1865 1868 0 1871 476 1866 1865 0 1868 1865 1867 464 0 1865 1866 18 1867 0 289 1880 1874 1877 0 1880 462 1875 1874 0 1877 1874 1876 364 0 1874 1875 9 1876 0 293 1889 1883 1885 0 1889 477 1908 1883 0 1885 1883 1884 368 0 1883 1908 32 1884 0 291 1897 1891 1894 0 1897 370 1892 1891 0 1894 1891 1893 452 0 1891 1892 6 1893 0 292 1904 1900 1902 0 1904 451 1901 1900 0 1902 1900 1916 478 0 1900 1901 12 1916 0 296 1913 1907 1909 0 1913 479 1932 1907 0 1909 1907 1908 477 0 1907 1932 32 1908 0 294 1921 1915 1918 0 1921 478 1916 1915 0 1918 1915 1917 390 0 1915 1916 12 1917 0 295 1928 1924 1926 0 1928 388 1925 1924 0 1926 1924 1940 480 0 1924 1925 11 1940 0 299 1937 1931 1933 0 1937 481 1957 1931 0 1933 1931 1932 479 0 1931 1957 32 1932 0 297 1945 1939 1942 0 1945 480 1940 1939 0 1942 1939 1941 442 0 1939 1940 11 1941 0 298 1952 1948 1950 0 1952 440 1949 1948 0 1950 1948 1966 482 0 1948 1949 20 1966 0 302 1962 1955 1958 0 1962 367 1956 1955 0 1958 1955 1957 481 0 1955 1956 32 1957 0 300 1971 1965 1968 0 1971 482 1966 1965 0 1968 1965 1967 472 0 1965 1966 20 1967 0 301 1980 1974 1977 0 1980 470 1975 1974 0 1977 1974 1976 369 0 1974 1975 10 1976 0 124 484 671 678 0 484 123 670 671 0 678 671 778 34 0 671 670 305 778 0 124 676 668 485 0 676 35 866 668 0 485 668 667 125 0 668 866 304 667 0 127 487 687 694 0 487 126 686 687 0 694 687 862 37 0 687 686 311 862 0 127 692 684 488 0 692 38 966 684 0 488 684 683 128 0 684 966 310 683 0 130 490 703 710 0 490 129 702 703 0 710 703 886 40 0 703 702 317 886 0 130 708 700 491 0 708 41 1066 700 0 491 700 699 131 0 700 1066 316 699 0 133 493 719 726 0 493 132 718 719 0 726 719 910 43 0 719 718 323 910 0 133 724 716 494 0 724 44 1150 716 0 494 716 715 134 0 716 1150 322 715 0 136 496 735 742 0 496 135 734 735 0 742 735 934 46 0 735 734 329 934 0 136 740 732 497 0 740 47 1238 732 0 497 732 731 137 0 732 1238 328 731 0 139 499 751 758 0 499 138 750 751 0 758 751 962 49 0 751 750 335 962 0 139 756 748 500 0 756 50 1326 748 0 500 748 747 140 0 748 1326 334 747 0 141 769 777 502 0 769 34 778 777 0 502 777 776 142 0 777 778 305 776 0 142 775 764 503 0 775 52 1414 764 0 503 764 763 143 0 764 1414 340 763 0 145 505 787 794 0 505 144 786 787 0 794 787 1062 54 0 787 786 345 1062 0 145 792 784 506 0 792 55 1506 784 0 506 784 783 146 0 784 1506 344 783 0 148 508 803 810 0 508 147 802 803 0 810 803 1034 57 0 803 802 351 1034 0 148 808 800 509 0 808 58 1598 800 0 509 800 799 149 0 800 1598 350 799 0 151 511 819 826 0 511 150 818 819 0 826 819 1010 60 0 819 818 357 1010 0 151 824 816 512 0 824 61 1694 816 0 512 816 815 152 0 816 1694 356 815 0 154 514 835 842 0 514 153 834 835 0 842 835 986 63 0 835 834 363 986 0 154 840 832 515 0 840 64 1790 832 0 515 832 831 155 0 832 1790 362 831 0 156 853 861 517 0 853 37 862 861 0 517 861 860 157 0 861 862 311 860 0 157 859 848 518 0 859 66 1886 848 0 518 848 847 158 0 848 1886 368 847 0 159 876 885 520 0 876 40 886 885 0 520 885 884 160 0 885 886 317 884 0 160 883 870 521 0 883 67 890 870 0 521 870 869 161 0 870 890 371 869 0 162 900 909 523 0 900 43 910 909 0 523 909 908 163 0 909 910 323 908 0 163 907 894 524 0 907 68 914 894 0 524 894 893 164 0 894 914 373 893 0 165 924 933 526 0 924 46 934 933 0 526 933 932 166 0 933 934 329 932 0 166 931 918 527 0 931 69 939 918 0 527 918 917 167 0 918 939 375 917 0 168 950 961 529 0 950 49 962 961 0 529 961 960 169 0 961 962 335 960 0 169 959 943 530 0 959 33 944 943 0 530 943 942 170 0 943 944 303 942 0 171 976 985 532 0 976 63 986 985 0 532 985 984 172 0 985 986 363 984 0 172 983 970 533 0 983 70 990 970 0 533 970 969 173 0 970 990 377 969 0 174 1000 1009 535 0 1000 60 1010 1009 0 535 1009 1008 175 0 1009 1010 357 1008 0 175 1007 994 536 0 1007 71 1014 994 0 536 994 993 176 0 994 1014 379 993 0 177 1024 1033 538 0 1024 57 1034 1033 0 538 1033 1032 178 0 1033 1034 351 1032 0 178 1031 1018 539 0 1031 72 1039 1018 0 539 1018 1017 179 0 1018 1039 381 1017 0 180 1050 1061 541 0 1050 54 1062 1061 0 541 1061 1060 181 0 1061 1062 345 1060 0 181 1059 1043 542 0 1059 36 1044 1043 0 542 1043 1042 182 0 1043 1044 309 1042 0 184 544 1074 1082 0 544 183 1073 1074 0 1082 1074 1502 73 0 1074 1073 384 1502 0 184 1080 1070 545 0 1080 74 1086 1070 0 545 1070 1069 185 0 1070 1086 383 1069 0 187 547 1094 1102 0 547 186 1093 1094 0 1102 1094 1930 75 0 1094 1093 388 1930 0 187 1100 1090 548 0 1100 76 1106 1090 0 548 1090 1089 188 0 1090 1106 387 1089 0 190 550 1114 1122 0 550 189 1113 1114 0 1122 1114 1570 77 0 1114 1113 392 1570 0 190 1120 1110 551 0 1120 78 1127 1110 0 551 1110 1109 191 0 1110 1127 391 1109 0 193 553 1136 1146 0 553 192 1135 1136 0 1146 1136 1170 79 0 1136 1135 395 1170 0 193 1144 1131 554 0 1144 39 1132 1131 0 554 1131 1130 194 0 1131 1132 315 1130 0 195 1160 1169 556 0 1160 79 1170 1169 0 556 1169 1168 196 0 1169 1170 395 1168 0 196 1167 1154 557 0 1167 80 1174 1154 0 557 1154 1153 197 0 1154 1174 397 1153 0 199 559 1182 1190 0 559 198 1181 1182 0 1190 1182 1546 81 0 1182 1181 400 1546 0 199 1188 1178 560 0 1188 82 1194 1178 0 560 1178 1177 200 0 1178 1194 399 1177 0 202 562 1202 1210 0 562 201 1201 1202 0 1210 1202 1662 83 0 1202 1201 404 1662 0 202 1208 1198 563 0 1208 84 1215 1198 0 563 1198 1197 203 0 1198 1215 403 1197 0 205 565 1224 1234 0 565 204 1223 1224 0 1234 1224 1258 85 0 1224 1223 407 1258 0 205 1232 1219 566 0 1232 42 1220 1219 0 566 1219 1218 206 0 1219 1220 321 1218 0 207 1248 1257 568 0 1248 85 1258 1257 0 568 1257 1256 208 0 1257 1258 407 1256 0 208 1255 1242 569 0 1255 86 1262 1242 0 569 1242 1241 209 0 1242 1262 409 1241 0 211 571 1270 1278 0 571 210 1269 1270 0 1278 1270 1638 87 0 1270 1269 412 1638 0 211 1276 1266 572 0 1276 88 1282 1266 0 572 1266 1265 212 0 1266 1282 411 1265 0 214 574 1290 1298 0 574 213 1289 1290 0 1298 1290 1758 89 0 1290 1289 416 1758 0 214 1296 1286 575 0 1296 90 1303 1286 0 575 1286 1285 215 0 1286 1303 415 1285 0 217 577 1312 1322 0 577 216 1311 1312 0 1322 1312 1346 91 0 1312 1311 419 1346 0 217 1320 1307 578 0 1320 45 1308 1307 0 578 1307 1306 218 0 1307 1308 327 1306 0 219 1336 1345 580 0 1336 91 1346 1345 0 580 1345 1344 220 0 1345 1346 419 1344 0 220 1343 1330 581 0 1343 92 1350 1330 0 581 1330 1329 221 0 1330 1350 421 1329 0 223 583 1358 1366 0 583 222 1357 1358 0 1366 1358 1734 93 0 1358 1357 424 1734 0 223 1364 1354 584 0 1364 94 1370 1354 0 584 1354 1353 224 0 1354 1370 423 1353 0 226 586 1378 1386 0 586 225 1377 1378 0 1386 1378 1854 95 0 1378 1377 428 1854 0 226 1384 1374 587 0 1384 96 1391 1374 0 587 1374 1373 227 0 1374 1391 427 1373 0 229 589 1400 1410 0 589 228 1399 1400 0 1410 1400 1434 97 0 1400 1399 431 1434 0 229 1408 1395 590 0 1408 48 1396 1395 0 590 1395 1394 230 0 1395 1396 333 1394 0 231 1424 1433 592 0 1424 97 1434 1433 0 592 1433 1432 232 0 1433 1434 431 1432 0 232 1431 1418 593 0 1431 98 1438 1418 0 593 1418 1417 233 0 1418 1438 433 1417 0 235 595 1446 1454 0 595 234 1445 1446 0 1454 1446 1830 99 0 1446 1445 436 1830 0 235 1452 1442 596 0 1452 100 1458 1442 0 596 1442 1441 236 0 1442 1458 435 1441 0 238 598 1466 1474 0 598 237 1465 1466 0 1474 1466 1954 101 0 1466 1465 440 1954 0 238 1472 1462 599 0 1472 102 1479 1462 0 599 1462 1461 239 0 1462 1479 439 1461 0 240 1490 1501 601 0 1490 73 1502 1501 0 601 1501 1500 241 0 1501 1502 384 1500 0 241 1499 1483 602 0 1499 51 1484 1483 0 602 1483 1482 242 0 1483 1484 339 1482 0 244 604 1514 1522 0 604 243 1513 1514 0 1522 1514 1690 103 0 1514 1513 444 1690 0 244 1520 1510 605 0 1520 104 1526 1510 0 605 1510 1509 245 0 1510 1526 443 1509 0 246 1536 1545 607 0 1536 81 1546 1545 0 607 1545 1544 247 0 1545 1546 400 1544 0 247 1543 1530 608 0 1543 105 1550 1530 0 608 1530 1529 248 0 1530 1550 447 1529 0 249 1560 1569 610 0 1560 77 1570 1569 0 610 1569 1568 250 0 1569 1570 392 1568 0 250 1567 1554 611 0 1567 106 1575 1554 0 611 1554 1553 251 0 1554 1575 449 1553 0 253 613 1584 1594 0 613 252 1583 1584 0 1594 1584 1906 107 0 1584 1583 451 1906 0 253 1592 1579 614 0 1592 53 1580 1579 0 614 1579 1578 254 0 1579 1580 343 1578 0 256 616 1606 1614 0 616 255 1605 1606 0 1614 1606 1786 108 0 1606 1605 454 1786 0 256 1612 1602 617 0 1612 109 1618 1602 0 617 1602 1601 257 0 1602 1618 453 1601 0 258 1628 1637 619 0 1628 87 1638 1637 0 619 1637 1636 259 0 1637 1638 412 1636 0 259 1635 1622 620 0 1635 110 1642 1622 0 620 1622 1621 260 0 1622 1642 457 1621 0 261 1652 1661 622 0 1652 83 1662 1661 0 622 1661 1660 262 0 1661 1662 404 1660 0 262 1659 1646 623 0 1659 111 1667 1646 0 623 1646 1645 263 0 1646 1667 459 1645 0 264 1678 1689 625 0 1678 103 1690 1689 0 625 1689 1688 265 0 1689 1690 444 1688 0 265 1687 1671 626 0 1687 56 1672 1671 0 626 1671 1670 266 0 1671 1672 349 1670 0 268 628 1702 1710 0 628 267 1701 1702 0 1710 1702 1882 112 0 1702 1701 462 1882 0 268 1708 1698 629 0 1708 113 1714 1698 0 629 1698 1697 269 0 1698 1714 461 1697 0 270 1724 1733 631 0 1724 93 1734 1733 0 631 1733 1732 271 0 1733 1734 424 1732 0 271 1731 1718 632 0 1731 114 1738 1718 0 632 1718 1717 272 0 1718 1738 465 1717 0 273 1748 1757 634 0 1748 89 1758 1757 0 634 1757 1756 274 0 1757 1758 416 1756 0 274 1755 1742 635 0 1755 115 1763 1742 0 635 1742 1741 275 0 1742 1763 467 1741 0 276 1774 1785 637 0 1774 108 1786 1785 0 637 1785 1784 277 0 1785 1786 454 1784 0 277 1783 1767 638 0 1783 59 1768 1767 0 638 1767 1766 278 0 1767 1768 355 1766 0 280 640 1798 1806 0 640 279 1797 1798 0 1806 1798 1982 116 0 1798 1797 470 1982 0 280 1804 1794 641 0 1804 117 1810 1794 0 641 1794 1793 281 0 1794 1810 469 1793 0 282 1820 1829 643 0 1820 99 1830 1829 0 643 1829 1828 283 0 1829 1830 436 1828 0 283 1827 1814 644 0 1827 118 1834 1814 0 644 1814 1813 284 0 1814 1834 473 1813 0 285 1844 1853 646 0 1844 95 1854 1853 0 646 1853 1852 286 0 1853 1854 428 1852 0 286 1851 1838 647 0 1851 119 1859 1838 0 647 1838 1837 287 0 1838 1859 475 1837 0 288 1870 1881 649 0 1870 112 1882 1881 0 649 1881 1880 289 0 1881 1882 462 1880 0 289 1879 1863 650 0 1879 62 1864 1863 0 650 1863 1862 290 0 1863 1864 361 1862 0 291 1896 1905 652 0 1896 107 1906 1905 0 652 1905 1904 292 0 1905 1906 451 1904 0 292 1903 1890 653 0 1903 120 1910 1890 0 653 1890 1889 293 0 1890 1910 477 1889 0 294 1920 1929 655 0 1920 75 1930 1929 0 655 1929 1928 295 0 1929 1930 388 1928 0 295 1927 1914 656 0 1927 121 1934 1914 0 656 1914 1913 296 0 1914 1934 479 1913 0 297 1944 1953 658 0 1944 101 1954 1953 0 658 1953 1952 298 0 1953 1954 440 1952 0 298 1951 1938 659 0 1951 122 1959 1938 0 659 1938 1937 299 0 1938 1959 481 1937 0 300 1970 1981 661 0 1970 116 1982 1981 0 661 1981 1980 301 0 1981 1982 470 1980 0 301 1979 1963 662 0 1979 65 1964 1963 0 662 1963 1962 302 0 1963 1964 367 1962 0 33 665 666 944 0 665 125 664 666 0 944 666 664 303 0 123 673 958 672 0 673 33 959 958 0 672 958 957 306 0 958 959 169 957 0 124 675 879 676 0 675 307 877 879 0 676 879 878 35 0 879 877 159 878 0 124 678 768 677 0 678 34 769 768 0 677 768 767 308 0 768 769 141 767 0 36 681 682 1044 0 681 128 680 682 0 1044 682 680 309 0 126 689 1058 688 0 689 36 1059 1058 0 688 1058 1057 312 0 1058 1059 181 1057 0 127 691 979 692 0 691 313 977 979 0 692 979 978 38 0 979 977 171 978 0 127 694 852 693 0 694 37 853 852 0 693 852 851 314 0 852 853 156 851 0 39 697 698 1132 0 697 131 696 698 0 1132 698 696 315 0 129 705 1143 704 0 705 39 1144 1143 0 704 1143 1142 318 0 1143 1144 193 1142 0 130 707 1077 708 0 707 319 1075 1077 0 708 1077 1076 41 0 1077 1075 183 1076 0 130 710 875 709 0 710 40 876 875 0 709 875 874 320 0 875 876 159 874 0 42 713 714 1220 0 713 134 712 714 0 1220 714 712 321 0 132 721 1231 720 0 721 42 1232 1231 0 720 1231 1230 324 0 1231 1232 205 1230 0 133 723 1163 724 0 723 325 1161 1163 0 724 1163 1162 44 0 1163 1161 195 1162 0 133 726 899 725 0 726 43 900 899 0 725 899 898 326 0 899 900 162 898 0 45 729 730 1308 0 729 137 728 730 0 1308 730 728 327 0 135 737 1319 736 0 737 45 1320 1319 0 736 1319 1318 330 0 1319 1320 217 1318 0 136 739 1251 740 0 739 331 1249 1251 0 740 1251 1250 47 0 1251 1249 207 1250 0 136 742 923 741 0 742 46 924 923 0 741 923 922 332 0 923 924 165 922 0 48 745 746 1396 0 745 140 744 746 0 1396 746 744 333 0 138 753 1407 752 0 753 48 1408 1407 0 752 1407 1406 336 0 1407 1408 229 1406 0 139 755 1339 756 0 755 337 1337 1339 0 756 1339 1338 50 0 1339 1337 219 1338 0 139 758 949 757 0 758 49 950 949 0 757 949 948 338 0 949 950 168 948 0 51 761 762 1484 0 761 143 760 762 0 1484 762 760 339 0 141 771 1498 770 0 771 51 1499 1498 0 770 1498 1497 341 0 1498 1499 241 1497 0 142 774 1427 775 0 774 342 1425 1427 0 775 1427 1426 52 0 1427 1425 231 1426 0 53 781 782 1580 0 781 146 780 782 0 1580 782 780 343 0 144 789 1591 788 0 789 53 1592 1591 0 788 1591 1590 346 0 1591 1592 253 1590 0 145 791 1517 792 0 791 347 1515 1517 0 792 1517 1516 55 0 1517 1515 243 1516 0 145 794 1049 793 0 794 54 1050 1049 0 793 1049 1048 348 0 1049 1050 180 1048 0 56 797 798 1672 0 797 149 796 798 0 1672 798 796 349 0 147 805 1686 804 0 805 56 1687 1686 0 804 1686 1685 352 0 1686 1687 265 1685 0 148 807 1609 808 0 807 353 1607 1609 0 808 1609 1608 58 0 1609 1607 255 1608 0 148 810 1023 809 0 810 57 1024 1023 0 809 1023 1022 354 0 1023 1024 177 1022 0 59 813 814 1768 0 813 152 812 814 0 1768 814 812 355 0 150 821 1782 820 0 821 59 1783 1782 0 820 1782 1781 358 0 1782 1783 277 1781 0 151 823 1705 824 0 823 359 1703 1705 0 824 1705 1704 61 0 1705 1703 267 1704 0 151 826 999 825 0 826 60 1000 999 0 825 999 998 360 0 999 1000 174 998 0 62 829 830 1864 0 829 155 828 830 0 1864 830 828 361 0 153 837 1878 836 0 837 62 1879 1878 0 836 1878 1877 364 0 1878 1879 289 1877 0 154 839 1801 840 0 839 365 1799 1801 0 840 1801 1800 64 0 1801 1799 279 1800 0 154 842 975 841 0 842 63 976 975 0 841 975 974 366 0 975 976 171 974 0 65 845 846 1964 0 845 158 844 846 0 1964 846 844 367 0 156 855 1978 854 0 855 65 1979 1978 0 854 1978 1977 369 0 1978 1979 301 1977 0 157 858 1899 859 0 858 370 1897 1899 0 859 1899 1898 66 0 1899 1897 291 1898 0 35 867 868 866 0 867 161 865 868 0 866 868 865 304 0 160 882 903 883 0 882 372 901 903 0 883 903 902 67 0 903 901 162 902 0 67 891 892 890 0 891 164 889 892 0 890 892 889 371 0 163 906 927 907 0 906 374 925 927 0 907 927 926 68 0 927 925 165 926 0 68 915 916 914 0 915 167 913 916 0 914 916 913 373 0 166 930 953 931 0 930 376 951 953 0 931 953 952 69 0 953 951 168 952 0 69 940 941 939 0 940 170 938 941 0 939 941 938 375 0 38 967 968 966 0 967 173 965 968 0 966 968 965 310 0 172 982 1003 983 0 982 378 1001 1003 0 983 1003 1002 70 0 1003 1001 174 1002 0 70 991 992 990 0 991 176 989 992 0 990 992 989 377 0 175 1006 1027 1007 0 1006 380 1025 1027 0 1007 1027 1026 71 0 1027 1025 177 1026 0 71 1015 1016 1014 0 1015 179 1013 1016 0 1014 1016 1013 379 0 178 1030 1053 1031 0 1030 382 1051 1053 0 1031 1053 1052 72 0 1053 1051 180 1052 0 72 1040 1041 1039 0 1040 182 1038 1041 0 1039 1041 1038 381 0 41 1067 1068 1066 0 1067 185 1065 1068 0 1066 1068 1065 316 0 184 1079 1097 1080 0 1079 385 1095 1097 0 1080 1097 1096 74 0 1097 1095 186 1096 0 184 1082 1489 1081 0 1082 73 1490 1489 0 1081 1489 1488 386 0 1489 1490 240 1488 0 74 1087 1088 1086 0 1087 188 1085 1088 0 1086 1088 1085 383 0 187 1099 1117 1100 0 1099 389 1115 1117 0 1100 1117 1116 76 0 1117 1115 189 1116 0 187 1102 1919 1101 0 1102 75 1920 1919 0 1101 1919 1918 390 0 1919 1920 294 1918 0 76 1107 1108 1106 0 1107 191 1105 1108 0 1106 1108 1105 387 0 190 1119 1139 1120 0 1119 393 1137 1139 0 1120 1139 1138 78 0 1139 1137 192 1138 0 190 1122 1559 1121 0 1122 77 1560 1559 0 1121 1559 1558 394 0 1559 1560 249 1558 0 78 1128 1129 1127 0 1128 194 1126 1129 0 1127 1129 1126 391 0 193 1146 1159 1145 0 1146 79 1160 1159 0 1145 1159 1158 396 0 1159 1160 195 1158 0 44 1151 1152 1150 0 1151 197 1149 1152 0 1150 1152 1149 322 0 196 1166 1185 1167 0 1166 398 1183 1185 0 1167 1185 1184 80 0 1185 1183 198 1184 0 80 1175 1176 1174 0 1175 200 1173 1176 0 1174 1176 1173 397 0 199 1187 1205 1188 0 1187 401 1203 1205 0 1188 1205 1204 82 0 1205 1203 201 1204 0 199 1190 1535 1189 0 1190 81 1536 1535 0 1189 1535 1534 402 0 1535 1536 246 1534 0 82 1195 1196 1194 0 1195 203 1193 1196 0 1194 1196 1193 399 0 202 1207 1227 1208 0 1207 405 1225 1227 0 1208 1227 1226 84 0 1227 1225 204 1226 0 202 1210 1651 1209 0 1210 83 1652 1651 0 1209 1651 1650 406 0 1651 1652 261 1650 0 84 1216 1217 1215 0 1216 206 1214 1217 0 1215 1217 1214 403 0 205 1234 1247 1233 0 1234 85 1248 1247 0 1233 1247 1246 408 0 1247 1248 207 1246 0 47 1239 1240 1238 0 1239 209 1237 1240 0 1238 1240 1237 328 0 208 1254 1273 1255 0 1254 410 1271 1273 0 1255 1273 1272 86 0 1273 1271 210 1272 0 86 1263 1264 1262 0 1263 212 1261 1264 0 1262 1264 1261 409 0 211 1275 1293 1276 0 1275 413 1291 1293 0 1276 1293 1292 88 0 1293 1291 213 1292 0 211 1278 1627 1277 0 1278 87 1628 1627 0 1277 1627 1626 414 0 1627 1628 258 1626 0 88 1283 1284 1282 0 1283 215 1281 1284 0 1282 1284 1281 411 0 214 1295 1315 1296 0 1295 417 1313 1315 0 1296 1315 1314 90 0 1315 1313 216 1314 0 214 1298 1747 1297 0 1298 89 1748 1747 0 1297 1747 1746 418 0 1747 1748 273 1746 0 90 1304 1305 1303 0 1304 218 1302 1305 0 1303 1305 1302 415 0 217 1322 1335 1321 0 1322 91 1336 1335 0 1321 1335 1334 420 0 1335 1336 219 1334 0 50 1327 1328 1326 0 1327 221 1325 1328 0 1326 1328 1325 334 0 220 1342 1361 1343 0 1342 422 1359 1361 0 1343 1361 1360 92 0 1361 1359 222 1360 0 92 1351 1352 1350 0 1351 224 1349 1352 0 1350 1352 1349 421 0 223 1363 1381 1364 0 1363 425 1379 1381 0 1364 1381 1380 94 0 1381 1379 225 1380 0 223 1366 1723 1365 0 1366 93 1724 1723 0 1365 1723 1722 426 0 1723 1724 270 1722 0 94 1371 1372 1370 0 1371 227 1369 1372 0 1370 1372 1369 423 0 226 1383 1403 1384 0 1383 429 1401 1403 0 1384 1403 1402 96 0 1403 1401 228 1402 0 226 1386 1843 1385 0 1386 95 1844 1843 0 1385 1843 1842 430 0 1843 1844 285 1842 0 96 1392 1393 1391 0 1392 230 1390 1393 0 1391 1393 1390 427 0 229 1410 1423 1409 0 1410 97 1424 1423 0 1409 1423 1422 432 0 1423 1424 231 1422 0 52 1415 1416 1414 0 1415 233 1413 1416 0 1414 1416 1413 340 0 232 1430 1449 1431 0 1430 434 1447 1449 0 1431 1449 1448 98 0 1449 1447 234 1448 0 98 1439 1440 1438 0 1439 236 1437 1440 0 1438 1440 1437 433 0 235 1451 1469 1452 0 1451 437 1467 1469 0 1452 1469 1468 100 0 1469 1467 237 1468 0 235 1454 1819 1453 0 1454 99 1820 1819 0 1453 1819 1818 438 0 1819 1820 282 1818 0 100 1459 1460 1458 0 1459 239 1457 1460 0 1458 1460 1457 435 0 238 1471 1493 1472 0 1471 441 1491 1493 0 1472 1493 1492 102 0 1493 1491 240 1492 0 238 1474 1943 1473 0 1474 101 1944 1943 0 1473 1943 1942 442 0 1943 1944 297 1942 0 102 1480 1481 1479 0 1480 242 1478 1481 0 1479 1481 1478 439 0 55 1507 1508 1506 0 1507 245 1505 1508 0 1506 1508 1505 344 0 244 1519 1539 1520 0 1519 445 1537 1539 0 1520 1539 1538 104 0 1539 1537 246 1538 0 244 1522 1677 1521 0 1522 103 1678 1677 0 1521 1677 1676 446 0 1677 1678 264 1676 0 104 1527 1528 1526 0 1527 248 1525 1528 0 1526 1528 1525 443 0 247 1542 1563 1543 0 1542 448 1561 1563 0 1543 1563 1562 105 0 1563 1561 249 1562 0 105 1551 1552 1550 0 1551 251 1549 1552 0 1550 1552 1549 447 0 250 1566 1587 1567 0 1566 450 1585 1587 0 1567 1587 1586 106 0 1587 1585 252 1586 0 106 1576 1577 1575 0 1576 254 1574 1577 0 1575 1577 1574 449 0 253 1594 1895 1593 0 1594 107 1896 1895 0 1593 1895 1894 452 0 1895 1896 291 1894 0 58 1599 1600 1598 0 1599 257 1597 1600 0 1598 1600 1597 350 0 256 1611 1631 1612 0 1611 455 1629 1631 0 1612 1631 1630 109 0 1631 1629 258 1630 0 256 1614 1773 1613 0 1614 108 1774 1773 0 1613 1773 1772 456 0 1773 1774 276 1772 0 109 1619 1620 1618 0 1619 260 1617 1620 0 1618 1620 1617 453 0 259 1634 1655 1635 0 1634 458 1653 1655 0 1635 1655 1654 110 0 1655 1653 261 1654 0 110 1643 1644 1642 0 1643 263 1641 1644 0 1642 1644 1641 457 0 262 1658 1681 1659 0 1658 460 1679 1681 0 1659 1681 1680 111 0 1681 1679 264 1680 0 111 1668 1669 1667 0 1668 266 1666 1669 0 1667 1669 1666 459 0 61 1695 1696 1694 0 1695 269 1693 1696 0 1694 1696 1693 356 0 268 1707 1727 1708 0 1707 463 1725 1727 0 1708 1727 1726 113 0 1727 1725 270 1726 0 268 1710 1869 1709 0 1710 112 1870 1869 0 1709 1869 1868 464 0 1869 1870 288 1868 0 113 1715 1716 1714 0 1715 272 1713 1716 0 1714 1716 1713 461 0 271 1730 1751 1731 0 1730 466 1749 1751 0 1731 1751 1750 114 0 1751 1749 273 1750 0 114 1739 1740 1738 0 1739 275 1737 1740 0 1738 1740 1737 465 0 274 1754 1777 1755 0 1754 468 1775 1777 0 1755 1777 1776 115 0 1777 1775 276 1776 0 115 1764 1765 1763 0 1764 278 1762 1765 0 1763 1765 1762 467 0 64 1791 1792 1790 0 1791 281 1789 1792 0 1790 1792 1789 362 0 280 1803 1823 1804 0 1803 471 1821 1823 0 1804 1823 1822 117 0 1823 1821 282 1822 0 280 1806 1969 1805 0 1806 116 1970 1969 0 1805 1969 1968 472 0 1969 1970 300 1968 0 117 1811 1812 1810 0 1811 284 1809 1812 0 1810 1812 1809 469 0 283 1826 1847 1827 0 1826 474 1845 1847 0 1827 1847 1846 118 0 1847 1845 285 1846 0 118 1835 1836 1834 0 1835 287 1833 1836 0 1834 1836 1833 473 0 286 1850 1873 1851 0 1850 476 1871 1873 0 1851 1873 1872 119 0 1873 1871 288 1872 0 119 1860 1861 1859 0 1860 290 1858 1861 0 1859 1861 1858 475 0 66 1887 1888 1886 0 1887 293 1885 1888 0 1886 1888 1885 368 0 292 1902 1923 1903 0 1902 478 1921 1923 0 1903 1923 1922 120 0 1923 1921 294 1922 0 120 1911 1912 1910 0 1911 296 1909 1912 0 1910 1912 1909 477 0 295 1926 1947 1927 0 1926 480 1945 1947 0 1927 1947 1946 121 0 1947 1945 297 1946 0 121 1935 1936 1934 0 1935 299 1933 1936 0 1934 1936 1933 479 0 298 1950 1973 1951 0 1950 482 1971 1973 0 1951 1973 1972 122 0 1973 1971 300 1972 0 122 1960 1961 1959 0 1960 302 1958 1961 0 1959 1961 1958 481 0 End libMeshb-7.80/legacy_sources/v6/test.sol000066400000000000000000000002451456732543400202530ustar00rootroot00000000000000MeshVersionFormatted 1 Dimension 3 SolAtVertices 5 3 1 2 3 5 1 6 8 1 2 3 4 5 6 6 2 4 8 1 2 3 4 5 6 9 3 2 6 1 2 3 4 5 6 8 4 5 6 1 2 3 4 5 6 8 5 2 6 1 2 3 4 5 6 End libMeshb-7.80/legacy_sources/v6/test.solb000066400000000000000000000004001456732543400204060ustar00rootroot00000000000000>@?@A?@@@@@@@@@A?@@@@@@A@@@@?@@@@@@A@@@?@@@@@@A@@@?@@@@@@6libMeshb-7.80/legacy_sources/v6/test_libmesh6.c000066400000000000000000000046541456732543400215010ustar00rootroot00000000000000 /* Exemple d'utilisation de la libmesh6 : transformation de quadrangles en triangles dans un maillage surfacique */ #include #include #include "libmesh6.h" int main() { int i, NmbVer, NmbQad, InpMsh, OutMsh, ver, dim, *RefTab, (*QadTab)[5]; double (*VerTab)[3]; /*-----------------------------------*/ /* Ouverture du maillage "quad.mesh" */ /*-----------------------------------*/ if(!(InpMsh = GmfOpenMesh("quad.mesh", GmfRead, &ver, &dim))) return(1); printf("InpMsh : idx = %d, version = %d, dimension = %d\n", InpMsh, ver, dim); if( (ver != GmfDouble) || (dim != 3) ) exit(1); /* Lecture des nombres d'elements et de noeuds pour l'allocation de memoire */ NmbVer = GmfStatKwd(InpMsh, GmfVertices); printf("InpMsh : nmb vertices = %d\n", NmbVer); VerTab = malloc((NmbVer+1) * 3 * sizeof(double)); RefTab = malloc((NmbVer+1) * sizeof(int)); NmbQad = GmfStatKwd(InpMsh, GmfQuadrilaterals); printf("InpMsh : nmb quads = %d\n", NmbQad); QadTab = malloc((NmbQad+1) * 5 * sizeof(int)); /* Lecture des noeuds */ GmfGotoKwd(InpMsh, GmfVertices); for(i=1;i<=NmbVer;i++) GmfGetLin(InpMsh, GmfVertices, &VerTab[i][0], &VerTab[i][1], &VerTab[i][2], &RefTab[i]); /* Lecture des quadrangles */ GmfGotoKwd(InpMsh, GmfQuadrilaterals); for(i=1;i<=NmbQad;i++) GmfGetLin(InpMsh, GmfQuadrilaterals, &QadTab[i][0], &QadTab[i][1], &QadTab[i][2], &QadTab[i][3], &QadTab[i][4]); /* Fermeture du maillage quad */ GmfCloseMesh(InpMsh); /*-----------------------------------*/ /* Creation du maillage en triangles */ /*-----------------------------------*/ if(!(OutMsh = GmfOpenMesh("tri.mesh", GmfWrite, ver, dim))) return(1); /* Ecriture du nombre de noeuds */ GmfSetKwd(OutMsh, GmfVertices, NmbVer); /* Puis boucle d'ecriture sur les noeuds */ for(i=1;i<=NmbVer;i++) GmfSetLin(OutMsh, GmfVertices, VerTab[i][0], VerTab[i][1], VerTab[i][2], RefTab[i]); /* Ecriture du nombre de triangles */ GmfSetKwd(OutMsh, GmfTriangles, 2*NmbQad); printf("OutMsh : nmb triangles = %d\n", 2*NmbQad); /* Puis boucle d'ecriture sur les triangles (2 triangles par quad) */ for(i=1;i<=NmbQad;i++) { GmfSetLin(OutMsh, GmfTriangles, QadTab[i][0], QadTab[i][1], QadTab[i][2], QadTab[i][4]); GmfSetLin(OutMsh, GmfTriangles, QadTab[i][0], QadTab[i][2], QadTab[i][3], QadTab[i][4]); } /* Ne pas oublier de fermer le fichier */ GmfCloseMesh(OutMsh); free(QadTab); free(RefTab); free(VerTab); return(0); } libMeshb-7.80/legacy_sources/v6/test_libmesh6.f000066400000000000000000000063251456732543400215010ustar00rootroot00000000000000 c libmesh6 example : transform a quadrilateral mesh into a triangular one include 'libmesh6.ins' integer n parameter (n=2000) integer i, NmbVer, NmbQad, InpMsh, OutMsh, ver, dim +, RefTab(n), TriTab(4,2*n), QadTab(5,n), res real*8 VerTab(3,n) c -------------------------------------------- c Open the quadrilateral mesh file for reading c -------------------------------------------- InpMsh = gmfopenmesh('quad.mesh',GmfRead,ver,dim) print*, 'input mesh :', InpMsh,'version :',ver,'dim :',dim if(InpMsh.eq.0) STOP ' InpMsh = 0' if(ver.ne.GmfDouble) STOP ' version <> GmfDouble' if(dim.ne.3) STOP ' dimension <> 3' c Check memory bounds NmbVer = gmfstatkwd(InpMsh, GmfVertices) if(NmbVer.gt.n) STOP 'Too many vertices' NmbQad = gmfstatkwd(InpMsh, GmfQuadrilaterals) if(NmbQad.gt.n) STOP 'Too many quads' print*, 'input mesh : ',NmbVer,' vertices,',NmbQad,'quads' c Read the vertices res = gmfgotokwd(InpMsh, GmfVertices) res = gmfgetblock(InpMsh, GmfVertices, + GmfDouble, VerTab(1,1), VerTab(1,2), + GmfDouble, VerTab(2,1), VerTab(2,2), + GmfDouble, VerTab(3,1), VerTab(3,2), + GmfInt, RefTab(1), RefTab(2)) c Read the quads res = gmfgotokwd(InpMsh, GmfQuadrilaterals) res = gmfgetblock(InpMsh, GmfQuadrilaterals, + GmfInt, QadTab(1,1), QadTab(1,2), + GmfInt, QadTab(2,1), QadTab(2,2), + GmfInt, QadTab(3,1), QadTab(3,2), + GmfInt, QadTab(4,1), QadTab(4,2), + GmfInt, QadTab(5,1), QadTab(5,2)) c Close the quadrilateral mesh res = gmfclosemesh(InpMsh) c ------------------------ c Create a triangular mesh c ------------------------ OutMsh = gmfopenmesh('tri.mesh', GmfWrite, ver, dim) if(OutMsh.eq.0) STOP ' OutMsh = 0' c Set the number of vertices res = gmfsetkwd(OutMsh, GmfVertices, NmbVer, 0 , 0) c Then write them down res = gmfsetblock(OutMsh, GmfVertices, + GmfDouble, VerTab(1,1), VerTab(1,2), + GmfDouble, VerTab(2,1), VerTab(2,2), + GmfDouble, VerTab(3,1), VerTab(3,2), + GmfInt, RefTab(1), RefTab(2)) c Build two triangles out of each quad do i = 1, NmbQad TriTab(1,i*2-1) = QadTab(1,i) TriTab(2,i*2-1) = QadTab(2,i) TriTab(3,i*2-1) = QadTab(3,i) TriTab(4,i*2-1) = QadTab(5,i) TriTab(1,i*2) = QadTab(1,i) TriTab(2,i*2) = QadTab(3,i) TriTab(3,i*2) = QadTab(4,i) TriTab(4,i*2) = QadTab(5,i) end do c Write the triangles res = gmfsetkwd(OutMsh, GmfTriangles, 2*NmbQad, 0, 0) res = gmfsetblock(OutMsh, GmfTriangles, + GmfInt, TriTab(1,1), TriTab(1,2), + GmfInt, TriTab(2,1), TriTab(2,2), + GmfInt, TriTab(3,1), TriTab(3,2), + GmfInt, TriTab(4,1), TriTab(4,2)) c Don't forget to close the file res = gmfclosemesh(OutMsh) print*, 'output mesh : ',NmbVer,' vertices,', + 2*NmbQad,'triangles' end libMeshb-7.80/legacy_sources/v6/test_sol.c000066400000000000000000000031151456732543400205540ustar00rootroot00000000000000/* Extraction d'un champ de solution en utilisant la libmesh5 */ #include #include int main() { int i, NmbSol, InpSol, OutSol, ver, dim, NmbTyp, SolSiz, TypTab[20]; float InpSolTab[100], OutSolTab[100]; /* Ouverture du fichier .sol a lire */ if(!(InpSol = GmfOpenMesh("test.sol", GmfRead, &ver, &dim))) return(1); printf("\nInpSol : idx = %d, version = %d, dim = %d\n", InpSol, ver, dim); NmbSol = GmfStatKwd(InpSol, GmfSolAtVertices, &NmbTyp, &SolSiz, TypTab); printf("InpSol : NmbSol = %d, NmbTyp = %d, siz = %d floats\n\n", NmbSol,NmbTyp,SolSiz); if(!(OutSol = GmfOpenMesh("out.sol", GmfWrite, ver, dim))) return(1); printf("OutSol : idx = %d\n\n", OutSol); /* Lecture des infos sur les champs */ for(i=0;i/9-.>0A?@B?ABA@CD?C@EFDEDCEFGBHEKIJKLIKGLJMNJIMPNONMOHPOLGQRHOUSTVSUVUWYTXTSX[YZYXZ[Z\(VW*\Z%] &^_ `ba_  acd e f c-d.9gh>j6ij76j97ki;;i6lk=;=kl=>'#%&$)] ^mgmgnmnhnhh9->.%op%qoq%]sprpor&stsrt&t^q]^tQGHRJuvKJvKvGNwuuJNxwPPwNxPH+yz{y+'{+|}z|zy,}~}|~,~)58828/25:5:3<:30<3 QR AF1W23\4W1(*4\UW[\cd_ac  doq@qA@qAroDDo@FtrFrDFtVzS+zV+V(XS}Sz}X,Z},X*Z,`_`bbabLQ_aRO1!("4*imgjig9jgmknmiknlhkln>hlTUTUYTY[Y[[22W233\!1/"04c-d.e  f{py{%p{'%|yssyp&~|&|s~&)]^eeeff_Q a RBu?BvuBGvwC?uw?xECxCwExHc dILL_LMIIOMMOa9/8<0>`e`e` bffbf6libMeshb-7.80/legacy_sources/v7alpha/libmesh7.c000066400000000000000000001432011456732543400214420ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* LIBMESH V 7.0 */ /* */ /*----------------------------------------------------------*/ /* */ /* Description: handle .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: dec 08 2015 */ /* Last modification: jan 19 2016 */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Headers' macros */ /*----------------------------------------------------------*/ #ifdef F77API #ifdef F77_NO_UNDER_SCORE #define NAMF77(c,f) f #define APIF77(x) x #else #define NAMF77(c,f) f ## _ #define APIF77(x) x ## _ #endif #define VALF77(v) *v #define TYPF77(t) t* #define PRCF77(p) *((int *)p) #else #define NAMF77(c,f) c #define VALF77(v) v #define TYPF77(t) t #define PRCF77(p) p #endif /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include #include #include #include #include #include #include #include #include "libmesh7.h" /*----------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------*/ #define Asc 1 #define Bin 2 #define MshFil 4 #define SolFil 8 #define InfKwd 1 #define RegKwd 2 #define SolKwd 3 #define CmtKwd 4 #define WrdSiz 4 #define FilStrSiz 64 #define BufSiz 10000 #define MaxArg 20 /*----------------------------------------------------------*/ /* Structures */ /*----------------------------------------------------------*/ typedef struct { int typ, SolSiz, NmbWrd, NmbTyp, TypTab[ GmfMaxTyp ]; long long NmbLin, pos; char fmt[ GmfMaxTyp*9 ]; }KwdSct; typedef struct { int dim, ver, mod, typ, cod, FilDes; long long NexKwdPos, siz, pos; jmp_buf err; KwdSct KwdTab[ GmfMaxKwd + 1 ]; FILE *hdl; int *IntBuf; float *FltBuf; char *buf; char FilNam[ GmfStrSiz ]; double DblBuf[1000/8]; unsigned char blk[ BufSiz + 1000 ]; }GmfMshSct; /*----------------------------------------------------------*/ /* Global variables */ /*----------------------------------------------------------*/ const char *GmfKwdFmt[ GmfMaxKwd + 1 ][4] = { {"Reserved", "", "", ""}, {"MeshVersionFormatted", "", "", "i"}, {"Reserved", "", "", ""}, {"Dimension", "", "", "i"}, {"Vertices", "Vertex", "i", "dri"}, {"Edges", "Edge", "i", "iii"}, {"Triangles", "Triangle", "i", "iiii"}, {"Quadrilaterals", "Quadrilateral", "i", "iiiii"}, {"Tetrahedra", "Tetrahedron", "i", "iiiii"}, {"Prisms", "Prism", "i", "iiiiiii"}, {"Hexahedra", "Hexahedron", "i", "iiiiiiiii"}, {"IterationsAll", "IterationAll","","i"}, {"TimesAll", "TimeAll","","r"}, {"Corners", "Corner", "i", "i"}, {"Ridges", "Ridge", "i", "i"}, {"RequiredVertices", "RequiredVertex", "i", "i"}, {"RequiredEdges", "RequiredEdge", "i", "i"}, {"RequiredTriangles", "RequiredTriangle", "i", "i"}, {"RequiredQuadrilaterals", "RequiredQuadrilateral", "i", "i"}, {"TangentAtEdgeVertices", "TangentAtEdgeVertex", "i", "iii"}, {"NormalAtVertices", "NormalAtVertex", "i", "ii"}, {"NormalAtTriangleVertices", "NormalAtTriangleVertex", "i", "iii"}, {"NormalAtQuadrilateralVertices", "NormalAtQuadrilateralVertex", "i", "iiii"}, {"AngleOfCornerBound", "", "", "r"}, {"TrianglesP2", "TriangleP2", "i", "iiiiiii"}, {"EdgesP2", "EdgeP2", "i", "iiii"}, {"SolAtPyramids", "SolAtPyramid", "i", "sr"}, {"QuadrilateralsQ2", "QuadrilateralQ2", "i", "iiiiiiiiii"}, {"ISolAtPyramids", "ISolAtPyramid", "i", "iiiii"}, {"SubDomainFromGeom", "SubDomainFromGeom", "i", "iii"}, {"TetrahedraP2", "TetrahedronP2", "i", "iiiiiiiiiii"}, {"Fault_NearTri", "Fault_NearTri", "i", "i"}, {"Fault_Inter", "Fault_Inter", "i", "i"}, {"HexahedraQ2", "HexahedronQ2", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"ExtraVerticesAtEdges", "ExtraVerticesAtEdge", "i", "in"}, {"ExtraVerticesAtTriangles", "ExtraVerticesAtTriangle", "i", "in"}, {"ExtraVerticesAtQuadrilaterals", "ExtraVerticesAtQuadrilateral", "i", "in"}, {"ExtraVerticesAtTetrahedra", "ExtraVerticesAtTetrahedron", "i", "in"}, {"ExtraVerticesAtPrisms", "ExtraVerticesAtPrism", "i", "in"}, {"ExtraVerticesAtHexahedra", "ExtraVerticesAtHexahedron", "i", "in"}, {"VerticesOnGeometricVertices", "VertexOnGeometricVertex", "i", "iir"}, {"VerticesOnGeometricEdges", "VertexOnGeometricEdge", "i", "iirr"}, {"VerticesOnGeometricTriangles", "VertexOnGeometricTriangle", "i", "iirrr"}, {"VerticesOnGeometricQuadrilaterals", "VertexOnGeometricQuadrilateral", "i", "iirrr"}, {"EdgesOnGeometricEdges", "EdgeOnGeometricEdge", "i", "iir"}, {"Fault_FreeEdge", "Fault_FreeEdge", "i", "i"}, {"Polyhedra", "Polyhedron", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"Polygons", "Polygon", "", "iiiiiiiii"}, {"Fault_Overlap", "Fault_Overlap", "i", "i"}, {"Pyramids", "Pyramid", "i", "iiiiii"}, {"BoundingBox", "", "", "drdr"}, {"Body","i", "drdrdrdr"}, {"PrivateTable", "PrivateTable", "i", "i"}, {"Fault_BadShape", "Fault_BadShape", "i", "i"}, {"End", "", "", ""}, {"TrianglesOnGeometricTriangles", "TriangleOnGeometricTriangle", "i", "iir"}, {"TrianglesOnGeometricQuadrilaterals", "TriangleOnGeometricQuadrilateral", "i", "iir"}, {"QuadrilateralsOnGeometricTriangles", "QuadrilateralOnGeometricTriangle", "i", "iir"}, {"QuadrilateralsOnGeometricQuadrilaterals", "QuadrilateralOnGeometricQuadrilateral", "i", "iir"}, {"Tangents", "Tangent", "i", "dr"}, {"Normals", "Normal", "i", "dr"}, {"TangentAtVertices", "TangentAtVertex", "i", "ii"}, {"SolAtVertices", "SolAtVertex", "i", "sr"}, {"SolAtEdges", "SolAtEdge", "i", "sr"}, {"SolAtTriangles", "SolAtTriangle", "i", "sr"}, {"SolAtQuadrilaterals", "SolAtQuadrilateral", "i", "sr"}, {"SolAtTetrahedra", "SolAtTetrahedron", "i", "sr"}, {"SolAtPrisms", "SolAtPrism", "i", "sr"}, {"SolAtHexahedra", "SolAtHexahedron", "i", "sr"}, {"DSolAtVertices", "DSolAtVertex", "i", "sr"}, {"ISolAtVertices", "ISolAtVertex", "i", "i"}, {"ISolAtEdges", "ISolAtEdge", "i", "ii"}, {"ISolAtTriangles", "ISolAtTriangle", "i", "iii"}, {"ISolAtQuadrilaterals", "ISolAtQuadrilateral", "i", "iiii"}, {"ISolAtTetrahedra", "ISolAtTetrahedron", "i", "iiii"}, {"ISolAtPrisms", "ISolAtPrism", "i", "iiiiii"}, {"ISolAtHexahedra", "ISolAtHexahedron", "i", "iiiiiiii"}, {"Iterations", "","","i"}, {"Time", "","","r"}, {"Fault_SmallTri", "Fault_SmallTri","i","i"}, {"CoarseHexahedra", "CoarseHexahedron", "i", "i"}, {"Comments", "Comment", "i", "c"}, {"PeriodicVertices", "PeriodicVertex", "i", "ii"}, {"PeriodicEdges", "PeriodicEdge", "i", "ii"}, {"PeriodicTriangles", "PeriodicTriangle", "i", "ii"}, {"PeriodicQuadrilaterals", "PeriodicQuadrilateral", "i", "ii"}, {"PrismsP2", "PrismP2", "i", "iiiiiiiiiiiiiiiiiii"}, {"PyramidsP2", "PyramidP2", "i", "iiiiiiiiiiiiiii"}, {"QuadrilateralsQ3", "QuadrilateralQ3", "i", "iiiiiiiiiiiiiiiii"}, {"QuadrilateralsQ4", "QuadrilateralQ4", "i", "iiiiiiiiiiiiiiiiiiiiiiiiii"}, {"TrianglesP3", "TriangleP3", "i", "iiiiiiiiiii"}, {"TrianglesP4", "TriangleP4", "i", "iiiiiiiiiiiiiiii"}, {"EdgesP3", "EdgeP3", "i", "iiiii"}, {"EdgesP4", "EdgeP4", "i", "iiiiii"} }; /*----------------------------------------------------------*/ /* Prototypes of local procedures */ /*----------------------------------------------------------*/ static void ScaWrd(GmfMshSct *, void *); static void ScaDblWrd(GmfMshSct *, void *); static long long GetPos(GmfMshSct *); static void RecWrd(GmfMshSct *, const void *); static void RecDblWrd(GmfMshSct *, const void *); static void RecBlk(GmfMshSct *, const void *, int); static void SetPos(GmfMshSct *, long long); static int ScaKwdTab(GmfMshSct *); static void ExpFmt(GmfMshSct *, int); static void ScaKwdHdr(GmfMshSct *, int); static void SwpWrd(char *, int); static int SetFilPos(GmfMshSct *, long long); static long long GetFilPos(GmfMshSct *msh); static long long GetFilSiz(GmfMshSct *); static void CalF77Prc(long long, long long, void *, int, void **); /*----------------------------------------------------------*/ /* Fscanf and fgets checking for errors */ /*----------------------------------------------------------*/ #define safe_fscanf(hdl, format, ptr, JmpErr) \ do { \ if( fscanf(hdl, format, ptr) != 1 ) \ longjmp( JmpErr, -1); \ } while(0) #define safe_fgets(ptr, siz, hdl, JmpErr) \ do { \ if( fgets(ptr, siz, hdl) == NULL ) \ longjmp( JmpErr, -1); \ } while(0) /*----------------------------------------------------------*/ /* Open a mesh file in read or write mod */ /*----------------------------------------------------------*/ long long GmfOpenMesh(char *FilNam, int mod, ...) { int KwdCod, res, *PtrVer, *PtrDim; long long MshIdx; char str[ GmfStrSiz ]; va_list VarArg; GmfMshSct *msh; /*---------------------*/ /* MESH STRUCTURE INIT */ /*---------------------*/ if(!(msh = calloc(1, sizeof(GmfMshSct)))) return(0); MshIdx = (long long)msh; /* Save the current stack environment for longjmp */ if(setjmp(msh->err) != 0) { if(msh->hdl != NULL) fclose(msh->hdl); if(msh->FilDes != 0) close(msh->FilDes); free(msh); return(0); } /* Copy the FilNam into the structure */ if(strlen(FilNam) + 7 >= GmfStrSiz) longjmp(msh->err, -1); strcpy(msh->FilNam, FilNam); /* Store the opening mod (read or write) and guess the filetype (binary or ascii) depending on the extension */ msh->mod = mod; msh->buf = (void *)msh->DblBuf; msh->FltBuf = (void *)msh->DblBuf; msh->IntBuf = (void *)msh->DblBuf; if(strstr(msh->FilNam, ".meshb")) msh->typ |= (Bin | MshFil); else if(strstr(msh->FilNam, ".mesh")) msh->typ |= (Asc | MshFil); else if(strstr(msh->FilNam, ".solb")) msh->typ |= (Bin | SolFil); else if(strstr(msh->FilNam, ".sol")) msh->typ |= (Asc | SolFil); else longjmp(msh->err, -1); /* Open the file in the required mod and initialyse the mesh structure */ if(msh->mod == GmfRead) { /*-----------------------*/ /* OPEN FILE FOR READING */ /*-----------------------*/ va_start(VarArg, mod); PtrVer = va_arg(VarArg, int *); PtrDim = va_arg(VarArg, int *); va_end(VarArg); /* Read the endian coding tag, the mesh version and the mesh dimension (mandatory kwd) */ if(msh->typ & Bin) { /* Create the name string and open the file */ msh->FilDes = open(msh->FilNam, O_RDONLY, 0666); if(msh->FilDes <= 0) longjmp(msh->err, -1); /* Read the endian coding tag, the mesh version and the mesh dimension (mandatory kwd) */ if(read(msh->FilDes, &msh->cod, WrdSiz) != WrdSiz) longjmp(msh->err, -1); if( (msh->cod != 1) && (msh->cod != 16777216) ) longjmp(msh->err, -1); ScaWrd(msh, (unsigned char *)&msh->ver); if( (msh->ver < 1) || (msh->ver > 4) ) longjmp(msh->err, -1); if( (msh->ver >= 3) && (sizeof(long long) != 8) ) longjmp(msh->err, -1); ScaWrd(msh, (unsigned char *)&KwdCod); if(KwdCod != GmfDimension) longjmp(msh->err, -1); GetPos(msh); ScaWrd(msh, (unsigned char *)&msh->dim); } else { /* Create the name string and open the file */ if(!(msh->hdl = fopen(msh->FilNam, "rb"))) longjmp(msh->err, -1); do { res = fscanf(msh->hdl, "%s", str); }while( (res != EOF) && strcmp(str, "MeshVersionFormatted") ); if(res == EOF) longjmp(msh->err, -1); safe_fscanf(msh->hdl, "%d", &msh->ver, msh->err); if( (msh->ver < 1) || (msh->ver > 4) ) longjmp(msh->err, -1); do { res = fscanf(msh->hdl, "%s", str); }while( (res != EOF) && strcmp(str, "Dimension") ); if(res == EOF) longjmp(msh->err, -1); safe_fscanf(msh->hdl, "%d", &msh->dim, msh->err); } if( (msh->dim != 2) && (msh->dim != 3) ) longjmp(msh->err, -1); (*PtrVer) = msh->ver; (*PtrDim) = msh->dim; /*------------*/ /* KW READING */ /*------------*/ /* Read the list of kw present in the file */ if(!ScaKwdTab(msh)) return(0); return(MshIdx); } else if(msh->mod == GmfWrite) { /*-----------------------*/ /* OPEN FILE FOR WRITING */ /*-----------------------*/ msh->cod = 1; /* Check if the user provided a valid version number and dimension */ va_start(VarArg, mod); msh->ver = va_arg(VarArg, int); msh->dim = va_arg(VarArg, int); va_end(VarArg); if( (msh->ver < 1) || (msh->ver > 4) ) longjmp(msh->err, -1); if( (msh->ver >= 3) && (sizeof(long long) != 8) ) longjmp(msh->err, -1); if( (msh->dim != 2) && (msh->dim != 3) ) longjmp(msh->err, -1); /* Create the mesh file */ if(msh->typ & Bin) { msh->FilDes = creat(msh->FilNam, 0666); if(msh->FilDes <= 0) longjmp(msh->err, -1); } else if(!(msh->hdl = fopen(msh->FilNam, "wb"))) longjmp(msh->err, -1); /*------------*/ /* KW WRITING */ /*------------*/ /* Write the mesh version and dimension */ if(msh->typ & Asc) { fprintf(msh->hdl, "%s %d\n\n", GmfKwdFmt[ GmfVersionFormatted ][0], msh->ver); fprintf(msh->hdl, "%s %d\n", GmfKwdFmt[ GmfDimension ][0], msh->dim); } else { RecWrd(msh, (unsigned char *)&msh->cod); RecWrd(msh, (unsigned char *)&msh->ver); GmfSetKwd(MshIdx, GmfDimension, 0); RecWrd(msh, (unsigned char *)&msh->dim); } return(MshIdx); } else { free(msh); return(0); } } /*----------------------------------------------------------*/ /* Close a meshfile in the right way */ /*----------------------------------------------------------*/ int GmfCloseMesh(long long MshIdx) { int res = 1; GmfMshSct *msh = (GmfMshSct *)MshIdx; RecBlk(msh, msh->buf, 0); /* In write down the "End" kw in write mode */ if(msh->mod == GmfWrite) { if(msh->typ & Asc) fprintf(msh->hdl, "\n%s\n", GmfKwdFmt[ GmfEnd ][0]); else GmfSetKwd(MshIdx, GmfEnd, 0); } /* Close the file and free the mesh structure */ if(msh->typ & Bin) close(msh->FilDes); else if(fclose(msh->hdl)) res = 0; free(msh); return(res); } /*----------------------------------------------------------*/ /* Read the number of lines and set the position to this kwd*/ /*----------------------------------------------------------*/ long long GmfStatKwd(long long MshIdx, int KwdCod, ...) { int i, *PtrNmbTyp, *PtrSolSiz, *TypTab; GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd; va_list VarArg; if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; if(!kwd->NmbLin) return(0); /* Read further arguments if this kw is a sol */ if(kwd->typ == SolKwd) { va_start(VarArg, KwdCod); PtrNmbTyp = va_arg(VarArg, int *); *PtrNmbTyp = kwd->NmbTyp; PtrSolSiz = va_arg(VarArg, int *); *PtrSolSiz = kwd->SolSiz; TypTab = va_arg(VarArg, int *); for(i=0;iNmbTyp;i++) TypTab[i] = kwd->TypTab[i]; va_end(VarArg); } return(kwd->NmbLin); } /*----------------------------------------------------------*/ /* Set the current file position to a given kwd */ /*----------------------------------------------------------*/ int GmfGotoKwd(long long MshIdx, int KwdCod) { GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) || !kwd->NmbLin ) return(0); return(SetFilPos(msh, kwd->pos)); } /*----------------------------------------------------------*/ /* Write the kwd and set the number of lines */ /*----------------------------------------------------------*/ int GmfSetKwd(long long MshIdx, int KwdCod, ...) { int i, *TypTab; long long NmbLin=0, CurPos; va_list VarArg; GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd; RecBlk(msh, msh->buf, 0); if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; /* Read further arguments if this kw has a header */ if(strlen(GmfKwdFmt[ KwdCod ][2])) { va_start(VarArg, KwdCod); NmbLin = va_arg(VarArg, long long); if(!strcmp(GmfKwdFmt[ KwdCod ][3], "sr")) { kwd->NmbTyp = va_arg(VarArg, int); TypTab = va_arg(VarArg, int *); for(i=0;iNmbTyp;i++) kwd->TypTab[i] = TypTab[i]; } va_end(VarArg); } /* Setup the kwd info */ ExpFmt(msh, KwdCod); if(!kwd->typ) return(0); else if(kwd->typ == InfKwd) kwd->NmbLin = 1; else kwd->NmbLin = NmbLin; /* Store the next kwd position in binary file */ if( (msh->typ & Bin) && msh->NexKwdPos ) { CurPos = GetFilPos(msh); if(!SetFilPos(msh, msh->NexKwdPos)) return(0); SetPos(msh, CurPos); if(!SetFilPos(msh, CurPos)) return(0); } /* Write the header */ if(msh->typ & Asc) { fprintf(msh->hdl, "\n%s\n", GmfKwdFmt[ KwdCod ][0]); if(kwd->typ != InfKwd) fprintf(msh->hdl, "%zd\n", kwd->NmbLin); /* In case of solution field, write the extended header */ if(kwd->typ == SolKwd) { fprintf(msh->hdl, "%d ", kwd->NmbTyp); for(i=0;iNmbTyp;i++) fprintf(msh->hdl, "%d ", kwd->TypTab[i]); fprintf(msh->hdl, "\n\n"); } } else { RecWrd(msh, (unsigned char *)&KwdCod); msh->NexKwdPos = GetFilPos(msh); SetPos(msh, 0); if(kwd->typ != InfKwd) { if(msh->ver < 4) { i = (int)kwd->NmbLin; RecWrd(msh, (unsigned char *)&i); } else RecDblWrd(msh, (unsigned char *)&kwd->NmbLin); } /* In case of solution field, write the extended header at once */ if(kwd->typ == SolKwd) { RecWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) RecWrd(msh, (unsigned char *)&kwd->TypTab[i]); } } /* Reset write buffer position */ msh->pos = 0; /* Estimate the total file size and check whether it crosses the 2GB threshold */ msh->siz += kwd->NmbLin * kwd->NmbWrd * WrdSiz; return(1); } /*----------------------------------------------------------*/ /* Read a full line from the current kwd */ /*----------------------------------------------------------*/ extern int NAMF77(GmfGetLin, gmfgetlin)(TYPF77(long long) MshIdx, TYPF77(int) KwdCod, ...) { int i, j; float *FltSolTab; double *DblSolTab; va_list VarArg; GmfMshSct *msh = (GmfMshSct *) VALF77(MshIdx); KwdSct *kwd = &msh->KwdTab[ VALF77(KwdCod) ]; if( (VALF77(KwdCod) < 1) || (VALF77(KwdCod) > GmfMaxKwd) ) return(0); /* Save the current stack environment for longjmp */ if(setjmp(msh->err) != 0) return(0); /* Start decoding the arguments */ va_start(VarArg, KwdCod); switch(kwd->typ) { case InfKwd : case RegKwd : case CmtKwd : { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') if(msh->ver <= 1) safe_fscanf(msh->hdl, "%f", va_arg(VarArg, float *), msh->err); else safe_fscanf(msh->hdl, "%lf", va_arg(VarArg, double *), msh->err); else if(kwd->fmt[i] == 'i') if(msh->ver <= 3) safe_fscanf(msh->hdl, "%d", va_arg(VarArg, int *), msh->err); else safe_fscanf(msh->hdl, "%ld", va_arg(VarArg, long *), msh->err); else if(kwd->fmt[i] == 'c') safe_fgets(va_arg(VarArg, char *), WrdSiz * FilStrSiz, msh->hdl, msh->err); } else { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') if(msh->ver <= 1) ScaWrd(msh, (unsigned char *)va_arg(VarArg, float *)); else ScaDblWrd(msh, (unsigned char *)va_arg(VarArg, double *)); else if(kwd->fmt[i] == 'i') if(msh->ver <= 3) ScaWrd(msh, (unsigned char *)va_arg(VarArg, int *)); else ScaDblWrd(msh, (unsigned char *)va_arg(VarArg, long *)); else if(kwd->fmt[i] == 'c') fread(va_arg(VarArg, char *), WrdSiz, FilStrSiz, msh->hdl); } }break; case SolKwd : { if(msh->ver == 1) { FltSolTab = va_arg(VarArg, float *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) safe_fscanf(msh->hdl, "%f", &FltSolTab[j], msh->err); else for(j=0;jSolSiz;j++) ScaWrd(msh, (unsigned char *)&FltSolTab[j]); } else { DblSolTab = va_arg(VarArg, double *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) safe_fscanf(msh->hdl, "%lf", &DblSolTab[j], msh->err); else for(j=0;jSolSiz;j++) ScaDblWrd(msh, (unsigned char *)&DblSolTab[j]); } }break; } va_end(VarArg); return(1); } /*----------------------------------------------------------*/ /* Write a full line from the current kwd */ /*----------------------------------------------------------*/ extern int NAMF77(GmfSetLin, gmfsetlin)(TYPF77(long long) MshIdx, TYPF77(int) KwdCod, ...) { int i, j, pos, *IntBuf; long *LngBuf; float *FltSolTab, *FltBuf; double *DblSolTab, *DblBuf; va_list VarArg; GmfMshSct *msh = (GmfMshSct *) VALF77(MshIdx); KwdSct *kwd = &msh->KwdTab[ VALF77(KwdCod) ]; if( ( VALF77(KwdCod) < 1) || ( VALF77(KwdCod) > GmfMaxKwd) ) return(0); /* Start decoding the arguments */ va_start(VarArg, KwdCod); if(kwd->typ != SolKwd) { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(msh->ver <= 1) fprintf(msh->hdl, "%g ", VALF77(va_arg(VarArg, TYPF77(double)))); else fprintf(msh->hdl, "%.15g ", VALF77(va_arg(VarArg, TYPF77(double)))); } else if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) fprintf(msh->hdl, "%d ", VALF77(va_arg(VarArg, TYPF77(int)))); else fprintf(msh->hdl, "%ld ", VALF77(va_arg(VarArg, TYPF77(long)))); } else if(kwd->fmt[i] == 'c') fprintf(msh->hdl, "%s", va_arg(VarArg, char *)); } } else { pos = 0; for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(msh->ver <= 1) { FltBuf = (void *)&msh->buf[ pos ]; *FltBuf = (float) VALF77(va_arg(VarArg, TYPF77(double))); pos += 4; } else { DblBuf = (void *)&msh->buf[ pos ]; *DblBuf = VALF77(va_arg(VarArg, TYPF77(double))); pos += 8; } } else if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) { IntBuf = (void *)&msh->buf[ pos ]; *IntBuf = VALF77(va_arg(VarArg, TYPF77(int))); pos += 4; } else { LngBuf = (void *)&msh->buf[ pos ]; *LngBuf = VALF77(va_arg(VarArg, TYPF77(long))); pos += 8; } } else if(kwd->fmt[i] == 'c') { memset(&msh->buf[ pos ], 0, FilStrSiz * WrdSiz); strncpy(&msh->buf[ pos ], va_arg(VarArg, char *), FilStrSiz * WrdSiz); pos += FilStrSiz; } } RecBlk(msh, msh->buf, kwd->NmbWrd); } } else { if(msh->ver == 1) { FltSolTab = va_arg(VarArg, float *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) fprintf(msh->hdl, "%g ", (double)FltSolTab[j]); else RecBlk(msh, (unsigned char *)FltSolTab, kwd->NmbWrd); } else { DblSolTab = va_arg(VarArg, double *); if(msh->typ & Asc) for(j=0;jSolSiz;j++) fprintf(msh->hdl, "%.15g ", DblSolTab[j]); else RecBlk(msh, (unsigned char *)DblSolTab, kwd->NmbWrd); } } va_end(VarArg); if(msh->typ & Asc) fprintf(msh->hdl, "\n"); return(1); } /*----------------------------------------------------------*/ /* Private procedure for transmesh : copy a whole line */ /*----------------------------------------------------------*/ #ifdef TRANSMESH int GmfCpyLin(int InpIdx, int OutIdx, int KwdCod) { char s[ WrdSiz * FilStrSiz ]; double d; float f; int i, a; long long l; GmfMshSct *InpMsh = GmfMshTab[ InpIdx ], *OutMsh = GmfMshTab[ OutIdx ]; KwdSct *kwd = &InpMsh->KwdTab[ KwdCod ]; /* Save the current stack environment for longjmp */ if(setjmp(InpMsh->err) != 0) return(0); for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(InpMsh->ver == 1) { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%f", &f, InpMsh->err); else ScaWrd(InpMsh, (unsigned char *)&f); d = (double)f; } else { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%lf", &d, InpMsh->err); else ScaDblWrd(InpMsh, (unsigned char *)&d); f = (float)d; } if(OutMsh->ver == 1) if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%g ", (double)f); else RecWrd(OutMsh, (unsigned char *)&f); else if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%.15g ", d); else RecDblWrd(OutMsh, (unsigned char *)&d); } else if(kwd->fmt[i] == 'i') { if(InpMsh->ver <= 3) { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%d", &a, InpMsh->err); else ScaWrd(InpMsh, (unsigned char *)&a); l = (long long)a; } else { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%zd", &l, InpMsh->err); else ScaDblWrd(InpMsh, (unsigned char *)&l); a = (int)l; } if(OutMsh->ver <= 3) { if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%d ", a); else RecWrd(OutMsh, (unsigned char *)&a); } else { if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%zd ", l); else RecDblWrd(OutMsh, (unsigned char *)&l); } } else if(kwd->fmt[i] == 'c') { memset(s, 0, FilStrSiz * WrdSiz); if(InpMsh->typ & Asc) safe_fgets(s, WrdSiz * FilStrSiz, InpMsh->hdl, InpMsh->err); else read(InpMsh->FilDes, s, WrdSiz * FilStrSiz); if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%s", s); else write(OutMsh->FilDes, s, WrdSiz * FilStrSiz); } } if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "\n"); return(1); } #endif /*----------------------------------------------------------*/ /* Bufferized reading of all keyword's lines */ /*----------------------------------------------------------*/ extern int NAMF77(GmfGetBlock, gmfgetblock)(TYPF77(long long) MshIdx, TYPF77(int) KwdCod, void *prc, ...) { char *UsrDat[ GmfMaxTyp ], *FilBuf=NULL, *FilPos; char *StrTab[5] = { "", "%f", "%lf", "%d", "%lld" }; int b, i, j, LinSiz, *FilPtrI32, *UsrPtrI32, FilTyp[ GmfMaxTyp ], UsrTyp[ GmfMaxTyp ]; int NmbBlk, NmbArg, SizTab[5] = {0,4,8,4,8}; long long NmbLin, *FilPtrI64, *UsrPtrI64, BegIdx, EndIdx=0; float *FilPtrR32, *UsrPtrR32; double *FilPtrR64, *UsrPtrR64; void (*UsrPrc)(long long, long long, void *) = NULL, *UsrArg, *ArgTab[ MaxArg ]; size_t UsrLen[ GmfMaxTyp ]; va_list VarArg; GmfMshSct *msh = (GmfMshSct *) VALF77(MshIdx); KwdSct *kwd = &msh->KwdTab[ VALF77(KwdCod) ]; /* Save the current stack environment for longjmp */ if(setjmp(msh->err) != 0) { if(FilBuf) free(FilBuf); return(0); } /* Check mesh and keyword */ if( (VALF77(KwdCod) < 1) || (VALF77(KwdCod) > GmfMaxKwd) || !kwd->NmbLin ) return(0); /* Make sure it's not a simple information keyword */ if( (kwd->typ != RegKwd) && (kwd->typ != SolKwd) ) return(0); /* Start decoding the arguments */ va_start(VarArg, prc); LinSiz = 0; /* Get the user's preporcessing procedure and argument adresses, if any */ #ifdef F77API if(PRCF77(prc)) { UsrPrc = (void (*)(long long, long long, void *))prc; NmbArg = *(va_arg(VarArg, int *)); for(i=0;iSolSiz;i++) { /* Get the user's data type and pointers to first and second adress to compute the stride */ UsrTyp[i] = VALF77(va_arg(VarArg, TYPF77(int))); UsrDat[i] = va_arg(VarArg, char *); UsrLen[i] = (size_t)(va_arg(VarArg, char *) - UsrDat[i]); /* Get the file's data type */ if(kwd->fmt[i] == 'r') if(msh->ver <= 1) FilTyp[i] = GmfFloat; else FilTyp[i] = GmfDouble; else if(msh->ver <= 3) FilTyp[i] = GmfInt; else FilTyp[i] = GmfLong; /* Compute the file stride */ LinSiz += SizTab[ FilTyp[i] ]; } va_end(VarArg); /* Move file pointer to the keyword data */ SetFilPos(msh, kwd->pos); /* Read the whole kwd data */ if(msh->typ & Asc) { for(i=0;iNmbLin;i++) for(j=0;jSolSiz;j++) { safe_fscanf(msh->hdl, StrTab[ UsrTyp[j] ], UsrDat[j], msh->err); UsrDat[j] += UsrLen[j]; } /* Call the user's preprocessing procedure */ if(UsrPrc) #ifdef F77API CalF77Prc(1, kwd->NmbLin, UsrPrc, NmbArg, ArgTab); #else UsrPrc(1, kwd->NmbLin, UsrArg); #endif } else { /* Allocate a small buffer and split the main loop into chunks */ if(!(FilBuf = malloc((size_t)(BufSiz * LinSiz)))) return(0); NmbBlk = kwd->NmbLin / BufSiz; for(b=0;b<=NmbBlk;b++) { if(b == NmbBlk) NmbLin = kwd->NmbLin - b * BufSiz; else NmbLin = BufSiz; /* Read a chunk of data */ if(read(msh->FilDes, FilBuf, (size_t)(LinSiz * NmbLin)) == -1) longjmp(msh->err, -1); FilPos = FilBuf; BegIdx = EndIdx+1; EndIdx += NmbLin; /* Then decode it and store it in the user's data structure */ for(i=0;iSolSiz;j++) { if(msh->cod != 1) SwpWrd(FilPos, SizTab[ FilTyp[j] ]); if(FilTyp[j] == GmfInt) { FilPtrI32 = (int *)FilPos; if(UsrTyp[j] == GmfInt) { UsrPtrI32 = (int *)UsrDat[j]; *UsrPtrI32 = *FilPtrI32; } else { UsrPtrI64 = (long long *)UsrDat[j]; *UsrPtrI64 = (long long)*FilPtrI32; } } else if(FilTyp[j] == GmfLong) { FilPtrI64 = (long long *)FilPos; if(UsrTyp[j] == GmfLong) { UsrPtrI64 = (long long *)UsrDat[j]; *UsrPtrI64 = *FilPtrI64; } else { UsrPtrI32 = (int *)UsrDat[j]; *UsrPtrI32 = (int)*FilPtrI64; } } else if(FilTyp[j] == GmfFloat) { FilPtrR32 = (float *)FilPos; if(UsrTyp[j] == GmfFloat) { UsrPtrR32 = (float *)UsrDat[j]; *UsrPtrR32 = *FilPtrR32; } else { UsrPtrR64 = (double *)UsrDat[j]; *UsrPtrR64 = (double)*FilPtrR32; } } else if(FilTyp[j] == GmfDouble) { FilPtrR64 = (double *)FilPos; if(UsrTyp[j] == GmfDouble) { UsrPtrR64 = (double *)UsrDat[j]; *UsrPtrR64 = *FilPtrR64; } else { UsrPtrR32 = (float *)UsrDat[j]; *UsrPtrR32 = (float)*FilPtrR64; } } FilPos += SizTab[ FilTyp[j] ]; UsrDat[j] += UsrLen[j]; } /* Call the user's preprocessing procedure */ if(UsrPrc) #ifdef F77API CalF77Prc(BegIdx, EndIdx, UsrPrc, NmbArg, ArgTab); #else UsrPrc(BegIdx, EndIdx, UsrArg); #endif } free(FilBuf); } return(1); } /*----------------------------------------------------------*/ /* Bufferized writing of all keyword's lines */ /*----------------------------------------------------------*/ extern int NAMF77(GmfSetBlock, gmfsetblock)(TYPF77(long long) MshIdx, TYPF77(int) KwdCod, void *prc, ...) { char *UsrDat[ GmfMaxTyp ], *FilBuf=NULL, *FilPos; char *StrTab[5] = { "", "%g", "%.15g", "%d", "%lld" }; int i, j, LinSiz, *FilPtrI32, *UsrPtrI32, FilTyp[ GmfMaxTyp ], UsrTyp[ GmfMaxTyp ]; int NmbBlk, NmbLin, b, SizTab[5] = {0,4,8,4,8}, NmbArg; long long *FilPtrI64, *UsrPtrI64, BegIdx, EndIdx=0; float *FilPtrR32, *UsrPtrR32; double *FilPtrR64, *UsrPtrR64; void (*UsrPrc)(long long, long long, void *) = NULL, *UsrArg, *ArgTab[ MaxArg ]; size_t UsrLen[ GmfMaxTyp ]; va_list VarArg; GmfMshSct *msh = (GmfMshSct *) VALF77(MshIdx); KwdSct *kwd = &msh->KwdTab[ VALF77(KwdCod) ]; /* Save the current stack environment for longjmp */ if(setjmp(msh->err) != 0) { if(FilBuf) free(FilBuf); return(0); } /* Check mesh and keyword */ if( (VALF77(KwdCod) < 1) || (VALF77(KwdCod) > GmfMaxKwd) || !kwd->NmbLin ) return(0); /* Make sure it's not a simple information keyword */ if( (kwd->typ != RegKwd) && (kwd->typ != SolKwd) ) return(0); /* Start decoding the arguments */ va_start(VarArg, prc); LinSiz = 0; /* Get the user's postprocessing procedure and argument adresses, if any */ #ifdef F77API if(PRCF77(prc)) { UsrPrc = (void (*)(long long, long long, void *))prc; NmbArg = *(va_arg(VarArg, int *)); for(i=0;iSolSiz;i++) { /* Get the user's data type and pointers to first and second adress to compute the stride */ UsrTyp[i] = VALF77(va_arg(VarArg, TYPF77(int))); UsrDat[i] = va_arg(VarArg, char *); UsrLen[i] = (size_t)(va_arg(VarArg, char *) - UsrDat[i]); /* Get the file's data type */ if(kwd->fmt[i] == 'r') if(msh->ver <= 1) FilTyp[i] = GmfFloat; else FilTyp[i] = GmfDouble; else if(msh->ver <= 3) FilTyp[i] = GmfInt; else FilTyp[i] = GmfLong; /* Compute the file stride */ LinSiz += SizTab[ FilTyp[i] ]; } va_end(VarArg); /* Write the whole kwd data */ if(msh->typ & Asc) { if(UsrPrc) #ifdef F77API CalF77Prc(1, kwd->NmbLin, UsrPrc, NmbArg, ArgTab); #else UsrPrc(1, kwd->NmbLin, UsrArg); #endif for(i=0;iNmbLin;i++) for(j=0;jSolSiz;j++) { if(UsrTyp[j] == GmfFloat) { UsrPtrR32 = (float *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] ], (double)*UsrPtrR32); } else if(UsrTyp[j] == GmfDouble) { UsrPtrR64 = (double *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] ], *UsrPtrR64); } else if(UsrTyp[j] == GmfInt) { UsrPtrI32 = (int *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] ], *UsrPtrI32); } else if(UsrTyp[j] == GmfLong) { UsrPtrI64 = (long long *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] ], *UsrPtrI64); } if(j < kwd->SolSiz -1) fprintf(msh->hdl, " "); else fprintf(msh->hdl, "\n"); UsrDat[j] += UsrLen[j]; } } else { if(!(FilBuf = malloc((size_t)BufSiz * (size_t)LinSiz))) return(0); NmbBlk = kwd->NmbLin / BufSiz; for(b=0;b<=NmbBlk;b++) { if(b == NmbBlk) NmbLin = kwd->NmbLin - b * BufSiz; else NmbLin = BufSiz; FilPos = FilBuf; BegIdx = EndIdx+1; EndIdx += NmbLin; if(UsrPrc) #ifdef F77API CalF77Prc(BegIdx, EndIdx, UsrPrc, NmbArg, ArgTab); #else UsrPrc(BegIdx, EndIdx, UsrArg); #endif for(i=0;iSolSiz;j++) { if(FilTyp[j] == GmfInt) { FilPtrI32 = (int *)FilPos; if(UsrTyp[j] == GmfInt) { UsrPtrI32 = (int *)UsrDat[j]; *FilPtrI32 = *UsrPtrI32; } else { UsrPtrI64 = (long long *)UsrDat[j]; *FilPtrI32 = (int)*UsrPtrI64; } } else if(FilTyp[j] == GmfLong) { FilPtrI64 = (long long *)FilPos; if(UsrTyp[j] == GmfLong) { UsrPtrI64 = (long long *)UsrDat[j]; *FilPtrI64 = *UsrPtrI64; } else { UsrPtrI32 = (int *)UsrDat[j]; *FilPtrI64 = (long long)*UsrPtrI32; } } else if(FilTyp[j] == GmfFloat) { FilPtrR32 = (float *)FilPos; if(UsrTyp[j] == GmfFloat) { UsrPtrR32 = (float *)UsrDat[j]; *FilPtrR32 = *UsrPtrR32; } else { UsrPtrR64 = (double *)UsrDat[j]; *FilPtrR32 = (float)*UsrPtrR64; } } else if(FilTyp[j] == GmfDouble) { FilPtrR64 = (double *)FilPos; if(UsrTyp[j] == GmfDouble) { UsrPtrR64 = (double *)UsrDat[j]; *FilPtrR64 = *UsrPtrR64; } else { UsrPtrR32 = (float *)UsrDat[j]; *FilPtrR64 = (double)*UsrPtrR32; } } FilPos += SizTab[ FilTyp[j] ]; UsrDat[j] += UsrLen[j]; } if(write(msh->FilDes, FilBuf, (size_t)(LinSiz * NmbLin)) == -1) { free(FilBuf); return(0); } } free(FilBuf); } return(1); } /*----------------------------------------------------------*/ /* Find every kw present in a meshfile */ /*----------------------------------------------------------*/ static int ScaKwdTab(GmfMshSct *msh) { int KwdCod, c; long long NexPos, EndPos; char str[ GmfStrSiz ]; if(msh->typ & Asc) { /* Scan each string in the file until the end */ while(fscanf(msh->hdl, "%s", str) != EOF) { /* Fast test in order to reject quickly the numeric values */ if(isalpha(str[0])) { /* Search which kwd code this string is associated with, then get its header and save the curent position in file (just before the data) */ for(KwdCod=1; KwdCod<= GmfMaxKwd; KwdCod++) if(!strcmp(str, GmfKwdFmt[ KwdCod ][0])) { ScaKwdHdr(msh, KwdCod); break; } } else if(str[0] == '#') while((c = fgetc(msh->hdl)) != '\n' && c != EOF); } } else { /* Get file size */ EndPos = GetFilSiz(msh); /* Jump through kwd positions in the file */ do { /* Get the kwd code and the next kwd position */ ScaWrd(msh, ( char *)&KwdCod); NexPos = GetPos(msh); if(NexPos > EndPos) longjmp(msh->err, -1); /* Check if this kwd belongs to this mesh version */ if( (KwdCod >= 1) && (KwdCod <= GmfMaxKwd) ) ScaKwdHdr(msh, KwdCod); /* Go to the next kwd */ if(NexPos && !(SetFilPos(msh, NexPos))) longjmp(msh->err, -1); }while(NexPos && (KwdCod != GmfEnd)); } return(1); } /*----------------------------------------------------------*/ /* Read and setup the keyword's header */ /*----------------------------------------------------------*/ static void ScaKwdHdr(GmfMshSct *msh, int KwdCod) { int i; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; if(!strcmp("i", GmfKwdFmt[ KwdCod ][2])) if(msh->typ & Asc) safe_fscanf(msh->hdl, "%zd", &kwd->NmbLin, msh->err); else if(msh->ver <= 3) { ScaWrd(msh, (unsigned char *)&i); kwd->NmbLin = i; } else ScaDblWrd(msh, (unsigned char *)&kwd->NmbLin); else kwd->NmbLin = 1; if(!strcmp("sr", GmfKwdFmt[ KwdCod ][3])) { if(msh->typ & Asc) { safe_fscanf(msh->hdl, "%d", &kwd->NmbTyp, msh->err); for(i=0;iNmbTyp;i++) safe_fscanf(msh->hdl, "%d", &kwd->TypTab[i], msh->err); } else { ScaWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) ScaWrd(msh, (unsigned char *)&kwd->TypTab[i]); } } ExpFmt(msh, KwdCod); kwd->pos = GetFilPos(msh); } /*----------------------------------------------------------*/ /* Expand the compacted format and compute the line size */ /*----------------------------------------------------------*/ static void ExpFmt(GmfMshSct *msh, int KwdCod) { int i, j, TmpSiz=0, IntWrd, FltWrd; char chr; const char *InpFmt = GmfKwdFmt[ KwdCod ][3]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; /* Set the kwd's type */ if(!strlen(GmfKwdFmt[ KwdCod ][2])) kwd->typ = InfKwd; else if(!strcmp(InpFmt, "sr")) kwd->typ = SolKwd; else kwd->typ = RegKwd; /* Get the solution-field's size */ if(kwd->typ == SolKwd) for(i=0;iNmbTyp;i++) switch(kwd->TypTab[i]) { case GmfSca : TmpSiz += 1; break; case GmfVec : TmpSiz += msh->dim; break; case GmfSymMat : TmpSiz += (msh->dim * (msh->dim+1)) / 2; break; case GmfMat : TmpSiz += msh->dim * msh->dim; break; } /* Scan each character from the format string */ i = kwd->SolSiz = kwd->NmbWrd = 0; while(i < (int)strlen(InpFmt)) { chr = InpFmt[ i++ ]; if(chr == 'd') { chr = InpFmt[i++]; for(j=0;jdim;j++) kwd->fmt[ kwd->SolSiz++ ] = chr; } else if(chr == 's') { chr = InpFmt[i++]; for(j=0;jfmt[ kwd->SolSiz++ ] = chr; } else kwd->fmt[ kwd->SolSiz++ ] = chr; } if(msh->ver <= 1) FltWrd = 1; else FltWrd = 2; if(msh->ver <= 3) IntWrd = 1; else IntWrd = 2; for(i=0;iSolSiz;i++) switch(kwd->fmt[i]) { case 'i' : kwd->NmbWrd += IntWrd; break; case 'c' : kwd->NmbWrd += FilStrSiz; break; case 'r' : kwd->NmbWrd += FltWrd;break; } } /*----------------------------------------------------------*/ /* Read a four bytes word from a mesh file */ /*----------------------------------------------------------*/ static void ScaWrd(GmfMshSct *msh, void *ptr) { if(read(msh->FilDes, ptr, WrdSiz) != WrdSiz) longjmp(msh->err, -1); if(msh->cod != 1) SwpWrd((char *)ptr, WrdSiz); } /*----------------------------------------------------------*/ /* Read an eight bytes word from a mesh file */ /*----------------------------------------------------------*/ static void ScaDblWrd(GmfMshSct *msh, void *ptr) { if(read(msh->FilDes, ptr, WrdSiz * 2) != WrdSiz * 2) longjmp(msh->err, -1); if(msh->cod != 1) SwpWrd((char *)ptr, 2 * WrdSiz); } /*----------------------------------------------------------*/ /* Read a 4 or 8 bytes position in mesh file */ /*----------------------------------------------------------*/ static long long GetPos(GmfMshSct *msh) { int IntVal; long long pos; if(msh->ver >= 3) ScaDblWrd(msh, (unsigned char*)&pos); else { ScaWrd(msh, (unsigned char*)&IntVal); pos = (long long)IntVal; } return(pos); } /*----------------------------------------------------------*/ /* Write a four bytes word to a mesh file */ /*----------------------------------------------------------*/ static void RecWrd(GmfMshSct *msh, const void *wrd) { write(msh->FilDes, wrd, WrdSiz); } /*----------------------------------------------------------*/ /* Write an eight bytes word to a mesh file */ /*----------------------------------------------------------*/ static void RecDblWrd(GmfMshSct *msh, const void *wrd) { write(msh->FilDes, wrd, WrdSiz * 2); } /*----------------------------------------------------------*/ /* Write a block of four bytes word to a mesh file */ /*----------------------------------------------------------*/ static void RecBlk(GmfMshSct *msh, const void *blk, int siz) { /* Copy this line-block into the main mesh buffer */ if(siz) { memcpy(&msh->blk[ msh->pos ], blk, (size_t)(siz * WrdSiz)); msh->pos += siz * WrdSiz; } /* When the buffer is full or this procedure is APIF77ed with a 0 size, flush the cache on disk */ if( (msh->pos > BufSiz) || (!siz && msh->pos) ) { write(msh->FilDes, msh->blk, (size_t)msh->pos); msh->pos = 0; } } /*----------------------------------------------------------*/ /* Write a 4 or 8 bytes position in a mesh file */ /*----------------------------------------------------------*/ static void SetPos(GmfMshSct *msh, long long pos) { int IntVal; if(msh->ver >= 3) RecDblWrd(msh, (unsigned char*)&pos); else { IntVal = (int)pos; RecWrd(msh, (unsigned char*)&IntVal); } } /*----------------------------------------------------------*/ /* Endianness conversion */ /*----------------------------------------------------------*/ static void SwpWrd(char *wrd, int siz) { char swp; int i; for(i=0;ityp & Bin) return((lseek(msh->FilDes, pos, 0) != -1)); else return((fseek(msh->hdl, pos, SEEK_SET) == 0)); } /*----------------------------------------------------------*/ /* Get current position in a file */ /*----------------------------------------------------------*/ static long long GetFilPos(GmfMshSct *msh) { if(msh->typ & Bin) return(lseek(msh->FilDes, 0, 1)); else return(ftell(msh->hdl)); } /*----------------------------------------------------------*/ /* Move the position to the end of file and return the size */ /*----------------------------------------------------------*/ static long long GetFilSiz(GmfMshSct *msh) { long long CurPos, EndPos = 0; if(msh->typ & Bin) { CurPos = lseek(msh->FilDes, 0, 1); EndPos = lseek(msh->FilDes, 0, 2); lseek(msh->FilDes, CurPos, 0); } else { CurPos = ftell(msh->hdl); if(fseek(msh->hdl, 0, SEEK_END) != 0) longjmp(msh->err, -1); EndPos = ftell(msh->hdl); if(fseek(msh->hdl, CurPos, SEEK_SET) != 0) longjmp(msh->err, -1); } return(EndPos); } /*----------------------------------------------------------*/ /* Fortran 77 API */ /*----------------------------------------------------------*/ #ifdef F77API long long APIF77(gmfopenmesh)(char *FilNam, int *mod, int *ver, int *dim, int StrSiz) { int i; char TmpNam[ GmfStrSiz ]; for(i=0;inC<;ۤ?ϤM=ѿ5?*t^cܿ!CV1 >ܿB[Υѿf6뿛 >ܿ'?L࿛ >ܿ;$?+? "R.ܿ8n?;J"ÿɍ"k?D?r?IB=?~!<8? ?͋?9`W? ƈDe?ɍ"kMX?&5؀?IB=v?c͋P?(&o?N?q= ףp?IbI?KK1?Jvl?q ?A C? HwD? o?;.ۿZ ?,B4?+=)߿LLb?y!?[7qCDR o??Noۿ[ ӿ,B4? !p$PR] ҿy!?d?ɮˡE?7 C?&|{24?dn?s۾Gy!?՝?ǃ-v?q?]6:8?̰Qɿ{?Д~P0_^?'-\VaſG'?\4 34ڿ:3P?t{Ic@j.q"?W[q>Hr>?4#ظ]迾.ɿG1HLP÷׿H¾DWԲHĿRDU࿒>?4#x ƻ#G1-R?W@KWx?5>ӿ3g}1N:7?@a+ҿ3l:?LuT5?/- 'i??XƆnv?ٯ;yٱ)Xl:?ikD0?fR@ҿzi/G4{>?H?Cm~ҿ R)v4?Bc I?m~ҿu+.!w(пd:tz¿d"<^b,˿Z(?u+.?h ?x'۲?y7RH?K\Ǹ?Mu?1(hr?W'g(?,+MJAWGI?h;J?i?YBtxk?0{dƧ N_,?{mmпdb_ѭ?@?!1Pt&m?E =r?k￷h\W%1?RHڍz0H?iƢ?яtxk?‡?ٲ|]N_,? h"?v߿%Y?,?jUZѿWm?=z?B|`ӿh\W*4?bmVc?0' ?4 f?&ǝ?ƥdk?eÚʢ0?ƄK?JY8?Yb[>?n;n@L!?T~OSԿETѿu{m?|b*߳?iVy׿T?v=?4濾࿸n;fh<zG3C6? ?p!ۿd 1?x'-\V?Lo.2Կqn?Kd?Oc*Ϳ"dT??HPĿSC9ѮB?GӿSt$D$]?!T2]gC&]kL>Lۿtpx˿?74eԿT:E-Ϳ< ڿ37߈YRb׿K?a?kyqοLZ8'_Ϳ<2TT?p-e _?}n}?"dT9w?LT?"lxz,?6[ ?]¡xx?AF?h;?G ? *~s?3p?z}֤?[Ӟs9̗?#&?ϟ6Ӂ濳|\?Lw&+?K@k?[ Ac?҇.R+Lk?EVȪ?/A~6rݔ?Bp-??/E>?֥F?eډ??tA}˜?e2P鿃L2r?f? /)꿫%?? /=bBWT?Do~T~Oƿi:;%?Uthc翫%EVȪ?ˑ-|wBp-?mXSYv濚eI֥F?'kC4ڿ3ތ?tA}˜?uؿo^濴f?_|Ὺ忍?5磌MjhIط?#0ܻ0*i:;%?1aM٨? 0s6^?NJ)}C]#&?$_ Į?ӜȄLw&+?\?|˙m[ Ac?|y?z9EVȪ?5s{?֐҇Bp-?t["?eS֥F?EEN?D|,{؜?oŏ?l衶+]gC?Ժ j?6` j?ފĄ?W׿.5#?QGH?Yb+hؿBv$?Pmp?x&1̿&^?^Gt?enݳտ#&?#?= ףp=Ŀ'+?CTf?aÿsbc?}R?NCT?V#˪?\='o?+d?IC3?FA?`H?ēG?Ab{n?m6Vb?Y?!Z+g?|\?^??\&?7{5?3>?#GG,By俬G|?.<ܿ3g}ݿ Ƿw ?(&2sk]hSۂ?q&"ĿǁWۿHz?o(!ܺ:ۿaX5s?yCnѿqÿ5"?eʦ.z#IQ(IS?>$ʿHSȕzƿw*g?CVzNzпnHJz?FA?҇.ٿ2#?$A?Md 5s,am?ʉv߿'9x濝Y.տ#GG,-AGٿC<ܿ[n+̿(&2s bk_B</Oտq&"Ŀhv[&pno(! pUjOv3ÿyCnѿ+ᅦm2d?I̦ %H?H6WsDʿ2W!3?7j{пh9Cm鿣>6?mV}bۿ2˞6gIC3?ysV{X]N꿍ҥI*?w$$6߿? |#GG,/?$]3fC<ܿ~x%g(&2s;3f;?_|xᅨq&"ĿZmǿ̰Qo(!#)ahÿqrgyCnѿnK3ݿ7wpI̦pΈ`⿬q6\H6WsDʿ(ڿҧU뿬7j{пv_.'HmV}bۿ9'0ȚA"ysV{Xl޿6sHjdw$$6߿=ug?;Tގ¿h,)#.R?ᔹ¿;P<ܿwř?ӿ??4s!S>U?/[<ѿq&"Ŀ2?w~޿o(!j?V{ ܿyCnѿBt?I̦+`p?pwnPH6WsDʿɊj?0DK忬7j{п}[T?]pmV}bۿ$$6?T~ysV{X 翇?Jo w$$6߿0 Ƿ?2Mc{?((E+Wv;?/^|Q?;QiۿCͩd?h.K?mē]#?(@?+5{Ŀyߢ%?>?y÷mQf?%Ί?zflѿ߆?XB(? ?ۂ7t?*@8 m?Fdrjg?u?JGWfO7P?a4?i_5o?[ʿeZPVjܛ0?hwH1@?jIG6W?'?}w+Kt?qN`:?G?l_@/9?z)??a4? h"l??!ȱbA ?ip[[?6+1?_LJ?ǻ#cy?uR_v?]mO?Wt5?r/翕Tt)? 5?b!*.?ne?PMIa忯;3p?*WY[?\mտx[?76;R}g?ӿ-x>?:U?&R?o*k-B;'⿰Tka? U3Yٿ 5?IpտWUڿne?;s տ Y9⿨ip[[?0S80C¿76;R}g?A%cyÿ:U?5?tF^3c?'??w 5?g?C׼ܿmRX?I-?ҨI࿎~31]?}t76;R}g?m2OSpT7SW?(,?uBY?F|'f?ŋ!?bg ع(/?J= B?9\=?H`w?YF?jMѿmT?>Vÿ6T?`C|S:ֿ>z}?'9-W|V>(8'0?a1ZR^Hӱ?n?~31]Sgܿz̔? cZB`q8+)?}V%]3f+Nf̲'9ལƄ!sePmp?oK3 k* =C8fٓ?#EdX0ԛQUѿPny Ƿw`Ùǿz0)>Qv0bֿE&}VijĿ^a̲'9*lӿ6ϷܿoK31{vݿTX#EdX4 ;?QcB̥Pny*-ď?_zsѐz0)>+C3O.?H+ }V?.ٿ92go?W<ڿ0&du? 8@#EdX|b:?=)¿DJyp#e?ȷw ÿWt5J(?36t?P?ȱ T=?bod?je/Uka9?J?^?w}O9&?l?k T OCBUfJo?Gq?am¿( 5 ?`a?$' bƿ ӹ&ʹg?ϟ6Ӂ?ݿ Bp`a?yW⦫ିWt5ſR?}%"1ܿia?1'h'?ht3ſGqL3?MJA4ܿu9% &ar JGW麿ϟ6Ӂйؿ, &(ѿu9% &af,N¿ΤMչ?RB׿_?u9% &avi?mV?w*2:?$?:M ?c%YI?FHACÿUĿ#N'r?+?%:ҿƉv?%s|?oHͿ]?X?7-:俁>'IW?&L1A??0`ۿYw?vkF?YOT9)9'?^6S!?pxADj޿E??Wm?̔?-SxClp濃߆y?N(y<$>?H`? Y]?Nݦ&|Va3?[?熦t`?r z+?QZ.IW%s|?0q;"]?X?= ~oӟHٿ&L1A?UrQ¿vkF?L4iSu^6S!?Uo4(ȿ?s[잼⿚-Sxx[Y<_E ݿN(y7-:YG8-xWH`?h=|(K8UNݦۿw( 뿕[?,ܿΩdb쿯r z+?,d ҿ^k뿉%s|?~jtͿJ zy濋X?h'?\ '&L1A?kÿljvkF?镲?A ;^6S!?9#J{lɪᅭ?臭?SYvQt-SxP293?fOs ̄N(y&S?H`?ZI+?_Nݦt%?۠[忕[?V~?濯r z+?(G`?#*T7.Uik|?$?vLۿd:tzލ?hY?%ſvN@?سg?=B͐*ܿvkF?-\n?a)r^6S!?9~4b?2 nۿ?MDu?٭L{e.@2xhx?dÿN(y!?öE 2?P3?qQ?e6\?k=]?QZ? ܺ:?>V[?k i?7yۖ?є~Pܿ@g? nk Kٿ6$#g㿃k?Df?IӠhNE׿NGҿsg&55 ,ҿm\pԿ-ͭVcX? Xܿ!Y *~ؿK7A忛&ܫ忚n/iѿZHs?ʠDٿ;V)=Kٿil?Q`?+qo~?8k¿Tzп.5#?RZJY08M{v׿x]?d5 ,ҿ^?J?X?U?3KT *~ؿb*?zi뿚n/iѿCus=?'*T?'֩=ٿ =b?˻?:6UпG,?xz,C?;u+ҿ%A ?ADjŴ?Ԋ%a?S\U]?elf?wGjؿިo?-R?|@3iѿ?CD{&s|4?3&c`?dsU?&s|4n?no?YOD?Ȗ2?Wy2: v?6?bN&?iSul?p^}uRz?{5Z?׻?οbd?u6?T^-wԿti?c_?b0п&5؀?'?DҿF0}ÿu6?CoԿqW"Ϳ Xr_?cB%U˿㪲ɿ R)v4?qGRì?4bfԿz6?sо?`80ؿ?̔_?^)ʥ?.Hѿ>x?,'?N6ÿ*w75yj?m77MͿ/J_>%?ɿcg^؋Ȭ{L4Կu6Hm便?N0ؿ#LQ._"T2?ѿ)?̔Կiw6I{dٿ`#LQ._)ϼvҿ%A? F6\T¿l??w6B:<du?/J_:qޤI,|}?>xK?v4?s?W}W?ORB0?Ye?/?4*p ?qW"?,`p͝?%!q?Jvl?J y?Vh?^-wf?>v()?y?$}?/r.?b!)?#gaO;??XƆn?x?,\?uV 1?[X ?.Ȗ2?8欿vR~R?T?L{)߿ `5!?\M 4?^VL?(?*3㿁#?OrMd?@,9$)[$F?r75|?):+)T?#gaO;?-'y3?,\?=z}Kwِ?.Ȗ2?`<~#k "?T?ɐ+=)?.&?I]?V?Oo+5l/̿q5?%P6}¿X8IǴ?\꿩 п\M 4??ܵŦB׿(?hjhwH1ֿOrMd? a@mTYܿr75|?_)^#gaO;?"rlHV翥,\?7N6(.Ȗ2?A_޿[z4ՓT?62;ٿ0Z .&?`~޿jIG濣V?Wx:"ߥԥq5?E)!XU/?&MX8IǴ?K3Ǟ=\M 4?[԰?<\)(?8z%4?|x ←OrMd?l#fF?B5v r75|?>@?ۼqR#gaO;?¿3?ض(A뿥,\?(ϼ?gED.Ȗ2?:8?w|o\?}"O?Fu:㿚]V$&? o?忇M?|??JRҿKi?&|?ؿV|C?I/j?lҿ5\?9{gUI?膦ο(?\߇?DԷпOrMd?^-?AĿr75|?ʆ5E?uR_?ݑ?o+6+?.?Ӹ7a? ̊?W^??;TSu8?#0709?&P?<;?wۅ:?B"LQ.?$pt?J?!>@?ƒf=?o ^?,J z2QC0?F ^ׯlY.]jJ?!Ky ߿LLb.2?Am˿vT?'߿72ۿXU?kȿÿ[a/0?D-ͭĿ䤋93Lm?_(QGٳ25 v|?iO9Ϳ>P?*SAQ?CԳ ݿS*g?P5?F(߿Ԭ? uX?DI=jҿ,J .ED1PW\׿F ^ׯ?I꿙; ӿ!Ky ߿Y0GQgsbcͿAm˿y7ο'߿G ¿kȿuݑ1(ȯ?Жs)ĿLL+z? 3mJA ºq{mm?ͿʧǶ 8%??2:=޿Vn2迳En1?g$A鿔K^I?ß<#?pq,J CB?ȔAhF ^ׯ֫#?p!Ky ߿1ENBx|{נ/Am˿~/ϔ PR'߿ĿNkȿܿWMa%쿑Жs)Ŀ5Ea࿜N 3mJ:̗`߿EnͿQg!fᔹ?2:=޿jJ>v) 㿀g(ϼ% &Bß<JZ ?ȚA"̿d=KbB?Cl¿ط}9?aο|` ߿Hjdr?I}Y׿Am˿ (G`?/ؿ'߿QKs+?^-ݿkȿE&W?GQ濑Жs)Ŀ6?S% 3mJT~O?6!Ϳx!?YdPmp"?x`C?[n﫿u"T3k?ӀA?tOpVg)YN?([Z?O0&?kP? d,?'_?EB[?T÷?jdW?[ H`?۽'GͿ$ ?̳V|C?g %¿0\?g|_\?fCC?C}?4*p˿bٽ???oDIH¿ K??Shi?pH?Mp]1?kg{t?3?O?P?l?$z?]z?%?Qy9? ~bɑ?c[?Q?LK1?A ;?[ ?;TSu8?d?wGoq_?rCQ?$̉?c w?PC?'rJ@?B?F6?64D?B\9{g4?ɐ?稣jd?LQ??&*Q? ?-\?a?j ?; >?;r30r志? ?wQi>"?n@?>4asK!q?ӜH?/=?ro~D?=E7㿗c${?@-?ῢ D?_ ?)r84I,)w?c[?.Ȗ`"?N6? ࿢}!?7P|?QfL2r俳?Pn?Eׅ?hhsM~2Ƈ?*-9?}ԛQԿSͬ?J4?SYvQؿZM?x?\޿:wf?1?5l׿>"D?N?R =N֭ܿ7?@7n1??CX:߿ ?#qpd7i࿤M+@?6M0k!࿽ӜH?u["A⿰Rbro~D?t3N]m{ۿ@-?uݑ1UGt׿_ ?`5տO`c[?%ؿ:r30ݿN6?C*qܿuؿ7P|?5Fjؿ 8Eׅ?Vf\޿2g@*-9?wݗ3ÿJ4? TƿO俇q&ʿx?]U˿Wҿ1?C?{ΉL˿N?YLQ޿ NDӿ@7n1??@I?,~SX  ?,=)?hyܝ翤M+@??5wԲH? 0?^cޚ濈c]F?Iط?oH@-?ʇjj?YR>_ ?'0mP?X޿=U?0K;5?XA+d ?Ҩ6p?=U+Sc$?Oo+?ǀῌQ?t?Dׅ㿧>s?`,)4?bI5xc-t%U念l/?4}v?.%?ӏ<ˉ?dCԷ!?O唀?\sG˵t??Ent?+ۖa?dpu?Do?;i?Se?EX?RNUZJPz?I ?9`W|w?81$'7?^?UeA?oB@?|A ?8Mp]?j?)q?~7?a'֩?#1?&?V/'?SQG?FGR?Á,`?^?}"O?O\W ?:}k?9?q?ù?{Gz̿ɐc?Q?Aǘοӻx?n?pUjv?Fu:ʿm?^D1?psĿ؟N?O=? $>wD+g?1'hç?'&n-?t?˖Q=1Xq*?AB/пw-?ڧ16eȿF\?=@>?ÿ^'ei?OH<.ED1ÿkg{t?'XQSPҿ3ı.n?Ex]zԿeS?Ku/3o\uxc?7p?=U'ས4ڪ$?>F<͌{w7?c=\G )?;^? eI)v? |2#@ٿTB?rOWw,6*5{ٿ+P4?6稣jd׿ɐc?mߣOԿX+? U [Yeʿ; ?ǝ?߉Y/rB d?D@9 Iط?YvQ@&VZV?XGkȽq)?{-1͏OG|C5%Y pC׼hK6Z&q⿌QQ?C3 a*?ӀAҧL…[.?r[v׿$!hUK:?_M࿂ Uܸ?.0ݿӀAҧC*q?I`sؿND~?n!~ῠ.'Hl?|b*߳3cZ? FÿF6FCƣTB?z"0ʿ1FG?#+ ҿ+2: |,}z?i4˿~NZE?4ӿ$>+1JZq?}?q?dpu4J?]6:8?[K< bk_?Ut?&R?o*2?+hZbe4??Z?Y??=^H?Vdt@?;]k?r?dVA?V?"D?: U?gп?I??$wDf?H_?ʇjj?{.S?[֛?Qr?+?ZB>Y?_D1uW?t 34?BW?(?YZ?![=?K>v()?ˀ,'?f ?C8?Sul?l?h?No?+Yή"7 ?b?¯'y?X5s;?֡?9r?fG?C?0DN_ϻ?fh<?BK?h>?IHm?.?g@5bȠɴ??;ޜU)?+p?0/>:u# ^H?@єq:ֿL7A`?Xlap׿S?Peo)?Đֿ̰?Xᖏ?뉮 ?ڿ~jt?c?K̳V|ӿJVo?e`TR'?;S.ӿܠ[;?S c A?{?m̿gv?{Ic?;̿ <.9?a?@ؿsE?*U-?đۿ`obHN?eF ^?Ѐz3j޿#0?09?@Ex3YI?' E?^?1C?;]k+?{ʄ_Vd?r$8gп,}?%H_uBY?WÿnIa5 ?ynU̿ 3*3?ht4;[֛DJy??-JO!WYel?Ҏv7BWps? Ŀt?g&5?z9 ?q]PͿD(bsgbѿDeݿOP+?kͿfv(hr1Ggſ+MFa]ſ @tɿ2uWv[/)?N0߿Mx$^ip[[?$ӡn߿/עhr"(۴?KqUr߉YY 2&࿬]i-kْUoB! ĭmtOq޿s?qۿJ)?#ǔ?ޒֿaM?B 3m׿FzQ__Lֿ+p{ֿ*Yl@ؿRɋL޿XL/ LK fwak;|1AGZ2Y9x&4ǿ?E@Jl5`iɿƧϠ2dw п9Ȑ2,_7h˿qxTެ\ȿKHZ,?^aZ![=ϿA‹Ŀ uX?ӣ̿V+~ÿ7P|z? L M~ahV?\`Ő?t=?LA!O"y?67',?j2YֿF;n?dyW=`ڿr?/עhSWٿ?gYnIҿ_sa?4J%= !п`"?^H0=)?-?b?#*T?Dk? ES?x?ad7?h(?RT?r&"`??7¢"N?0:9?y0H?Y?+?.R(?^ؚ?i!?B?׾^s? ;F? Ov?M?80Qd-? ?-\n0?4~$?n3x?kծ i ?p ?cxg?֌ ra?=]ݱ? #ݯ?#G:?Ap?so5?lV^??_\6:?8aB?`"ĕ?I?6>W[?{-1?k&ls?.v?;f?fո?!A 3?l? ?`?~ƅ!?yP?w?w!?mQfL?Tގp?O],σ?jk IJCR?՗?p?8q?M?aobHN&?~?RZ?D=eYJ?H"?o?3?Q9??'?af?&\R?ET?G?<,?dF? F?l# ?Nj?qqTn?cw?Uik|&?+ٱ?ù?+,?oD?J%<ן?6^?hn?Oyt#,*?YM]?jGq?)J=bc?7~T?09~k'J?Z֗?E2K`tݥ?ُ?N?~7ݲ?I,)w?|E? I'?J?л?BO}?zh?4S0?lXSYĿm?3?cԵ>U?'3Kd(y?Kp?=w6|Ef?k~?D+g?BLe3?*?P,?%s,? ;Bd?Χ?uZA?b0̕? ۟?v?W}W?_s?uxq?\?E$]3?UZ?OIV?es!??c?9f?:?CB?|HSR?j0 ?cw?sj?f?@?%>?.W?6?4ׂ??&M?{b*?KqUw?L6l˿^?W@>?Yʿz6>W?|?o!aK˿j!?sJ@L…?VRʿ6XO?0?U-(ÿ5?0?\OKGWn??jܴj&kT?5_%?(yuÿZh4 4?:`?"C*q?-[닄6?F5?.R( ?wx[p/?L!u;?'p?~?:pG?ם<ǿAA)Z?PT6?-1ʿu ?~7ݲ?L 俈@j?6o?k*. ?F{?]jJ⿂9zަ?1 O!?4ڪ$6nf?+ۇj?"aK&࿻@j?$@X?9j?s֧?CVzN?$?WVk?n!?[DA,Ԛ'?U?'.ҿy?A]P?lwNҿ@ ?x@?(˿UG?i?#bJ$ѿ#]??}ϿQcBL?yQ? ?8:Vӿ̕A?V?P9&ֿn-a? b?<ۿu"T3?Ɋ?{Lڿ?9+&?\J׿?Z?Nϻ?ݳҿ /?ƧϠ?ۿQm??ᖏ$?_x%s?:8ֿ? F?zjUտn?]T?tiѿFtϺ?ti?£濾c?ʠD?#&ݖ忙t&m? ?z6i?{jU?%㿓5!?ALjh?uRz;.?ˏP[VDׅv28J^?UU?ǁW꿇w }?r??(GA׾^? .л? f m9? ?)WxcK?cԵ>U?EƟl _>Y1?Kp?r6,R?D+g?] y?*?ip[[x^%?6sHjd?$(~ 8??l@?~?=\r)8~4?S*?PCd3%?bV?%J U ?t{Ic?{h+mQf?CB?I`s]1#=?&2s?>VҊo(|?\?'WD!T?4ׂ?j3NCT}>ʈ ?oc#w?|,G@?W@>?zm9?|?!>@)?sJ@L…?RQ쿐`&q?0?wj.7M»?0?l!A M*??wKrcՑ?5_%?i>ἲ?:`?Wt俎R<ķ?g s6?qJ[\濭\?.R( ?b `:۠?X5s;?Kó?oFWG?N`:[1O7?PT6?ùuKkx?x'۲?kzPeE ڿ6o?3*|y0ݿF{?Bl'׿1 O!?k'JB"3.ֿ+ۇj?5$迨UJѿ$@X?¾D ,)տCVzN?%"1Sulֿn!?}w+KtBv$ӿU?o(|-ďֱA]P?+x~QBx@? ^*,sY?i?;OE1-EMO?Ma鿈Gfm?yQ?VΆ|꿲NgV?]j~4IbI b?SA* #ʿɊ?ξ =濄+PO˿9+&?\qW/X^^Nϻ?;5 uKٖJW?ƧϠ?(70:9Cÿ?hPS"п_x%s?I[7ne F?8a觓]T?2'$Ûx(ti?Z8np޿ʠD?/4i%)r#ݿ ?ʇj[X7ۿ{jU?~0`U,ֿALjh?nmyXD<׿Cr2q ?iȥ*9'>ؿ:3P?D1x߿p?ߦ?꿷{O;?j K[\3ÿ&?diyNXQB?ܡa1)Ϳ(y?YKi-Y&ӿ$?bbqmX|^ɿCULp?&zw^ҿa?{_=M̿1l?"rl=9 { -* [$F]u?e%?Ln@kUͰQo&?XG~tݿmg؟ W7n1?7׿#\?ut\PN.9?):O唀Ǹ?|&}#g]&|?C 8@5e\ ?ߡ(ЧgUIdcw?Za/迃+d㿂5?jj忄Kǜgl忔DƟ?0L{ܷZ'.Oyt#,*?UX ~1[俙(H5 E쉮 ?8‡wIQˏP[ 俉QF这UU?迩'俖r??~7ݲC;8؛ .л?:=ƂtF ?N#Edܿ`HcԵ>U?L1=B߿[#qpKp?XۼeD+g?^EF6nf뿣*?>#t"d?vnڌ俊C㿛?Mjhxn~?qs*;4,F]kS*?_{fI {,}h忙bV?->x㿂o>;t{Ic?ūm ῴMCB?ُa⿍ ra濹&2s?X歺U⿈ \?+E|dp<4ׂ?YLl>H`Zoc#w?@9w׿YKiW@>?zqؿ9CqǛ||?cֿsJ@L…?аuտ}0?sۄ{eۿ|zl0?>޿2'?=~o߿]25_%?piҿ1uWv:`?I`sҿYjh-[닄6? 5׿ZF=S信.R( ?c"ڿ; ⿧X5s;?*Oݿ*QoFWG?>>tA}ҿt'PT6?ȑӿ迏~7ݲ?%"?{h6o?K\Ǹ? k*F{??flt1 O!?Os"?5&\R5Bfj?-z?'y3$@X?༓?4 CVzN?hʿ`V?0PӶ%W@Ƣd?ġ## 鿹Ɋ?{ >9+&?ᱟ˿v~Nϻ?uҿ $>ƧϠ?)Wx¿jdW??=x` _x%s?`ME*ʿo F?p^}<ɿH_]T? (zcѿ1ti?5s?L;ʠD?_@/ܹ0?uw g ?^N?Z-D{jU?]~q?vU0ALjh?f?j{ԗCr2q ?{?v^ :3P?,b?ΪVp? ?&pn;?F0}ÿI &?W\ʿ֪]RQB?flC HĔH(y?j]8J=u!V$?iLV CULp?zRa?1x=\r1l?+?*4 -* ]V$&?g e%?tۈ?ͰQo&?Pf?OwxΖ￀mg؟wIqD?sFZ*#\?eT ?? ?.9?;FzQ?HPsǸ?լ3?l;m&|?/1"Q?{G ?M?hXcw?D3U?&k?uYLl>.Kp?T:?+QrD+g?MT#?%翣*?wN@?&+6sHjd?3TT ?eU*鿛?$Ί?9ؗl~?K#fy?˚S*?x>?bX9这bV?=#?`)t{Ic?\-?{hCB?>??A?iQ|?5ӽNK?lXSY㿠2}ƅ?`?q9])ʥ?ԕr?E_ zR&5?&?Cwni5$?,?d)5_%?aM?z2Q޿)?D? ݿ-?2:?^?Y$9a?7 C?jٓÿ1?~ ?1 n¿~͑_?@̘5?̿,)W?-?F жuƿ3,%I??=ԶaɿLi?9'>?п'?qY?nֿyY?{?Zmӿʃ9?ˆ5E?6pڿqZ ?jׄ?Plڿ??@a+޿B_zsQ?úX?9DܜܿVJ?(]$?zƾdӿs?p??gѿ3y?$pt?οۉH? ? N]߿Nϻ?=? N} yῘBʠ?yvև?ʠDۿ.?pz?oHԿM 4s? t ?B?S[޿AF??NPݿ1?L4HS?Ϡ࿃Դi?bhur?fzLD? ?,8-_??&?fiÿ?@?p1=? yͿ]kSUh?$&[?I2̿Cr2q ?GTn.~?#dTɿM?ʦ?+j.7?]@?vd;?乾?suܿ&?6X8I?70Qd߿QB?RZ1 ?jeB?i''IֿCB׿*P?!ڿp>?ۿ]?tۈտ:`߿8c4?T[r׿^a߿ Ov3?Dҿv$p޿?q6տ*P׿bg?m:YѿHLP׿ƽ ?¼Ǚ&ʿ͎T_ʍ"k %?ulǿN /?Yοȵbmr ?aM"p$`Sc??㾿7߈Y4Lme?46WsDҿ2Pl?@?Jc?qnǿij?j?b+hZb?wD?IQ}ο? 2g?<_E?ʉvӿdJ5#?ܴ? 3`^$stA?A&9?Vfٿ= NP?0{O?c?޿>V?@T?%䃞ԿHSRE?dh?#bJ$ؿmϴ?'H?%L1Կ*2: ?G1?)70?hv[?-?2:?z0H4?հ@E.xp? +j?p]1#<Ypn?0Z H#IB?0{?Bn;2??4KԲ0}!噗;!8޿ Q7F ESiI1xÿ4(Zf鿍'8'¿whhs狽_4Sx캷̿Vf\Xrߔ/Q5Uƿ ({T?& /$ɿiݿ<\gV^?п+ڿ.ֿB=ЊDbԵv⿡0(hrӿZ{BGz.忑_? ٿbjKu"T2濨Qۿo[t2Ecl忏TE ӿ! b翫"пWL%@LYO0ͿgbaiܛO6߿RhԿ<:TSuۿ `-տRo& տ"׿`߿T[ٿLvkCݿ5'/2߿sBδE>'Iֿ1E4~zi/G4Le%ڿ-y<-Eÿtۈտt ؖg)ͿT[r׿;Nёiv̿Dҿ_": $ ɿq6տZ'æ6UtY"]ѿO@Hа¼Ǚ&ʿPnA ]ܿulǿR h9Dܜ߿Yο:8X?6ɏaM9#J3?Oڿ㾿p}a'֩ؿFY?'IL=-Կoy3Aapjٿ;̿F;nxPӿԶaϿb=쿙+`p׿ZxZ~ҿ6 Ocdh:;?L'ᅬUJMLbG? 7Cj ,UX_Ue?JJ0Afg;N gĿz}.Gȯb￞#Ͽ= fO7Pu?޿ ҌEY˷? \ڿIuT5A?ALjhܿ}w+^aQ?`"׿ v뿻~nض?xͫ:ۿhv[쿜:f?cZڿMqD1y|?)-Ӿ9鿚[!?հߓgCA迁??I|AΡ 鿨1?/Q(ԿDKOwDf.p?Hh˹οlļ ?!3ҿ'IֿwLݕ]0ȿ$]3fLe%ڿ|?q¿ Itۈտ>&̯&T[r׿'ʭW\Dҿ~תc~ q6տpZ̿ZQ"]ѿG7¢ο_¼Ǚ&ʿKU?2=Bulǿ` ?iXYο`d?O\W aMk, P?<￘㾿;]?;ŪAFY S}?W&R?oy3AfM,ݺ?8;̿Tc?PnԶaϿY?{ZxZ~ҿh#M)Ϳ;~￲h:;?$aN"ʿ9@0GMLbG?IQ,пnf,UX_EׅOѿ';uxqÿ);/u.G}PoU#ᅪ= E{aכbb4[VB?3܀#׿IfͶ뿀ZֿXyVҿ=1Xqʦ\ֿȶ 8KֿUq7qmѿ(rӿ3ouĵ^(̙̿ }ؿ$쿱Tȿb('Uֿ6!1ȱ Ϳ3Mg'ۿ:LԿO?߿{鿁ɍӿ-bؿYKiyѩ+?U.TӿRAEUjMSt?jUZٿ>"DM?zFwݿ6z ?Qާ@뿚ǣ?HȰ786uy0!׿6ڋhܲ Q:hqs*ٿCO}:YİØ=tZԿD$]3ma@6pl> cy@ٔ+ǿGp#e<~Ky $yXC%翑aodϿ~31]⿬j迤)J=ӿ2YS (S|l;m⿲ ܁:^NlyZy8-ԟ"ٿ*鿊޿ߋ/Կ! l鿎;ūm׿ps \ڿ ~{ܿd@zALjhܿZӼ߿AG`"׿:Yj`axͫ:ۿ$}ZE߿UK:l远cZڿ/ިڿ4()10&ۿ>-忂հߓ1׿oꐛaI|mOT6,i/Q(Կu):מY俶Hh˹ο JʽÀ%W!3ҿKH/H0EHؿwf\C࿘ݓZܿzؘב## ?o*Ral߿uӍX9n1?74eտ?Q0㿼X"/Clpٿbo㿬L F%uԿaoCV޿G5\|mYg|_ڿR+Lk޿ܠ[;Qݿ \(N#Ed߿BῇyU ۿmyؘ.5B"ĕwFܿ@9K[_~$A1|DLc[K;%nIaῇR{mr-a$޿nnLOXbԕ?Dڿ!8޿΢w*?]5.ݿ ESԴi?6S!׿4(&?R ֿk&lsǵb?`ҿlf\&3V?>Z1 տ7~TX"/?ro~Dֿiݿť*mq?xxρҿ+ڿ::ZՒ?.R(_'ei?ZڊBi6`~?KJ^c@vY;?$hfi2 9? ȳ˷¿/1"D?'E'K˿VZ &^y?Fu:˿KJ?3頲RhԿ4?¿8H-տ%?nIϿ'׿e?xs]Z{cٿ~?@3)!XU/߿狽_?,޿E>'Iֿ?AGZ꿑aodϿ;]?H迤)J=ӿ ~{?D!T|l;m(?W^NlMDu~?k K-ԟy 5?X7㿊޿I?e~῎; D ?!i \ڿDׅ?֌ raALjhܿ%s?8`"׿ur?ANxͫ:ۿ-wf\?>U濜cZڿNA~6r]?P)|8c?w係հߓk6?hUMI|ӂ}?BL/Q(ԿyT?H0[w쿶Hh˹ο]ݱ&?Xt5=?'WӺ j?uRz?IK[\3?t k?mRXܿLQԙ?30&?-Rڿ8C?FCƣT?%9`W; ? cZB?ʃ9NC?"Q* ?qZ `?TO? nk L…<?b L?^_QIh˹W?y? myؘ?eik?ĖM ګ?!ɬ?4LkLj?gHū,?^DM~?ť*?%CԿ..?0??Ȳ`ӿQm??>Կ~7?E+?BwIQ׿q6?ڿ}V?fᔹ?@v߿Ԃ}i?;?wDg޿3J?o ?FZ*oGֿ×?Cl?uڿ">?x]`?bdUտ{b?GP ?#EdX׿%1 ?LN?ҿ`?*l?7Կ!u`?gR?njѿX4 ?1%?E&ʿsCS??eǿ1DN_?Ƌ!rz?-熦οM?;?e##'h'?YLl>?KDׅ?u|O?\{UF? -?,AWCK?"?eM.̿ɏk8?*F?d[dϿ) ?/ע?d_ҿ$ \E? ?6E?.T?~(FL?1ҋ*?L/1?W?7%)ԕ2 ?ps?*[it3?nRX?Оq M>UW?ƠB?Nbk ?2?K'?#10?Œr9>?NG7ֿ&S#?%VF#? (GֿN?K\Ǹb?-`ѿ^b,S?'rJ@?DgE(̿#fy?J +?Tȿ kc?t?@ǘͿD[?ܙ s?}Կ5e#? _?TPōӿ'>?DN_׬?X?fF??S c ?L$>?s-ZU?6(H~8H?7ne?y@ٔ+ǿ"9U?ܴ?yHV?MKF?aodϿz?~T?O=ӿW@?FW?ť*mBK?A 3m?!{z$d .?0?r3܀ϟ;k]?yq?I޿7h>?9n?~T~ K(?)H4?nyڿf(uԿIfͶ?7?dshc? /A?/-9?X\wN?9lļ?s`?%%s?R?R Oh+~NA?DOʤ6?t&mnhȾ?]P??74e ?E:MIȱ?;0?OExE?KUbs|}{!~$'*-03  5%8%-5-;5=E=>EMWMAW  cnc#n    {    {C    DE&FGH! !+ 4+)4$"#$?"#"H"?JH'%&'S%&%\%SL\*()*h()(r(hNr-+,-+,++,0./0./..P31231211R64564544T97897877/<:;<:;::V?=>?=>= =X B@AB@A@"@Z"ECDE/CDC:C/2:HFGHGFGFPFG\PKIJK[IJIdI[^dNLMNpLMLzLp`zQOPQOPOO4TRSTRSRRbWUVWUVUUdZXYZXYXXf][\][\[[7`^_`^_^^hcabcabaaifdef(ded2d(j2ighi?ghgHg?:HljklSjkj^jSm^omnokmnmvmknv rpqr pqppo ustu sts s=xvwxvwvvq{yz{yzyyr~|}~|}||s@u+6+v6!"DP DwP$%_j#_Bj'(w&wx*+)y-.,z}0`/`{21|4h3h6 5 ~8 Y7 Y:R9R <(d;(d>uq=uq@i0?i0B|A|DCFEHGJ%I%LKN,lM,lP}O}R4Q4TSU41V  X   $W $Z5Y5\[^<]<$!"$`!"!_!)&')b&'&Da&D/+,/d+,+c+4124f121e19679h676g6 ?;<?j;<;@i;@DABDlTABAkAT IFGInFGFmF OKLOp\KLKoK\ VQSVqQSQR:Q R\XZ\7YXZXdrXYde_aesx_a_`0_x`mgjm3hgjgi@ghitprt=qprptpq}wy}uwywxswxtFCvwuvLIx/wxRO2y69n kz {yzh e|} { |b_~ 5    }   ~\$!$Y! 8 -')-<')'(<'<(3/13?0/1//09679676D6 DA;=AP;=;<;P<GCEGDCECCD MJKM}JKJXJ} XUOQUeOQOPOeP[WY[XWYWWX a^_a^_^n^ njcfj;dcfcecdeqmoqnmommn ytvytvtu>tu{}{}{|B{|E  yyqqADHKaaYY    G!!==)$&)5$&$%J$5%1+-1D+-+,N+D,9369Q43635345@<>@=<><L<=LICEIXCECDCXDOKMOLKMKKLURSURSR`R`]WY]mWYWXWmXc_ac`_a_9_`9ifgi1fgfvf1vrknrMlknkmklmyuwyvuwuuv|~|~|}P|}TV!! S UX[     %     %    . .*#&*W$#&#%#$%1-/1.-/-m-. m9469e4645Z4e5A;=AP;=;<^;P<GCEGaDCECCDMJKMJKJXJXUOQUhOQOPOhP]WZ]XWZWYWXYd`bda`b`p`apmgimgighghuoruporoqopq|xz|yxzxxy ] ` d gS S KKcfjm         (($ "$! " 0 !0-')-A')'('A(5/250/2/1/01<8:<98:8J89J"F?BFi@?B?A?@A OILOJILIKIJK!XRUXSRURTlRS T%a[]at[][\p[t \#icfirdcfcecde$plnpmlnl|lm |(ysuysusts t&{~|{~{}{| }' + ) *.o ,-q |{ "1 |#b}b0~^%7^&6v(=v)**<+C,~~B.I/H1O2..N "     14T&6Y&7X#*"#*# 9#"_ ( (:>   >^3:23:3<32e808=00/0d/CJBCJC?CBkH@H@@@?@j?U]U%^]]\]^7\[P[B^PPOP^pOlul(vuutuv=tsf sCzf fefzse + C~ D~ ~}~u}.IEw1O!/?kFy<eG{ 9     _H}%6&%%$%&Y$##$5 2: 12:2I218.!8J>.!.-.>-#FN#EFNFKFELB$LLRB$BABRA&Zb&YZbZ"MZY"`V'`NgV'VUVgU)pz)opzpOpoxk*x'lk*kjkl;j,O,-P-// Q 0R022~S~3T355U6*6A8U89V9;;fWf<X<> >   Y  ?Z?A *A * B[ B(B(-BG8AD8[BADA@AB@?2E?\F2E212F1GNVGMNVN]NMTJHT^ZJHJIJZIJbjJabjb>_ba>h^Kh`o^K^]^o]MxMwxxaxwsN0tsNsrstMrPaPQbQSS&c&TdTVVeWfWYIYZ3ZS\\g]h] _Q  _   `i`!bM"!b! !" cj'c'e0:e/0:0rk0/r8+f85,+f+*+,W*hFNhEFNFlFELBiLmRBiBABRA\ek\WfekedefdcVlcnjVlVUVjUt}ntS~}n}|}~|{no{ononmnmqgq  r8r ] tt ZpZ uqu w]wxrxzYz{s{}l}~;~ct  u%c&%%$%&$##v**4=4_>==<=><;.;wC..-.C- NYNpZYYX!YZX!WGW>HGGF"GHiF#hqhkrqqp$qrp$oboxvbba%bva&K''zyzzy(zy)e**z+,t--A.o!}/{!2|o3moon#omn|"4$5~"$#""!8"#!9&T%UTTS:TUS'll;w'xwwv>wxv5?3554)534k(lkkj@klj*A*DE,+F-G'-(''&J'(&K/.L0ttM0~P~;Q9;;:2;9:1R3S3UV45 ,  , W758776Z786[76\8]%$%8$` 'I('aGI(IH:IGH*)*9)b;-.-,..,c545;4f787g8= :9:<9h>=>H=<>H><iEVDE>WVDVUlVW!UG HGm H @ JIJ?InAMNMLNNLoWVWAVq-Zk[Zrik[kjBki#j#cdbcadbda0rsrtsCC{|z{y|z|ysvDDuxEEw&6zFFy|GG{~HH})+,*+),*,)<7I87GI8IHJIGH:9:I9J?@>?=@>@=K]LK[]L]\L][\NMNKM~&~LSTRSQTRTQ_s`_qs`srNsqrbabMaNhighfigifzyzOy,~}~}BPPRQRTsStssrstrTU/HVV     X   [W\[[Z[\ZX#!##"Z#!"YZ*7)*[87)767862/0./-0.0-N>Q?>OQ?QP\QOP\GHFGEHFHESeTSceTed^ecdVUV]U^[\Z[Y\Z\Yg{hgy{h{z`{yzj3ij_43i32342`pqopnqoqna4Tbbdcdfe)f7Xhghii  31332j312j()'(&)')&:g9:khg9gfgh#f:?@>?=@>@=^K_LK]_L_^m_]^NMNlMmSTRSQTRTQbwcbuwcwvnwuvnkljkiljliz{z{oo = d q MpNMMLMN Lqrrss@j    u t ,u"7#"57#76v756v+,*+),*,):Q;:OQ;QPwQO PwDECD"BECEBB_`^_%]`^`]p$nonox&xwxvw(uxvxu'y)y+*z,z.6libMeshb-7.80/legacy_sources/v7alpha/test.sol000066400000000000000000000002451456732543400212620ustar00rootroot00000000000000MeshVersionFormatted 1 Dimension 3 SolAtVertices 5 3 1 2 3 5 1 6 8 1 2 3 4 5 6 6 2 4 8 1 2 3 4 5 6 9 3 2 6 1 2 3 4 5 6 8 4 5 6 1 2 3 4 5 6 8 5 2 6 1 2 3 4 5 6 End libMeshb-7.80/legacy_sources/v7alpha/test.solb000066400000000000000000000004001456732543400214150ustar00rootroot00000000000000>@?@A?@@@@@@@@@A?@@@@@@A@@@@?@@@@@@A@@@?@@@@@@A@@@?@@@@@@6libMeshb-7.80/legacy_sources/v7alpha/test_libmesh7.c000066400000000000000000000060771456732543400225120ustar00rootroot00000000000000 /* Exemple d'utilisation de la libmesh7 : transformation de quadrangles en triangles dans un maillage surfacique */ #include #include #include "libmesh7.h" int main() { int i, NmbVer, NmbQad, ver, dim, *RefTab, (*QadTab)[5], (*TriTab)[4]; long long InpMsh, OutMsh; float (*VerTab)[3]; /*-----------------------------------*/ /* Ouverture du maillage "quad.mesh" */ /*-----------------------------------*/ if(!(InpMsh = GmfOpenMesh("quad.meshb", GmfRead, &ver, &dim))) return(1); printf("InpMsh : idx = %d, version = %d, dimension = %d\n", InpMsh, ver, dim); if(dim != 3) exit(1); /* Lecture des nombres d'elements et de noeuds pour l'allocation de memoire */ NmbVer = GmfStatKwd(InpMsh, GmfVertices); printf("InpMsh : nmb vertices = %d\n", NmbVer); VerTab = malloc((NmbVer+1) * 3 * sizeof(float)); RefTab = malloc((NmbVer+1) * sizeof(int)); NmbQad = GmfStatKwd(InpMsh, GmfQuadrilaterals); printf("InpMsh : nmb quads = %d\n", NmbQad); QadTab = malloc((NmbQad+1) * 5 * sizeof(int)); TriTab = malloc((NmbQad+1) * 2 * 4 * sizeof(int)); /* Lecture des noeuds */ GmfGetBlock( InpMsh, GmfVertices, NULL, \ GmfFloat, &VerTab[1][0], &VerTab[2][0], \ GmfFloat, &VerTab[1][1], &VerTab[2][1], \ GmfFloat, &VerTab[1][2], &VerTab[2][2], \ GmfInt, &RefTab[1], &RefTab[2] ); /* Lecture des quadrangles */ GmfGetBlock( InpMsh, GmfQuadrilaterals, NULL, \ GmfInt, &QadTab[1][0], &QadTab[2][0], \ GmfInt, &QadTab[1][1], &QadTab[2][1], \ GmfInt, &QadTab[1][2], &QadTab[2][2], \ GmfInt, &QadTab[1][3], &QadTab[2][3], \ GmfInt, &QadTab[1][4], &QadTab[2][4] ); /* Fermeture du maillage quad */ GmfCloseMesh(InpMsh); /*-----------------------------------*/ /* Creation du maillage en triangles */ /*-----------------------------------*/ if(!(OutMsh = GmfOpenMesh("tri.meshb", GmfWrite, ver, dim))) return(1); /* Ecriture du nombre de noeuds */ GmfSetKwd(OutMsh, GmfVertices, NmbVer); /* Puis ecriture des noeuds */ GmfSetBlock(OutMsh, GmfVertices, NULL, \ GmfFloat, &VerTab[1][0], &VerTab[2][0], \ GmfFloat, &VerTab[1][1], &VerTab[2][1], \ GmfFloat, &VerTab[1][2], &VerTab[2][2], \ GmfInt, &RefTab[1], &RefTab[2] ); /* Ecriture du nombre de triangles */ GmfSetKwd(OutMsh, GmfTriangles, 2*NmbQad); printf("OutMsh : nmb triangles = %d\n", 2*NmbQad); /* Puis boucle de conversion des quads en deux triangles */ for(i=1;i<=NmbQad;i++) { TriTab[i*2-1][0] = QadTab[i][0]; TriTab[i*2-1][1] = QadTab[i][1]; TriTab[i*2-1][2] = QadTab[i][2]; TriTab[i*2-1][3] = QadTab[i][4]; TriTab[i*2][0] = QadTab[i][0]; TriTab[i*2][1] = QadTab[i][2]; TriTab[i*2][2] = QadTab[i][3]; TriTab[i*2][3] = QadTab[i][4]; } /* Ecriture des triangles */ GmfSetBlock(OutMsh, GmfTriangles, NULL, \ GmfInt, &TriTab[1][0], &TriTab[2][0], \ GmfInt, &TriTab[1][1], &TriTab[2][1], \ GmfInt, &TriTab[1][2], &TriTab[2][2], \ GmfInt, &TriTab[1][3], &TriTab[2][3] ); /* Ne pas oublier de fermer le fichier */ GmfCloseMesh(OutMsh); free(QadTab); free(TriTab); free(RefTab); free(VerTab); return(0); } libMeshb-7.80/legacy_sources/v7alpha/test_libmesh7.f000066400000000000000000000076341456732543400225150ustar00rootroot00000000000000 c libmesh7 example : transform a quadrilateral mesh into a triangular one include 'libmesh7.ins' external qad2tri integer n parameter (n=4000) integer i, NmbVer, NmbQad, ver, dim, res +, RefTab(n), TriTab(4,2*n), QadTab(5,n) integer*8 InpMsh, OutMsh, BegIdx, EndIdx real*8 VerTab(3,n) c -------------------------------------------- c Open the quadrilateral mesh file for reading c -------------------------------------------- InpMsh = gmfopenmesh('quad.meshb',GmfRead,ver,dim) print*, 'input mesh :', InpMsh,'version :',ver,'dim :',dim if(InpMsh.eq.0) STOP ' InpMsh = 0' if(dim.ne.3) STOP ' dimension <> 3' c Check memory bounds NmbVer = gmfstatkwd(InpMsh, GmfVertices) if(NmbVer.gt.n) STOP 'Too many vertices' i = gmfstatkwd(InpMsh, GmfSolAtQuadrilaterals) print*, i,'GmfSolAtQuadrilaterals' NmbQad = gmfstatkwd(InpMsh, GmfQuadrilaterals) if(NmbQad.gt.n) STOP 'Too many quads' print*, 'input mesh : ',NmbVer,' vertices,',NmbQad,'quads' c Read the vertices res = gmfgotokwd(InpMsh, GmfVertices) do i = 1, NmbVer res = gmfgetlin(InpMsh, GmfVertices +, VerTab(1,i), VerTab(2,i), VerTab(3,i), RefTab(i)) end do c Read the quads res = gmfgetblock(InpMsh, GmfQuadrilaterals, 0, + GmfInt, QadTab(1,1), QadTab(1,2), + GmfInt, QadTab(2,1), QadTab(2,2), + GmfInt, QadTab(3,1), QadTab(3,2), + GmfInt, QadTab(4,1), QadTab(4,2), + GmfInt, QadTab(5,1), QadTab(5,2)) c Close the quadrilateral mesh res = gmfclosemesh(InpMsh) print*, QadTab(1,1),QadTab(2,1),QadTab(3,1),QadTab(4,1) c ------------------------ c Create a triangular mesh c ------------------------ OutMsh = gmfopenmesh('tri.meshb', GmfWrite, ver, dim) if(OutMsh.eq.0) STOP ' OutMsh = 0' c Set the number of vertices res = gmfsetkwd(OutMsh, GmfVertices, NmbVer, 0 , 0) c Then write them down do i = 1, NmbVer res = gmfsetlin(InpMsh, GmfVertices +, VerTab(1,i), VerTab(2,i), VerTab(3,i), RefTab(i)) end do c res = gmfsetblock(OutMsh, GmfVertices, c + GmfDouble, VerTab(1,1), VerTab(1,2), c + GmfDouble, VerTab(2,1), VerTab(2,2), c + GmfDouble, VerTab(3,1), VerTab(3,2), c + GmfInt, RefTab(1), RefTab(2)) c Build two triangles out of each quad c do i = 1, NmbQad c TriTab(1,i*2-1) = QadTab(1,i) c TriTab(2,i*2-1) = QadTab(2,i) c TriTab(3,i*2-1) = QadTab(3,i) c TriTab(4,i*2-1) = QadTab(5,i) c TriTab(1,i*2) = QadTab(1,i) c TriTab(2,i*2) = QadTab(3,i) c TriTab(3,i*2) = QadTab(4,i) c TriTab(4,i*2) = QadTab(5,i) c end do c Write the triangles res = gmfsetkwd(OutMsh, GmfTriangles, 2*NmbQad, 0, 0) res = gmfsetblock( OutMsh, GmfTriangles, + qad2tri, 2, QadTab, TriTab, + GmfInt, TriTab(1,1), TriTab(1,2), + GmfInt, TriTab(2,1), TriTab(2,2), + GmfInt, TriTab(3,1), TriTab(3,2), + GmfInt, TriTab(4,1), TriTab(4,2)) c Don't forget to close the file res = gmfclosemesh(OutMsh) print*, 'output mesh : ',NmbVer,' vertices,', + 2*NmbQad,'triangles' end subroutine qad2tri(BegIdx,EndIdx,QadTab,TriTab) integer*8 i,BegIdx,EndIdx integer TriTab(4,*),QadTab(5,*) print*, 'beg : ',BegIdx, 'end : ', EndIdx do i = BegIdx,EndIdx TriTab(1,i*2-1) = QadTab(1,i) TriTab(2,i*2-1) = QadTab(2,i) TriTab(3,i*2-1) = QadTab(3,i) TriTab(4,i*2-1) = QadTab(5,i) TriTab(1,i*2) = QadTab(1,i) TriTab(2,i*2) = QadTab(3,i) TriTab(3,i*2) = QadTab(4,i) TriTab(4,i*2) = QadTab(5,i) end do return end libMeshb-7.80/legacy_sources/v7alpha/test_libmesh7_block.f000066400000000000000000000075731456732543400236710ustar00rootroot00000000000000 c libmesh7 example : transform a quadrilateral mesh into a triangular one c using fast block transfer and pipelined post processing include 'libmesh7.ins' external qad2tri, movver integer n parameter (n=4000) integer i, NmbVer, NmbQad, ver, dim, res +, RefTab(n), TriTab(4,2*n), QadTab(5,n) integer*8 InpMsh, OutMsh real*8 VerTab(3,n) c -------------------------------------------- c Open the quadrilateral mesh file for reading c -------------------------------------------- InpMsh = gmfopenmesh('quad.meshb',GmfRead,ver,dim) print*, 'input mesh :', InpMsh,'version :',ver,'dim :',dim if(InpMsh.eq.0) STOP ' InpMsh = 0' if(dim.ne.3) STOP ' dimension <> 3' c Check memory bounds NmbVer = gmfstatkwd(InpMsh, GmfVertices) if(NmbVer.gt.n) STOP 'Too many vertices' i = gmfstatkwd(InpMsh, GmfSolAtQuadrilaterals) print*, i,'GmfSolAtQuadrilaterals' NmbQad = gmfstatkwd(InpMsh, GmfQuadrilaterals) if(NmbQad.gt.n) STOP 'Too many quads' print*, 'input mesh : ',NmbVer,' vertices,',NmbQad,'quads' c Read the vertices res = gmfgetblock(InpMsh, GmfVertices, movver, 1, VerTab, + GmfDouble, VerTab(1,1), VerTab(1,2), + GmfDouble, VerTab(2,1), VerTab(2,2), + GmfDouble, VerTab(3,1), VerTab(3,2), + GmfInt, RefTab(1), RefTab(2)) c Read the quads res = gmfgetblock(InpMsh, GmfQuadrilaterals, 0, + GmfInt, QadTab(1,1), QadTab(1,2), + GmfInt, QadTab(2,1), QadTab(2,2), + GmfInt, QadTab(3,1), QadTab(3,2), + GmfInt, QadTab(4,1), QadTab(4,2), + GmfInt, QadTab(5,1), QadTab(5,2)) c Close the quadrilateral mesh res = gmfclosemesh(InpMsh) print*, QadTab(1,1),QadTab(2,1),QadTab(3,1),QadTab(4,1) c ------------------------ c Create a triangular mesh c ------------------------ OutMsh = gmfopenmesh('tri.meshb', GmfWrite, ver, dim) if(OutMsh.eq.0) STOP ' OutMsh = 0' c Set the number of vertices res = gmfsetkwd(OutMsh, GmfVertices, NmbVer, 0 , 0) c Then write them down res = gmfsetblock(OutMsh, GmfVertices, 0, + GmfDouble, VerTab(1,1), VerTab(1,2), + GmfDouble, VerTab(2,1), VerTab(2,2), + GmfDouble, VerTab(3,1), VerTab(3,2), + GmfInt, RefTab(1), RefTab(2)) c Write the triangles res = gmfsetkwd(OutMsh, GmfTriangles, 2*NmbQad, 0, 0) res = gmfsetblock( OutMsh, GmfTriangles, + qad2tri, 2, QadTab, TriTab, + GmfInt, TriTab(1,1), TriTab(1,2), + GmfInt, TriTab(2,1), TriTab(2,2), + GmfInt, TriTab(3,1), TriTab(3,2), + GmfInt, TriTab(4,1), TriTab(4,2)) c Don't forget to close the file res = gmfclosemesh(OutMsh) print*, 'output mesh : ',NmbVer,' vertices,', + 2*NmbQad,'triangles' end subroutine qad2tri(BegIdx,EndIdx,QadTab,TriTab) integer*8 i,BegIdx,EndIdx integer TriTab(4,*),QadTab(5,*) print*, 'beg : ',BegIdx, 'end : ', EndIdx do i = BegIdx,EndIdx if(mod(i,2) .EQ. 1) then TriTab(1,i) = QadTab(1,i/2) TriTab(2,i) = QadTab(2,i/2) TriTab(3,i) = QadTab(3,i/2) TriTab(4,i) = QadTab(5,i/2) else TriTab(1,i) = QadTab(1,i/2) TriTab(2,i) = QadTab(3,i/2) TriTab(3,i) = QadTab(4,i/2) TriTab(4,i) = QadTab(5,i/2) endif end do return end subroutine movver(BegIdx,EndIdx,VerTab) integer*8 i,BegIdx,EndIdx real*8 VerTab(3,*) print*, 'beg : ',BegIdx, 'end : ', EndIdx do i = BegIdx,EndIdx VerTab(1,i) = VerTab(1,i)*2 end do return end libMeshb-7.80/legacy_sources/v7alpha/test_sol.c000066400000000000000000000031321456732543400215620ustar00rootroot00000000000000/* Extraction d'un champ de solution en utilisant la libmesh7 */ #include #include "libmesh7.h" int main() { int i, NmbSol, ver, dim, NmbTyp, SolSiz, TypTab[20]; long long InpSol, OutSol; float InpSolTab[100], OutSolTab[100]; /* Ouverture du fichier .sol a lire */ if(!(InpSol = GmfOpenMesh("test.solb", GmfRead, &ver, &dim))) return(1); printf("\nInpSol : idx = %d, version = %d, dim = %d\n", InpSol, ver, dim); NmbSol = GmfStatKwd(InpSol, GmfSolAtVertices, &NmbTyp, &SolSiz, TypTab); printf("InpSol : NmbSol = %d, NmbTyp = %d, siz = %d floats\n\n", NmbSol,NmbTyp,SolSiz); if(!(OutSol = GmfOpenMesh("out.solb", GmfWrite, ver, dim))) return(1); printf("OutSol : idx = %d\n\n", OutSol); /* Lecture des infos sur les champs */ for(i=0;id?@A@@A@@@@@@@@@@6libMeshb-7.80/sample_meshes/polyhedra.mesh000066400000000000000000000006471456732543400207130ustar00rootroot00000000000000MeshVersionFormatted 2 Dimension 3 Vertices 8 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 BoundaryPolygonHeaders 6 1 1 5 2 9 3 13 4 17 5 21 6 BoundaryPolygonVertices 24 4 1 5 8 7 6 2 3 4 3 2 1 5 6 7 8 4 8 7 3 2 6 5 1 InnerPolygonHeaders 6 1 1 5 2 9 3 13 4 17 5 21 6 InnerPolygonVertices 24 4 1 5 8 7 6 2 3 4 3 2 1 5 6 7 8 4 8 7 3 2 6 5 1 PolyhedraHeaders 1 1 1 PolyhedraFaces 6 1 2 3 4 5 6 End libMeshb-7.80/sample_meshes/quad.mesh000066400000000000000000003123041456732543400176520ustar00rootroot00000000000000MeshVersionFormatted 2 Dimension 3 Vertices 1982 0.491814 0.357873 0.793755 0 -0.185247 0.576968 0.795482 0 -0.605974 0.00211274 0.795482 0 -0.189262 -0.575662 0.795483 0 0.489311 -0.355541 0.796345 0 0.18688 0.575248 -0.796345 0 -0.492393 0.35579 -0.794332 0 -0.490535 -0.358348 -0.794332 0 0.189225 -0.577262 -0.794332 0 0.608238 -0.000444233 -0.793755 0 0.793286 0.579422 0.186998 0 0.301117 0.934866 -0.188027 0 -0.304976 0.933315 0.189508 0 -0.795969 0.576124 -0.185778 0 -0.981878 -0.00163909 0.189508 0 -0.793895 -0.57898 -0.185778 0 -0.301858 -0.934328 0.189508 0 0.305315 -0.933953 -0.185778 0 0.795319 -0.575807 0.189508 0 0.98259 0.0017648 -0.185778 0 0.000569249 0.000222193 1 0 0.000590977 0.000154955 -1 0 0.276627 0.850311 0.447715 0 -0.723276 0.525844 0.447616 0 -0.723612 -0.525382 0.447616 0 0.276059 -0.850548 0.447616 0 0.894253 -0.000431273 0.447562 0 -0.276504 0.850312 -0.44779 0 -0.894126 -0.000268137 -0.447815 0 -0.276045 -0.850447 -0.447815 0 0.723521 -0.525337 -0.447815 0 0.723249 0.525857 -0.447643 0 0.256714 -0.149484 0.954763 0 0.524775 0.00459358 0.851228 0 0.220485 0.200032 0.954566 0 0.119822 0.271828 -0.954763 0 0.427252 0.304739 -0.851228 0 0.295951 -0.0322319 -0.954566 0 0.0832626 0.750053 0.655992 0 0.1675 0.499739 0.849826 0 0.420045 0.656133 0.626804 0 -0.687614 0.310969 0.655991 0 -0.423351 0.313193 0.850108 0 -0.493357 0.605724 0.624116 0 -0.508233 -0.557865 0.655991 0 -0.428687 -0.305849 0.850108 0 -0.728533 -0.282031 0.624116 0 0.373505 -0.655741 0.656 0 0.158296 -0.502146 0.850172 0 0.0430982 -0.780028 0.624116 0 0.738017 0.145904 0.658679 0 0.756916 -0.201853 0.621397 0 -0.0832595 0.750045 -0.656002 0 -0.167033 0.499277 -0.85019 0 -0.420046 0.65614 -0.626795 0 -0.739145 0.149499 -0.656608 0 -0.526557 -0.00446402 -0.850128 0 -0.753829 -0.196733 -0.626793 0 -0.370591 -0.656771 -0.656608 0 -0.15847 -0.502165 -0.850128 0 -0.0458414 -0.777727 -0.626793 0 0.510108 -0.555406 -0.656608 0 0.429233 -0.305862 -0.849828 0 0.725492 -0.283925 -0.626801 0 0.682827 0.315755 -0.658681 0 0.493713 0.608207 -0.621396 0 -0.124845 0.269191 0.954857 0 -0.294571 -0.0355551 0.954864 0 -0.0571566 -0.29117 0.954859 0 0.0572024 -0.29117 -0.954856 0 -0.259226 -0.144362 -0.954863 0 -0.217382 0.201984 -0.954856 0 0.689546 0.502211 0.521833 0 0.540126 0.777696 0.321378 0 0.584161 0.811637 -0.0014475 0 0.278426 0.946647 0.16177 0 -0.0033168 0.999989 0.00336067 0 -0.00345595 0.92949 0.368602 0 -0.260374 0.807108 0.529888 0 -0.575197 0.753058 0.319162 0 -0.591381 0.806391 -0.00140495 0 -0.814271 0.557336 0.161773 0 -0.952064 0.30588 0.00335348 0 -0.885066 0.283941 0.368602 0 -0.848066 0.00177962 0.529888 0 -0.893946 -0.314337 0.319162 0 -0.94967 -0.313248 -0.00140496 0 -0.781681 -0.602192 0.161773 0 -0.585113 -0.810945 0.00335348 0 -0.543545 -0.754005 0.368602 0 -0.263759 -0.806009 0.529888 0 0.0227073 -0.947329 0.319162 0 0.00445275 -0.999989 -0.00140495 0 0.331165 -0.929511 0.161773 0 0.590445 -0.807071 0.00335348 0 0.549137 -0.749942 0.368602 0 0.685075 -0.499913 0.529867 0 0.90798 -0.271149 0.319159 0 0.952422 -0.304779 -0.00140495 0 0.986353 0.0277227 0.161775 0 0.950017 0.31218 0.00341563 0 0.880937 0.291644 0.37245 0 -0.689564 0.502267 -0.521757 0 -0.539139 0.779923 -0.317607 0 -0.270809 0.948542 -0.1635 0 0.00359873 0.928207 -0.371794 0 0.260381 0.807158 -0.52981 0 -0.690771 -0.500605 -0.521757 0 -0.908354 -0.271743 -0.317607 0 -0.985802 0.0355612 -0.163502 0 -0.879614 0.291205 -0.375873 0 0.262644 -0.811658 -0.521757 0 -0.0222541 -0.947869 -0.317607 0 -0.33845 -0.926564 -0.163502 0 -0.548768 -0.746576 -0.375873 0 0.853076 -0.00102413 -0.521785 0 0.8946 -0.314072 -0.317607 0 0.776628 -0.608209 -0.163502 0 0.540457 -0.752614 -0.375873 0 0.577849 0.752638 -0.315326 0 0.818421 0.550683 -0.163518 0 0.882785 0.28144 -0.375877 0 0.392326 -0.135659 0.909763 0 0.391632 0.0898775 0.91572 0 0.23644 -0.0163112 0.971459 0 0.23766 0.340354 -0.909763 0 0.369665 0.157483 -0.91572 0 0.181697 0.152172 -0.971459 0 0.0676954 0.648947 0.75781 0 0.283868 0.58442 0.760177 0 0.220029 0.730839 0.646037 0 -0.596269 0.264935 0.757803 0 -0.468053 0.451147 0.759862 0 -0.627088 0.435162 0.645986 0 -0.436225 -0.485216 0.757803 0 -0.573703 -0.305733 0.759862 0 -0.607644 -0.461923 0.645986 0 0.326611 -0.564746 0.757878 0 0.113479 -0.640094 0.759868 0 0.251543 -0.720646 0.645986 0 0.619602 0.108114 0.777438 0 0.663381 -0.106778 0.740615 0 0.764629 0.0136778 0.644258 0 -0.0676997 0.648861 -0.757884 0 -0.283854 0.584424 -0.760179 0 -0.220028 0.73084 -0.646037 0 -0.638177 0.13573 -0.757826 0 -0.643547 -0.0893953 -0.760166 0 -0.763115 0.0163528 -0.645981 0 -0.326294 -0.564999 -0.757825 0 -0.113847 -0.639674 -0.760166 0 -0.251368 -0.720712 -0.645981 0 0.436515 -0.484918 -0.757826 0 0.573191 -0.305925 -0.76017 0 0.607761 -0.461776 -0.645982 0 0.564816 0.276726 -0.777438 0 0.473924 0.476311 -0.740615 0 0.626638 0.438372 -0.644258 0 0.231373 0.364261 0.9021 0 0.0112916 0.380517 0.924698 0 0.0859406 0.218843 0.971923 0 -0.275359 0.33222 0.902115 0 -0.358427 0.128304 0.924692 0 -0.181557 0.149318 0.971933 0 -0.401049 -0.159221 0.902116 0 -0.232777 -0.301239 0.924693 0 -0.198001 -0.126573 0.97195 0 0.0274316 -0.430611 0.902123 0 0.213573 -0.315558 0.924552 0 0.0593613 -0.227845 0.971842 0 0.401284 -0.1587 -0.902103 0 0.232735 -0.301249 -0.9247 0 0.198155 -0.126536 -0.971923 0 -0.0275814 -0.430636 -0.902107 0 -0.214621 -0.314432 -0.924693 0 -0.0591211 -0.227514 -0.971933 0 -0.418081 -0.106841 -0.902107 0 -0.36536 0.106959 -0.924694 0 -0.234582 -0.0139765 -0.971951 0 -0.230866 0.364549 -0.902114 0 -0.0126935 0.380829 -0.924551 0 -0.0858992 0.219223 -0.971842 0 0.531718 0.565509 0.63045 0 0.62895 0.639706 0.441809 0 0.465511 0.720338 0.514117 0 0.607491 0.770122 0.194572 0 0.454521 0.887244 0.078775 0 0.438916 0.856343 0.271902 0 0.19133 0.980128 0.0522926 0 0.00167376 0.984955 0.172796 0 0.176842 0.950765 0.254313 0 -0.141623 0.905416 0.400195 0 -0.103573 0.79814 0.593499 0 0.0411958 0.873057 0.485775 0 -0.354729 0.708207 0.610421 0 -0.44038 0.791302 0.42414 0 -0.543473 0.665457 0.511582 0 -0.545358 0.81538 0.194249 0 -0.703348 0.706465 0.0787834 0 -0.678625 0.682302 0.271725 0 -0.873005 0.484889 0.0523097 0 -0.93623 0.305961 0.172796 0 -0.849584 0.46199 0.254312 0 -0.904866 0.145097 0.400195 0 -0.791082 0.148135 0.593499 0 -0.817597 0.308969 0.485774 0 -0.783162 -0.118519 0.610421 0 -0.888658 -0.174301 0.42414 0 -0.80083 -0.311236 0.511582 0 -0.943997 -0.2667 0.194249 0 -0.889234 -0.450614 0.0787834 0 -0.858614 -0.434568 0.271725 0 -0.730931 -0.680438 0.0523097 0 -0.580297 -0.795861 0.172796 0 -0.701914 -0.66524 0.254312 0 -0.417615 -0.815741 0.400195 0 -0.385343 -0.706588 0.593499 0 -0.546498 -0.682104 0.485774 0 -0.129292 -0.781456 0.610422 0 -0.10884 -0.899025 0.42414 0 0.0485329 -0.857811 0.511582 0 -0.0380643 -0.980209 0.194249 0 0.153771 -0.984959 0.0787834 0 0.147972 -0.950879 0.271725 0 0.421265 -0.905423 0.0523097 0 0.577587 -0.79783 0.172796 0 0.415777 -0.87313 0.254312 0 0.646766 -0.649251 0.400198 0 0.552925 -0.584794 0.593538 0 0.479843 -0.730531 0.485777 0 0.703707 -0.364686 0.609758 0 0.821391 -0.381358 0.424111 0 0.830864 -0.219 0.511484 0 0.920472 -0.339103 0.194249 0 0.98427 -0.158125 0.0787835 0 0.950066 -0.153109 0.271724 0 0.991285 0.120862 0.0523309 0 0.937065 0.30302 0.173449 0 0.958858 0.125619 0.254389 0 0.794739 0.431007 0.427349 0 0.731337 0.31417 0.605335 0 0.842759 0.227723 0.487661 0 -0.53174 0.565539 -0.630405 0 -0.628906 0.640171 -0.441199 0 -0.465484 0.720394 -0.514062 0 -0.603965 0.781339 -0.15729 0 -0.427216 0.899375 -0.0927217 0 -0.435805 0.857792 -0.272355 0 -0.153257 0.987186 -0.0445129 0 -0.00109441 0.978917 -0.204227 0 -0.175616 0.950149 -0.257465 0 0.141372 0.905148 -0.40089 0 0.103593 0.798097 -0.593554 0 -0.0408741 0.873122 -0.485685 0 -0.702176 -0.330954 -0.630405 0 -0.803181 -0.400302 -0.441198 0 -0.828977 -0.220088 -0.514062 0 -0.929733 -0.332958 -0.15729 0 -0.987374 -0.128385 -0.0927217 0 -0.95048 -0.149403 -0.272355 0 -0.986227 0.159305 -0.0445254 0 -0.93117 0.301325 -0.205214 0 -0.957889 0.126579 -0.257563 0 -0.794588 0.430738 -0.4279 0 -0.731349 0.315648 -0.604551 0 -0.842689 0.227853 -0.487721 0 0.0977715 -0.770079 -0.630405 0 0.132513 -0.88757 -0.441198 0 -0.0468515 -0.856416 -0.514062 0 0.0293588 -0.987118 -0.15729 0 -0.183014 -0.978722 -0.0927217 0 -0.151623 -0.950128 -0.272355 0 -0.456269 -0.888729 -0.0445254 0 -0.574325 -0.792481 -0.205214 0 -0.416388 -0.871891 -0.257563 0 -0.655197 -0.622593 -0.4279 0 -0.526198 -0.598014 -0.604551 0 -0.477106 -0.731034 -0.487721 0 0.762577 -0.144985 -0.630435 0 0.885077 -0.148246 -0.441202 0 0.800021 -0.309205 -0.514063 0 0.947878 -0.277114 -0.15729 0 0.874265 -0.476498 -0.0927217 0 0.856772 -0.437808 -0.272355 0 0.704237 -0.70857 -0.0445254 0 0.576218 -0.791105 -0.205214 0 0.700547 -0.665438 -0.257563 0 0.389654 -0.815521 -0.4279 0 0.406141 -0.685241 -0.604551 0 0.547821 -0.679657 -0.487721 0 0.354967 0.708677 -0.609737 0 0.441138 0.791197 -0.423548 0 0.543538 0.665526 -0.511423 0 0.557024 0.815527 -0.156985 0 0.723337 0.684219 -0.0928211 0 0.681215 0.679509 -0.272261 0 0.891464 0.450898 -0.0445717 0 0.930445 0.303556 -0.205214 0 0.84935 0.46063 -0.257561 0 0.895991 0.118616 -0.427942 0 0.776311 0.175686 -0.605362 0 0.815603 0.311092 -0.487778 0 0.140109 -0.105927 0.984464 0 0.143999 0.100239 0.984498 0 0.521606 -0.143864 0.840984 0 0.372042 -0.274472 0.886702 0 0.374802 0.274316 0.885589 0 0.515327 0.184808 0.836827 0 0.0510884 0.16805 -0.984464 0 0.175416 0.00354539 -0.984498 0 0.337427 0.422981 -0.840984 0 0.139658 0.440734 -0.886702 0 0.46446 -0.00162301 -0.885589 0 0.525536 0.153389 -0.836827 0 0.151099 0.810982 0.565241 0 0.347313 0.744978 0.569563 0 0.0234537 0.5377 0.842825 0 -0.0694694 0.680007 0.729902 0 0.450146 0.5091 0.733607 0 0.335363 0.435093 0.835597 0 -0.724603 0.394315 0.565232 0 -0.601375 0.560811 0.569086 0 -0.504126 0.188432 0.842838 0 -0.668193 0.144066 0.729901 0 -0.343675 0.589033 0.731383 0 -0.309909 0.453323 0.835734 0 -0.59893 -0.567289 0.565232 0 -0.719199 -0.398642 0.569086 0 -0.334992 -0.421224 0.842838 0 -0.343498 -0.59097 0.729902 0 -0.666405 -0.144833 0.731383 0 -0.526903 -0.154657 0.835734 0 0.354444 -0.744918 0.565233 0 0.156886 -0.807186 0.569086 0 0.296559 -0.448466 0.843182 0 0.455879 -0.509003 0.730126 0 -0.0681867 -0.678545 0.731383 0 -0.0157373 -0.548905 0.835735 0 0.817984 0.105392 0.56552 0 0.816592 -0.100965 0.568333 0 0.624177 0.269389 0.733365 0 0.627109 -0.27435 0.729011 0 -0.151078 0.81098 -0.565251 0 -0.34731 0.744982 -0.56956 0 -0.0236753 0.537128 -0.843183 0 0.0696302 0.67975 -0.730126 0 -0.45022 0.509081 -0.733574 0 -0.335202 0.434972 -0.835725 0 -0.817865 0.105929 -0.565593 0 -0.815845 -0.100119 -0.569556 0 -0.518618 0.144056 -0.842798 0 -0.626363 0.274649 -0.72954 0 -0.623291 -0.270871 -0.733573 0 -0.517269 -0.18438 -0.835723 0 -0.353478 -0.745102 -0.565593 0 -0.156891 -0.806853 -0.569556 0 -0.297267 -0.448719 -0.842798 0 -0.454764 -0.510835 -0.72954 0 0.065006 -0.676489 -0.733573 0 0.0155109 -0.548928 -0.835723 0 0.599403 -0.566427 -0.565593 0 0.718881 -0.398543 -0.569557 0 0.334936 -0.421377 -0.842784 0 0.345304 -0.590363 -0.72954 0 0.663418 -0.147281 -0.733606 0 0.527056 -0.154876 -0.835597 0 0.723704 0.395523 -0.565537 0 0.601296 0.56166 -0.56833 0 0.663312 0.148941 -0.733366 0 0.346083 0.59056 -0.72901 0 -0.0512894 0.167478 0.984551 0 -0.146528 0.438123 0.886887 0 -0.174867 0.00289383 0.984598 0 -0.46196 -0.00396923 0.886887 0 -0.0564016 -0.165708 0.98457 0 -0.138879 -0.440529 0.886926 0 0.056944 -0.16564 -0.984551 0 0.138729 -0.44071 -0.886859 0 -0.139772 -0.105123 -0.984598 0 -0.376271 -0.268127 -0.886859 0 -0.14303 0.100911 -0.98457 0 -0.371279 0.274997 -0.886859 0 0.439315 0.806606 0.395489 0 0.621151 0.448796 0.642479 0 0.684885 0.676736 0.270099 0 0.753888 0.549761 0.35974 0 0.300562 0.910724 0.283312 0 0.681184 0.72835 0.0743004 0 0.311169 0.950156 -0.0192143 0 0.449914 0.887899 -0.0959622 0 0.122414 0.913354 0.388356 0 0.1213 0.989659 -0.0767251 0 -0.154366 0.951594 0.265769 0 -0.156449 0.982778 0.09832 0 -0.28484 0.871958 0.398221 0 -0.226643 0.703461 0.673626 0 -0.632102 0.666905 0.394594 0 -0.434166 0.859432 0.26994 0 -0.773276 0.567288 0.283284 0 -0.482081 0.872958 0.0746144 0 -0.807303 0.589824 -0.0190137 0 -0.705376 0.702354 -0.0956058 0 -0.830828 0.398664 0.388347 0 -0.90367 0.421323 -0.0767649 0 -0.952721 0.147248 0.265769 0 -0.983023 0.154903 0.0983197 0 -0.917302 -0.0014487 0.398221 0 -0.739068 0.00183061 0.673626 0 -0.829595 -0.39508 0.394594 0 -0.951533 -0.147338 0.26994 0 -0.778479 -0.560127 0.283284 0 -0.979204 -0.188727 0.0746144 0 -0.810427 -0.585525 -0.0190137 0 -0.885951 -0.453813 -0.0956058 0 -0.635892 -0.66697 0.388347 0 -0.679951 -0.729245 -0.0767649 0 -0.434448 -0.86059 0.265769 0 -0.451093 -0.887043 0.0983197 0 -0.282084 -0.872854 0.398221 0 -0.230125 -0.702329 0.673626 0 0.119384 -0.911078 0.394594 0 -0.153913 -0.950491 0.26994 0 0.29215 -0.913466 0.283284 0 -0.1231 -0.989598 0.0746144 0 0.306432 -0.951699 -0.0190137 0 0.157828 -0.982826 -0.0956058 0 0.437825 -0.810874 0.388347 0 0.483437 -0.872021 -0.0767649 0 0.684218 -0.679121 0.265769 0 0.704232 -0.703126 0.0983197 0 0.742966 -0.538004 0.398219 0 0.597282 -0.435382 0.673568 0 0.903384 -0.168017 0.394574 0 0.856409 -0.440098 0.26994 0 0.959037 -0.00443457 0.283284 0 0.903123 -0.422878 0.0746144 0 0.999812 -0.00265669 -0.0190132 0 0.983494 -0.153607 -0.0956058 0 0.906319 0.16559 0.388827 0 0.978732 0.190308 -0.0767594 0 0.855132 0.443026 0.269205 0 0.886223 0.452784 0.0979399 0 -0.438923 0.806934 -0.395252 0 -0.621265 0.448822 -0.64235 0 -0.684883 0.678568 -0.265471 0 -0.754424 0.549225 -0.359433 0 -0.299064 0.911024 -0.283929 0 -0.305041 0.952177 0.0173019 0 -0.122116 0.912952 -0.389392 0 0.152747 0.951339 -0.267608 0 0.284657 0.872198 -0.397826 0 0.2273 0.703306 -0.673567 0 -0.903074 -0.168086 -0.395253 0 -0.618836 -0.452165 -0.64235 0 -0.856997 -0.441673 -0.265471 0 -0.755474 -0.54778 -0.359433 0 -0.958849 -0.00290817 -0.283936 0 -0.999837 0.00412821 0.0173016 0 -0.905848 0.165709 -0.389871 0 -0.855335 0.44089 -0.272045 0 -0.119206 -0.910816 -0.395253 0 0.238803 -0.728275 -0.64235 0 0.15523 -0.951537 -0.265471 0 0.287516 -0.887772 -0.359433 0 -0.293535 -0.912818 -0.283936 0 -0.312893 -0.949626 0.0173016 0 -0.437521 -0.810305 -0.389871 0 -0.683625 -0.677229 -0.272045 0 0.829401 -0.394829 -0.395253 0 0.766319 0.00201622 -0.642477 0 0.952934 -0.146409 -0.265471 0 0.933168 -0.000891708 -0.359434 0 0.777435 -0.561245 -0.283936 0 0.806459 -0.591029 0.0173016 0 0.635445 -0.666505 -0.389871 0 0.432832 -0.859441 -0.272045 0 0.632534 0.666606 -0.394406 0 0.436791 0.859609 -0.265096 0 0.774026 0.56595 -0.283908 0 0.811162 0.584567 0.0169739 0 0.830245 0.398401 -0.389857 0 0.951129 0.146067 -0.272046 0 0.324949 -0.0586432 0.943907 0 0.396508 -0.038851 0.917199 0 0.303846 0.0277655 0.952312 0 0.22842 0.238444 -0.943907 0 0.297945 0.264492 -0.917199 0 0.262137 0.156134 -0.952312 0 0.159881 0.68286 0.712833 0 0.161573 0.623564 0.764881 0 0.247406 0.672226 0.697778 0 -0.600035 0.363087 0.712823 0 -0.543121 0.346418 0.76485 0 -0.56288 0.443163 0.697684 0 -0.530737 -0.458468 0.712823 0 -0.497297 -0.40949 0.76485 0 -0.595413 -0.398386 0.697684 0 0.272021 -0.646433 0.712826 0 0.235764 -0.599483 0.764864 0 0.194894 -0.689378 0.697686 0 0.699023 0.0468839 0.713557 0 0.6436 0.00226604 0.765351 0 0.722287 -0.0357177 0.690663 0 -0.159881 0.682859 -0.712834 0 -0.161573 0.623551 -0.764892 0 -0.247403 0.672229 -0.697776 0 -0.698921 0.058656 -0.712783 0 -0.642993 0.0389067 -0.764871 0 -0.7158 -0.0276624 -0.697751 0 -0.271764 -0.646588 -0.712783 0 -0.235698 -0.5995 -0.764871 0 -0.194886 -0.689314 -0.697751 0 0.530961 -0.458268 -0.712785 0 0.497321 -0.409414 -0.764874 0 0.595353 -0.398353 -0.697755 0 0.593079 0.372945 -0.713557 0 0.522015 0.376465 -0.765351 0 0.563348 0.453446 -0.690663 0 0.145232 0.295338 0.944287 0 0.124656 0.376607 0.917941 0 0.0572624 0.291411 0.954877 0 -0.23632 0.229636 0.944148 0 -0.319774 0.234883 0.917912 0 -0.259517 0.144557 0.954853 0 -0.291421 -0.153793 0.944148 0 -0.322201 -0.231541 0.917913 0 -0.217631 -0.202165 0.954859 0 0.0561815 -0.324684 0.94415 0 0.120369 -0.377981 0.917949 0 0.124781 -0.270072 0.954715 0 0.291086 -0.153571 -0.944288 0 0.322188 -0.231424 -0.917946 0 0.217594 -0.202111 -0.954879 0 -0.0562187 -0.324683 -0.944148 0 -0.12068 -0.377966 -0.917914 0 -0.125006 -0.269475 -0.954854 0 -0.326162 -0.0468629 -0.944149 0 -0.396758 -0.00202375 -0.917914 0 -0.294889 0.0356579 -0.95486 0 -0.145389 0.295701 -0.944149 0 -0.124779 0.376554 -0.917946 0 -0.0577931 0.291839 -0.954715 0 0.515984 0.646574 0.561867 0 0.578655 0.599641 0.552783 0 0.536991 0.689172 0.486492 0 0.519263 0.826381 0.217835 0 0.546124 0.825267 0.143752 0 0.448252 0.873183 0.191344 0 0.16548 0.973771 0.156135 0 0.109229 0.988658 0.102979 0 0.103778 0.969891 0.220304 0 -0.0564479 0.88507 0.462013 0 -0.128181 0.864106 0.486695 0 -0.0204851 0.845669 0.533306 0 -0.457127 0.697205 0.552209 0 -0.39763 0.754535 0.522068 0 -0.498611 0.722804 0.478467 0 -0.625567 0.749182 0.217681 0 -0.616206 0.774355 0.143686 0 -0.691922 0.696158 0.191309 0 -0.874975 0.458293 0.156135 0 -0.906516 0.409397 0.102979 0 -0.890352 0.398411 0.220304 0 -0.859195 0.219817 0.462013 0 -0.861424 0.145116 0.486695 0 -0.810609 0.241844 0.533306 0 -0.804342 -0.219305 0.552209 0 -0.84048 -0.145004 0.522068 0 -0.841507 -0.250848 0.478467 0 -0.905825 -0.363439 0.217681 0 -0.926874 -0.346758 0.143686 0 -0.875901 -0.442933 0.191309 0 -0.706244 -0.69053 0.156135 0 -0.669488 -0.735637 0.102979 0 -0.654046 -0.723659 0.220304 0 -0.474564 -0.749216 0.462013 0 -0.404208 -0.774419 0.486695 0 -0.480499 -0.696202 0.533306 0 -0.0399837 -0.832743 0.552209 0 -0.121816 -0.844153 0.522068 0 -0.021469 -0.877837 0.478467 0 0.0657361 -0.973799 0.217681 0 0.0433666 -0.988663 0.143686 0 0.150586 -0.969905 0.191309 0 0.438492 -0.885064 0.156135 0 0.492749 -0.864045 0.102979 0 0.486129 -0.845657 0.220304 0 0.565899 -0.682856 0.462015 0 0.61161 -0.623726 0.486703 0 0.513645 -0.672111 0.533316 0 0.779449 -0.295765 0.552248 0 0.765221 -0.37681 0.521958 0 0.828207 -0.291806 0.478448 0 0.946452 -0.238402 0.217681 0 0.953676 -0.26427 0.143686 0 0.968968 -0.156502 0.191309 0 0.977244 0.143534 0.156154 0 0.974012 0.201648 0.103054 0 0.954443 0.201049 0.220473 0 0.819481 0.324482 0.472395 0 0.76724 0.377827 0.518244 0 0.798131 0.269577 0.538799 0 -0.515981 0.646592 -0.561849 0 -0.578652 0.599708 -0.552715 0 -0.536956 0.689294 -0.486357 0 -0.511974 0.832656 -0.211093 0 -0.521375 0.844189 -0.124506 0 -0.43729 0.877937 -0.194918 0 -0.154957 0.974619 -0.161554 0 -0.0780013 0.989432 -0.122182 0 -0.101703 0.967386 -0.231971 0 0.0565057 0.884987 -0.462166 0 0.128163 0.864039 -0.486818 0 0.0205263 0.845653 -0.533329 0 -0.774392 -0.290919 -0.561849 0 -0.749169 -0.365011 -0.552715 0 -0.821486 -0.297672 -0.486357 0 -0.950112 -0.229612 -0.211093 0 -0.963985 -0.234988 -0.124506 0 -0.970098 -0.14459 -0.194918 0 -0.974801 0.153802 -0.161565 0 -0.965099 0.231582 -0.122235 0 -0.951383 0.202192 -0.232334 0 -0.819342 0.324698 -0.472487 0 -0.767171 0.378049 -0.518186 0 -0.798097 0.270103 -0.538587 0 0.0373803 -0.82639 -0.561849 0 0.11564 -0.825297 -0.552715 0 0.0292497 -0.873265 -0.486357 0 -0.0752271 -0.974564 -0.211093 0 -0.0744004 -0.989419 -0.124506 0 -0.162264 -0.967299 -0.194918 0 -0.447505 -0.879563 -0.161565 0 -0.518479 -0.846301 -0.122235 0 -0.48629 -0.842338 -0.232334 0 -0.561997 -0.678904 -0.472487 0 -0.596614 -0.612799 -0.518186 0 -0.503508 -0.675569 -0.538587 0 0.797492 -0.219816 -0.561854 0 0.820631 -0.145047 -0.552727 0 0.839563 -0.242035 -0.486359 0 0.903619 -0.372702 -0.211093 0 0.918003 -0.376506 -0.124506 0 0.869814 -0.453234 -0.194918 0 0.698227 -0.697402 -0.161565 0 0.644661 -0.754625 -0.122235 0 0.650839 -0.722786 -0.232334 0 0.472009 -0.744284 -0.472487 0 0.398443 -0.756779 -0.518186 0 0.486911 -0.687627 -0.538587 0 0.45675 0.69743 -0.552236 0 0.397643 0.754657 -0.521883 0 0.498797 0.722842 -0.478216 0 0.63371 0.744277 -0.21085 0 0.641804 0.756701 -0.124417 0 0.699853 0.687186 -0.194864 0 0.87903 0.448551 -0.161565 0 0.916893 0.379938 -0.122236 0 0.888529 0.395635 -0.232334 0 0.853687 0.21895 -0.472518 0 0.842735 0.145269 -0.518346 0 0.804134 0.250974 -0.538861 0 0.133834 -0.0025591 0.990964 0 0.181759 -0.0545586 0.981836 0 0.262833 -0.0833502 0.961219 0 0.213695 -0.0926866 0.971282 0 0.191914 0.0440153 0.980424 0 0.248485 0.0928201 0.964153 0 0.443367 -0.228734 0.86666 0 0.457244 -0.14178 0.877974 0 0.465983 -0.0529018 0.883211 0 0.382662 -0.216383 0.898175 0 0.324234 -0.142831 0.935135 0 0.448114 0.229703 0.863957 0 0.383301 0.208124 0.899854 0 0.295039 0.155256 0.942787 0 0.471167 0.150057 0.869193 0 0.47813 0.0335719 0.877645 0 0.10677 0.0807363 -0.990964 0 0.114978 0.150974 -0.981836 0 0.163644 0.221921 -0.961219 0 0.118403 0.200592 -0.971282 0 0.181133 0.0771953 -0.980424 0 0.255587 0.0709626 -0.964153 0 0.224245 0.445654 -0.86666 0 0.286582 0.383464 -0.877974 0 0.345893 0.316696 -0.883211 0 0.182393 0.399981 -0.898175 0 0.178357 0.306132 -0.935135 0 0.497548 0.0775617 -0.863957 0 0.432429 0.0569227 -0.899854 0 0.329949 0.0478144 -0.942787 0 0.469384 0.155546 -0.869193 0 0.406549 0.253878 -0.877645 0 0.252905 0.786844 0.562889 0 0.193999 0.774859 0.601642 0 0.149355 0.731617 0.665132 0 0.149944 0.764219 0.625404 0 0.286134 0.738699 0.610288 0 0.319947 0.685627 0.653836 0 -0.039811 0.618626 0.784671 0 0.044375 0.595971 0.801786 0 0.12929 0.569392 0.811835 0 -0.011931 0.667944 0.744095 0 0.0763214 0.702042 0.70804 0 0.394549 0.472779 0.78791 0 0.391923 0.537647 0.746529 0 0.365504 0.628153 0.686898 0 0.317454 0.492316 0.810469 0 0.208361 0.53281 0.82018 0 -0.670189 0.483686 0.562871 0 -0.676991 0.423965 0.601625 0 -0.649656 0.36813 0.665129 0 -0.680482 0.378766 0.625399 0 -0.614162 0.500547 0.610129 0 -0.553214 0.516634 0.653448 0 -0.600651 0.153304 0.784671 0 -0.553091 0.226375 0.801784 0 -0.501574 0.298933 0.811827 0 -0.63894 0.195064 0.744093 0 -0.644098 0.289537 0.708035 0 -0.327351 0.522034 0.7876 0 -0.389912 0.54071 0.745369 0 -0.484171 0.543703 0.68554 0 -0.36996 0.45424 0.810437 0 -0.442303 0.362785 0.820214 0 -0.667112 -0.487921 0.562871 0 -0.612416 -0.512844 0.601626 0 -0.550868 -0.504101 0.665129 0 -0.570509 -0.530132 0.625399 0 -0.665835 -0.429425 0.610129 0 -0.662301 -0.366489 0.653448 0 -0.331412 -0.52388 0.784671 0 -0.38621 -0.456067 0.801784 0 -0.439297 -0.38465 0.811827 0 -0.38296 -0.54739 0.744093 0 -0.474403 -0.523102 0.708035 0 -0.59764 -0.150012 0.7876 0 -0.634735 -0.20374 0.745369 0 -0.666709 -0.292461 0.68554 0 -0.546332 -0.211485 0.810437 0 -0.481709 -0.308549 0.820214 0 0.257891 -0.785237 0.562871 0 0.298497 -0.74092 0.601626 0 0.309201 -0.679682 0.66513 0 0.327888 -0.706405 0.6254 0 0.202653 -0.765947 0.610129 0 0.143889 -0.743137 0.653448 0 0.395534 -0.476658 0.785075 0 0.314184 -0.508019 0.802008 0 0.229987 -0.536575 0.811907 0 0.402171 -0.533195 0.744265 0 0.350886 -0.612808 0.708063 0 -0.0420116 -0.614746 0.787601 0 -0.00237692 -0.666627 0.74537 0 0.0721205 -0.724452 0.685541 0 0.0323013 -0.58494 0.810441 0 0.144549 -0.553442 0.820246 0 0.826713 0.00214713 0.562556 0 0.797317 0.0535421 0.601192 0 0.741624 0.0825084 0.665701 0 0.773119 0.0917811 0.625704 0 0.792105 -0.0455753 0.608681 0 0.754007 -0.0963845 0.649715 0 0.569223 0.230541 0.789195 0 0.507844 0.251467 0.823906 0 0.558317 0.154666 0.81509 0 0.520732 0.0945109 0.848485 0 0.56735 0.039608 0.822522 0 0.62529 0.207689 0.752235 0 0.686783 0.13133 0.714898 0 0.578946 -0.2225 0.784414 0 0.510003 -0.2401 0.825958 0 0.639455 -0.210619 0.739395 0 0.717431 -0.160968 0.677772 0 0.588164 -0.128639 0.798454 0 0.582979 -0.0372631 0.811631 0 0.525255 -0.0585771 0.848931 0 -0.252904 0.786844 -0.56289 0 -0.193996 0.774859 -0.601644 0 -0.149355 0.731616 -0.665133 0 -0.149941 0.764219 -0.625405 0 -0.286133 0.7387 -0.610287 0 -0.319947 0.68563 -0.653833 0 0.0398214 0.618113 -0.785075 0 -0.0444174 0.595666 -0.802011 0 -0.129297 0.569271 -0.811919 0 0.0119632 0.667753 -0.744267 0 -0.0763195 0.702015 -0.708067 0 -0.394583 0.47283 -0.787863 0 -0.391945 0.537691 -0.746486 0 -0.365504 0.628164 -0.686889 0 -0.317327 0.492259 -0.810553 0 -0.208203 0.532671 -0.82031 0 -0.82648 0.00256302 -0.562897 0 -0.796881 0.0545695 -0.601679 0 -0.742195 0.0833536 -0.664959 0 -0.773167 0.0926916 -0.625512 0 -0.790974 -0.04392 -0.610272 0 -0.750946 -0.092449 -0.653823 0 -0.576387 0.229035 -0.784419 0 -0.580591 0.141934 -0.801736 0 -0.581483 0.0529859 -0.811831 0 -0.631985 0.216528 -0.744096 0 -0.691373 0.142863 -0.708237 0 -0.571622 -0.229158 -0.787862 0 -0.632494 -0.206611 -0.746483 0 -0.710369 -0.153515 -0.686883 0 -0.566233 -0.149682 -0.810548 0 -0.570989 -0.0333845 -0.820276 0 -0.257834 -0.785237 -0.562897 0 -0.298148 -0.741016 -0.601679 0 -0.308625 -0.680111 -0.664959 0 -0.327077 -0.706682 -0.625512 0 -0.202654 -0.765833 -0.610272 0 -0.144131 -0.742761 -0.653823 0 -0.395939 -0.477401 -0.784419 0 -0.3144 -0.508315 -0.801736 0 -0.230081 -0.536649 -0.811831 0 -0.401225 -0.534143 -0.744096 0 -0.349517 -0.613388 -0.708237 0 0.0413015 -0.614458 -0.787862 0 0.00104775 -0.665384 -0.746483 0 -0.0735144 -0.723039 -0.686883 0 -0.0326201 -0.584774 -0.810548 0 -0.144695 -0.553359 -0.820276 0 0.66713 -0.487866 -0.562897 0 0.612615 -0.512542 -0.60168 0 0.551454 -0.503685 -0.664959 0 0.571022 -0.529445 -0.625512 0 0.665726 -0.42939 -0.610273 0 0.661867 -0.366599 -0.653826 0 0.331683 -0.524085 -0.784419 0 0.386283 -0.456089 -0.801736 0 0.439297 -0.384647 -0.811828 0 0.384015 -0.546647 -0.744097 0 0.475359 -0.521957 -0.708238 0 0.597089 -0.150576 -0.78791 0 0.633097 -0.204594 -0.746528 0 0.664927 -0.293338 -0.686894 0 0.546205 -0.211692 -0.810468 0 0.48175 -0.308578 -0.820179 0 0.670087 0.484192 -0.562556 0 0.676513 0.425333 -0.601195 0 0.648483 0.369165 -0.665701 0 0.679413 0.380174 -0.625706 0 0.614039 0.502459 -0.608681 0 0.553351 0.521171 -0.649715 0 0.596019 0.148069 -0.789195 0 0.558663 0.095062 -0.823906 0 0.542598 0.203043 -0.81509 0 0.476833 0.229618 -0.848485 0 0.482277 0.301436 -0.822522 0 0.627946 0.199512 -0.752235 0 0.632813 0.297433 -0.714898 0 0.337595 0.520302 -0.784414 0 0.271474 0.494017 -0.825958 0 0.393531 0.546256 -0.739395 0 0.4858 0.551921 -0.677772 0 0.400223 0.449785 -0.798454 0 0.449737 0.372813 -0.811631 0 0.390509 0.356127 -0.84893 0 0.0443054 0.126599 0.990928 0 0.0810037 0.0565706 0.995076 0 0.107533 0.155947 0.981901 0 0.193026 0.142619 0.970777 0 0.160545 0.225474 0.960915 0 0.153981 0.174996 0.971237 0 0.016033 0.195236 0.980625 0 -0.0160632 0.261941 0.964923 0 0.357546 0.357457 0.862773 0 0.419479 0.305783 0.854725 0 0.395963 0.406776 0.823231 0 0.294737 0.407873 0.864165 0 0.252512 0.471141 0.845154 0 0.187709 0.446941 0.874647 0 0.318068 0.307832 0.896689 0 0.227486 0.274838 0.93419 0 0.30735 0.236958 0.921633 0 -0.0750626 0.488975 0.869057 0 -0.0706657 0.559056 0.826087 0 -0.0846986 0.42169 0.902757 0 -0.0649824 0.321257 0.944757 0 0.0170373 0.468563 0.883273 0 0.108633 0.454177 0.884263 0 0.106421 0.516844 0.849443 0 -0.106279 0.0812016 0.990979 0 -0.0281915 0.0943865 0.995105 0 -0.11507 0.15027 0.981932 0 -0.0775936 0.226699 0.970872 0 -0.164989 0.222219 0.960921 0 -0.119336 0.200134 0.971256 0 -0.180539 0.0755483 0.980662 0 -0.254035 0.0656711 0.964935 0 -0.2292 0.449959 0.863131 0 -0.159553 0.490725 0.856594 0 -0.263696 0.502251 0.823511 0 -0.296665 0.40596 0.864406 0 -0.369865 0.385319 0.845429 0 -0.366628 0.3152 0.875346 0 -0.196561 0.396935 0.896541 0 -0.192824 0.300002 0.934245 0 -0.134541 0.361722 0.922537 0 -0.488239 0.0797144 0.869056 0 -0.553531 0.105552 0.826087 0 -0.427228 0.0497544 0.902756 0 -0.325604 0.0374669 0.944761 0 -0.440339 0.160899 0.883304 0 -0.398261 0.243212 0.88444 0 -0.458613 0.260754 0.849522 0 -0.109569 -0.0761981 0.991018 0 -0.0979271 0.00213327 0.99516 0 -0.17824 -0.0630843 0.981969 0 -0.239489 -0.00376007 0.970895 0 -0.26232 -0.0882456 0.960923 0 -0.227116 -0.0516783 0.971279 0 -0.127377 -0.148489 0.980676 0 -0.140857 -0.221358 0.964939 0 -0.498763 -0.0789367 0.863131 0 -0.516012 -0.000100958 0.856594 0 -0.559155 -0.0955854 0.823511 0 -0.477765 -0.156697 0.864406 0 -0.480755 -0.232693 0.845429 0 -0.413067 -0.251282 0.875346 0 -0.438248 -0.0642807 0.896542 0 -0.344898 -0.0906821 0.934247 0 -0.385591 -0.0161799 0.922539 0 -0.226687 -0.43971 0.869056 0 -0.271436 -0.493822 0.826087 0 -0.179043 -0.390739 0.902903 0 -0.136203 -0.298098 0.944765 0 -0.289095 -0.369067 0.883304 0 -0.354378 -0.303612 0.88444 0 -0.389711 -0.35559 0.849522 0 0.0392692 -0.128581 0.990886 0 0.0789166 -0.0594678 0.995075 0 -0.0316348 -0.0929685 0.995135 0 0.00532359 -0.189488 0.981874 0 -0.070253 -0.229047 0.97088 0 0.0028993 -0.276783 0.960913 0 -0.02081 -0.232186 0.971228 0 0.102053 -0.167866 0.980514 0 0.166708 -0.203683 0.964712 0 0.195501 -0.139672 0.97071 0 -0.0790512 -0.498757 0.863124 0 -0.159342 -0.490782 0.856601 0 -0.0818812 -0.561328 0.82351 0 0.00137 -0.502799 0.864409 0 0.0727127 -0.529111 0.845444 0 0.111271 -0.470465 0.875374 0 -0.0742657 -0.436652 0.896549 0 -0.0203286 -0.356032 0.93425 0 -0.103677 -0.37167 0.922568 0 0.346279 -0.352586 0.869347 0 0.385049 -0.410098 0.82675 0 0.414961 -0.304464 0.857397 0 0.3149 -0.29973 0.900541 0 0.31647 -0.222084 0.922251 0 0.23958 -0.224839 0.94448 0 0.260748 -0.389218 0.883478 0 0.178869 -0.430772 0.884556 0 0.21751 -0.480372 0.84967 0 0.110256 -0.0763786 -0.990928 0 0.0987846 0.00184614 -0.995076 0 0.178658 -0.0629586 -0.981901 0 0.23999 -0.00192375 -0.970777 0 0.262414 -0.0880466 -0.960915 0 0.227432 -0.0510675 -0.971237 0 0.127724 -0.148527 -0.980626 0 0.140957 -0.221363 -0.964923 0 0.499368 -0.0790284 -0.862773 0 0.519101 -0.000820062 -0.854726 0 0.559437 -0.0963473 -0.823231 0 0.478186 -0.156736 -0.864166 0 0.481214 -0.232739 -0.845155 0 0.414552 -0.251259 -0.87465 0 0.438261 -0.0620863 -0.896689 0 0.345583 -0.0886372 -0.934191 0 0.387931 -0.0110474 -0.921633 0 0.226428 -0.439927 -0.869014 0 0.271198 -0.494258 -0.825905 0 0.179183 -0.391021 -0.902753 0 0.136217 -0.298119 -0.944756 0 0.28908 -0.369169 -0.883267 0 0.354795 -0.303624 -0.884269 0 0.389851 -0.355632 -0.84944 0 -0.0382528 -0.128162 -0.990979 0 0.032671 -0.0929309 -0.995105 0 -0.00476919 -0.189207 -0.981932 0 0.0704685 -0.229015 -0.970872 0 -0.0028629 -0.276757 -0.960921 0 0.0210883 -0.232056 -0.971256 0 -0.101657 -0.167235 -0.980662 0 -0.166929 -0.202437 -0.964936 0 0.0787629 -0.498876 -0.863082 0 0.159038 -0.491147 -0.856448 0 0.0814691 -0.561505 -0.82343 0 -0.00156452 -0.502826 -0.864392 0 -0.0728853 -0.529061 -0.84546 0 -0.111369 -0.470486 -0.87535 0 0.0741188 -0.436737 -0.89652 0 0.0202909 -0.356059 -0.934241 0 0.10367 -0.371765 -0.922531 0 -0.348425 -0.351292 -0.869013 0 -0.386262 -0.410659 -0.825905 0 -0.316517 -0.291246 -0.902751 0 -0.24143 -0.221663 -0.94476 0 -0.26181 -0.388915 -0.883297 0 -0.179306 -0.430818 -0.884445 0 -0.217827 -0.480487 -0.849524 0 -0.133432 -0.00275708 -0.991018 0 -0.0779711 -0.0592855 -0.99516 0 -0.181279 -0.0537281 -0.981969 0 -0.195966 -0.13772 -0.970895 0 -0.264091 -0.0827947 -0.960923 0 -0.214118 -0.0916838 -0.971279 0 -0.190328 0.0452643 -0.980677 0 -0.24406 0.0963018 -0.964939 0 -0.45012 -0.229069 -0.863082 0 -0.417963 -0.303028 -0.856448 0 -0.508847 -0.250996 -0.82343 0 -0.4787 -0.153894 -0.864392 0 -0.52569 -0.0941708 -0.84546 0 -0.481873 -0.0394697 -0.87535 0 -0.392457 -0.20545 -0.89652 0 -0.332357 -0.129321 -0.934243 0 -0.321533 -0.213475 -0.922532 0 -0.441768 0.222817 -0.869013 0 -0.509922 0.240457 -0.825905 0 -0.3748 0.211027 -0.902751 0 -0.285404 0.161149 -0.944759 0 -0.450783 0.128815 -0.883297 0 -0.46514 0.0374003 -0.884445 0 -0.524282 0.0586871 -0.849524 0 -0.0438084 0.127106 -0.990886 0 0.0288906 0.0944965 -0.995075 0 -0.0802385 0.056619 -0.995135 0 -0.107071 0.156429 -0.981874 0 -0.191464 0.144016 -0.97088 0 -0.160343 0.225627 -0.960913 0 -0.15331 0.175613 -0.971228 0 -0.0161068 0.195792 -0.980513 0 0.0151481 0.262771 -0.964712 0 0.0760668 0.22791 -0.97071 0 -0.356955 0.357298 -0.863083 0 -0.417355 0.303864 -0.856448 0 -0.395955 0.406379 -0.823431 0 -0.294302 0.407693 -0.864398 0 -0.252022 0.470826 -0.845475 0 -0.186494 0.446023 -0.875374 0 -0.316682 0.309748 -0.89652 0 -0.225711 0.276123 -0.934241 0 -0.302386 0.239832 -0.922531 0 0.0729003 0.488786 -0.869347 0 0.0704618 0.558102 -0.82675 0 0.156751 0.490225 -0.857397 0 0.0785825 0.42758 -0.900541 0 0.125492 0.365686 -0.922251 0 0.0616684 0.322721 -0.94448 0 -0.017824 0.468149 -0.883478 0 -0.108484 0.453641 -0.884556 0 -0.106372 0.516475 -0.849674 0 0.388312 0.784628 0.483221 0 0.317637 0.794428 0.517618 0 0.404875 0.740627 0.536249 0 0.376302 0.699235 0.607844 0 0.456772 0.679759 0.57381 0 0.412984 0.706372 0.572819 0 0.455367 0.765442 0.454685 0 0.520423 0.742581 0.421526 0 0.524913 0.477658 0.704487 0 0.467086 0.455193 0.758058 0 0.576626 0.508556 0.639442 0 0.623236 0.536791 0.568711 0 0.486206 0.534002 0.691678 0 0.476581 0.613519 0.62966 0 0.431674 0.579806 0.691016 0 0.722768 0.614816 0.315595 0 0.667973 0.665519 0.332972 0 0.581487 0.723006 0.373008 0 0.710137 0.585073 0.391672 0 0.668948 0.553428 0.496207 0 0.366396 0.862841 0.348122 0 0.368977 0.829064 0.420056 0 0.431455 0.83703 0.336515 0 0.49606 0.786762 0.367337 0 0.49981 0.818412 0.283483 0 0.476109 0.814137 0.328851 0 0.370203 0.886852 0.276481 0 0.370109 0.906644 0.202406 0 0.694023 0.695306 0.186744 0 0.726853 0.643282 0.240617 0 0.64665 0.750512 0.136335 0 0.592964 0.80066 0.0856586 0 0.653955 0.717978 0.238374 0 0.574283 0.776505 0.259318 0 0.621711 0.722888 0.301545 0 0.38187 0.92234 -0.0587877 0 0.364396 0.931104 0.0153504 0 0.353939 0.926719 0.126169 0 0.453354 0.89079 -0.0312295 0 0.540326 0.840959 0.0288418 0 0.216864 0.913297 0.344654 0 0.291019 0.887466 0.357282 0 0.236967 0.93073 0.278575 0 0.301195 0.928064 0.219054 0 0.219251 0.955888 0.195391 0 0.252349 0.938485 0.230674 0 0.147953 0.935019 0.322256 0 0.076559 0.95101 0.299449 0 0.235088 0.970513 -0.053202 0 0.308534 0.947814 -0.0804783 0 0.158513 0.987285 -0.0123907 0 0.0806559 0.996285 0.0301698 0 0.260917 0.965286 0.0107881 0 0.235574 0.965768 0.108644 0 0.304545 0.950289 0.0649901 0 -0.156871 0.970646 0.182289 0 -0.0991866 0.967465 0.232697 0 -0.00271868 0.957762 0.287547 0 -0.0980675 0.987139 0.126302 0 0.000217854 0.997946 0.0640371 0 0.145746 0.866202 0.477893 0 0.207386 0.831375 0.515505 0 0.191012 0.888874 0.416361 0 0.08974 0.892133 0.442787 0 0.0608021 0.927805 0.368086 0 0.00276044 0.902183 0.43131 0 0.0506769 0.907494 0.414152 0 0.0953823 0.843363 0.52881 0 0.0450687 0.814427 0.578472 0 0.106646 0.786452 0.60838 0 -0.217642 0.923344 0.316322 0 -0.209501 0.94815 0.239047 0 -0.213238 0.891913 0.398789 0 -0.205656 0.85346 0.478864 0 -0.149686 0.934299 0.323498 0 -0.0714649 0.919789 0.385858 0 -0.0814883 0.947805 0.308296 0 -0.148485 0.693853 0.704636 0 -0.111704 0.644219 0.756655 0 -0.0823977 0.725289 0.683477 0 -0.00399377 0.719246 0.694758 0 0.00412267 0.773515 0.633764 0 -0.181547 0.741376 0.646077 0 -0.20465 0.807597 0.553084 0 -0.626584 0.611745 0.482793 0 -0.657493 0.547606 0.517463 0 -0.579919 0.61412 0.535316 0 -0.548791 0.575004 0.606799 0 -0.504707 0.645395 0.573331 0 -0.544217 0.611708 0.57208 0 -0.588853 0.669353 0.453011 0 -0.549592 0.723525 0.417623 0 -0.284102 0.648887 0.705849 0 -0.286049 0.586319 0.75791 0 -0.212162 0.657993 0.722492 0 -0.27839 0.706999 0.650125 0 -0.242876 0.759309 0.603724 0 -0.302138 0.772126 0.559045 0 -0.352538 0.636911 0.685594 0 -0.432051 0.653711 0.621282 0 -0.416278 0.595469 0.687131 0 -0.367167 0.872523 0.322308 0 -0.294048 0.905226 0.30669 0 -0.431132 0.839896 0.329651 0 -0.516558 0.773875 0.366442 0 -0.356947 0.839066 0.410573 0 -0.333364 0.803803 0.492713 0 -0.272076 0.836759 0.475201 0 -0.707465 0.615102 0.347954 0 -0.674666 0.607074 0.419791 0 -0.6629 0.669081 0.336019 0 -0.596438 0.71449 0.365748 0 -0.623254 0.728902 0.283244 0 -0.627279 0.704634 0.32807 0 -0.729044 0.626165 0.276426 0 -0.747894 0.632174 0.202393 0 -0.447212 0.874572 0.187399 0 -0.388765 0.888744 0.242937 0 -0.514106 0.846801 0.13651 0 -0.578267 0.811334 0.0857058 0 -0.482328 0.843076 0.237812 0 -0.562568 0.78544 0.25808 0 -0.499233 0.813355 0.298732 0 -0.758997 0.648442 -0.0586322 0 -0.772823 0.634413 0.0154448 0 -0.771978 0.623001 0.126173 0 -0.707027 0.706511 -0.0310994 0 -0.632823 0.773755 0.0288733 0 -0.801589 0.488474 0.34464 0 -0.75413 0.551018 0.357218 0 -0.811952 0.512982 0.278566 0 -0.789566 0.573246 0.219048 0 -0.841351 0.503906 0.195391 0 -0.814572 0.530007 0.23067 0 -0.843538 0.429648 0.322252 0 -0.880807 0.36669 0.299449 0 -0.850225 0.523724 -0.0531409 0 -0.805762 0.586809 -0.0801549 0 -0.889932 0.455938 -0.0123812 0 -0.922588 0.384605 0.0301679 0 -0.837322 0.546577 0.0108632 0 -0.845688 0.522506 0.108656 0 -0.809619 0.58336 0.0650321 0 -0.971615 0.150753 0.182289 0 -0.950764 0.204631 0.232697 0 -0.911726 0.293379 0.287547 0 -0.969129 0.211776 0.126302 0 -0.949032 0.308599 0.0640355 0 -0.778775 0.406284 0.477883 0 -0.726614 0.454148 0.51548 0 -0.78636 0.456339 0.416331 0 -0.82074 0.361032 0.442783 0 -0.863607 0.344534 0.368085 0 -0.857174 0.281415 0.43131 0 -0.847419 0.328628 0.414151 0 -0.772613 0.351328 0.528807 0 -0.760639 0.294535 0.578472 0 -0.715006 0.344454 0.608378 0 -0.945408 0.0783391 0.316322 0 -0.966483 0.0937475 0.239047 0 -0.914154 0.0728154 0.398789 0 -0.87524 0.0681429 0.478864 0 -0.934826 0.146355 0.323498 0 -0.896855 0.216263 0.385858 0 -0.926597 0.215388 0.308296 0 -0.705778 0.0731946 0.704636 0 -0.647207 0.0928381 0.756654 0 -0.715254 0.145763 0.683477 0 -0.685278 0.218464 0.694757 0 -0.734383 0.242951 0.633763 0 -0.761191 0.0564363 0.646077 0 -0.831311 0.0549276 0.553083 0 -0.775429 -0.406877 0.482793 0 -0.723981 -0.456094 0.517463 0 -0.763268 -0.361762 0.535316 0 -0.716447 -0.344245 0.606799 0 -0.76977 -0.280567 0.573331 0 -0.749941 -0.328553 0.57208 0 -0.818558 -0.353191 0.453011 0 -0.857946 -0.299111 0.417623 0 -0.704921 -0.0696802 0.705849 0 -0.646017 -0.090866 0.75791 0 -0.69135 0.0015533 0.722492 0 -0.758423 -0.0462899 0.650125 0 -0.797198 0.00365093 0.603724 0 -0.827701 -0.0487508 0.559045 0 -0.714679 -0.138467 0.685594 0 -0.755227 -0.208897 0.621282 0 -0.694962 -0.211893 0.687131 0 -0.943279 -0.0795726 0.322308 0 -0.951788 7.378e-05 0.30669 0 -0.932016 -0.150489 0.329651 0 -0.895624 -0.252135 0.366442 0 -0.908302 -0.080191 0.410573 0 -0.867478 -0.0686593 0.492713 0 -0.879881 -0.000186698 0.475201 0 -0.803616 -0.482762 0.347954 0 -0.785845 -0.454049 0.419791 0 -0.841181 -0.423698 0.336019 0 -0.86383 -0.346456 0.365748 0 -0.885823 -0.367507 0.283244 0 -0.863987 -0.378834 0.32807 0 -0.820805 -0.499866 0.276426 0 -0.832345 -0.515937 0.202393 0 -0.969963 -0.155066 0.187399 0 -0.96538 -0.0951006 0.242937 0 -0.964223 -0.227268 0.13651 0 -0.950318 -0.299248 0.0857058 0 -0.95086 -0.198196 0.237812 0 -0.920841 -0.29232 0.25808 0 -0.927818 -0.223459 0.298732 0 -0.851248 -0.52147 -0.0586322 0 -0.842178 -0.538954 0.0154448 0 -0.831063 -0.541677 0.126173 0 -0.890415 -0.454098 -0.0310994 0 -0.931438 -0.362747 0.0288733 0 -0.712271 -0.61141 0.34464 0 -0.757089 -0.546946 0.357218 0 -0.738782 -0.613692 0.278566 0 -0.789178 -0.573779 0.219048 0 -0.739235 -0.644457 0.195391 0 -0.755784 -0.610923 0.23067 0 -0.669287 -0.669483 0.322252 0 -0.620927 -0.724384 0.299449 0 -0.760825 -0.646772 -0.0531409 0 -0.807083 -0.584991 -0.0801549 0 -0.708627 -0.705483 -0.0123812 0 -0.650876 -0.758584 0.0301679 0 -0.778572 -0.627439 0.0108632 0 -0.758264 -0.642834 0.108656 0 -0.804994 -0.589725 0.0650321 0 -0.44362 -0.877476 0.182289 0 -0.488418 -0.840996 0.232697 0 -0.560759 -0.776444 0.287547 0 -0.500888 -0.856254 0.126302 0 -0.586762 -0.807221 0.0640356 0 -0.627054 -0.615111 0.477883 0 -0.656456 -0.550712 0.51548 0 -0.677002 -0.606856 0.416331 0 -0.596985 -0.669005 0.442783 0 -0.59454 -0.714872 0.368085 0 -0.532523 -0.728259 0.43131 0 -0.57441 -0.704392 0.414151 0 -0.572883 -0.626233 0.528807 0 -0.51517 -0.632395 0.578472 0 -0.548545 -0.573569 0.608378 0 -0.366652 -0.874928 0.316322 0 -0.387819 -0.890211 0.239047 0 -0.351741 -0.846911 0.398789 0 -0.335272 -0.811346 0.478864 0 -0.428069 -0.843847 0.323498 0 -0.482822 -0.786131 0.385858 0 -0.49118 -0.814688 0.308296 0 -0.287709 -0.648616 0.704636 0 -0.288292 -0.586842 0.756655 0 -0.359654 -0.635203 0.683477 0 -0.419534 -0.584229 0.694757 0 -0.457997 -0.623363 0.633763 0 -0.288895 -0.706496 0.646077 0 -0.309128 -0.77365 0.553084 0 0.147343 -0.863209 0.482793 0 0.210049 -0.829488 0.517463 0 0.108194 -0.837702 0.535316 0 0.106002 -0.787759 0.6068 0 0.028963 -0.818794 0.573331 0 0.0807278 -0.814765 0.57208 0 0.0829561 -0.887637 0.453011 0 0.0193518 -0.908385 0.417623 0 -0.151563 -0.691952 0.705849 0 -0.113211 -0.642477 0.75791 0 -0.215115 -0.657033 0.722492 0 -0.190341 -0.735608 0.650125 0 -0.24982 -0.757052 0.603724 0 -0.209409 -0.802256 0.559045 0 -0.0891576 -0.722489 0.685595 0 -0.034705 -0.782816 0.621282 0 -0.0132332 -0.726426 0.687131 0 -0.215811 -0.921701 0.322308 0 -0.294189 -0.905181 0.30669 0 -0.144885 -0.932903 0.329651 0 -0.036968 -0.929703 0.366442 0 -0.204415 -0.888627 0.410573 0 -0.202766 -0.846237 0.492713 0 -0.271721 -0.836874 0.475201 0 0.210803 -0.913465 0.347954 0 0.188987 -0.887692 0.419791 0 0.143021 -0.930941 0.336019 0 0.0625613 -0.928612 0.365748 0 0.0757854 -0.956034 0.283244 0 0.0933063 -0.938766 0.32807 0 0.221758 -0.9351 0.276426 0 0.233477 -0.95104 0.202393 0 -0.152258 -0.970408 0.187399 0 -0.207873 -0.947519 0.242937 0 -0.0818168 -0.98726 0.13651 0 -0.00906227 -0.996279 0.0857058 0 -0.105336 -0.965568 0.237812 0 -0.00654298 -0.966104 0.25808 0 -0.0741899 -0.95146 0.298732 0 0.232897 -0.970728 -0.0586322 0 0.252328 -0.967505 0.0154448 0 0.258353 -0.957775 0.126173 0 0.15672 -0.987159 -0.0310994 0 0.0571628 -0.997945 0.0288733 0 0.361381 -0.866346 0.34464 0 0.286223 -0.88905 0.357218 0 0.355359 -0.892264 0.278566 0 0.301827 -0.927861 0.219048 0 0.384479 -0.902202 0.195391 0 0.347472 -0.907578 0.23067 0 0.429895 -0.843412 0.322252 0 0.497053 -0.814384 0.299449 0 0.380009 -0.923451 -0.0531409 0 0.306957 -0.948354 -0.0801549 0 0.451977 -0.89195 -0.0123812 0 0.520325 -0.853436 0.0301679 0 0.356138 -0.934355 0.0108632 0 0.377055 -0.919799 0.108656 0 0.312105 -0.94783 0.0650321 0 0.697443 -0.693063 0.182289 0 0.648905 -0.724395 0.232697 0 0.565158 -0.773248 0.287547 0 0.659563 -0.74097 0.126302 0 0.586393 -0.807489 0.0640355 0 0.391234 -0.786444 0.477883 0 0.320902 -0.794506 0.51548 0 0.367949 -0.831396 0.416331 0 0.451783 -0.7745 0.442783 0 0.496161 -0.786349 0.368085 0 0.528057 -0.731504 0.43131 0 0.492414 -0.763965 0.414151 0 0.418552 -0.73836 0.528809 0 0.442247 -0.685371 0.578478 0 0.375986 -0.698938 0.60838 0 0.718804 -0.619074 0.316322 0 0.726798 -0.643928 0.239047 0 0.696767 -0.596234 0.39879 0 0.668032 -0.569577 0.478869 0 0.670265 -0.66788 0.323499 0 0.598455 -0.702119 0.38586 0 0.623031 -0.718892 0.308296 0 0.527991 -0.473706 0.704854 0 0.469048 -0.45478 0.757094 0 0.492922 -0.538292 0.683553 0 0.425967 -0.579458 0.694838 0 0.45132 -0.628186 0.633791 0 0.58272 -0.49289 0.646149 0 0.640271 -0.533045 0.553093 0 0.86653 -0.126695 0.482705 0 0.853909 -0.0567902 0.517254 0 0.830294 -0.156176 0.535007 0 0.78278 -0.143983 0.605418 0 0.787782 -0.225571 0.57314 0 0.800138 -0.175464 0.571508 0 0.869842 -0.195437 0.452967 0 0.869903 -0.26233 0.417612 0 0.612183 -0.357087 0.705487 0 0.578682 -0.303559 0.756968 0 0.558749 -0.406704 0.72274 0 0.641216 -0.408046 0.649886 0 0.64291 -0.471425 0.603693 0 0.698338 -0.447074 0.558969 0 0.660717 -0.308709 0.684202 0 0.734864 -0.27588 0.619565 0 0.690119 -0.239254 0.683018 0 0.809901 -0.49007 0.322308 0 0.769969 -0.559506 0.306689 0 0.842472 -0.426079 0.329649 0 0.872776 -0.322466 0.366432 0 0.781971 -0.469016 0.410559 0 0.742177 -0.454365 0.492669 0 0.711954 -0.51703 0.475192 0 0.933902 -0.0818012 0.347946 0 0.902659 -0.0946161 0.419754 0 0.929574 -0.151661 0.336014 0 0.902495 -0.227466 0.365743 0 0.932661 -0.223355 0.283244 0 0.921653 -0.201358 0.328068 0 0.95786 -0.0780606 0.276423 0 0.976641 -0.0718385 0.202393 0 0.875862 -0.444679 0.187399 0 0.836908 -0.490498 0.242937 0 0.913658 -0.382893 0.13651 0 0.944717 -0.316486 0.0857058 0 0.885759 -0.398558 0.237811 0 0.916797 -0.304766 0.258079 0 0.881966 -0.364579 0.298729 0 0.995186 -0.078473 -0.0586322 0 0.998126 -0.0589969 0.015445 0 0.990734 -0.0502609 0.126173 0 0.987274 -0.156 -0.0310994 0 0.966767 -0.254017 0.0288733 0 0.935614 0.0759611 0.344653 0 0.933989 -0.00254736 0.357205 0 0.958401 0.0622371 0.278586 0 0.975717 0.000328091 0.219049 0 0.976855 0.0868654 0.195395 0 0.970532 0.0500069 0.230676 0 0.934912 0.148208 0.322448 0 0.927918 0.221164 0.300009 0 0.995683 0.0760483 -0.05314 0 0.996793 -0.00112396 -0.0801547 0 0.987963 0.154231 -0.0123706 0 0.97245 0.231144 0.0302067 0 0.998677 0.0499766 0.0108676 0 0.991296 0.0743687 0.108666 0 0.997886 0.00393461 0.0650347 0 0.874168 0.449819 0.182991 0 0.888597 0.394091 0.234648 0 0.909127 0.299281 0.289687 0 0.908352 0.398618 0.126538 0 0.949135 0.308244 0.0642128 0 0.868805 0.128496 0.478117 0 0.854836 0.0592524 0.515444 0 0.904385 0.0928441 0.416419 0 0.876038 0.189426 0.443495 0 0.900636 0.228889 0.36942 0 0.858269 0.276809 0.432114 0 0.878359 0.232146 0.415001 0 0.831403 0.167615 0.529788 0 0.788229 0.203023 0.580882 0 0.780672 0.138612 0.60938 0 0.80654 0.500226 0.315053 0 0.835302 0.494855 0.239608 0 0.772033 0.56261 0.295629 0 0.772172 0.503438 0.387699 0 0.723497 0.529267 0.443225 0 0.733166 0.470516 0.490998 0 0.835276 0.437934 0.332427 0 0.845485 0.356565 0.39751 0 0.872941 0.373205 0.314184 0 0.621699 0.351914 0.699741 0 0.56637 0.410827 0.714426 0 0.578263 0.304363 0.756966 0 0.665522 0.292841 0.686508 0 0.680635 0.215484 0.70023 0 0.736842 0.222209 0.638499 0 0.673241 0.388969 0.628858 0 0.711075 0.430755 0.555716 0 0.662538 0.480533 0.574576 0 -0.388297 0.78464 -0.483213 0 -0.317631 0.794432 -0.517617 0 -0.404865 0.740643 -0.536235 0 -0.376301 0.699238 -0.607841 0 -0.456771 0.679763 -0.573806 0 -0.412982 0.706377 -0.572814 0 -0.455271 0.765577 -0.454554 0 -0.520261 0.742952 -0.421073 0 -0.525021 0.477601 -0.704445 0 -0.467286 0.454854 -0.758138 0 -0.576677 0.508562 -0.639391 0 -0.623253 0.536827 -0.568659 0 -0.486256 0.534008 -0.691637 0 -0.476588 0.613538 -0.629636 0 -0.431691 0.579829 -0.690986 0 -0.723002 0.615238 -0.314234 0 -0.667775 0.666763 -0.330872 0 -0.581114 0.724348 -0.37098 0 -0.710346 0.585179 -0.391135 0 -0.668967 0.553562 -0.496033 0 -0.365867 0.863027 -0.348215 0 -0.36881 0.82914 -0.420052 0 -0.430435 0.837569 -0.336478 0 -0.495459 0.787607 -0.366335 0 -0.499863 0.818782 -0.282318 0 -0.475642 0.814672 -0.328193 0 -0.367878 0.88762 -0.277121 0 -0.364276 0.908576 -0.204303 0 -0.699137 0.692023 -0.179731 0 -0.728281 0.642967 -0.237112 0 -0.74214 0.657358 -0.130655 0 -0.666428 0.735748 -0.120664 0 -0.651288 0.757387 -0.0470183 0 -0.592425 0.803118 -0.0634949 0 -0.654205 0.721907 -0.225492 0 -0.571579 0.782628 -0.246552 0 -0.621032 0.726183 -0.294952 0 -0.383414 0.922269 0.0490425 0 -0.405335 0.905253 0.127196 0 -0.35594 0.934255 -0.0210268 0 -0.341771 0.930582 -0.131163 0 -0.458074 0.888921 -0.000707395 0 -0.530865 0.84655 -0.0391559 0 -0.546313 0.837029 0.0305256 0 -0.21658 0.913164 -0.345185 0 -0.29063 0.887506 -0.357498 0 -0.236044 0.930624 -0.279703 0 -0.297872 0.928917 -0.21998 0 -0.217917 0.956251 -0.195108 0 -0.250692 0.938789 -0.231221 0 -0.147417 0.934352 -0.32443 0 -0.07575 0.949336 -0.304911 0 -0.232101 0.97078 0.0608806 0 -0.307672 0.948143 0.0799002 0 -0.213499 0.967826 0.133014 0 -0.155725 0.986947 0.0411914 0 -0.0786776 0.995552 0.0520327 0 -0.060021 0.997955 -0.0219418 0 -0.247086 0.968946 -0.00849674 0 -0.219613 0.969454 -0.109195 0 -0.292863 0.953787 -0.0673956 0 0.146788 0.971849 -0.184263 0 0.203766 0.970876 -0.125849 0 0.099157 0.966128 -0.238192 0 0.00283148 0.954501 -0.298185 0 0.0669554 0.988483 -0.135762 0 -0.00466162 0.996915 -0.078342 0 0.0495046 0.998294 -0.0310657 0 -0.145648 0.866148 -0.478021 0 -0.20735 0.831366 -0.515534 0 -0.190866 0.888766 -0.416658 0 -0.0894461 0.892009 -0.443095 0 -0.0604288 0.927028 -0.370101 0 -0.00198093 0.902419 -0.430822 0 -0.0500512 0.907331 -0.414559 0 -0.0953249 0.843359 -0.528828 0 -0.0450488 0.814422 -0.578481 0 -0.106639 0.786451 -0.608383 0 0.216652 0.923623 -0.316188 0 0.205942 0.948922 -0.239076 0 0.212935 0.891995 -0.398767 0 0.205591 0.853482 -0.478854 0 0.148952 0.933878 -0.32505 0 0.0713798 0.918993 -0.387765 0 0.0812901 0.946299 -0.312939 0 0.148716 0.693582 -0.704854 0 0.112155 0.643624 -0.757094 0 0.0823834 0.725217 -0.683556 0 0.00402131 0.719167 -0.694841 0 -0.00410781 0.77349 -0.633794 0 0.181717 0.74127 -0.64615 0 0.204658 0.807598 -0.55308 0 -0.866227 -0.126829 -0.483213 0 -0.8537 -0.0566122 -0.517618 0 -0.829503 -0.156183 -0.536234 0 -0.781299 -0.141817 -0.607838 0 -0.787643 -0.224357 -0.573806 0 -0.799423 -0.17449 -0.572813 0 -0.868793 -0.196413 -0.454554 0 -0.867359 -0.265213 -0.421073 0 -0.616466 -0.351738 -0.704445 0 -0.576991 -0.303858 -0.758138 0 -0.661875 -0.391298 -0.639391 0 -0.703149 -0.42686 -0.568659 0 -0.658133 -0.297441 -0.691637 0 -0.730783 -0.26367 -0.629635 0 -0.684851 -0.23139 -0.690983 0 -0.808546 -0.497497 -0.314234 0 -0.840483 -0.429051 -0.330872 0 -0.86847 -0.328836 -0.37098 0 -0.776047 -0.494749 -0.391135 0 -0.733191 -0.465165 -0.496033 0 -0.933847 -0.0812723 -0.348215 0 -0.902526 -0.0945477 -0.420053 0 -0.929587 -0.150545 -0.336478 0 -0.902164 -0.227826 -0.366335 0 -0.933175 -0.22238 -0.282318 0 -0.921781 -0.200615 -0.328193 0 -0.957857 -0.0755837 -0.277122 0 -0.976674 -0.0656814 -0.204303 0 -0.874198 -0.451072 -0.179731 0 -0.836549 -0.493949 -0.237112 0 -0.854519 -0.502682 -0.130655 0 -0.905675 -0.406452 -0.120664 0 -0.921576 -0.385366 -0.0470183 0 -0.94688 -0.315253 -0.0634949 0 -0.888735 -0.399104 -0.225492 0 -0.920951 -0.301759 -0.246552 0 -0.88255 -0.366234 -0.294952 0 -0.995611 -0.0796512 0.0490425 0 -0.986202 -0.105758 0.127196 0 -0.99852 -0.0498181 -0.0210269 0 -0.990649 -0.0374778 -0.131163 0 -0.986967 -0.160962 -0.000707397 0 -0.969163 -0.243284 -0.0391559 0 -0.964882 -0.260918 0.0305256 0 -0.935391 0.0761922 -0.345205 0 -0.933876 -0.00216074 -0.357505 0 -0.95801 0.0630821 -0.27973 0 -0.9755 0.00375795 -0.219982 0 -0.976789 0.0882467 -0.195109 0 -0.970308 0.0516777 -0.231228 0 -0.934109 0.148493 -0.32464 0 -0.926063 0.221374 -0.305529 0 -0.99499 0.0792462 0.06088 0 -0.996814 0.00037892 0.0799 0 -0.986432 0.0960248 0.133014 0 -0.986764 0.156882 0.0411886 0 -0.971138 0.23282 0.0520307 0 -0.967657 0.251307 -0.0219477 0 -0.997876 0.0644295 -0.00849958 0 -0.98987 0.0907145 -0.109201 0 -0.997604 0.0162079 -0.0673972 0 -0.878593 0.440092 -0.18543 0 -0.860213 0.49413 -0.125808 0 -0.887615 0.391154 -0.243115 0 -0.905937 0.298164 -0.300616 0 -0.919323 0.36922 -0.136146 0 -0.949545 0.303669 -0.0784061 0 -0.934117 0.355622 -0.0310824 0 -0.868708 0.128578 -0.478271 0 -0.854715 0.0594602 -0.51562 0 -0.904213 0.0929562 -0.41677 0 -0.875832 0.18949 -0.443873 0 -0.899801 0.229057 -0.371346 0 -0.85817 0.276785 -0.432326 0 -0.877999 0.23219 -0.415732 0 -0.831353 0.167871 -0.529785 0 -0.788299 0.203698 -0.580551 0 -0.780793 0.139678 -0.608982 0 -0.807257 0.49912 -0.314972 0 -0.837318 0.491222 -0.240045 0 -0.773043 0.56178 -0.294568 0 -0.772472 0.503034 -0.387626 0 -0.723621 0.529266 -0.443025 0 -0.733169 0.470521 -0.49099 0 -0.835072 0.436895 -0.334302 0 -0.844706 0.356114 -0.399563 0 -0.871529 0.37186 -0.31965 0 -0.622268 0.352864 -0.698756 0 -0.566679 0.410543 -0.714344 0 -0.580673 0.304741 -0.754965 0 -0.664492 0.29983 -0.684489 0 -0.68325 0.222162 -0.695582 0 -0.737581 0.224883 -0.636707 0 -0.673383 0.38943 -0.628421 0 -0.711084 0.430898 -0.555594 0 -0.66257 0.480574 -0.574505 0 -0.147057 -0.863023 -0.483213 0 -0.209966 -0.829411 -0.517618 0 -0.107791 -0.837168 -0.536234 0 -0.106558 -0.786883 -0.607838 0 -0.0300187 -0.818423 -0.573806 0 -0.0810856 -0.814217 -0.572813 0 -0.0816717 -0.886967 -0.454554 0 -0.0157956 -0.906863 -0.421073 0 0.144024 -0.694987 -0.704445 0 0.110686 -0.642649 -0.758138 0 0.167616 -0.750398 -0.639391 0 0.188683 -0.800641 -0.568659 0 0.0795085 -0.717836 -0.691637 0 0.0249405 -0.776495 -0.629635 0 0.00843468 -0.722836 -0.690983 0 0.223293 -0.922708 -0.314234 0 0.148328 -0.931931 -0.330872 0 0.04437 -0.92758 -0.37098 0 0.230722 -0.890951 -0.391135 0 0.21583 -0.84105 -0.496033 0 -0.21128 -0.913255 -0.348215 0 -0.188976 -0.88757 -0.420053 0 -0.144081 -0.930611 -0.336478 0 -0.0621087 -0.928412 -0.366335 0 -0.0768706 -0.956221 -0.282318 0 -0.0940501 -0.938659 -0.328193 0 -0.22411 -0.934333 -0.277122 0 -0.239342 -0.949169 -0.204303 0 0.158853 -0.970801 -0.179731 0 0.211266 -0.948244 -0.237112 0 0.214018 -0.968033 -0.130655 0 0.10669 -0.986949 -0.120664 0 0.081722 -0.995556 -0.0470183 0 0.00722113 -0.997955 -0.0634949 0 0.104936 -0.968567 -0.225492 0 0.0024002 -0.969125 -0.246552 0 0.0755859 -0.952528 -0.294952 0 -0.231908 -0.971496 0.0490425 0 -0.204172 -0.970615 0.127196 0 -0.26118 -0.965044 -0.0210269 0 -0.270484 -0.953745 -0.131163 0 -0.151906 -0.988402 -0.00070739 0 -0.0681112 -0.996908 -0.0391559 0 -0.0500171 -0.998285 0.0305256 0 -0.361515 -0.866065 -0.345205 0 -0.286528 -0.888836 -0.357505 0 -0.356036 -0.891628 -0.27973 0 -0.30502 -0.926594 -0.219982 0 -0.385772 -0.901712 -0.195109 0 -0.34899 -0.906849 -0.231228 0 -0.42988 -0.842503 -0.32464 0 -0.496709 -0.81233 -0.305529 0 -0.382836 -0.921803 0.06088 0 -0.308393 -0.947909 0.0799 0 -0.396149 -0.90848 0.133014 0 -0.45413 -0.889989 0.0411886 0 -0.521523 -0.851662 0.0520308 0 -0.53803 -0.842638 -0.0219477 0 -0.369637 -0.929127 -0.00849958 0 -0.392161 -0.91339 -0.109201 0 -0.323691 -0.94377 -0.0673972 0 -0.690053 -0.699595 -0.18543 0 -0.735766 -0.665416 -0.125808 0 -0.646298 -0.723299 -0.243115 0 -0.563521 -0.76946 -0.300616 0 -0.635235 -0.760233 -0.136146 0 -0.582232 -0.809232 -0.0784061 0 -0.626874 -0.778504 -0.0310824 0 -0.390731 -0.786458 -0.478271 0 -0.320672 -0.794508 -0.51562 0 -0.367824 -0.831232 -0.41677 0 -0.450863 -0.77441 -0.443873 0 -0.4959 -0.784979 -0.371346 0 -0.528427 -0.730637 -0.432326 0 -0.492143 -0.763276 -0.415732 0 -0.416557 -0.738789 -0.529785 0 -0.437326 -0.686771 -0.580551 0 -0.37412 -0.699415 -0.608982 0 -0.724147 -0.613511 -0.314972 0 -0.725926 -0.64454 -0.240045 0 -0.773168 -0.561608 -0.294568 0 -0.717121 -0.579219 -0.387626 0 -0.726973 -0.524652 -0.443025 0 -0.674053 -0.551886 -0.49099 0 -0.673563 -0.659192 -0.334302 0 -0.599713 -0.693317 -0.399563 0 -0.622978 -0.713962 -0.31965 0 -0.527885 -0.482771 -0.698756 0 -0.565563 -0.412078 -0.714344 0 -0.469264 -0.458083 -0.754965 0 -0.490495 -0.539317 -0.684489 0 -0.422425 -0.581158 -0.695582 0 -0.441801 -0.631989 -0.636707 0 -0.578457 -0.520085 -0.628421 0 -0.629545 -0.543126 -0.555594 0 -0.661798 -0.481636 -0.574505 0 0.77534 -0.406548 -0.483213 0 0.723934 -0.455992 -0.517618 0 0.762884 -0.361214 -0.536234 0 0.715441 -0.344502 -0.60784 0 0.76909 -0.281456 -0.573807 0 0.749309 -0.328723 -0.572814 0 0.818317 -0.351762 -0.454554 0 0.857596 -0.295258 -0.421073 0 0.705424 -0.0778977 -0.704487 0 0.645436 -0.0937125 -0.758058 0 0.765427 -0.0725051 -0.639435 0 0.819745 -0.0679689 -0.568681 0 0.707229 -0.146234 -0.691674 0 0.746184 -0.216226 -0.629653 0 0.690037 -0.215339 -0.691013 0 0.946548 -0.0727678 -0.314234 0 0.932154 -0.146914 -0.330873 0 0.895892 -0.244439 -0.370981 0 0.91864 -0.0558881 -0.391137 0 0.866575 -0.0546335 -0.496044 0 0.803268 -0.483151 -0.348215 0 0.785733 -0.454001 -0.420054 0 0.84054 -0.424604 -0.336478 0 0.863779 -0.345964 -0.366335 0 0.885666 -0.368597 -0.282318 0 0.863655 -0.379509 -0.328193 0 0.81935 -0.501866 -0.277122 0 0.828753 -0.520937 -0.204303 0 0.972374 -0.148916 -0.179731 0 0.967118 -0.0920978 -0.237112 0 0.986789 -0.0955952 -0.130655 0 0.971613 -0.203516 -0.120664 0 0.972084 -0.229921 -0.0470183 0 0.951343 -0.301517 -0.0634949 0 0.953589 -0.199503 -0.225492 0 0.922435 -0.297193 -0.246553 0 0.929265 -0.222461 -0.294953 0 0.852284 -0.520766 0.0490425 0 0.860017 -0.494115 0.127196 0 0.837102 -0.546612 -0.0210269 0 0.823481 -0.551969 -0.131163 0 0.893084 -0.449904 -0.000707404 0 0.927068 -0.372839 -0.0391559 0 0.933969 -0.356056 0.0305256 0 0.711962 -0.61145 -0.345205 0 0.756791 -0.54717 -0.357505 0 0.737968 -0.614139 -0.27973 0 0.786987 -0.576425 -0.219982 0 0.738369 -0.645535 -0.195109 0 0.75462 -0.612141 -0.231228 0 0.668428 -0.669188 -0.32464 0 0.61908 -0.723422 -0.305529 0 0.758384 -0.648952 0.06088 0 0.806217 -0.586219 0.0799 0 0.741599 -0.657496 0.133014 0 0.706096 -0.706925 0.0411886 0 0.648819 -0.759175 0.0520307 0 0.635136 -0.772086 -0.0219477 0 0.769428 -0.638661 -0.00849958 0 0.747501 -0.65522 -0.109201 0 0.797552 -0.59949 -0.0673972 0 0.452116 -0.872466 -0.18543 0 0.405484 -0.90538 -0.125808 0 0.488181 -0.838178 -0.243115 0 0.557662 -0.773716 -0.300616 0 0.526726 -0.83907 -0.136146 0 0.589706 -0.803802 -0.0784061 0 0.546687 -0.836764 -0.0310824 0 0.627223 -0.614636 -0.478271 0 0.656529 -0.550493 -0.51562 0 0.676885 -0.606686 -0.41677 0 0.597183 -0.668102 -0.443873 0 0.593317 -0.714201 -0.371346 0 0.531584 -0.728344 -0.432326 0 0.573838 -0.703921 -0.415732 0 0.573907 -0.624468 -0.529785 0 0.518017 -0.628146 -0.580551 0 0.549574 -0.57194 -0.608982 0 0.35971 -0.87829 -0.314972 0 0.388671 -0.88957 -0.240045 0 0.295199 -0.908873 -0.294568 0 0.329267 -0.861011 -0.387626 0 0.274326 -0.853519 -0.443025 0 0.316581 -0.811605 -0.49099 0 0.418787 -0.844299 -0.334302 0 0.474063 -0.784608 -0.399563 0 0.486508 -0.813113 -0.31965 0 0.296017 -0.651233 -0.698756 0 0.217141 -0.665222 -0.714344 0 0.290652 -0.587852 -0.754965 0 0.36135 -0.633146 -0.684489 0 0.422177 -0.581337 -0.695582 0 0.464533 -0.615473 -0.636707 0 0.315877 -0.71086 -0.628421 0 0.322004 -0.766568 -0.555594 0 0.253556 -0.778241 -0.574505 0 0.626586 0.61182 -0.482696 0 0.657452 0.547855 -0.517253 0 0.579947 0.614376 -0.534991 0 0.548652 0.576591 -0.605417 0 0.504742 0.645537 -0.573139 0 0.544196 0.612262 -0.571504 0 0.589014 0.669327 -0.452841 0 0.550028 0.723474 -0.417134 0 0.285377 0.648722 -0.705486 0 0.289737 0.585725 -0.756968 0 0.212983 0.657456 -0.72274 0 0.278914 0.707019 -0.649879 0 0.243027 0.759293 -0.603683 0 0.30219 0.772182 -0.558939 0 0.353079 0.638112 -0.684199 0 0.432364 0.655137 -0.619558 0 0.417689 0.599203 -0.683016 0 0.367889 0.872701 -0.321 0 0.293402 0.905785 -0.305657 0 0.435573 0.838343 -0.327757 0 0.518215 0.773767 -0.364324 0 0.357178 0.839216 -0.410065 0 0.333404 0.803904 -0.492521 0 0.272035 0.836856 -0.475053 0 0.707799 0.614629 -0.34811 0 0.674776 0.606966 -0.41977 0 0.663835 0.66806 -0.336202 0 0.597337 0.714239 -0.36477 0 0.624405 0.728336 -0.282165 0 0.628342 0.703909 -0.327614 0 0.730525 0.624149 -0.277076 0 0.75154 0.627215 -0.204293 0 0.442582 0.878396 -0.180371 0 0.388172 0.889947 -0.239457 0 0.395379 0.909039 -0.131474 0 0.493967 0.861045 -0.120863 0 0.519058 0.853453 -0.0470988 0 0.580751 0.8116 -0.0634945 0 0.486285 0.844377 -0.224798 0 0.569387 0.784629 -0.245259 0 0.503424 0.813188 -0.292076 0 0.758467 0.649889 0.0486013 0 0.735514 0.665599 0.126312 0 0.778514 0.627239 -0.0213189 0 0.779406 0.612622 -0.131206 0 0.70376 0.710447 -0.000903493 0 0.641033 0.766511 -0.0391954 0 0.627203 0.778266 0.030426 0 0.801537 0.488173 -0.345187 0 0.754275 0.550676 -0.357439 0 0.812128 0.512071 -0.27972 0 0.791403 0.570348 -0.219979 0 0.842108 0.50275 -0.195109 0 0.815371 0.528527 -0.231225 0 0.842992 0.428926 -0.324633 0 0.879321 0.365232 -0.305528 0 0.851337 0.521099 0.0605989 0 0.806409 0.586065 0.0790791 0 0.854213 0.502725 0.132481 0 0.890419 0.453299 0.0410576 0 0.92245 0.382612 0.0521165 0 0.930558 0.365484 -0.0219365 0 0.845056 0.534589 -0.00866481 0 0.854115 0.508479 -0.109236 0 0.816557 0.57332 -0.0675143 0 0.969476 0.160382 -0.18543 0 0.986369 0.105861 -0.125808 0 0.94801 0.205278 -0.243115 0 0.908174 0.29128 -0.300617 0 0.960769 0.241662 -0.136144 0 0.946687 0.312465 -0.0784007 0 0.964744 0.261364 -0.031065 0 0.778365 0.406664 -0.478228 0 0.726402 0.454494 -0.515474 0 0.786169 0.456316 -0.416716 0 0.819923 0.361544 -0.443873 0 0.862589 0.343583 -0.371344 0 0.856963 0.280498 -0.432328 0 0.84679 0.328241 -0.415732 0 0.771117 0.353061 -0.529838 0 0.757016 0.299045 -0.580901 0 0.713049 0.346724 -0.609385 0 0.946459 0.0707 -0.314974 0 0.966137 0.0947563 -0.240045 0 0.955611 -0.000105984 -0.294569 0 0.920614 0.0470944 -0.387637 0 0.896512 -0.00284881 -0.443033 0 0.8697 0.0502961 -0.491008 0 0.932383 0.137398 -0.334312 0 0.892687 0.208424 -0.399582 0 0.923653 0.211437 -0.319656 0 0.709815 0.0807207 -0.699741 0 0.699681 0.000537471 -0.714426 0 0.646724 0.0936593 -0.756966 0 0.710543 0.15427 -0.686511 0 0.677301 0.225736 -0.700233 0 0.726722 0.253328 -0.638509 0 0.773289 0.0810355 -0.628864 0 0.82845 0.0694624 -0.555737 0 0.818461 0.000659717 -0.574567 0 Quadrilaterals 1980 124 485 483 484 0 485 125 665 483 0 484 483 673 123 0 483 665 33 673 0 127 488 486 487 0 488 128 681 486 0 487 486 689 126 0 486 681 36 689 0 130 491 489 490 0 491 131 697 489 0 490 489 705 129 0 489 697 39 705 0 133 494 492 493 0 494 134 713 492 0 493 492 721 132 0 492 713 42 721 0 136 497 495 496 0 497 137 729 495 0 496 495 737 135 0 495 729 45 737 0 139 500 498 499 0 500 140 745 498 0 499 498 753 138 0 498 745 48 753 0 142 503 501 502 0 503 143 761 501 0 502 501 771 141 0 501 761 51 771 0 145 506 504 505 0 506 146 781 504 0 505 504 789 144 0 504 781 53 789 0 148 509 507 508 0 509 149 797 507 0 508 507 805 147 0 507 797 56 805 0 151 512 510 511 0 512 152 813 510 0 511 510 821 150 0 510 813 59 821 0 154 515 513 514 0 515 155 829 513 0 514 513 837 153 0 513 829 62 837 0 157 518 516 517 0 518 158 845 516 0 517 516 855 156 0 516 845 65 855 0 160 521 519 520 0 521 161 867 519 0 520 519 878 159 0 519 867 35 878 0 163 524 522 523 0 524 164 891 522 0 523 522 902 162 0 522 891 67 902 0 166 527 525 526 0 527 167 915 525 0 526 525 926 165 0 525 915 68 926 0 169 530 528 529 0 530 170 940 528 0 529 528 952 168 0 528 940 69 952 0 172 533 531 532 0 533 173 967 531 0 532 531 978 171 0 531 967 38 978 0 175 536 534 535 0 536 176 991 534 0 535 534 1002 174 0 534 991 70 1002 0 178 539 537 538 0 539 179 1015 537 0 538 537 1026 177 0 537 1015 71 1026 0 181 542 540 541 0 542 182 1040 540 0 541 540 1052 180 0 540 1040 72 1052 0 184 545 543 544 0 545 185 1067 543 0 544 543 1076 183 0 543 1067 41 1076 0 187 548 546 547 0 548 188 1087 546 0 547 546 1096 186 0 546 1087 74 1096 0 190 551 549 550 0 551 191 1107 549 0 550 549 1116 189 0 549 1107 76 1116 0 193 554 552 553 0 554 194 1128 552 0 553 552 1138 192 0 552 1128 78 1138 0 196 557 555 556 0 557 197 1151 555 0 556 555 1162 195 0 555 1151 44 1162 0 199 560 558 559 0 560 200 1175 558 0 559 558 1184 198 0 558 1175 80 1184 0 202 563 561 562 0 563 203 1195 561 0 562 561 1204 201 0 561 1195 82 1204 0 205 566 564 565 0 566 206 1216 564 0 565 564 1226 204 0 564 1216 84 1226 0 208 569 567 568 0 569 209 1239 567 0 568 567 1250 207 0 567 1239 47 1250 0 211 572 570 571 0 572 212 1263 570 0 571 570 1272 210 0 570 1263 86 1272 0 214 575 573 574 0 575 215 1283 573 0 574 573 1292 213 0 573 1283 88 1292 0 217 578 576 577 0 578 218 1304 576 0 577 576 1314 216 0 576 1304 90 1314 0 220 581 579 580 0 581 221 1327 579 0 580 579 1338 219 0 579 1327 50 1338 0 223 584 582 583 0 584 224 1351 582 0 583 582 1360 222 0 582 1351 92 1360 0 226 587 585 586 0 587 227 1371 585 0 586 585 1380 225 0 585 1371 94 1380 0 229 590 588 589 0 590 230 1392 588 0 589 588 1402 228 0 588 1392 96 1402 0 232 593 591 592 0 593 233 1415 591 0 592 591 1426 231 0 591 1415 52 1426 0 235 596 594 595 0 596 236 1439 594 0 595 594 1448 234 0 594 1439 98 1448 0 238 599 597 598 0 599 239 1459 597 0 598 597 1468 237 0 597 1459 100 1468 0 241 602 600 601 0 602 242 1480 600 0 601 600 1492 240 0 600 1480 102 1492 0 244 605 603 604 0 605 245 1507 603 0 604 603 1516 243 0 603 1507 55 1516 0 247 608 606 607 0 608 248 1527 606 0 607 606 1538 246 0 606 1527 104 1538 0 250 611 609 610 0 611 251 1551 609 0 610 609 1562 249 0 609 1551 105 1562 0 253 614 612 613 0 614 254 1576 612 0 613 612 1586 252 0 612 1576 106 1586 0 256 617 615 616 0 617 257 1599 615 0 616 615 1608 255 0 615 1599 58 1608 0 259 620 618 619 0 620 260 1619 618 0 619 618 1630 258 0 618 1619 109 1630 0 262 623 621 622 0 623 263 1643 621 0 622 621 1654 261 0 621 1643 110 1654 0 265 626 624 625 0 626 266 1668 624 0 625 624 1680 264 0 624 1668 111 1680 0 268 629 627 628 0 629 269 1695 627 0 628 627 1704 267 0 627 1695 61 1704 0 271 632 630 631 0 632 272 1715 630 0 631 630 1726 270 0 630 1715 113 1726 0 274 635 633 634 0 635 275 1739 633 0 634 633 1750 273 0 633 1739 114 1750 0 277 638 636 637 0 638 278 1764 636 0 637 636 1776 276 0 636 1764 115 1776 0 280 641 639 640 0 641 281 1791 639 0 640 639 1800 279 0 639 1791 64 1800 0 283 644 642 643 0 644 284 1811 642 0 643 642 1822 282 0 642 1811 117 1822 0 286 647 645 646 0 647 287 1835 645 0 646 645 1846 285 0 645 1835 118 1846 0 289 650 648 649 0 650 290 1860 648 0 649 648 1872 288 0 648 1860 119 1872 0 292 653 651 652 0 653 293 1887 651 0 652 651 1898 291 0 651 1887 66 1898 0 295 656 654 655 0 656 296 1911 654 0 655 654 1922 294 0 654 1911 120 1922 0 298 659 657 658 0 659 299 1935 657 0 658 657 1946 297 0 657 1935 121 1946 0 301 662 660 661 0 662 302 1960 660 0 661 660 1972 300 0 660 1960 122 1972 0 125 667 663 664 0 667 304 864 663 0 664 663 936 303 0 663 864 21 936 0 123 672 669 670 0 672 306 956 669 0 670 669 773 305 0 669 956 5 773 0 124 677 674 675 0 677 308 766 674 0 675 674 872 307 0 674 766 1 872 0 128 683 679 680 0 683 310 964 679 0 680 679 1036 309 0 679 964 22 1036 0 126 688 685 686 0 688 312 1056 685 0 686 685 857 311 0 685 1056 6 857 0 127 693 690 691 0 693 314 850 690 0 691 690 972 313 0 690 850 10 972 0 131 699 695 696 0 699 316 1064 695 0 696 695 1124 315 0 695 1064 23 1124 0 129 704 701 702 0 704 318 1141 701 0 702 701 881 317 0 701 1141 2 881 0 130 709 706 707 0 709 320 873 706 0 707 706 1072 319 0 706 873 1 1072 0 134 715 711 712 0 715 322 1148 711 0 712 711 1212 321 0 711 1148 24 1212 0 132 720 717 718 0 720 324 1229 717 0 718 717 905 323 0 717 1229 3 905 0 133 725 722 723 0 725 326 897 722 0 723 722 1156 325 0 722 897 2 1156 0 137 731 727 728 0 731 328 1236 727 0 728 727 1300 327 0 727 1236 25 1300 0 135 736 733 734 0 736 330 1317 733 0 734 733 929 329 0 733 1317 4 929 0 136 741 738 739 0 741 332 921 738 0 739 738 1244 331 0 738 921 3 1244 0 140 747 743 744 0 747 334 1324 743 0 744 743 1388 333 0 743 1324 26 1388 0 138 752 749 750 0 752 336 1405 749 0 750 749 955 335 0 749 1405 5 955 0 139 757 754 755 0 757 338 947 754 0 755 754 1332 337 0 754 947 4 1332 0 143 763 759 760 0 763 340 1412 759 0 760 759 1476 339 0 759 1412 27 1476 0 141 770 765 767 0 770 341 1496 765 0 767 765 766 308 0 765 1496 1 766 0 142 776 772 774 0 776 305 773 772 0 774 772 1420 342 0 772 773 5 1420 0 146 783 779 780 0 783 344 1504 779 0 780 779 1572 343 0 779 1504 28 1572 0 144 788 785 786 0 788 346 1589 785 0 786 785 1055 345 0 785 1589 6 1055 0 145 793 790 791 0 793 348 1047 790 0 791 790 1512 347 0 790 1047 7 1512 0 149 799 795 796 0 799 350 1596 795 0 796 795 1664 349 0 795 1596 29 1664 0 147 804 801 802 0 804 352 1684 801 0 802 801 1029 351 0 801 1684 7 1029 0 148 809 806 807 0 809 354 1021 806 0 807 806 1604 353 0 806 1021 8 1604 0 152 815 811 812 0 815 356 1692 811 0 812 811 1760 355 0 811 1692 30 1760 0 150 820 817 818 0 820 358 1780 817 0 818 817 1005 357 0 817 1780 8 1005 0 151 825 822 823 0 825 360 997 822 0 823 822 1700 359 0 822 997 9 1700 0 155 831 827 828 0 831 362 1788 827 0 828 827 1856 361 0 827 1788 31 1856 0 153 836 833 834 0 836 364 1876 833 0 834 833 981 363 0 833 1876 9 981 0 154 841 838 839 0 841 366 973 838 0 839 838 1796 365 0 838 973 10 1796 0 158 847 843 844 0 847 368 1884 843 0 844 843 1956 367 0 843 1884 32 1956 0 156 854 849 851 0 854 369 1976 849 0 851 849 850 314 0 849 1976 10 850 0 157 860 856 858 0 860 311 857 856 0 858 856 1892 370 0 856 857 6 1892 0 161 869 863 865 0 869 371 888 863 0 865 863 864 304 0 863 888 21 864 0 159 877 871 874 0 877 307 872 871 0 874 871 873 320 0 871 872 1 873 0 160 884 880 882 0 884 317 881 880 0 882 880 896 372 0 880 881 2 896 0 164 893 887 889 0 893 373 912 887 0 889 887 888 371 0 887 912 21 888 0 162 901 895 898 0 901 372 896 895 0 898 895 897 326 0 895 896 2 897 0 163 908 904 906 0 908 323 905 904 0 906 904 920 374 0 904 905 3 920 0 167 917 911 913 0 917 375 937 911 0 913 911 912 373 0 911 937 21 912 0 165 925 919 922 0 925 374 920 919 0 922 919 921 332 0 919 920 3 921 0 166 932 928 930 0 932 329 929 928 0 930 928 946 376 0 928 929 4 946 0 170 942 935 938 0 942 303 936 935 0 938 935 937 375 0 935 936 21 937 0 168 951 945 948 0 951 376 946 945 0 948 945 947 338 0 945 946 4 947 0 169 960 954 957 0 960 335 955 954 0 957 954 956 306 0 954 955 5 956 0 173 969 963 965 0 969 377 988 963 0 965 963 964 310 0 963 988 22 964 0 171 977 971 974 0 977 313 972 971 0 974 971 973 366 0 971 972 10 973 0 172 984 980 982 0 984 363 981 980 0 982 980 996 378 0 980 981 9 996 0 176 993 987 989 0 993 379 1012 987 0 989 987 988 377 0 987 1012 22 988 0 174 1001 995 998 0 1001 378 996 995 0 998 995 997 360 0 995 996 9 997 0 175 1008 1004 1006 0 1008 357 1005 1004 0 1006 1004 1020 380 0 1004 1005 8 1020 0 179 1017 1011 1013 0 1017 381 1037 1011 0 1013 1011 1012 379 0 1011 1037 22 1012 0 177 1025 1019 1022 0 1025 380 1020 1019 0 1022 1019 1021 354 0 1019 1020 8 1021 0 178 1032 1028 1030 0 1032 351 1029 1028 0 1030 1028 1046 382 0 1028 1029 7 1046 0 182 1042 1035 1038 0 1042 309 1036 1035 0 1038 1035 1037 381 0 1035 1036 22 1037 0 180 1051 1045 1048 0 1051 382 1046 1045 0 1048 1045 1047 348 0 1045 1046 7 1047 0 181 1060 1054 1057 0 1060 345 1055 1054 0 1057 1054 1056 312 0 1054 1055 6 1056 0 185 1069 1063 1065 0 1069 383 1084 1063 0 1065 1063 1064 316 0 1063 1084 23 1064 0 183 1075 1071 1073 0 1075 319 1072 1071 0 1073 1071 1495 384 0 1071 1072 1 1495 0 184 1081 1078 1079 0 1081 386 1487 1078 0 1079 1078 1092 385 0 1078 1487 11 1092 0 188 1089 1083 1085 0 1089 387 1104 1083 0 1085 1083 1084 383 0 1083 1104 23 1084 0 186 1095 1091 1093 0 1095 385 1092 1091 0 1093 1091 1925 388 0 1091 1092 11 1925 0 187 1101 1098 1099 0 1101 390 1917 1098 0 1099 1098 1112 389 0 1098 1917 12 1112 0 191 1109 1103 1105 0 1109 391 1125 1103 0 1105 1103 1104 387 0 1103 1125 23 1104 0 189 1115 1111 1113 0 1115 389 1112 1111 0 1113 1111 1565 392 0 1111 1112 12 1565 0 190 1121 1118 1119 0 1121 394 1557 1118 0 1119 1118 1134 393 0 1118 1557 13 1134 0 194 1130 1123 1126 0 1130 315 1124 1123 0 1126 1123 1125 391 0 1123 1124 23 1125 0 192 1137 1133 1135 0 1137 393 1134 1133 0 1135 1133 1165 395 0 1133 1134 13 1165 0 193 1145 1140 1142 0 1145 396 1157 1140 0 1142 1140 1141 318 0 1140 1157 2 1141 0 197 1153 1147 1149 0 1153 397 1172 1147 0 1149 1147 1148 322 0 1147 1172 24 1148 0 195 1161 1155 1158 0 1161 325 1156 1155 0 1158 1155 1157 396 0 1155 1156 2 1157 0 196 1168 1164 1166 0 1168 395 1165 1164 0 1166 1164 1180 398 0 1164 1165 13 1180 0 200 1177 1171 1173 0 1177 399 1192 1171 0 1173 1171 1172 397 0 1171 1192 24 1172 0 198 1183 1179 1181 0 1183 398 1180 1179 0 1181 1179 1541 400 0 1179 1180 13 1541 0 199 1189 1186 1187 0 1189 402 1533 1186 0 1187 1186 1200 401 0 1186 1533 14 1200 0 203 1197 1191 1193 0 1197 403 1213 1191 0 1193 1191 1192 399 0 1191 1213 24 1192 0 201 1203 1199 1201 0 1203 401 1200 1199 0 1201 1199 1657 404 0 1199 1200 14 1657 0 202 1209 1206 1207 0 1209 406 1649 1206 0 1207 1206 1222 405 0 1206 1649 15 1222 0 206 1218 1211 1214 0 1218 321 1212 1211 0 1214 1211 1213 403 0 1211 1212 24 1213 0 204 1225 1221 1223 0 1225 405 1222 1221 0 1223 1221 1253 407 0 1221 1222 15 1253 0 205 1233 1228 1230 0 1233 408 1245 1228 0 1230 1228 1229 324 0 1228 1245 3 1229 0 209 1241 1235 1237 0 1241 409 1260 1235 0 1237 1235 1236 328 0 1235 1260 25 1236 0 207 1249 1243 1246 0 1249 331 1244 1243 0 1246 1243 1245 408 0 1243 1244 3 1245 0 208 1256 1252 1254 0 1256 407 1253 1252 0 1254 1252 1268 410 0 1252 1253 15 1268 0 212 1265 1259 1261 0 1265 411 1280 1259 0 1261 1259 1260 409 0 1259 1280 25 1260 0 210 1271 1267 1269 0 1271 410 1268 1267 0 1269 1267 1633 412 0 1267 1268 15 1633 0 211 1277 1274 1275 0 1277 414 1625 1274 0 1275 1274 1288 413 0 1274 1625 16 1288 0 215 1285 1279 1281 0 1285 415 1301 1279 0 1281 1279 1280 411 0 1279 1301 25 1280 0 213 1291 1287 1289 0 1291 413 1288 1287 0 1289 1287 1753 416 0 1287 1288 16 1753 0 214 1297 1294 1295 0 1297 418 1745 1294 0 1295 1294 1310 417 0 1294 1745 17 1310 0 218 1306 1299 1302 0 1306 327 1300 1299 0 1302 1299 1301 415 0 1299 1300 25 1301 0 216 1313 1309 1311 0 1313 417 1310 1309 0 1311 1309 1341 419 0 1309 1310 17 1341 0 217 1321 1316 1318 0 1321 420 1333 1316 0 1318 1316 1317 330 0 1316 1333 4 1317 0 221 1329 1323 1325 0 1329 421 1348 1323 0 1325 1323 1324 334 0 1323 1348 26 1324 0 219 1337 1331 1334 0 1337 337 1332 1331 0 1334 1331 1333 420 0 1331 1332 4 1333 0 220 1344 1340 1342 0 1344 419 1341 1340 0 1342 1340 1356 422 0 1340 1341 17 1356 0 224 1353 1347 1349 0 1353 423 1368 1347 0 1349 1347 1348 421 0 1347 1368 26 1348 0 222 1359 1355 1357 0 1359 422 1356 1355 0 1357 1355 1729 424 0 1355 1356 17 1729 0 223 1365 1362 1363 0 1365 426 1721 1362 0 1363 1362 1376 425 0 1362 1721 18 1376 0 227 1373 1367 1369 0 1373 427 1389 1367 0 1369 1367 1368 423 0 1367 1389 26 1368 0 225 1379 1375 1377 0 1379 425 1376 1375 0 1377 1375 1849 428 0 1375 1376 18 1849 0 226 1385 1382 1383 0 1385 430 1841 1382 0 1383 1382 1398 429 0 1382 1841 19 1398 0 230 1394 1387 1390 0 1394 333 1388 1387 0 1390 1387 1389 427 0 1387 1388 26 1389 0 228 1401 1397 1399 0 1401 429 1398 1397 0 1399 1397 1429 431 0 1397 1398 19 1429 0 229 1409 1404 1406 0 1409 432 1421 1404 0 1406 1404 1405 336 0 1404 1421 5 1405 0 233 1417 1411 1413 0 1417 433 1436 1411 0 1413 1411 1412 340 0 1411 1436 27 1412 0 231 1425 1419 1422 0 1425 342 1420 1419 0 1422 1419 1421 432 0 1419 1420 5 1421 0 232 1432 1428 1430 0 1432 431 1429 1428 0 1430 1428 1444 434 0 1428 1429 19 1444 0 236 1441 1435 1437 0 1441 435 1456 1435 0 1437 1435 1436 433 0 1435 1456 27 1436 0 234 1447 1443 1445 0 1447 434 1444 1443 0 1445 1443 1825 436 0 1443 1444 19 1825 0 235 1453 1450 1451 0 1453 438 1817 1450 0 1451 1450 1464 437 0 1450 1817 20 1464 0 239 1461 1455 1457 0 1461 439 1477 1455 0 1457 1455 1456 435 0 1455 1477 27 1456 0 237 1467 1463 1465 0 1467 437 1464 1463 0 1465 1463 1949 440 0 1463 1464 20 1949 0 238 1473 1470 1471 0 1473 442 1941 1470 0 1471 1470 1486 441 0 1470 1941 11 1486 0 242 1482 1475 1478 0 1482 339 1476 1475 0 1478 1475 1477 439 0 1475 1476 27 1477 0 240 1491 1485 1488 0 1491 441 1486 1485 0 1488 1485 1487 386 0 1485 1486 11 1487 0 241 1500 1494 1497 0 1500 384 1495 1494 0 1497 1494 1496 341 0 1494 1495 1 1496 0 245 1509 1503 1505 0 1509 443 1524 1503 0 1505 1503 1504 344 0 1503 1524 28 1504 0 243 1515 1511 1513 0 1515 347 1512 1511 0 1513 1511 1683 444 0 1511 1512 7 1683 0 244 1521 1518 1519 0 1521 446 1675 1518 0 1519 1518 1532 445 0 1518 1675 14 1532 0 248 1529 1523 1525 0 1529 447 1548 1523 0 1525 1523 1524 443 0 1523 1548 28 1524 0 246 1537 1531 1534 0 1537 445 1532 1531 0 1534 1531 1533 402 0 1531 1532 14 1533 0 247 1544 1540 1542 0 1544 400 1541 1540 0 1542 1540 1556 448 0 1540 1541 13 1556 0 251 1553 1547 1549 0 1553 449 1573 1547 0 1549 1547 1548 447 0 1547 1573 28 1548 0 249 1561 1555 1558 0 1561 448 1556 1555 0 1558 1555 1557 394 0 1555 1556 13 1557 0 250 1568 1564 1566 0 1568 392 1565 1564 0 1566 1564 1582 450 0 1564 1565 12 1582 0 254 1578 1571 1574 0 1578 343 1572 1571 0 1574 1571 1573 449 0 1571 1572 28 1573 0 252 1585 1581 1583 0 1585 450 1582 1581 0 1583 1581 1901 451 0 1581 1582 12 1901 0 253 1593 1588 1590 0 1593 452 1893 1588 0 1590 1588 1589 346 0 1588 1893 6 1589 0 257 1601 1595 1597 0 1601 453 1616 1595 0 1597 1595 1596 350 0 1595 1616 29 1596 0 255 1607 1603 1605 0 1607 353 1604 1603 0 1605 1603 1779 454 0 1603 1604 8 1779 0 256 1613 1610 1611 0 1613 456 1771 1610 0 1611 1610 1624 455 0 1610 1771 16 1624 0 260 1621 1615 1617 0 1621 457 1640 1615 0 1617 1615 1616 453 0 1615 1640 29 1616 0 258 1629 1623 1626 0 1629 455 1624 1623 0 1626 1623 1625 414 0 1623 1624 16 1625 0 259 1636 1632 1634 0 1636 412 1633 1632 0 1634 1632 1648 458 0 1632 1633 15 1648 0 263 1645 1639 1641 0 1645 459 1665 1639 0 1641 1639 1640 457 0 1639 1665 29 1640 0 261 1653 1647 1650 0 1653 458 1648 1647 0 1650 1647 1649 406 0 1647 1648 15 1649 0 262 1660 1656 1658 0 1660 404 1657 1656 0 1658 1656 1674 460 0 1656 1657 14 1674 0 266 1670 1663 1666 0 1670 349 1664 1663 0 1666 1663 1665 459 0 1663 1664 29 1665 0 264 1679 1673 1676 0 1679 460 1674 1673 0 1676 1673 1675 446 0 1673 1674 14 1675 0 265 1688 1682 1685 0 1688 444 1683 1682 0 1685 1682 1684 352 0 1682 1683 7 1684 0 269 1697 1691 1693 0 1697 461 1712 1691 0 1693 1691 1692 356 0 1691 1712 30 1692 0 267 1703 1699 1701 0 1703 359 1700 1699 0 1701 1699 1875 462 0 1699 1700 9 1875 0 268 1709 1706 1707 0 1709 464 1867 1706 0 1707 1706 1720 463 0 1706 1867 18 1720 0 272 1717 1711 1713 0 1717 465 1736 1711 0 1713 1711 1712 461 0 1711 1736 30 1712 0 270 1725 1719 1722 0 1725 463 1720 1719 0 1722 1719 1721 426 0 1719 1720 18 1721 0 271 1732 1728 1730 0 1732 424 1729 1728 0 1730 1728 1744 466 0 1728 1729 17 1744 0 275 1741 1735 1737 0 1741 467 1761 1735 0 1737 1735 1736 465 0 1735 1761 30 1736 0 273 1749 1743 1746 0 1749 466 1744 1743 0 1746 1743 1745 418 0 1743 1744 17 1745 0 274 1756 1752 1754 0 1756 416 1753 1752 0 1754 1752 1770 468 0 1752 1753 16 1770 0 278 1766 1759 1762 0 1766 355 1760 1759 0 1762 1759 1761 467 0 1759 1760 30 1761 0 276 1775 1769 1772 0 1775 468 1770 1769 0 1772 1769 1771 456 0 1769 1770 16 1771 0 277 1784 1778 1781 0 1784 454 1779 1778 0 1781 1778 1780 358 0 1778 1779 8 1780 0 281 1793 1787 1789 0 1793 469 1808 1787 0 1789 1787 1788 362 0 1787 1808 31 1788 0 279 1799 1795 1797 0 1799 365 1796 1795 0 1797 1795 1975 470 0 1795 1796 10 1975 0 280 1805 1802 1803 0 1805 472 1967 1802 0 1803 1802 1816 471 0 1802 1967 20 1816 0 284 1813 1807 1809 0 1813 473 1832 1807 0 1809 1807 1808 469 0 1807 1832 31 1808 0 282 1821 1815 1818 0 1821 471 1816 1815 0 1818 1815 1817 438 0 1815 1816 20 1817 0 283 1828 1824 1826 0 1828 436 1825 1824 0 1826 1824 1840 474 0 1824 1825 19 1840 0 287 1837 1831 1833 0 1837 475 1857 1831 0 1833 1831 1832 473 0 1831 1857 31 1832 0 285 1845 1839 1842 0 1845 474 1840 1839 0 1842 1839 1841 430 0 1839 1840 19 1841 0 286 1852 1848 1850 0 1852 428 1849 1848 0 1850 1848 1866 476 0 1848 1849 18 1866 0 290 1862 1855 1858 0 1862 361 1856 1855 0 1858 1855 1857 475 0 1855 1856 31 1857 0 288 1871 1865 1868 0 1871 476 1866 1865 0 1868 1865 1867 464 0 1865 1866 18 1867 0 289 1880 1874 1877 0 1880 462 1875 1874 0 1877 1874 1876 364 0 1874 1875 9 1876 0 293 1889 1883 1885 0 1889 477 1908 1883 0 1885 1883 1884 368 0 1883 1908 32 1884 0 291 1897 1891 1894 0 1897 370 1892 1891 0 1894 1891 1893 452 0 1891 1892 6 1893 0 292 1904 1900 1902 0 1904 451 1901 1900 0 1902 1900 1916 478 0 1900 1901 12 1916 0 296 1913 1907 1909 0 1913 479 1932 1907 0 1909 1907 1908 477 0 1907 1932 32 1908 0 294 1921 1915 1918 0 1921 478 1916 1915 0 1918 1915 1917 390 0 1915 1916 12 1917 0 295 1928 1924 1926 0 1928 388 1925 1924 0 1926 1924 1940 480 0 1924 1925 11 1940 0 299 1937 1931 1933 0 1937 481 1957 1931 0 1933 1931 1932 479 0 1931 1957 32 1932 0 297 1945 1939 1942 0 1945 480 1940 1939 0 1942 1939 1941 442 0 1939 1940 11 1941 0 298 1952 1948 1950 0 1952 440 1949 1948 0 1950 1948 1966 482 0 1948 1949 20 1966 0 302 1962 1955 1958 0 1962 367 1956 1955 0 1958 1955 1957 481 0 1955 1956 32 1957 0 300 1971 1965 1968 0 1971 482 1966 1965 0 1968 1965 1967 472 0 1965 1966 20 1967 0 301 1980 1974 1977 0 1980 470 1975 1974 0 1977 1974 1976 369 0 1974 1975 10 1976 0 124 484 671 678 0 484 123 670 671 0 678 671 778 34 0 671 670 305 778 0 124 676 668 485 0 676 35 866 668 0 485 668 667 125 0 668 866 304 667 0 127 487 687 694 0 487 126 686 687 0 694 687 862 37 0 687 686 311 862 0 127 692 684 488 0 692 38 966 684 0 488 684 683 128 0 684 966 310 683 0 130 490 703 710 0 490 129 702 703 0 710 703 886 40 0 703 702 317 886 0 130 708 700 491 0 708 41 1066 700 0 491 700 699 131 0 700 1066 316 699 0 133 493 719 726 0 493 132 718 719 0 726 719 910 43 0 719 718 323 910 0 133 724 716 494 0 724 44 1150 716 0 494 716 715 134 0 716 1150 322 715 0 136 496 735 742 0 496 135 734 735 0 742 735 934 46 0 735 734 329 934 0 136 740 732 497 0 740 47 1238 732 0 497 732 731 137 0 732 1238 328 731 0 139 499 751 758 0 499 138 750 751 0 758 751 962 49 0 751 750 335 962 0 139 756 748 500 0 756 50 1326 748 0 500 748 747 140 0 748 1326 334 747 0 141 769 777 502 0 769 34 778 777 0 502 777 776 142 0 777 778 305 776 0 142 775 764 503 0 775 52 1414 764 0 503 764 763 143 0 764 1414 340 763 0 145 505 787 794 0 505 144 786 787 0 794 787 1062 54 0 787 786 345 1062 0 145 792 784 506 0 792 55 1506 784 0 506 784 783 146 0 784 1506 344 783 0 148 508 803 810 0 508 147 802 803 0 810 803 1034 57 0 803 802 351 1034 0 148 808 800 509 0 808 58 1598 800 0 509 800 799 149 0 800 1598 350 799 0 151 511 819 826 0 511 150 818 819 0 826 819 1010 60 0 819 818 357 1010 0 151 824 816 512 0 824 61 1694 816 0 512 816 815 152 0 816 1694 356 815 0 154 514 835 842 0 514 153 834 835 0 842 835 986 63 0 835 834 363 986 0 154 840 832 515 0 840 64 1790 832 0 515 832 831 155 0 832 1790 362 831 0 156 853 861 517 0 853 37 862 861 0 517 861 860 157 0 861 862 311 860 0 157 859 848 518 0 859 66 1886 848 0 518 848 847 158 0 848 1886 368 847 0 159 876 885 520 0 876 40 886 885 0 520 885 884 160 0 885 886 317 884 0 160 883 870 521 0 883 67 890 870 0 521 870 869 161 0 870 890 371 869 0 162 900 909 523 0 900 43 910 909 0 523 909 908 163 0 909 910 323 908 0 163 907 894 524 0 907 68 914 894 0 524 894 893 164 0 894 914 373 893 0 165 924 933 526 0 924 46 934 933 0 526 933 932 166 0 933 934 329 932 0 166 931 918 527 0 931 69 939 918 0 527 918 917 167 0 918 939 375 917 0 168 950 961 529 0 950 49 962 961 0 529 961 960 169 0 961 962 335 960 0 169 959 943 530 0 959 33 944 943 0 530 943 942 170 0 943 944 303 942 0 171 976 985 532 0 976 63 986 985 0 532 985 984 172 0 985 986 363 984 0 172 983 970 533 0 983 70 990 970 0 533 970 969 173 0 970 990 377 969 0 174 1000 1009 535 0 1000 60 1010 1009 0 535 1009 1008 175 0 1009 1010 357 1008 0 175 1007 994 536 0 1007 71 1014 994 0 536 994 993 176 0 994 1014 379 993 0 177 1024 1033 538 0 1024 57 1034 1033 0 538 1033 1032 178 0 1033 1034 351 1032 0 178 1031 1018 539 0 1031 72 1039 1018 0 539 1018 1017 179 0 1018 1039 381 1017 0 180 1050 1061 541 0 1050 54 1062 1061 0 541 1061 1060 181 0 1061 1062 345 1060 0 181 1059 1043 542 0 1059 36 1044 1043 0 542 1043 1042 182 0 1043 1044 309 1042 0 184 544 1074 1082 0 544 183 1073 1074 0 1082 1074 1502 73 0 1074 1073 384 1502 0 184 1080 1070 545 0 1080 74 1086 1070 0 545 1070 1069 185 0 1070 1086 383 1069 0 187 547 1094 1102 0 547 186 1093 1094 0 1102 1094 1930 75 0 1094 1093 388 1930 0 187 1100 1090 548 0 1100 76 1106 1090 0 548 1090 1089 188 0 1090 1106 387 1089 0 190 550 1114 1122 0 550 189 1113 1114 0 1122 1114 1570 77 0 1114 1113 392 1570 0 190 1120 1110 551 0 1120 78 1127 1110 0 551 1110 1109 191 0 1110 1127 391 1109 0 193 553 1136 1146 0 553 192 1135 1136 0 1146 1136 1170 79 0 1136 1135 395 1170 0 193 1144 1131 554 0 1144 39 1132 1131 0 554 1131 1130 194 0 1131 1132 315 1130 0 195 1160 1169 556 0 1160 79 1170 1169 0 556 1169 1168 196 0 1169 1170 395 1168 0 196 1167 1154 557 0 1167 80 1174 1154 0 557 1154 1153 197 0 1154 1174 397 1153 0 199 559 1182 1190 0 559 198 1181 1182 0 1190 1182 1546 81 0 1182 1181 400 1546 0 199 1188 1178 560 0 1188 82 1194 1178 0 560 1178 1177 200 0 1178 1194 399 1177 0 202 562 1202 1210 0 562 201 1201 1202 0 1210 1202 1662 83 0 1202 1201 404 1662 0 202 1208 1198 563 0 1208 84 1215 1198 0 563 1198 1197 203 0 1198 1215 403 1197 0 205 565 1224 1234 0 565 204 1223 1224 0 1234 1224 1258 85 0 1224 1223 407 1258 0 205 1232 1219 566 0 1232 42 1220 1219 0 566 1219 1218 206 0 1219 1220 321 1218 0 207 1248 1257 568 0 1248 85 1258 1257 0 568 1257 1256 208 0 1257 1258 407 1256 0 208 1255 1242 569 0 1255 86 1262 1242 0 569 1242 1241 209 0 1242 1262 409 1241 0 211 571 1270 1278 0 571 210 1269 1270 0 1278 1270 1638 87 0 1270 1269 412 1638 0 211 1276 1266 572 0 1276 88 1282 1266 0 572 1266 1265 212 0 1266 1282 411 1265 0 214 574 1290 1298 0 574 213 1289 1290 0 1298 1290 1758 89 0 1290 1289 416 1758 0 214 1296 1286 575 0 1296 90 1303 1286 0 575 1286 1285 215 0 1286 1303 415 1285 0 217 577 1312 1322 0 577 216 1311 1312 0 1322 1312 1346 91 0 1312 1311 419 1346 0 217 1320 1307 578 0 1320 45 1308 1307 0 578 1307 1306 218 0 1307 1308 327 1306 0 219 1336 1345 580 0 1336 91 1346 1345 0 580 1345 1344 220 0 1345 1346 419 1344 0 220 1343 1330 581 0 1343 92 1350 1330 0 581 1330 1329 221 0 1330 1350 421 1329 0 223 583 1358 1366 0 583 222 1357 1358 0 1366 1358 1734 93 0 1358 1357 424 1734 0 223 1364 1354 584 0 1364 94 1370 1354 0 584 1354 1353 224 0 1354 1370 423 1353 0 226 586 1378 1386 0 586 225 1377 1378 0 1386 1378 1854 95 0 1378 1377 428 1854 0 226 1384 1374 587 0 1384 96 1391 1374 0 587 1374 1373 227 0 1374 1391 427 1373 0 229 589 1400 1410 0 589 228 1399 1400 0 1410 1400 1434 97 0 1400 1399 431 1434 0 229 1408 1395 590 0 1408 48 1396 1395 0 590 1395 1394 230 0 1395 1396 333 1394 0 231 1424 1433 592 0 1424 97 1434 1433 0 592 1433 1432 232 0 1433 1434 431 1432 0 232 1431 1418 593 0 1431 98 1438 1418 0 593 1418 1417 233 0 1418 1438 433 1417 0 235 595 1446 1454 0 595 234 1445 1446 0 1454 1446 1830 99 0 1446 1445 436 1830 0 235 1452 1442 596 0 1452 100 1458 1442 0 596 1442 1441 236 0 1442 1458 435 1441 0 238 598 1466 1474 0 598 237 1465 1466 0 1474 1466 1954 101 0 1466 1465 440 1954 0 238 1472 1462 599 0 1472 102 1479 1462 0 599 1462 1461 239 0 1462 1479 439 1461 0 240 1490 1501 601 0 1490 73 1502 1501 0 601 1501 1500 241 0 1501 1502 384 1500 0 241 1499 1483 602 0 1499 51 1484 1483 0 602 1483 1482 242 0 1483 1484 339 1482 0 244 604 1514 1522 0 604 243 1513 1514 0 1522 1514 1690 103 0 1514 1513 444 1690 0 244 1520 1510 605 0 1520 104 1526 1510 0 605 1510 1509 245 0 1510 1526 443 1509 0 246 1536 1545 607 0 1536 81 1546 1545 0 607 1545 1544 247 0 1545 1546 400 1544 0 247 1543 1530 608 0 1543 105 1550 1530 0 608 1530 1529 248 0 1530 1550 447 1529 0 249 1560 1569 610 0 1560 77 1570 1569 0 610 1569 1568 250 0 1569 1570 392 1568 0 250 1567 1554 611 0 1567 106 1575 1554 0 611 1554 1553 251 0 1554 1575 449 1553 0 253 613 1584 1594 0 613 252 1583 1584 0 1594 1584 1906 107 0 1584 1583 451 1906 0 253 1592 1579 614 0 1592 53 1580 1579 0 614 1579 1578 254 0 1579 1580 343 1578 0 256 616 1606 1614 0 616 255 1605 1606 0 1614 1606 1786 108 0 1606 1605 454 1786 0 256 1612 1602 617 0 1612 109 1618 1602 0 617 1602 1601 257 0 1602 1618 453 1601 0 258 1628 1637 619 0 1628 87 1638 1637 0 619 1637 1636 259 0 1637 1638 412 1636 0 259 1635 1622 620 0 1635 110 1642 1622 0 620 1622 1621 260 0 1622 1642 457 1621 0 261 1652 1661 622 0 1652 83 1662 1661 0 622 1661 1660 262 0 1661 1662 404 1660 0 262 1659 1646 623 0 1659 111 1667 1646 0 623 1646 1645 263 0 1646 1667 459 1645 0 264 1678 1689 625 0 1678 103 1690 1689 0 625 1689 1688 265 0 1689 1690 444 1688 0 265 1687 1671 626 0 1687 56 1672 1671 0 626 1671 1670 266 0 1671 1672 349 1670 0 268 628 1702 1710 0 628 267 1701 1702 0 1710 1702 1882 112 0 1702 1701 462 1882 0 268 1708 1698 629 0 1708 113 1714 1698 0 629 1698 1697 269 0 1698 1714 461 1697 0 270 1724 1733 631 0 1724 93 1734 1733 0 631 1733 1732 271 0 1733 1734 424 1732 0 271 1731 1718 632 0 1731 114 1738 1718 0 632 1718 1717 272 0 1718 1738 465 1717 0 273 1748 1757 634 0 1748 89 1758 1757 0 634 1757 1756 274 0 1757 1758 416 1756 0 274 1755 1742 635 0 1755 115 1763 1742 0 635 1742 1741 275 0 1742 1763 467 1741 0 276 1774 1785 637 0 1774 108 1786 1785 0 637 1785 1784 277 0 1785 1786 454 1784 0 277 1783 1767 638 0 1783 59 1768 1767 0 638 1767 1766 278 0 1767 1768 355 1766 0 280 640 1798 1806 0 640 279 1797 1798 0 1806 1798 1982 116 0 1798 1797 470 1982 0 280 1804 1794 641 0 1804 117 1810 1794 0 641 1794 1793 281 0 1794 1810 469 1793 0 282 1820 1829 643 0 1820 99 1830 1829 0 643 1829 1828 283 0 1829 1830 436 1828 0 283 1827 1814 644 0 1827 118 1834 1814 0 644 1814 1813 284 0 1814 1834 473 1813 0 285 1844 1853 646 0 1844 95 1854 1853 0 646 1853 1852 286 0 1853 1854 428 1852 0 286 1851 1838 647 0 1851 119 1859 1838 0 647 1838 1837 287 0 1838 1859 475 1837 0 288 1870 1881 649 0 1870 112 1882 1881 0 649 1881 1880 289 0 1881 1882 462 1880 0 289 1879 1863 650 0 1879 62 1864 1863 0 650 1863 1862 290 0 1863 1864 361 1862 0 291 1896 1905 652 0 1896 107 1906 1905 0 652 1905 1904 292 0 1905 1906 451 1904 0 292 1903 1890 653 0 1903 120 1910 1890 0 653 1890 1889 293 0 1890 1910 477 1889 0 294 1920 1929 655 0 1920 75 1930 1929 0 655 1929 1928 295 0 1929 1930 388 1928 0 295 1927 1914 656 0 1927 121 1934 1914 0 656 1914 1913 296 0 1914 1934 479 1913 0 297 1944 1953 658 0 1944 101 1954 1953 0 658 1953 1952 298 0 1953 1954 440 1952 0 298 1951 1938 659 0 1951 122 1959 1938 0 659 1938 1937 299 0 1938 1959 481 1937 0 300 1970 1981 661 0 1970 116 1982 1981 0 661 1981 1980 301 0 1981 1982 470 1980 0 301 1979 1963 662 0 1979 65 1964 1963 0 662 1963 1962 302 0 1963 1964 367 1962 0 33 665 666 944 0 665 125 664 666 0 944 666 664 303 0 123 673 958 672 0 673 33 959 958 0 672 958 957 306 0 958 959 169 957 0 124 675 879 676 0 675 307 877 879 0 676 879 878 35 0 879 877 159 878 0 124 678 768 677 0 678 34 769 768 0 677 768 767 308 0 768 769 141 767 0 36 681 682 1044 0 681 128 680 682 0 1044 682 680 309 0 126 689 1058 688 0 689 36 1059 1058 0 688 1058 1057 312 0 1058 1059 181 1057 0 127 691 979 692 0 691 313 977 979 0 692 979 978 38 0 979 977 171 978 0 127 694 852 693 0 694 37 853 852 0 693 852 851 314 0 852 853 156 851 0 39 697 698 1132 0 697 131 696 698 0 1132 698 696 315 0 129 705 1143 704 0 705 39 1144 1143 0 704 1143 1142 318 0 1143 1144 193 1142 0 130 707 1077 708 0 707 319 1075 1077 0 708 1077 1076 41 0 1077 1075 183 1076 0 130 710 875 709 0 710 40 876 875 0 709 875 874 320 0 875 876 159 874 0 42 713 714 1220 0 713 134 712 714 0 1220 714 712 321 0 132 721 1231 720 0 721 42 1232 1231 0 720 1231 1230 324 0 1231 1232 205 1230 0 133 723 1163 724 0 723 325 1161 1163 0 724 1163 1162 44 0 1163 1161 195 1162 0 133 726 899 725 0 726 43 900 899 0 725 899 898 326 0 899 900 162 898 0 45 729 730 1308 0 729 137 728 730 0 1308 730 728 327 0 135 737 1319 736 0 737 45 1320 1319 0 736 1319 1318 330 0 1319 1320 217 1318 0 136 739 1251 740 0 739 331 1249 1251 0 740 1251 1250 47 0 1251 1249 207 1250 0 136 742 923 741 0 742 46 924 923 0 741 923 922 332 0 923 924 165 922 0 48 745 746 1396 0 745 140 744 746 0 1396 746 744 333 0 138 753 1407 752 0 753 48 1408 1407 0 752 1407 1406 336 0 1407 1408 229 1406 0 139 755 1339 756 0 755 337 1337 1339 0 756 1339 1338 50 0 1339 1337 219 1338 0 139 758 949 757 0 758 49 950 949 0 757 949 948 338 0 949 950 168 948 0 51 761 762 1484 0 761 143 760 762 0 1484 762 760 339 0 141 771 1498 770 0 771 51 1499 1498 0 770 1498 1497 341 0 1498 1499 241 1497 0 142 774 1427 775 0 774 342 1425 1427 0 775 1427 1426 52 0 1427 1425 231 1426 0 53 781 782 1580 0 781 146 780 782 0 1580 782 780 343 0 144 789 1591 788 0 789 53 1592 1591 0 788 1591 1590 346 0 1591 1592 253 1590 0 145 791 1517 792 0 791 347 1515 1517 0 792 1517 1516 55 0 1517 1515 243 1516 0 145 794 1049 793 0 794 54 1050 1049 0 793 1049 1048 348 0 1049 1050 180 1048 0 56 797 798 1672 0 797 149 796 798 0 1672 798 796 349 0 147 805 1686 804 0 805 56 1687 1686 0 804 1686 1685 352 0 1686 1687 265 1685 0 148 807 1609 808 0 807 353 1607 1609 0 808 1609 1608 58 0 1609 1607 255 1608 0 148 810 1023 809 0 810 57 1024 1023 0 809 1023 1022 354 0 1023 1024 177 1022 0 59 813 814 1768 0 813 152 812 814 0 1768 814 812 355 0 150 821 1782 820 0 821 59 1783 1782 0 820 1782 1781 358 0 1782 1783 277 1781 0 151 823 1705 824 0 823 359 1703 1705 0 824 1705 1704 61 0 1705 1703 267 1704 0 151 826 999 825 0 826 60 1000 999 0 825 999 998 360 0 999 1000 174 998 0 62 829 830 1864 0 829 155 828 830 0 1864 830 828 361 0 153 837 1878 836 0 837 62 1879 1878 0 836 1878 1877 364 0 1878 1879 289 1877 0 154 839 1801 840 0 839 365 1799 1801 0 840 1801 1800 64 0 1801 1799 279 1800 0 154 842 975 841 0 842 63 976 975 0 841 975 974 366 0 975 976 171 974 0 65 845 846 1964 0 845 158 844 846 0 1964 846 844 367 0 156 855 1978 854 0 855 65 1979 1978 0 854 1978 1977 369 0 1978 1979 301 1977 0 157 858 1899 859 0 858 370 1897 1899 0 859 1899 1898 66 0 1899 1897 291 1898 0 35 867 868 866 0 867 161 865 868 0 866 868 865 304 0 160 882 903 883 0 882 372 901 903 0 883 903 902 67 0 903 901 162 902 0 67 891 892 890 0 891 164 889 892 0 890 892 889 371 0 163 906 927 907 0 906 374 925 927 0 907 927 926 68 0 927 925 165 926 0 68 915 916 914 0 915 167 913 916 0 914 916 913 373 0 166 930 953 931 0 930 376 951 953 0 931 953 952 69 0 953 951 168 952 0 69 940 941 939 0 940 170 938 941 0 939 941 938 375 0 38 967 968 966 0 967 173 965 968 0 966 968 965 310 0 172 982 1003 983 0 982 378 1001 1003 0 983 1003 1002 70 0 1003 1001 174 1002 0 70 991 992 990 0 991 176 989 992 0 990 992 989 377 0 175 1006 1027 1007 0 1006 380 1025 1027 0 1007 1027 1026 71 0 1027 1025 177 1026 0 71 1015 1016 1014 0 1015 179 1013 1016 0 1014 1016 1013 379 0 178 1030 1053 1031 0 1030 382 1051 1053 0 1031 1053 1052 72 0 1053 1051 180 1052 0 72 1040 1041 1039 0 1040 182 1038 1041 0 1039 1041 1038 381 0 41 1067 1068 1066 0 1067 185 1065 1068 0 1066 1068 1065 316 0 184 1079 1097 1080 0 1079 385 1095 1097 0 1080 1097 1096 74 0 1097 1095 186 1096 0 184 1082 1489 1081 0 1082 73 1490 1489 0 1081 1489 1488 386 0 1489 1490 240 1488 0 74 1087 1088 1086 0 1087 188 1085 1088 0 1086 1088 1085 383 0 187 1099 1117 1100 0 1099 389 1115 1117 0 1100 1117 1116 76 0 1117 1115 189 1116 0 187 1102 1919 1101 0 1102 75 1920 1919 0 1101 1919 1918 390 0 1919 1920 294 1918 0 76 1107 1108 1106 0 1107 191 1105 1108 0 1106 1108 1105 387 0 190 1119 1139 1120 0 1119 393 1137 1139 0 1120 1139 1138 78 0 1139 1137 192 1138 0 190 1122 1559 1121 0 1122 77 1560 1559 0 1121 1559 1558 394 0 1559 1560 249 1558 0 78 1128 1129 1127 0 1128 194 1126 1129 0 1127 1129 1126 391 0 193 1146 1159 1145 0 1146 79 1160 1159 0 1145 1159 1158 396 0 1159 1160 195 1158 0 44 1151 1152 1150 0 1151 197 1149 1152 0 1150 1152 1149 322 0 196 1166 1185 1167 0 1166 398 1183 1185 0 1167 1185 1184 80 0 1185 1183 198 1184 0 80 1175 1176 1174 0 1175 200 1173 1176 0 1174 1176 1173 397 0 199 1187 1205 1188 0 1187 401 1203 1205 0 1188 1205 1204 82 0 1205 1203 201 1204 0 199 1190 1535 1189 0 1190 81 1536 1535 0 1189 1535 1534 402 0 1535 1536 246 1534 0 82 1195 1196 1194 0 1195 203 1193 1196 0 1194 1196 1193 399 0 202 1207 1227 1208 0 1207 405 1225 1227 0 1208 1227 1226 84 0 1227 1225 204 1226 0 202 1210 1651 1209 0 1210 83 1652 1651 0 1209 1651 1650 406 0 1651 1652 261 1650 0 84 1216 1217 1215 0 1216 206 1214 1217 0 1215 1217 1214 403 0 205 1234 1247 1233 0 1234 85 1248 1247 0 1233 1247 1246 408 0 1247 1248 207 1246 0 47 1239 1240 1238 0 1239 209 1237 1240 0 1238 1240 1237 328 0 208 1254 1273 1255 0 1254 410 1271 1273 0 1255 1273 1272 86 0 1273 1271 210 1272 0 86 1263 1264 1262 0 1263 212 1261 1264 0 1262 1264 1261 409 0 211 1275 1293 1276 0 1275 413 1291 1293 0 1276 1293 1292 88 0 1293 1291 213 1292 0 211 1278 1627 1277 0 1278 87 1628 1627 0 1277 1627 1626 414 0 1627 1628 258 1626 0 88 1283 1284 1282 0 1283 215 1281 1284 0 1282 1284 1281 411 0 214 1295 1315 1296 0 1295 417 1313 1315 0 1296 1315 1314 90 0 1315 1313 216 1314 0 214 1298 1747 1297 0 1298 89 1748 1747 0 1297 1747 1746 418 0 1747 1748 273 1746 0 90 1304 1305 1303 0 1304 218 1302 1305 0 1303 1305 1302 415 0 217 1322 1335 1321 0 1322 91 1336 1335 0 1321 1335 1334 420 0 1335 1336 219 1334 0 50 1327 1328 1326 0 1327 221 1325 1328 0 1326 1328 1325 334 0 220 1342 1361 1343 0 1342 422 1359 1361 0 1343 1361 1360 92 0 1361 1359 222 1360 0 92 1351 1352 1350 0 1351 224 1349 1352 0 1350 1352 1349 421 0 223 1363 1381 1364 0 1363 425 1379 1381 0 1364 1381 1380 94 0 1381 1379 225 1380 0 223 1366 1723 1365 0 1366 93 1724 1723 0 1365 1723 1722 426 0 1723 1724 270 1722 0 94 1371 1372 1370 0 1371 227 1369 1372 0 1370 1372 1369 423 0 226 1383 1403 1384 0 1383 429 1401 1403 0 1384 1403 1402 96 0 1403 1401 228 1402 0 226 1386 1843 1385 0 1386 95 1844 1843 0 1385 1843 1842 430 0 1843 1844 285 1842 0 96 1392 1393 1391 0 1392 230 1390 1393 0 1391 1393 1390 427 0 229 1410 1423 1409 0 1410 97 1424 1423 0 1409 1423 1422 432 0 1423 1424 231 1422 0 52 1415 1416 1414 0 1415 233 1413 1416 0 1414 1416 1413 340 0 232 1430 1449 1431 0 1430 434 1447 1449 0 1431 1449 1448 98 0 1449 1447 234 1448 0 98 1439 1440 1438 0 1439 236 1437 1440 0 1438 1440 1437 433 0 235 1451 1469 1452 0 1451 437 1467 1469 0 1452 1469 1468 100 0 1469 1467 237 1468 0 235 1454 1819 1453 0 1454 99 1820 1819 0 1453 1819 1818 438 0 1819 1820 282 1818 0 100 1459 1460 1458 0 1459 239 1457 1460 0 1458 1460 1457 435 0 238 1471 1493 1472 0 1471 441 1491 1493 0 1472 1493 1492 102 0 1493 1491 240 1492 0 238 1474 1943 1473 0 1474 101 1944 1943 0 1473 1943 1942 442 0 1943 1944 297 1942 0 102 1480 1481 1479 0 1480 242 1478 1481 0 1479 1481 1478 439 0 55 1507 1508 1506 0 1507 245 1505 1508 0 1506 1508 1505 344 0 244 1519 1539 1520 0 1519 445 1537 1539 0 1520 1539 1538 104 0 1539 1537 246 1538 0 244 1522 1677 1521 0 1522 103 1678 1677 0 1521 1677 1676 446 0 1677 1678 264 1676 0 104 1527 1528 1526 0 1527 248 1525 1528 0 1526 1528 1525 443 0 247 1542 1563 1543 0 1542 448 1561 1563 0 1543 1563 1562 105 0 1563 1561 249 1562 0 105 1551 1552 1550 0 1551 251 1549 1552 0 1550 1552 1549 447 0 250 1566 1587 1567 0 1566 450 1585 1587 0 1567 1587 1586 106 0 1587 1585 252 1586 0 106 1576 1577 1575 0 1576 254 1574 1577 0 1575 1577 1574 449 0 253 1594 1895 1593 0 1594 107 1896 1895 0 1593 1895 1894 452 0 1895 1896 291 1894 0 58 1599 1600 1598 0 1599 257 1597 1600 0 1598 1600 1597 350 0 256 1611 1631 1612 0 1611 455 1629 1631 0 1612 1631 1630 109 0 1631 1629 258 1630 0 256 1614 1773 1613 0 1614 108 1774 1773 0 1613 1773 1772 456 0 1773 1774 276 1772 0 109 1619 1620 1618 0 1619 260 1617 1620 0 1618 1620 1617 453 0 259 1634 1655 1635 0 1634 458 1653 1655 0 1635 1655 1654 110 0 1655 1653 261 1654 0 110 1643 1644 1642 0 1643 263 1641 1644 0 1642 1644 1641 457 0 262 1658 1681 1659 0 1658 460 1679 1681 0 1659 1681 1680 111 0 1681 1679 264 1680 0 111 1668 1669 1667 0 1668 266 1666 1669 0 1667 1669 1666 459 0 61 1695 1696 1694 0 1695 269 1693 1696 0 1694 1696 1693 356 0 268 1707 1727 1708 0 1707 463 1725 1727 0 1708 1727 1726 113 0 1727 1725 270 1726 0 268 1710 1869 1709 0 1710 112 1870 1869 0 1709 1869 1868 464 0 1869 1870 288 1868 0 113 1715 1716 1714 0 1715 272 1713 1716 0 1714 1716 1713 461 0 271 1730 1751 1731 0 1730 466 1749 1751 0 1731 1751 1750 114 0 1751 1749 273 1750 0 114 1739 1740 1738 0 1739 275 1737 1740 0 1738 1740 1737 465 0 274 1754 1777 1755 0 1754 468 1775 1777 0 1755 1777 1776 115 0 1777 1775 276 1776 0 115 1764 1765 1763 0 1764 278 1762 1765 0 1763 1765 1762 467 0 64 1791 1792 1790 0 1791 281 1789 1792 0 1790 1792 1789 362 0 280 1803 1823 1804 0 1803 471 1821 1823 0 1804 1823 1822 117 0 1823 1821 282 1822 0 280 1806 1969 1805 0 1806 116 1970 1969 0 1805 1969 1968 472 0 1969 1970 300 1968 0 117 1811 1812 1810 0 1811 284 1809 1812 0 1810 1812 1809 469 0 283 1826 1847 1827 0 1826 474 1845 1847 0 1827 1847 1846 118 0 1847 1845 285 1846 0 118 1835 1836 1834 0 1835 287 1833 1836 0 1834 1836 1833 473 0 286 1850 1873 1851 0 1850 476 1871 1873 0 1851 1873 1872 119 0 1873 1871 288 1872 0 119 1860 1861 1859 0 1860 290 1858 1861 0 1859 1861 1858 475 0 66 1887 1888 1886 0 1887 293 1885 1888 0 1886 1888 1885 368 0 292 1902 1923 1903 0 1902 478 1921 1923 0 1903 1923 1922 120 0 1923 1921 294 1922 0 120 1911 1912 1910 0 1911 296 1909 1912 0 1910 1912 1909 477 0 295 1926 1947 1927 0 1926 480 1945 1947 0 1927 1947 1946 121 0 1947 1945 297 1946 0 121 1935 1936 1934 0 1935 299 1933 1936 0 1934 1936 1933 479 0 298 1950 1973 1951 0 1950 482 1971 1973 0 1951 1973 1972 122 0 1973 1971 300 1972 0 122 1960 1961 1959 0 1960 302 1958 1961 0 1959 1961 1958 481 0 End libMeshb-7.80/sample_meshes/quad.meshb000066400000000000000000002716541456732543400200300ustar00rootroot00000000000000mmy?&'d?*pf?rOWw,ǿ9Zv?BѪt?=#d|Na?BѪt?09ȿ5kYİØt?P? /ֿj{?c#?nb~nh?j{]߿kC?RE*kiƢd߿%s,ֿRE*kJY8?W'g(xRE*kʼnv?4=*pf/KRb?7?m5?AnC<;ۤ?ϤM=ѿ5?*t^cܿ!CV1 >ܿB[Υѿf6뿛 >ܿ'?L࿛ >ܿ;$?+? "R.ܿ8n?;J"ÿɍ"k?D?r?IB=?~!<8? ?͋?9`W? ƈDe?ɍ"kMX?&5؀?IB=v?c͋P?(&o?N?q= ףp?IbI?KK1?Jvl?q ?A C? HwD? o?;.ۿZ ?,B4?+=)߿LLb?y!?[7qCDR o??Noۿ[ ӿ,B4? !p$PR] ҿy!?d?ɮˡE?7 C?&|{24?dn?s۾Gy!?՝?ǃ-v?q?]6:8?̰Qɿ{?Д~P0_^?'-\VaſG'?\4 34ڿ:3P?t{Ic@j.q"?W[q>Hr>?4#ظ]迾.ɿG1HLP÷׿H¾DWԲHĿRDU࿒>?4#x ƻ#G1-R?W@KWx?5>ӿ3g}1N:7?@a+ҿ3l:?LuT5?/- 'i??XƆnv?ٯ;yٱ)Xl:?ikD0?fR@ҿzi/G4{>?H?Cm~ҿ R)v4?Bc I?m~ҿu+.!w(пd:tz¿d"<^b,˿Z(?u+.?h ?x'۲?y7RH?K\Ǹ?Mu?1(hr?W'g(?,+MJAWGI?h;J?i?YBtxk?0{dƧ N_,?{mmпdb_ѭ?@?!1Pt&m?E =r?k￷h\W%1?RHڍz0H?iƢ?яtxk?‡?ٲ|]N_,? h"?v߿%Y?,?jUZѿWm?=z?B|`ӿh\W*4?bmVc?0' ?4 f?&ǝ?ƥdk?eÚʢ0?ƄK?JY8?Yb[>?n;n@L!?T~OSԿETѿu{m?|b*߳?iVy׿T?v=?4濾࿸n;fh<zG3C6? ?p!ۿd 1?x'-\V?Lo.2Կqn?Kd?Oc*Ϳ"dT??HPĿSC9ѮB?GӿSt$D$]?!T2]gC&]kL>Lۿtpx˿?74eԿT:E-Ϳ< ڿ37߈YRb׿K?a?kyqοLZ8'_Ϳ<2TT?p-e _?}n}?"dT9w?LT?"lxz,?6[ ?]¡xx?AF?h;?G ? *~s?3p?z}֤?[Ӟs9̗?#&?ϟ6Ӂ濳|\?Lw&+?K@k?[ Ac?҇.R+Lk?EVȪ?/A~6rݔ?Bp-??/E>?֥F?eډ??tA}˜?e2P鿃L2r?f? /)꿫%?? /=bBWT?Do~T~Oƿi:;%?Uthc翫%EVȪ?ˑ-|wBp-?mXSYv濚eI֥F?'kC4ڿ3ތ?tA}˜?uؿo^濴f?_|Ὺ忍?5磌MjhIط?#0ܻ0*i:;%?1aM٨? 0s6^?NJ)}C]#&?$_ Į?ӜȄLw&+?\?|˙m[ Ac?|y?z9EVȪ?5s{?֐҇Bp-?t["?eS֥F?EEN?D|,{؜?oŏ?l衶+]gC?Ժ j?6` j?ފĄ?W׿.5#?QGH?Yb+hؿBv$?Pmp?x&1̿&^?^Gt?enݳտ#&?#?= ףp=Ŀ'+?CTf?aÿsbc?}R?NCT?V#˪?\='o?+d?IC3?FA?`H?ēG?Ab{n?m6Vb?Y?!Z+g?|\?^??\&?7{5?3>?#GG,By俬G|?.<ܿ3g}ݿ Ƿw ?(&2sk]hSۂ?q&"ĿǁWۿHz?o(!ܺ:ۿaX5s?yCnѿqÿ5"?eʦ.z#IQ(IS?>$ʿHSȕzƿw*g?CVzNzпnHJz?FA?҇.ٿ2#?$A?Md 5s,am?ʉv߿'9x濝Y.տ#GG,-AGٿC<ܿ[n+̿(&2s bk_B</Oտq&"Ŀhv[&pno(! pUjOv3ÿyCnѿ+ᅦm2d?I̦ %H?H6WsDʿ2W!3?7j{пh9Cm鿣>6?mV}bۿ2˞6gIC3?ysV{X]N꿍ҥI*?w$$6߿? |#GG,/?$]3fC<ܿ~x%g(&2s;3f;?_|xᅨq&"ĿZmǿ̰Qo(!#)ahÿqrgyCnѿnK3ݿ7wpI̦pΈ`⿬q6\H6WsDʿ(ڿҧU뿬7j{пv_.'HmV}bۿ9'0ȚA"ysV{Xl޿6sHjdw$$6߿=ug?;Tގ¿h,)#.R?ᔹ¿;P<ܿwř?ӿ??4s!S>U?/[<ѿq&"Ŀ2?w~޿o(!j?V{ ܿyCnѿBt?I̦+`p?pwnPH6WsDʿɊj?0DK忬7j{п}[T?]pmV}bۿ$$6?T~ysV{X 翇?Jo w$$6߿0 Ƿ?2Mc{?((E+Wv;?/^|Q?;QiۿCͩd?h.K?mē]#?(@?+5{Ŀyߢ%?>?y÷mQf?%Ί?zflѿ߆?XB(? ?ۂ7t?*@8 m?Fdrjg?u?JGWfO7P?a4?i_5o?[ʿeZPVjܛ0?hwH1@?jIG6W?'?}w+Kt?qN`:?G?l_@/9?z)??a4? h"l??!ȱbA ?ip[[?6+1?_LJ?ǻ#cy?uR_v?]mO?Wt5?r/翕Tt)? 5?b!*.?ne?PMIa忯;3p?*WY[?\mտx[?76;R}g?ӿ-x>?:U?&R?o*k-B;'⿰Tka? U3Yٿ 5?IpտWUڿne?;s տ Y9⿨ip[[?0S80C¿76;R}g?A%cyÿ:U?5?tF^3c?'??w 5?g?C׼ܿmRX?I-?ҨI࿎~31]?}t76;R}g?m2OSpT7SW?(,?uBY?F|'f?ŋ!?bg ع(/?J= B?9\=?H`w?YF?jMѿmT?>Vÿ6T?`C|S:ֿ>z}?'9-W|V>(8'0?a1ZR^Hӱ?n?~31]Sgܿz̔? cZB`q8+)?}V%]3f+Nf̲'9ལƄ!sePmp?oK3 k* =C8fٓ?#EdX0ԛQUѿPny Ƿw`Ùǿz0)>Qv0bֿE&}VijĿ^a̲'9*lӿ6ϷܿoK31{vݿTX#EdX4 ;?QcB̥Pny*-ď?_zsѐz0)>+C3O.?H+ }V?.ٿ92go?W<ڿ0&du? 8@#EdX|b:?=)¿DJyp#e?ȷw ÿWt5J(?36t?P?ȱ T=?bod?je/Uka9?J?^?w}O9&?l?k T OCBUfJo?Gq?am¿( 5 ?`a?$' bƿ ӹ&ʹg?ϟ6Ӂ?ݿ Bp`a?yW⦫ିWt5ſR?}%"1ܿia?1'h'?ht3ſGqL3?MJA4ܿu9% &ar JGW麿ϟ6Ӂйؿ, &(ѿu9% &af,N¿ΤMչ?RB׿_?u9% &avi?mV?w*2:?$?:M ?c%YI?FHACÿUĿ#N'r?+?%:ҿƉv?%s|?oHͿ]?X?7-:俁>'IW?&L1A??0`ۿYw?vkF?YOT9)9'?^6S!?pxADj޿E??Wm?̔?-SxClp濃߆y?N(y<$>?H`? Y]?Nݦ&|Va3?[?熦t`?r z+?QZ.IW%s|?0q;"]?X?= ~oӟHٿ&L1A?UrQ¿vkF?L4iSu^6S!?Uo4(ȿ?s[잼⿚-Sxx[Y<_E ݿN(y7-:YG8-xWH`?h=|(K8UNݦۿw( 뿕[?,ܿΩdb쿯r z+?,d ҿ^k뿉%s|?~jtͿJ zy濋X?h'?\ '&L1A?kÿljvkF?镲?A ;^6S!?9#J{lɪᅭ?臭?SYvQt-SxP293?fOs ̄N(y&S?H`?ZI+?_Nݦt%?۠[忕[?V~?濯r z+?(G`?#*T7.Uik|?$?vLۿd:tzލ?hY?%ſvN@?سg?=B͐*ܿvkF?-\n?a)r^6S!?9~4b?2 nۿ?MDu?٭L{e.@2xhx?dÿN(y!?öE 2?P3?qQ?e6\?k=]?QZ? ܺ:?>V[?k i?7yۖ?є~Pܿ@g? nk Kٿ6$#g㿃k?Df?IӠhNE׿NGҿsg&55 ,ҿm\pԿ-ͭVcX? Xܿ!Y *~ؿK7A忛&ܫ忚n/iѿZHs?ʠDٿ;V)=Kٿil?Q`?+qo~?8k¿Tzп.5#?RZJY08M{v׿x]?d5 ,ҿ^?J?X?U?3KT *~ؿb*?zi뿚n/iѿCus=?'*T?'֩=ٿ =b?˻?:6UпG,?xz,C?;u+ҿ%A ?ADjŴ?Ԋ%a?S\U]?elf?wGjؿިo?-R?|@3iѿ?CD{&s|4?3&c`?dsU?&s|4n?no?YOD?Ȗ2?Wy2: v?6?bN&?iSul?p^}uRz?{5Z?׻?οbd?u6?T^-wԿti?c_?b0п&5؀?'?DҿF0}ÿu6?CoԿqW"Ϳ Xr_?cB%U˿㪲ɿ R)v4?qGRì?4bfԿz6?sо?`80ؿ?̔_?^)ʥ?.Hѿ>x?,'?N6ÿ*w75yj?m77MͿ/J_>%?ɿcg^؋Ȭ{L4Կu6Hm便?N0ؿ#LQ._"T2?ѿ)?̔Կiw6I{dٿ`#LQ._)ϼvҿ%A? F6\T¿l??w6B:<du?/J_:qޤI,|}?>xK?v4?s?W}W?ORB0?Ye?/?4*p ?qW"?,`p͝?%!q?Jvl?J y?Vh?^-wf?>v()?y?$}?/r.?b!)?#gaO;??XƆn?x?,\?uV 1?[X ?.Ȗ2?8欿vR~R?T?L{)߿ `5!?\M 4?^VL?(?*3㿁#?OrMd?@,9$)[$F?r75|?):+)T?#gaO;?-'y3?,\?=z}Kwِ?.Ȗ2?`<~#k "?T?ɐ+=)?.&?I]?V?Oo+5l/̿q5?%P6}¿X8IǴ?\꿩 п\M 4??ܵŦB׿(?hjhwH1ֿOrMd? a@mTYܿr75|?_)^#gaO;?"rlHV翥,\?7N6(.Ȗ2?A_޿[z4ՓT?62;ٿ0Z .&?`~޿jIG濣V?Wx:"ߥԥq5?E)!XU/?&MX8IǴ?K3Ǟ=\M 4?[԰?<\)(?8z%4?|x ←OrMd?l#fF?B5v r75|?>@?ۼqR#gaO;?¿3?ض(A뿥,\?(ϼ?gED.Ȗ2?:8?w|o\?}"O?Fu:㿚]V$&? o?忇M?|??JRҿKi?&|?ؿV|C?I/j?lҿ5\?9{gUI?膦ο(?\߇?DԷпOrMd?^-?AĿr75|?ʆ5E?uR_?ݑ?o+6+?.?Ӹ7a? ̊?W^??;TSu8?#0709?&P?<;?wۅ:?B"LQ.?$pt?J?!>@?ƒf=?o ^?,J z2QC0?F ^ׯlY.]jJ?!Ky ߿LLb.2?Am˿vT?'߿72ۿXU?kȿÿ[a/0?D-ͭĿ䤋93Lm?_(QGٳ25 v|?iO9Ϳ>P?*SAQ?CԳ ݿS*g?P5?F(߿Ԭ? uX?DI=jҿ,J .ED1PW\׿F ^ׯ?I꿙; ӿ!Ky ߿Y0GQgsbcͿAm˿y7ο'߿G ¿kȿuݑ1(ȯ?Жs)ĿLL+z? 3mJA ºq{mm?ͿʧǶ 8%??2:=޿Vn2迳En1?g$A鿔K^I?ß<#?pq,J CB?ȔAhF ^ׯ֫#?p!Ky ߿1ENBx|{נ/Am˿~/ϔ PR'߿ĿNkȿܿWMa%쿑Жs)Ŀ5Ea࿜N 3mJ:̗`߿EnͿQg!fᔹ?2:=޿jJ>v) 㿀g(ϼ% &Bß<JZ ?ȚA"̿d=KbB?Cl¿ط}9?aο|` ߿Hjdr?I}Y׿Am˿ (G`?/ؿ'߿QKs+?^-ݿkȿE&W?GQ濑Жs)Ŀ6?S% 3mJT~O?6!Ϳx!?YdPmp"?x`C?[n﫿u"T3k?ӀA?tOpVg)YN?([Z?O0&?kP? d,?'_?EB[?T÷?jdW?[ H`?۽'GͿ$ ?̳V|C?g %¿0\?g|_\?fCC?C}?4*p˿bٽ???oDIH¿ K??Shi?pH?Mp]1?kg{t?3?O?P?l?$z?]z?%?Qy9? ~bɑ?c[?Q?LK1?A ;?[ ?;TSu8?d?wGoq_?rCQ?$̉?c w?PC?'rJ@?B?F6?64D?B\9{g4?ɐ?稣jd?LQ??&*Q? ?-\?a?j ?; >?;r30r志? ?wQi>"?n@?>4asK!q?ӜH?/=?ro~D?=E7㿗c${?@-?ῢ D?_ ?)r84I,)w?c[?.Ȗ`"?N6? ࿢}!?7P|?QfL2r俳?Pn?Eׅ?hhsM~2Ƈ?*-9?}ԛQԿSͬ?J4?SYvQؿZM?x?\޿:wf?1?5l׿>"D?N?R =N֭ܿ7?@7n1??CX:߿ ?#qpd7i࿤M+@?6M0k!࿽ӜH?u["A⿰Rbro~D?t3N]m{ۿ@-?uݑ1UGt׿_ ?`5տO`c[?%ؿ:r30ݿN6?C*qܿuؿ7P|?5Fjؿ 8Eׅ?Vf\޿2g@*-9?wݗ3ÿJ4? TƿO俇q&ʿx?]U˿Wҿ1?C?{ΉL˿N?YLQ޿ NDӿ@7n1??@I?,~SX  ?,=)?hyܝ翤M+@??5wԲH? 0?^cޚ濈c]F?Iط?oH@-?ʇjj?YR>_ ?'0mP?X޿=U?0K;5?XA+d ?Ҩ6p?=U+Sc$?Oo+?ǀῌQ?t?Dׅ㿧>s?`,)4?bI5xc-t%U念l/?4}v?.%?ӏ<ˉ?dCԷ!?O唀?\sG˵t??Ent?+ۖa?dpu?Do?;i?Se?EX?RNUZJPz?I ?9`W|w?81$'7?^?UeA?oB@?|A ?8Mp]?j?)q?~7?a'֩?#1?&?V/'?SQG?FGR?Á,`?^?}"O?O\W ?:}k?9?q?ù?{Gz̿ɐc?Q?Aǘοӻx?n?pUjv?Fu:ʿm?^D1?psĿ؟N?O=? $>wD+g?1'hç?'&n-?t?˖Q=1Xq*?AB/пw-?ڧ16eȿF\?=@>?ÿ^'ei?OH<.ED1ÿkg{t?'XQSPҿ3ı.n?Ex]zԿeS?Ku/3o\uxc?7p?=U'ས4ڪ$?>F<͌{w7?c=\G )?;^? eI)v? |2#@ٿTB?rOWw,6*5{ٿ+P4?6稣jd׿ɐc?mߣOԿX+? U [Yeʿ; ?ǝ?߉Y/rB d?D@9 Iط?YvQ@&VZV?XGkȽq)?{-1͏OG|C5%Y pC׼hK6Z&q⿌QQ?C3 a*?ӀAҧL…[.?r[v׿$!hUK:?_M࿂ Uܸ?.0ݿӀAҧC*q?I`sؿND~?n!~ῠ.'Hl?|b*߳3cZ? FÿF6FCƣTB?z"0ʿ1FG?#+ ҿ+2: |,}z?i4˿~NZE?4ӿ$>+1JZq?}?q?dpu4J?]6:8?[K< bk_?Ut?&R?o*2?+hZbe4??Z?Y??=^H?Vdt@?;]k?r?dVA?V?"D?: U?gп?I??$wDf?H_?ʇjj?{.S?[֛?Qr?+?ZB>Y?_D1uW?t 34?BW?(?YZ?![=?K>v()?ˀ,'?f ?C8?Sul?l?h?No?+Yή"7 ?b?¯'y?X5s;?֡?9r?fG?C?0DN_ϻ?fh<?BK?h>?IHm?.?g@5bȠɴ??;ޜU)?+p?0/>:u# ^H?@єq:ֿL7A`?Xlap׿S?Peo)?Đֿ̰?Xᖏ?뉮 ?ڿ~jt?c?K̳V|ӿJVo?e`TR'?;S.ӿܠ[;?S c A?{?m̿gv?{Ic?;̿ <.9?a?@ؿsE?*U-?đۿ`obHN?eF ^?Ѐz3j޿#0?09?@Ex3YI?' E?^?1C?;]k+?{ʄ_Vd?r$8gп,}?%H_uBY?WÿnIa5 ?ynU̿ 3*3?ht4;[֛DJy??-JO!WYel?Ҏv7BWps? Ŀt?g&5?z9 ?q]PͿD(bsgbѿDeݿOP+?kͿfv(hr1Ggſ+MFa]ſ @tɿ2uWv[/)?N0߿Mx$^ip[[?$ӡn߿/עhr"(۴?KqUr߉YY 2&࿬]i-kْUoB! ĭmtOq޿s?qۿJ)?#ǔ?ޒֿaM?B 3m׿FzQ__Lֿ+p{ֿ*Yl@ؿRɋL޿XL/ LK fwak;|1AGZ2Y9x&4ǿ?E@Jl5`iɿƧϠ2dw п9Ȑ2,_7h˿qxTެ\ȿKHZ,?^aZ![=ϿA‹Ŀ uX?ӣ̿V+~ÿ7P|z? L M~ahV?\`Ő?t=?LA!O"y?67',?j2YֿF;n?dyW=`ڿr?/עhSWٿ?gYnIҿ_sa?4J%= !п`"?^H0=)?-?b?#*T?Dk? ES?x?ad7?h(?RT?r&"`??7¢"N?0:9?y0H?Y?+?.R(?^ؚ?i!?B?׾^s? ;F? Ov?M?80Qd-? ?-\n0?4~$?n3x?kծ i ?p ?cxg?֌ ra?=]ݱ? #ݯ?#G:?Ap?so5?lV^??_\6:?8aB?`"ĕ?I?6>W[?{-1?k&ls?.v?;f?fո?!A 3?l? ?`?~ƅ!?yP?w?w!?mQfL?Tގp?O],σ?jk IJCR?՗?p?8q?M?aobHN&?~?RZ?D=eYJ?H"?o?3?Q9??'?af?&\R?ET?G?<,?dF? F?l# ?Nj?qqTn?cw?Uik|&?+ٱ?ù?+,?oD?J%<ן?6^?hn?Oyt#,*?YM]?jGq?)J=bc?7~T?09~k'J?Z֗?E2K`tݥ?ُ?N?~7ݲ?I,)w?|E? I'?J?л?BO}?zh?4S0?lXSYĿm?3?cԵ>U?'3Kd(y?Kp?=w6|Ef?k~?D+g?BLe3?*?P,?%s,? ;Bd?Χ?uZA?b0̕? ۟?v?W}W?_s?uxq?\?E$]3?UZ?OIV?es!??c?9f?:?CB?|HSR?j0 ?cw?sj?f?@?%>?.W?6?4ׂ??&M?{b*?KqUw?L6l˿^?W@>?Yʿz6>W?|?o!aK˿j!?sJ@L…?VRʿ6XO?0?U-(ÿ5?0?\OKGWn??jܴj&kT?5_%?(yuÿZh4 4?:`?"C*q?-[닄6?F5?.R( ?wx[p/?L!u;?'p?~?:pG?ם<ǿAA)Z?PT6?-1ʿu ?~7ݲ?L 俈@j?6o?k*. ?F{?]jJ⿂9zަ?1 O!?4ڪ$6nf?+ۇj?"aK&࿻@j?$@X?9j?s֧?CVzN?$?WVk?n!?[DA,Ԛ'?U?'.ҿy?A]P?lwNҿ@ ?x@?(˿UG?i?#bJ$ѿ#]??}ϿQcBL?yQ? ?8:Vӿ̕A?V?P9&ֿn-a? b?<ۿu"T3?Ɋ?{Lڿ?9+&?\J׿?Z?Nϻ?ݳҿ /?ƧϠ?ۿQm??ᖏ$?_x%s?:8ֿ? F?zjUտn?]T?tiѿFtϺ?ti?£濾c?ʠD?#&ݖ忙t&m? ?z6i?{jU?%㿓5!?ALjh?uRz;.?ˏP[VDׅv28J^?UU?ǁW꿇w }?r??(GA׾^? .л? f m9? ?)WxcK?cԵ>U?EƟl _>Y1?Kp?r6,R?D+g?] y?*?ip[[x^%?6sHjd?$(~ 8??l@?~?=\r)8~4?S*?PCd3%?bV?%J U ?t{Ic?{h+mQf?CB?I`s]1#=?&2s?>VҊo(|?\?'WD!T?4ׂ?j3NCT}>ʈ ?oc#w?|,G@?W@>?zm9?|?!>@)?sJ@L…?RQ쿐`&q?0?wj.7M»?0?l!A M*??wKrcՑ?5_%?i>ἲ?:`?Wt俎R<ķ?g s6?qJ[\濭\?.R( ?b `:۠?X5s;?Kó?oFWG?N`:[1O7?PT6?ùuKkx?x'۲?kzPeE ڿ6o?3*|y0ݿF{?Bl'׿1 O!?k'JB"3.ֿ+ۇj?5$迨UJѿ$@X?¾D ,)տCVzN?%"1Sulֿn!?}w+KtBv$ӿU?o(|-ďֱA]P?+x~QBx@? ^*,sY?i?;OE1-EMO?Ma鿈Gfm?yQ?VΆ|꿲NgV?]j~4IbI b?SA* #ʿɊ?ξ =濄+PO˿9+&?\qW/X^^Nϻ?;5 uKٖJW?ƧϠ?(70:9Cÿ?hPS"п_x%s?I[7ne F?8a觓]T?2'$Ûx(ti?Z8np޿ʠD?/4i%)r#ݿ ?ʇj[X7ۿ{jU?~0`U,ֿALjh?nmyXD<׿Cr2q ?iȥ*9'>ؿ:3P?D1x߿p?ߦ?꿷{O;?j K[\3ÿ&?diyNXQB?ܡa1)Ϳ(y?YKi-Y&ӿ$?bbqmX|^ɿCULp?&zw^ҿa?{_=M̿1l?"rl=9 { -* [$F]u?e%?Ln@kUͰQo&?XG~tݿmg؟ W7n1?7׿#\?ut\PN.9?):O唀Ǹ?|&}#g]&|?C 8@5e\ ?ߡ(ЧgUIdcw?Za/迃+d㿂5?jj忄Kǜgl忔DƟ?0L{ܷZ'.Oyt#,*?UX ~1[俙(H5 E쉮 ?8‡wIQˏP[ 俉QF这UU?迩'俖r??~7ݲC;8؛ .л?:=ƂtF ?N#Edܿ`HcԵ>U?L1=B߿[#qpKp?XۼeD+g?^EF6nf뿣*?>#t"d?vnڌ俊C㿛?Mjhxn~?qs*;4,F]kS*?_{fI {,}h忙bV?->x㿂o>;t{Ic?ūm ῴMCB?ُa⿍ ra濹&2s?X歺U⿈ \?+E|dp<4ׂ?YLl>H`Zoc#w?@9w׿YKiW@>?zqؿ9CqǛ||?cֿsJ@L…?аuտ}0?sۄ{eۿ|zl0?>޿2'?=~o߿]25_%?piҿ1uWv:`?I`sҿYjh-[닄6? 5׿ZF=S信.R( ?c"ڿ; ⿧X5s;?*Oݿ*QoFWG?>>tA}ҿt'PT6?ȑӿ迏~7ݲ?%"?{h6o?K\Ǹ? k*F{??flt1 O!?Os"?5&\R5Bfj?-z?'y3$@X?༓?4 CVzN?hʿ`V?0PӶ%W@Ƣd?ġ## 鿹Ɋ?{ >9+&?ᱟ˿v~Nϻ?uҿ $>ƧϠ?)Wx¿jdW??=x` _x%s?`ME*ʿo F?p^}<ɿH_]T? (zcѿ1ti?5s?L;ʠD?_@/ܹ0?uw g ?^N?Z-D{jU?]~q?vU0ALjh?f?j{ԗCr2q ?{?v^ :3P?,b?ΪVp? ?&pn;?F0}ÿI &?W\ʿ֪]RQB?flC HĔH(y?j]8J=u!V$?iLV CULp?zRa?1x=\r1l?+?*4 -* ]V$&?g e%?tۈ?ͰQo&?Pf?OwxΖ￀mg؟wIqD?sFZ*#\?eT ?? ?.9?;FzQ?HPsǸ?լ3?l;m&|?/1"Q?{G ?M?hXcw?D3U?&k?uYLl>.Kp?T:?+QrD+g?MT#?%翣*?wN@?&+6sHjd?3TT ?eU*鿛?$Ί?9ؗl~?K#fy?˚S*?x>?bX9这bV?=#?`)t{Ic?\-?{hCB?>??A?iQ|?5ӽNK?lXSY㿠2}ƅ?`?q9])ʥ?ԕr?E_ zR&5?&?Cwni5$?,?d)5_%?aM?z2Q޿)?D? ݿ-?2:?^?Y$9a?7 C?jٓÿ1?~ ?1 n¿~͑_?@̘5?̿,)W?-?F жuƿ3,%I??=ԶaɿLi?9'>?п'?qY?nֿyY?{?Zmӿʃ9?ˆ5E?6pڿqZ ?jׄ?Plڿ??@a+޿B_zsQ?úX?9DܜܿVJ?(]$?zƾdӿs?p??gѿ3y?$pt?οۉH? ? N]߿Nϻ?=? N} yῘBʠ?yvև?ʠDۿ.?pz?oHԿM 4s? t ?B?S[޿AF??NPݿ1?L4HS?Ϡ࿃Դi?bhur?fzLD? ?,8-_??&?fiÿ?@?p1=? yͿ]kSUh?$&[?I2̿Cr2q ?GTn.~?#dTɿM?ʦ?+j.7?]@?vd;?乾?suܿ&?6X8I?70Qd߿QB?RZ1 ?jeB?i''IֿCB׿*P?!ڿp>?ۿ]?tۈտ:`߿8c4?T[r׿^a߿ Ov3?Dҿv$p޿?q6տ*P׿bg?m:YѿHLP׿ƽ ?¼Ǚ&ʿ͎T_ʍ"k %?ulǿN /?Yοȵbmr ?aM"p$`Sc??㾿7߈Y4Lme?46WsDҿ2Pl?@?Jc?qnǿij?j?b+hZb?wD?IQ}ο? 2g?<_E?ʉvӿdJ5#?ܴ? 3`^$stA?A&9?Vfٿ= NP?0{O?c?޿>V?@T?%䃞ԿHSRE?dh?#bJ$ؿmϴ?'H?%L1Կ*2: ?G1?)70?hv[?-?2:?z0H4?հ@E.xp? +j?p]1#<Ypn?0Z H#IB?0{?Bn;2??4KԲ0}!噗;!8޿ Q7F ESiI1xÿ4(Zf鿍'8'¿whhs狽_4Sx캷̿Vf\Xrߔ/Q5Uƿ ({T?& /$ɿiݿ<\gV^?п+ڿ.ֿB=ЊDbԵv⿡0(hrӿZ{BGz.忑_? ٿbjKu"T2濨Qۿo[t2Ecl忏TE ӿ! b翫"пWL%@LYO0ͿgbaiܛO6߿RhԿ<:TSuۿ `-տRo& տ"׿`߿T[ٿLvkCݿ5'/2߿sBδE>'Iֿ1E4~zi/G4Le%ڿ-y<-Eÿtۈտt ؖg)ͿT[r׿;Nёiv̿Dҿ_": $ ɿq6տZ'æ6UtY"]ѿO@Hа¼Ǚ&ʿPnA ]ܿulǿR h9Dܜ߿Yο:8X?6ɏaM9#J3?Oڿ㾿p}a'֩ؿFY?'IL=-Կoy3Aapjٿ;̿F;nxPӿԶaϿb=쿙+`p׿ZxZ~ҿ6 Ocdh:;?L'ᅬUJMLbG? 7Cj ,UX_Ue?JJ0Afg;N gĿz}.Gȯb￞#Ͽ= fO7Pu?޿ ҌEY˷? \ڿIuT5A?ALjhܿ}w+^aQ?`"׿ v뿻~nض?xͫ:ۿhv[쿜:f?cZڿMqD1y|?)-Ӿ9鿚[!?հߓgCA迁??I|AΡ 鿨1?/Q(ԿDKOwDf.p?Hh˹οlļ ?!3ҿ'IֿwLݕ]0ȿ$]3fLe%ڿ|?q¿ Itۈտ>&̯&T[r׿'ʭW\Dҿ~תc~ q6տpZ̿ZQ"]ѿG7¢ο_¼Ǚ&ʿKU?2=Bulǿ` ?iXYο`d?O\W aMk, P?<￘㾿;]?;ŪAFY S}?W&R?oy3AfM,ݺ?8;̿Tc?PnԶaϿY?{ZxZ~ҿh#M)Ϳ;~￲h:;?$aN"ʿ9@0GMLbG?IQ,пnf,UX_EׅOѿ';uxqÿ);/u.G}PoU#ᅪ= E{aכbb4[VB?3܀#׿IfͶ뿀ZֿXyVҿ=1Xqʦ\ֿȶ 8KֿUq7qmѿ(rӿ3ouĵ^(̙̿ }ؿ$쿱Tȿb('Uֿ6!1ȱ Ϳ3Mg'ۿ:LԿO?߿{鿁ɍӿ-bؿYKiyѩ+?U.TӿRAEUjMSt?jUZٿ>"DM?zFwݿ6z ?Qާ@뿚ǣ?HȰ786uy0!׿6ڋhܲ Q:hqs*ٿCO}:YİØ=tZԿD$]3ma@6pl> cy@ٔ+ǿGp#e<~Ky $yXC%翑aodϿ~31]⿬j迤)J=ӿ2YS (S|l;m⿲ ܁:^NlyZy8-ԟ"ٿ*鿊޿ߋ/Կ! l鿎;ūm׿ps \ڿ ~{ܿd@zALjhܿZӼ߿AG`"׿:Yj`axͫ:ۿ$}ZE߿UK:l远cZڿ/ިڿ4()10&ۿ>-忂հߓ1׿oꐛaI|mOT6,i/Q(Կu):מY俶Hh˹ο JʽÀ%W!3ҿKH/H0EHؿwf\C࿘ݓZܿzؘב## ?o*Ral߿uӍX9n1?74eտ?Q0㿼X"/Clpٿbo㿬L F%uԿaoCV޿G5\|mYg|_ڿR+Lk޿ܠ[;Qݿ \(N#Ed߿BῇyU ۿmyؘ.5B"ĕwFܿ@9K[_~$A1|DLc[K;%nIaῇR{mr-a$޿nnLOXbԕ?Dڿ!8޿΢w*?]5.ݿ ESԴi?6S!׿4(&?R ֿk&lsǵb?`ҿlf\&3V?>Z1 տ7~TX"/?ro~Dֿiݿť*mq?xxρҿ+ڿ::ZՒ?.R(_'ei?ZڊBi6`~?KJ^c@vY;?$hfi2 9? ȳ˷¿/1"D?'E'K˿VZ &^y?Fu:˿KJ?3頲RhԿ4?¿8H-տ%?nIϿ'׿e?xs]Z{cٿ~?@3)!XU/߿狽_?,޿E>'Iֿ?AGZ꿑aodϿ;]?H迤)J=ӿ ~{?D!T|l;m(?W^NlMDu~?k K-ԟy 5?X7㿊޿I?e~῎; D ?!i \ڿDׅ?֌ raALjhܿ%s?8`"׿ur?ANxͫ:ۿ-wf\?>U濜cZڿNA~6r]?P)|8c?w係հߓk6?hUMI|ӂ}?BL/Q(ԿyT?H0[w쿶Hh˹ο]ݱ&?Xt5=?'WӺ j?uRz?IK[\3?t k?mRXܿLQԙ?30&?-Rڿ8C?FCƣT?%9`W; ? cZB?ʃ9NC?"Q* ?qZ `?TO? nk L…<?b L?^_QIh˹W?y? myؘ?eik?ĖM ګ?!ɬ?4LkLj?gHū,?^DM~?ť*?%CԿ..?0??Ȳ`ӿQm??>Կ~7?E+?BwIQ׿q6?ڿ}V?fᔹ?@v߿Ԃ}i?;?wDg޿3J?o ?FZ*oGֿ×?Cl?uڿ">?x]`?bdUտ{b?GP ?#EdX׿%1 ?LN?ҿ`?*l?7Կ!u`?gR?njѿX4 ?1%?E&ʿsCS??eǿ1DN_?Ƌ!rz?-熦οM?;?e##'h'?YLl>?KDׅ?u|O?\{UF? -?,AWCK?"?eM.̿ɏk8?*F?d[dϿ) ?/ע?d_ҿ$ \E? ?6E?.T?~(FL?1ҋ*?L/1?W?7%)ԕ2 ?ps?*[it3?nRX?Оq M>UW?ƠB?Nbk ?2?K'?#10?Œr9>?NG7ֿ&S#?%VF#? (GֿN?K\Ǹb?-`ѿ^b,S?'rJ@?DgE(̿#fy?J +?Tȿ kc?t?@ǘͿD[?ܙ s?}Կ5e#? _?TPōӿ'>?DN_׬?X?fF??S c ?L$>?s-ZU?6(H~8H?7ne?y@ٔ+ǿ"9U?ܴ?yHV?MKF?aodϿz?~T?O=ӿW@?FW?ť*mBK?A 3m?!{z$d .?0?r3܀ϟ;k]?yq?I޿7h>?9n?~T~ K(?)H4?nyڿf(uԿIfͶ?7?dshc? /A?/-9?X\wN?9lļ?s`?%%s?R?R Oh+~NA?DOʤ6?t&mnhȾ?]P??74e ?E:MIȱ?;0?OExE?KUbs|}{!~$'*-03  5%8%-5-;5=E=>EMWMAW  cnc#n    {    {C    DE&FGH! !+ 4+)4$"#$?"#"H"?JH'%&'S%&%\%SL\*()*h()(r(hNr-+,-+,++,0./0./..P31231211R64564544T97897877/<:;<:;::V?=>?=>= =X B@AB@A@"@Z"ECDE/CDC:C/2:HFGHGFGFPFG\PKIJK[IJIdI[^dNLMNpLMLzLp`zQOPQOPOO4TRSTRSRRbWUVWUVUUdZXYZXYXXf][\][\[[7`^_`^_^^hcabcabaaifdef(ded2d(j2ighi?ghgHg?:HljklSjkj^jSm^omnokmnmvmknv rpqr pqppo ustu sts s=xvwxvwvvq{yz{yzyyr~|}~|}||s@u+6+v6!"DP DwP$%_j#_Bj'(w&wx*+)y-.,z}0`/`{21|4h3h6 5 ~8 Y7 Y:R9R <(d;(d>uq=uq@i0?i0B|A|DCFEHGJ%I%LKN,lM,lP}O}R4Q4TSU41V  X   $W $Z5Y5\[^<]<$!"$`!"!_!)&')b&'&Da&D/+,/d+,+c+4124f121e19679h676g6 ?;<?j;<;@i;@DABDlTABAkAT IFGInFGFmF OKLOp\KLKoK\ VQSVqQSQR:Q R\XZ\7YXZXdrXYde_aesx_a_`0_x`mgjm3hgjgi@ghitprt=qprptpq}wy}uwywxswxtFCvwuvLIx/wxRO2y69n kz {yzh e|} { |b_~ 5    }   ~\$!$Y! 8 -')-<')'(<'<(3/13?0/1//09679676D6 DA;=AP;=;<;P<GCEGDCECCD MJKM}JKJXJ} XUOQUeOQOPOeP[WY[XWYWWX a^_a^_^n^ njcfj;dcfcecdeqmoqnmommn ytvytvtu>tu{}{}{|B{|E  yyqqADHKaaYY    G!!==)$&)5$&$%J$5%1+-1D+-+,N+D,9369Q43635345@<>@=<><L<=LICEIXCECDCXDOKMOLKMKKLURSURSR`R`]WY]mWYWXWmXc_ac`_a_9_`9ifgi1fgfvf1vrknrMlknkmklmyuwyvuwuuv|~|~|}P|}TV!! S UX[     %     %    . .*#&*W$#&#%#$%1-/1.-/-m-. m9469e4645Z4e5A;=AP;=;<^;P<GCEGaDCECCDMJKMJKJXJXUOQUhOQOPOhP]WZ]XWZWYWXYd`bda`b`p`apmgimgighghuoruporoqopq|xz|yxzxxy ] ` d gS S KKcfjm         (($ "$! " 0 !0-')-A')'('A(5/250/2/1/01<8:<98:8J89J"F?BFi@?B?A?@A OILOJILIKIJK!XRUXSRURTlRS T%a[]at[][\p[t \#icfirdcfcecde$plnpmlnl|lm |(ysuysusts t&{~|{~{}{| }' + ) *.o ,-q |{ "1 |#b}b0~^%7^&6v(=v)**<+C,~~B.I/H1O2..N "     14T&6Y&7X#*"#*# 9#"_ ( (:>   >^3:23:3<32e808=00/0d/CJBCJC?CBkH@H@@@?@j?U]U%^]]\]^7\[P[B^PPOP^pOlul(vuutuv=tsf sCzf fefzse + C~ D~ ~}~u}.IEw1O!/?kFy<eG{ 9     _H}%6&%%$%&Y$##$5 2: 12:2I218.!8J>.!.-.>-#FN#EFNFKFELB$LLRB$BABRA&Zb&YZbZ"MZY"`V'`NgV'VUVgU)pz)opzpOpoxk*x'lk*kjkl;j,O,-P-// Q 0R022~S~3T355U6*6A8U89V9;;fWf<X<> >   Y  ?Z?A *A * B[ B(B(-BG8AD8[BADA@AB@?2E?\F2E212F1GNVGMNVN]NMTJHT^ZJHJIJZIJbjJabjb>_ba>h^Kh`o^K^]^o]MxMwxxaxwsN0tsNsrstMrPaPQbQSS&c&TdTVVeWfWYIYZ3ZS\\g]h] _Q  _   `i`!bM"!b! !" cj'c'e0:e/0:0rk0/r8+f85,+f+*+,W*hFNhEFNFlFELBiLmRBiBABRA\ek\WfekedefdcVlcnjVlVUVjUt}ntS~}n}|}~|{no{ononmnmqgq  r8r ] tt ZpZ uqu w]wxrxzYz{s{}l}~;~ct  u%c&%%$%&$##v**4=4_>==<=><;.;wC..-.C- NYNpZYYX!YZX!WGW>HGGF"GHiF#hqhkrqqp$qrp$oboxvbba%bva&K''zyzzy(zy)e**z+,t--A.o!}/{!2|o3moon#omn|"4$5~"$#""!8"#!9&T%UTTS:TUS'll;w'xwwv>wxv5?3554)534k(lkkj@klj*A*DE,+F-G'-(''&J'(&K/.L0ttM0~P~;Q9;;:2;9:1R3S3UV45 ,  , W758776Z786[76\8]%$%8$` 'I('aGI(IH:IGH*)*9)b;-.-,..,c545;4f787g8= :9:<9h>=>H=<>H><iEVDE>WVDVUlVW!UG HGm H @ JIJ?InAMNMLNNLoWVWAVq-Zk[Zrik[kjBki#j#cdbcadbda0rsrtsCC{|z{y|z|ysvDDuxEEw&6zFFy|GG{~HH})+,*+),*,)<7I87GI8IHJIGH:9:I9J?@>?=@>@=K]LK[]L]\L][\NMNKM~&~LSTRSQTRTQ_s`_qs`srNsqrbabMaNhighfigifzyzOy,~}~}BPPRQRTsStssrstrTU/HVV     X   [W\[[Z[\ZX#!##"Z#!"YZ*7)*[87)767862/0./-0.0-N>Q?>OQ?QP\QOP\GHFGEHFHESeTSceTed^ecdVUV]U^[\Z[Y\Z\Yg{hgy{h{z`{yzj3ij_43i32342`pqopnqoqna4Tbbdcdfe)f7Xhghii  31332j312j()'(&)')&:g9:khg9gfgh#f:?@>?=@>@=^K_LK]_L_^m_]^NMNlMmSTRSQTRTQbwcbuwcwvnwuvnkljkiljliz{z{oo = d q MpNMMLMN Lqrrss@j    u t ,u"7#"57#76v756v+,*+),*,):Q;:OQ;QPwQO PwDECD"BECEBB_`^_%]`^`]p$nonox&xwxvw(uxvxu'y)y+*z,z.6libMeshb-7.80/sample_meshes/quad_q2.mesh000066400000000000000000017217051456732543400202660ustar00rootroot00000000000000MeshVersionFormatted 2 Dimension 3 Vertices 7922 0.491814 0.357873 0.793755 0 -0.185247 0.576968 0.795482 0 -0.605974 0.00211274 0.795482 0 -0.189262 -0.575662 0.795483 0 0.489311 -0.355541 0.796345 0 0.18688 0.575248 -0.796345 0 -0.492393 0.35579 -0.794332 0 -0.490535 -0.358348 -0.794332 0 0.189225 -0.577262 -0.794332 0 0.608238 -0.000444233 -0.793755 0 0.793286 0.579422 0.186998 0 0.301117 0.934866 -0.188027 0 -0.304976 0.933315 0.189508 0 -0.795969 0.576124 -0.185778 0 -0.981878 -0.00163909 0.189508 0 -0.793895 -0.57898 -0.185778 0 -0.301858 -0.934328 0.189508 0 0.305315 -0.933953 -0.185778 0 0.795319 -0.575807 0.189508 0 0.98259 0.0017648 -0.185778 0 0.000569249 0.000222193 1 0 0.000590977 0.000154955 -1 0 0.276627 0.850311 0.447715 0 -0.723276 0.525844 0.447616 0 -0.723612 -0.525382 0.447616 0 0.276059 -0.850548 0.447616 0 0.894253 -0.000431273 0.447562 0 -0.276504 0.850312 -0.44779 0 -0.894126 -0.000268137 -0.447815 0 -0.276045 -0.850447 -0.447815 0 0.723521 -0.525337 -0.447815 0 0.723249 0.525857 -0.447643 0 0.256714 -0.149484 0.954763 0 0.524775 0.00459358 0.851228 0 0.220485 0.200032 0.954566 0 0.119822 0.271828 -0.954763 0 0.427252 0.304739 -0.851228 0 0.295951 -0.0322319 -0.954566 0 0.0832626 0.750053 0.655992 0 0.1675 0.499739 0.849826 0 0.420045 0.656133 0.626804 0 -0.687614 0.310969 0.655991 0 -0.423351 0.313193 0.850108 0 -0.493357 0.605724 0.624116 0 -0.508233 -0.557865 0.655991 0 -0.428687 -0.305849 0.850108 0 -0.728533 -0.282031 0.624116 0 0.373505 -0.655741 0.656 0 0.158296 -0.502146 0.850172 0 0.0430982 -0.780028 0.624116 0 0.738017 0.145904 0.658679 0 0.756916 -0.201853 0.621397 0 -0.0832595 0.750045 -0.656002 0 -0.167033 0.499277 -0.85019 0 -0.420046 0.65614 -0.626795 0 -0.739145 0.149499 -0.656608 0 -0.526557 -0.00446402 -0.850128 0 -0.753829 -0.196733 -0.626793 0 -0.370591 -0.656771 -0.656608 0 -0.15847 -0.502165 -0.850128 0 -0.0458414 -0.777727 -0.626793 0 0.510108 -0.555406 -0.656608 0 0.429233 -0.305862 -0.849828 0 0.725492 -0.283925 -0.626801 0 0.682827 0.315755 -0.658681 0 0.493713 0.608207 -0.621396 0 -0.124845 0.269191 0.954857 0 -0.294571 -0.0355551 0.954864 0 -0.0571566 -0.29117 0.954859 0 0.0572024 -0.29117 -0.954856 0 -0.259226 -0.144362 -0.954863 0 -0.217382 0.201984 -0.954856 0 0.689546 0.502211 0.521833 0 0.540126 0.777696 0.321378 0 0.584161 0.811637 -0.0014475 0 0.278426 0.946647 0.16177 0 -0.0033168 0.999989 0.00336067 0 -0.00345595 0.92949 0.368602 0 -0.260374 0.807108 0.529888 0 -0.575197 0.753058 0.319162 0 -0.591381 0.806391 -0.00140495 0 -0.814271 0.557336 0.161773 0 -0.952064 0.30588 0.00335348 0 -0.885066 0.283941 0.368602 0 -0.848066 0.00177962 0.529888 0 -0.893946 -0.314337 0.319162 0 -0.94967 -0.313248 -0.00140496 0 -0.781681 -0.602192 0.161773 0 -0.585113 -0.810945 0.00335348 0 -0.543545 -0.754005 0.368602 0 -0.263759 -0.806009 0.529888 0 0.0227073 -0.947329 0.319162 0 0.00445275 -0.999989 -0.00140495 0 0.331165 -0.929511 0.161773 0 0.590445 -0.807071 0.00335348 0 0.549137 -0.749942 0.368602 0 0.685075 -0.499913 0.529867 0 0.90798 -0.271149 0.319159 0 0.952422 -0.304779 -0.00140495 0 0.986353 0.0277227 0.161775 0 0.950017 0.31218 0.00341563 0 0.880937 0.291644 0.37245 0 -0.689564 0.502267 -0.521757 0 -0.539139 0.779923 -0.317607 0 -0.270809 0.948542 -0.1635 0 0.00359873 0.928207 -0.371794 0 0.260381 0.807158 -0.52981 0 -0.690771 -0.500605 -0.521757 0 -0.908354 -0.271743 -0.317607 0 -0.985802 0.0355612 -0.163502 0 -0.879614 0.291205 -0.375873 0 0.262644 -0.811658 -0.521757 0 -0.0222541 -0.947869 -0.317607 0 -0.33845 -0.926564 -0.163502 0 -0.548768 -0.746576 -0.375873 0 0.853076 -0.00102413 -0.521785 0 0.8946 -0.314072 -0.317607 0 0.776628 -0.608209 -0.163502 0 0.540457 -0.752614 -0.375873 0 0.577849 0.752638 -0.315326 0 0.818421 0.550683 -0.163518 0 0.882785 0.28144 -0.375877 0 0.392326 -0.135659 0.909763 0 0.391632 0.0898775 0.91572 0 0.23644 -0.0163112 0.971459 0 0.23766 0.340354 -0.909763 0 0.369665 0.157483 -0.91572 0 0.181697 0.152172 -0.971459 0 0.0676954 0.648947 0.75781 0 0.283868 0.58442 0.760177 0 0.220029 0.730839 0.646037 0 -0.596269 0.264935 0.757803 0 -0.468053 0.451147 0.759862 0 -0.627088 0.435162 0.645986 0 -0.436225 -0.485216 0.757803 0 -0.573703 -0.305733 0.759862 0 -0.607644 -0.461923 0.645986 0 0.326611 -0.564746 0.757878 0 0.113479 -0.640094 0.759868 0 0.251543 -0.720646 0.645986 0 0.619602 0.108114 0.777438 0 0.663381 -0.106778 0.740615 0 0.764629 0.0136778 0.644258 0 -0.0676997 0.648861 -0.757884 0 -0.283854 0.584424 -0.760179 0 -0.220028 0.73084 -0.646037 0 -0.638177 0.13573 -0.757826 0 -0.643547 -0.0893953 -0.760166 0 -0.763115 0.0163528 -0.645981 0 -0.326294 -0.564999 -0.757825 0 -0.113847 -0.639674 -0.760166 0 -0.251368 -0.720712 -0.645981 0 0.436515 -0.484918 -0.757826 0 0.573191 -0.305925 -0.76017 0 0.607761 -0.461776 -0.645982 0 0.564816 0.276726 -0.777438 0 0.473924 0.476311 -0.740615 0 0.626638 0.438372 -0.644258 0 0.231373 0.364261 0.9021 0 0.0112916 0.380517 0.924698 0 0.0859406 0.218843 0.971923 0 -0.275359 0.33222 0.902115 0 -0.358427 0.128304 0.924692 0 -0.181557 0.149318 0.971933 0 -0.401049 -0.159221 0.902116 0 -0.232777 -0.301239 0.924693 0 -0.198001 -0.126573 0.97195 0 0.0274316 -0.430611 0.902123 0 0.213573 -0.315558 0.924552 0 0.0593613 -0.227845 0.971842 0 0.401284 -0.1587 -0.902103 0 0.232735 -0.301249 -0.9247 0 0.198155 -0.126536 -0.971923 0 -0.0275814 -0.430636 -0.902107 0 -0.214621 -0.314432 -0.924693 0 -0.0591211 -0.227514 -0.971933 0 -0.418081 -0.106841 -0.902107 0 -0.36536 0.106959 -0.924694 0 -0.234582 -0.0139765 -0.971951 0 -0.230866 0.364549 -0.902114 0 -0.0126935 0.380829 -0.924551 0 -0.0858992 0.219223 -0.971842 0 0.531718 0.565509 0.63045 0 0.62895 0.639706 0.441809 0 0.465511 0.720338 0.514117 0 0.607491 0.770122 0.194572 0 0.454521 0.887244 0.078775 0 0.438916 0.856343 0.271902 0 0.19133 0.980128 0.0522926 0 0.00167376 0.984955 0.172796 0 0.176842 0.950765 0.254313 0 -0.141623 0.905416 0.400195 0 -0.103573 0.79814 0.593499 0 0.0411958 0.873057 0.485775 0 -0.354729 0.708207 0.610421 0 -0.44038 0.791302 0.42414 0 -0.543473 0.665457 0.511582 0 -0.545358 0.81538 0.194249 0 -0.703348 0.706465 0.0787834 0 -0.678625 0.682302 0.271725 0 -0.873005 0.484889 0.0523097 0 -0.93623 0.305961 0.172796 0 -0.849584 0.46199 0.254312 0 -0.904866 0.145097 0.400195 0 -0.791082 0.148135 0.593499 0 -0.817597 0.308969 0.485774 0 -0.783162 -0.118519 0.610421 0 -0.888658 -0.174301 0.42414 0 -0.80083 -0.311236 0.511582 0 -0.943997 -0.2667 0.194249 0 -0.889234 -0.450614 0.0787834 0 -0.858614 -0.434568 0.271725 0 -0.730931 -0.680438 0.0523097 0 -0.580297 -0.795861 0.172796 0 -0.701914 -0.66524 0.254312 0 -0.417615 -0.815741 0.400195 0 -0.385343 -0.706588 0.593499 0 -0.546498 -0.682104 0.485774 0 -0.129292 -0.781456 0.610422 0 -0.10884 -0.899025 0.42414 0 0.0485329 -0.857811 0.511582 0 -0.0380643 -0.980209 0.194249 0 0.153771 -0.984959 0.0787834 0 0.147972 -0.950879 0.271725 0 0.421265 -0.905423 0.0523097 0 0.577587 -0.79783 0.172796 0 0.415777 -0.87313 0.254312 0 0.646766 -0.649251 0.400198 0 0.552925 -0.584794 0.593538 0 0.479843 -0.730531 0.485777 0 0.703707 -0.364686 0.609758 0 0.821391 -0.381358 0.424111 0 0.830864 -0.219 0.511484 0 0.920472 -0.339103 0.194249 0 0.98427 -0.158125 0.0787835 0 0.950066 -0.153109 0.271724 0 0.991285 0.120862 0.0523309 0 0.937065 0.30302 0.173449 0 0.958858 0.125619 0.254389 0 0.794739 0.431007 0.427349 0 0.731337 0.31417 0.605335 0 0.842759 0.227723 0.487661 0 -0.53174 0.565539 -0.630405 0 -0.628906 0.640171 -0.441199 0 -0.465484 0.720394 -0.514062 0 -0.603965 0.781339 -0.15729 0 -0.427216 0.899375 -0.0927217 0 -0.435805 0.857792 -0.272355 0 -0.153257 0.987186 -0.0445129 0 -0.00109441 0.978917 -0.204227 0 -0.175616 0.950149 -0.257465 0 0.141372 0.905148 -0.40089 0 0.103593 0.798097 -0.593554 0 -0.0408741 0.873122 -0.485685 0 -0.702176 -0.330954 -0.630405 0 -0.803181 -0.400302 -0.441198 0 -0.828977 -0.220088 -0.514062 0 -0.929733 -0.332958 -0.15729 0 -0.987374 -0.128385 -0.0927217 0 -0.95048 -0.149403 -0.272355 0 -0.986227 0.159305 -0.0445254 0 -0.93117 0.301325 -0.205214 0 -0.957889 0.126579 -0.257563 0 -0.794588 0.430738 -0.4279 0 -0.731349 0.315648 -0.604551 0 -0.842689 0.227853 -0.487721 0 0.0977715 -0.770079 -0.630405 0 0.132513 -0.88757 -0.441198 0 -0.0468515 -0.856416 -0.514062 0 0.0293588 -0.987118 -0.15729 0 -0.183014 -0.978722 -0.0927217 0 -0.151623 -0.950128 -0.272355 0 -0.456269 -0.888729 -0.0445254 0 -0.574325 -0.792481 -0.205214 0 -0.416388 -0.871891 -0.257563 0 -0.655197 -0.622593 -0.4279 0 -0.526198 -0.598014 -0.604551 0 -0.477106 -0.731034 -0.487721 0 0.762577 -0.144985 -0.630435 0 0.885077 -0.148246 -0.441202 0 0.800021 -0.309205 -0.514063 0 0.947878 -0.277114 -0.15729 0 0.874265 -0.476498 -0.0927217 0 0.856772 -0.437808 -0.272355 0 0.704237 -0.70857 -0.0445254 0 0.576218 -0.791105 -0.205214 0 0.700547 -0.665438 -0.257563 0 0.389654 -0.815521 -0.4279 0 0.406141 -0.685241 -0.604551 0 0.547821 -0.679657 -0.487721 0 0.354967 0.708677 -0.609737 0 0.441138 0.791197 -0.423548 0 0.543538 0.665526 -0.511423 0 0.557024 0.815527 -0.156985 0 0.723337 0.684219 -0.0928211 0 0.681215 0.679509 -0.272261 0 0.891464 0.450898 -0.0445717 0 0.930445 0.303556 -0.205214 0 0.84935 0.46063 -0.257561 0 0.895991 0.118616 -0.427942 0 0.776311 0.175686 -0.605362 0 0.815603 0.311092 -0.487778 0 0.140109 -0.105927 0.984464 0 0.143999 0.100239 0.984498 0 0.521606 -0.143864 0.840984 0 0.372042 -0.274472 0.886702 0 0.374802 0.274316 0.885589 0 0.515327 0.184808 0.836827 0 0.0510884 0.16805 -0.984464 0 0.175416 0.00354539 -0.984498 0 0.337427 0.422981 -0.840984 0 0.139658 0.440734 -0.886702 0 0.46446 -0.00162301 -0.885589 0 0.525536 0.153389 -0.836827 0 0.151099 0.810982 0.565241 0 0.347313 0.744978 0.569563 0 0.0234537 0.5377 0.842825 0 -0.0694694 0.680007 0.729902 0 0.450146 0.5091 0.733607 0 0.335363 0.435093 0.835597 0 -0.724603 0.394315 0.565232 0 -0.601375 0.560811 0.569086 0 -0.504126 0.188432 0.842838 0 -0.668193 0.144066 0.729901 0 -0.343675 0.589033 0.731383 0 -0.309909 0.453323 0.835734 0 -0.59893 -0.567289 0.565232 0 -0.719199 -0.398642 0.569086 0 -0.334992 -0.421224 0.842838 0 -0.343498 -0.59097 0.729902 0 -0.666405 -0.144833 0.731383 0 -0.526903 -0.154657 0.835734 0 0.354444 -0.744918 0.565233 0 0.156886 -0.807186 0.569086 0 0.296559 -0.448466 0.843182 0 0.455879 -0.509003 0.730126 0 -0.0681867 -0.678545 0.731383 0 -0.0157373 -0.548905 0.835735 0 0.817984 0.105392 0.56552 0 0.816592 -0.100965 0.568333 0 0.624177 0.269389 0.733365 0 0.627109 -0.27435 0.729011 0 -0.151078 0.81098 -0.565251 0 -0.34731 0.744982 -0.56956 0 -0.0236753 0.537128 -0.843183 0 0.0696302 0.67975 -0.730126 0 -0.45022 0.509081 -0.733574 0 -0.335202 0.434972 -0.835725 0 -0.817865 0.105929 -0.565593 0 -0.815845 -0.100119 -0.569556 0 -0.518618 0.144056 -0.842798 0 -0.626363 0.274649 -0.72954 0 -0.623291 -0.270871 -0.733573 0 -0.517269 -0.18438 -0.835723 0 -0.353478 -0.745102 -0.565593 0 -0.156891 -0.806853 -0.569556 0 -0.297267 -0.448719 -0.842798 0 -0.454764 -0.510835 -0.72954 0 0.065006 -0.676489 -0.733573 0 0.0155109 -0.548928 -0.835723 0 0.599403 -0.566427 -0.565593 0 0.718881 -0.398543 -0.569557 0 0.334936 -0.421377 -0.842784 0 0.345304 -0.590363 -0.72954 0 0.663418 -0.147281 -0.733606 0 0.527056 -0.154876 -0.835597 0 0.723704 0.395523 -0.565537 0 0.601296 0.56166 -0.56833 0 0.663312 0.148941 -0.733366 0 0.346083 0.59056 -0.72901 0 -0.0512894 0.167478 0.984551 0 -0.146528 0.438123 0.886887 0 -0.174867 0.00289383 0.984598 0 -0.46196 -0.00396923 0.886887 0 -0.0564016 -0.165708 0.98457 0 -0.138879 -0.440529 0.886926 0 0.056944 -0.16564 -0.984551 0 0.138729 -0.44071 -0.886859 0 -0.139772 -0.105123 -0.984598 0 -0.376271 -0.268127 -0.886859 0 -0.14303 0.100911 -0.98457 0 -0.371279 0.274997 -0.886859 0 0.439315 0.806606 0.395489 0 0.621151 0.448796 0.642479 0 0.684885 0.676736 0.270099 0 0.753888 0.549761 0.35974 0 0.300562 0.910724 0.283312 0 0.681184 0.72835 0.0743004 0 0.311169 0.950156 -0.0192143 0 0.449914 0.887899 -0.0959622 0 0.122414 0.913354 0.388356 0 0.1213 0.989659 -0.0767251 0 -0.154366 0.951594 0.265769 0 -0.156449 0.982778 0.09832 0 -0.28484 0.871958 0.398221 0 -0.226643 0.703461 0.673626 0 -0.632102 0.666905 0.394594 0 -0.434166 0.859432 0.26994 0 -0.773276 0.567288 0.283284 0 -0.482081 0.872958 0.0746144 0 -0.807303 0.589824 -0.0190137 0 -0.705376 0.702354 -0.0956058 0 -0.830828 0.398664 0.388347 0 -0.90367 0.421323 -0.0767649 0 -0.952721 0.147248 0.265769 0 -0.983023 0.154903 0.0983197 0 -0.917302 -0.0014487 0.398221 0 -0.739068 0.00183061 0.673626 0 -0.829595 -0.39508 0.394594 0 -0.951533 -0.147338 0.26994 0 -0.778479 -0.560127 0.283284 0 -0.979204 -0.188727 0.0746144 0 -0.810427 -0.585525 -0.0190137 0 -0.885951 -0.453813 -0.0956058 0 -0.635892 -0.66697 0.388347 0 -0.679951 -0.729245 -0.0767649 0 -0.434448 -0.86059 0.265769 0 -0.451093 -0.887043 0.0983197 0 -0.282084 -0.872854 0.398221 0 -0.230125 -0.702329 0.673626 0 0.119384 -0.911078 0.394594 0 -0.153913 -0.950491 0.26994 0 0.29215 -0.913466 0.283284 0 -0.1231 -0.989598 0.0746144 0 0.306432 -0.951699 -0.0190137 0 0.157828 -0.982826 -0.0956058 0 0.437825 -0.810874 0.388347 0 0.483437 -0.872021 -0.0767649 0 0.684218 -0.679121 0.265769 0 0.704232 -0.703126 0.0983197 0 0.742966 -0.538004 0.398219 0 0.597282 -0.435382 0.673568 0 0.903384 -0.168017 0.394574 0 0.856409 -0.440098 0.26994 0 0.959037 -0.00443457 0.283284 0 0.903123 -0.422878 0.0746144 0 0.999812 -0.00265669 -0.0190132 0 0.983494 -0.153607 -0.0956058 0 0.906319 0.16559 0.388827 0 0.978732 0.190308 -0.0767594 0 0.855132 0.443026 0.269205 0 0.886223 0.452784 0.0979399 0 -0.438923 0.806934 -0.395252 0 -0.621265 0.448822 -0.64235 0 -0.684883 0.678568 -0.265471 0 -0.754424 0.549225 -0.359433 0 -0.299064 0.911024 -0.283929 0 -0.305041 0.952177 0.0173019 0 -0.122116 0.912952 -0.389392 0 0.152747 0.951339 -0.267608 0 0.284657 0.872198 -0.397826 0 0.2273 0.703306 -0.673567 0 -0.903074 -0.168086 -0.395253 0 -0.618836 -0.452165 -0.64235 0 -0.856997 -0.441673 -0.265471 0 -0.755474 -0.54778 -0.359433 0 -0.958849 -0.00290817 -0.283936 0 -0.999837 0.00412821 0.0173016 0 -0.905848 0.165709 -0.389871 0 -0.855335 0.44089 -0.272045 0 -0.119206 -0.910816 -0.395253 0 0.238803 -0.728275 -0.64235 0 0.15523 -0.951537 -0.265471 0 0.287516 -0.887772 -0.359433 0 -0.293535 -0.912818 -0.283936 0 -0.312893 -0.949626 0.0173016 0 -0.437521 -0.810305 -0.389871 0 -0.683625 -0.677229 -0.272045 0 0.829401 -0.394829 -0.395253 0 0.766319 0.00201622 -0.642477 0 0.952934 -0.146409 -0.265471 0 0.933168 -0.000891708 -0.359434 0 0.777435 -0.561245 -0.283936 0 0.806459 -0.591029 0.0173016 0 0.635445 -0.666505 -0.389871 0 0.432832 -0.859441 -0.272045 0 0.632534 0.666606 -0.394406 0 0.436791 0.859609 -0.265096 0 0.774026 0.56595 -0.283908 0 0.811162 0.584567 0.0169739 0 0.830245 0.398401 -0.389857 0 0.951129 0.146067 -0.272046 0 0.324949 -0.0586432 0.943907 0 0.396508 -0.038851 0.917199 0 0.303846 0.0277655 0.952312 0 0.22842 0.238444 -0.943907 0 0.297945 0.264492 -0.917199 0 0.262137 0.156134 -0.952312 0 0.159881 0.68286 0.712833 0 0.161573 0.623564 0.764881 0 0.247406 0.672226 0.697778 0 -0.600035 0.363087 0.712823 0 -0.543121 0.346418 0.76485 0 -0.56288 0.443163 0.697684 0 -0.530737 -0.458468 0.712823 0 -0.497297 -0.40949 0.76485 0 -0.595413 -0.398386 0.697684 0 0.272021 -0.646433 0.712826 0 0.235764 -0.599483 0.764864 0 0.194894 -0.689378 0.697686 0 0.699023 0.0468839 0.713557 0 0.6436 0.00226604 0.765351 0 0.722287 -0.0357177 0.690663 0 -0.159881 0.682859 -0.712834 0 -0.161573 0.623551 -0.764892 0 -0.247403 0.672229 -0.697776 0 -0.698921 0.058656 -0.712783 0 -0.642993 0.0389067 -0.764871 0 -0.7158 -0.0276624 -0.697751 0 -0.271764 -0.646588 -0.712783 0 -0.235698 -0.5995 -0.764871 0 -0.194886 -0.689314 -0.697751 0 0.530961 -0.458268 -0.712785 0 0.497321 -0.409414 -0.764874 0 0.595353 -0.398353 -0.697755 0 0.593079 0.372945 -0.713557 0 0.522015 0.376465 -0.765351 0 0.563348 0.453446 -0.690663 0 0.145232 0.295338 0.944287 0 0.124656 0.376607 0.917941 0 0.0572624 0.291411 0.954877 0 -0.23632 0.229636 0.944148 0 -0.319774 0.234883 0.917912 0 -0.259517 0.144557 0.954853 0 -0.291421 -0.153793 0.944148 0 -0.322201 -0.231541 0.917913 0 -0.217631 -0.202165 0.954859 0 0.0561815 -0.324684 0.94415 0 0.120369 -0.377981 0.917949 0 0.124781 -0.270072 0.954715 0 0.291086 -0.153571 -0.944288 0 0.322188 -0.231424 -0.917946 0 0.217594 -0.202111 -0.954879 0 -0.0562187 -0.324683 -0.944148 0 -0.12068 -0.377966 -0.917914 0 -0.125006 -0.269475 -0.954854 0 -0.326162 -0.0468629 -0.944149 0 -0.396758 -0.00202375 -0.917914 0 -0.294889 0.0356579 -0.95486 0 -0.145389 0.295701 -0.944149 0 -0.124779 0.376554 -0.917946 0 -0.0577931 0.291839 -0.954715 0 0.515984 0.646574 0.561867 0 0.578655 0.599641 0.552783 0 0.536991 0.689172 0.486492 0 0.519263 0.826381 0.217835 0 0.546124 0.825267 0.143752 0 0.448252 0.873183 0.191344 0 0.16548 0.973771 0.156135 0 0.109229 0.988658 0.102979 0 0.103778 0.969891 0.220304 0 -0.0564479 0.88507 0.462013 0 -0.128181 0.864106 0.486695 0 -0.0204851 0.845669 0.533306 0 -0.457127 0.697205 0.552209 0 -0.39763 0.754535 0.522068 0 -0.498611 0.722804 0.478467 0 -0.625567 0.749182 0.217681 0 -0.616206 0.774355 0.143686 0 -0.691922 0.696158 0.191309 0 -0.874975 0.458293 0.156135 0 -0.906516 0.409397 0.102979 0 -0.890352 0.398411 0.220304 0 -0.859195 0.219817 0.462013 0 -0.861424 0.145116 0.486695 0 -0.810609 0.241844 0.533306 0 -0.804342 -0.219305 0.552209 0 -0.84048 -0.145004 0.522068 0 -0.841507 -0.250848 0.478467 0 -0.905825 -0.363439 0.217681 0 -0.926874 -0.346758 0.143686 0 -0.875901 -0.442933 0.191309 0 -0.706244 -0.69053 0.156135 0 -0.669488 -0.735637 0.102979 0 -0.654046 -0.723659 0.220304 0 -0.474564 -0.749216 0.462013 0 -0.404208 -0.774419 0.486695 0 -0.480499 -0.696202 0.533306 0 -0.0399837 -0.832743 0.552209 0 -0.121816 -0.844153 0.522068 0 -0.021469 -0.877837 0.478467 0 0.0657361 -0.973799 0.217681 0 0.0433666 -0.988663 0.143686 0 0.150586 -0.969905 0.191309 0 0.438492 -0.885064 0.156135 0 0.492749 -0.864045 0.102979 0 0.486129 -0.845657 0.220304 0 0.565899 -0.682856 0.462015 0 0.61161 -0.623726 0.486703 0 0.513645 -0.672111 0.533316 0 0.779449 -0.295765 0.552248 0 0.765221 -0.37681 0.521958 0 0.828207 -0.291806 0.478448 0 0.946452 -0.238402 0.217681 0 0.953676 -0.26427 0.143686 0 0.968968 -0.156502 0.191309 0 0.977244 0.143534 0.156154 0 0.974012 0.201648 0.103054 0 0.954443 0.201049 0.220473 0 0.819481 0.324482 0.472395 0 0.76724 0.377827 0.518244 0 0.798131 0.269577 0.538799 0 -0.515981 0.646592 -0.561849 0 -0.578652 0.599708 -0.552715 0 -0.536956 0.689294 -0.486357 0 -0.511974 0.832656 -0.211093 0 -0.521375 0.844189 -0.124506 0 -0.43729 0.877937 -0.194918 0 -0.154957 0.974619 -0.161554 0 -0.0780013 0.989432 -0.122182 0 -0.101703 0.967386 -0.231971 0 0.0565057 0.884987 -0.462166 0 0.128163 0.864039 -0.486818 0 0.0205263 0.845653 -0.533329 0 -0.774392 -0.290919 -0.561849 0 -0.749169 -0.365011 -0.552715 0 -0.821486 -0.297672 -0.486357 0 -0.950112 -0.229612 -0.211093 0 -0.963985 -0.234988 -0.124506 0 -0.970098 -0.14459 -0.194918 0 -0.974801 0.153802 -0.161565 0 -0.965099 0.231582 -0.122235 0 -0.951383 0.202192 -0.232334 0 -0.819342 0.324698 -0.472487 0 -0.767171 0.378049 -0.518186 0 -0.798097 0.270103 -0.538587 0 0.0373803 -0.82639 -0.561849 0 0.11564 -0.825297 -0.552715 0 0.0292497 -0.873265 -0.486357 0 -0.0752271 -0.974564 -0.211093 0 -0.0744004 -0.989419 -0.124506 0 -0.162264 -0.967299 -0.194918 0 -0.447505 -0.879563 -0.161565 0 -0.518479 -0.846301 -0.122235 0 -0.48629 -0.842338 -0.232334 0 -0.561997 -0.678904 -0.472487 0 -0.596614 -0.612799 -0.518186 0 -0.503508 -0.675569 -0.538587 0 0.797492 -0.219816 -0.561854 0 0.820631 -0.145047 -0.552727 0 0.839563 -0.242035 -0.486359 0 0.903619 -0.372702 -0.211093 0 0.918003 -0.376506 -0.124506 0 0.869814 -0.453234 -0.194918 0 0.698227 -0.697402 -0.161565 0 0.644661 -0.754625 -0.122235 0 0.650839 -0.722786 -0.232334 0 0.472009 -0.744284 -0.472487 0 0.398443 -0.756779 -0.518186 0 0.486911 -0.687627 -0.538587 0 0.45675 0.69743 -0.552236 0 0.397643 0.754657 -0.521883 0 0.498797 0.722842 -0.478216 0 0.63371 0.744277 -0.21085 0 0.641804 0.756701 -0.124417 0 0.699853 0.687186 -0.194864 0 0.87903 0.448551 -0.161565 0 0.916893 0.379938 -0.122236 0 0.888529 0.395635 -0.232334 0 0.853687 0.21895 -0.472518 0 0.842735 0.145269 -0.518346 0 0.804134 0.250974 -0.538861 0 0.133834 -0.0025591 0.990964 0 0.181759 -0.0545586 0.981836 0 0.262833 -0.0833502 0.961219 0 0.213695 -0.0926866 0.971282 0 0.191914 0.0440153 0.980424 0 0.248485 0.0928201 0.964153 0 0.443367 -0.228734 0.86666 0 0.457244 -0.14178 0.877974 0 0.465983 -0.0529018 0.883211 0 0.382662 -0.216383 0.898175 0 0.324234 -0.142831 0.935135 0 0.448114 0.229703 0.863957 0 0.383301 0.208124 0.899854 0 0.295039 0.155256 0.942787 0 0.471167 0.150057 0.869193 0 0.47813 0.0335719 0.877645 0 0.10677 0.0807363 -0.990964 0 0.114978 0.150974 -0.981836 0 0.163644 0.221921 -0.961219 0 0.118403 0.200592 -0.971282 0 0.181133 0.0771953 -0.980424 0 0.255587 0.0709626 -0.964153 0 0.224245 0.445654 -0.86666 0 0.286582 0.383464 -0.877974 0 0.345893 0.316696 -0.883211 0 0.182393 0.399981 -0.898175 0 0.178357 0.306132 -0.935135 0 0.497548 0.0775617 -0.863957 0 0.432429 0.0569227 -0.899854 0 0.329949 0.0478144 -0.942787 0 0.469384 0.155546 -0.869193 0 0.406549 0.253878 -0.877645 0 0.252905 0.786844 0.562889 0 0.193999 0.774859 0.601642 0 0.149355 0.731617 0.665132 0 0.149944 0.764219 0.625404 0 0.286134 0.738699 0.610288 0 0.319947 0.685627 0.653836 0 -0.039811 0.618626 0.784671 0 0.044375 0.595971 0.801786 0 0.12929 0.569392 0.811835 0 -0.011931 0.667944 0.744095 0 0.0763214 0.702042 0.70804 0 0.394549 0.472779 0.78791 0 0.391923 0.537647 0.746529 0 0.365504 0.628153 0.686898 0 0.317454 0.492316 0.810469 0 0.208361 0.53281 0.82018 0 -0.670189 0.483686 0.562871 0 -0.676991 0.423965 0.601625 0 -0.649656 0.36813 0.665129 0 -0.680482 0.378766 0.625399 0 -0.614162 0.500547 0.610129 0 -0.553214 0.516634 0.653448 0 -0.600651 0.153304 0.784671 0 -0.553091 0.226375 0.801784 0 -0.501574 0.298933 0.811827 0 -0.63894 0.195064 0.744093 0 -0.644098 0.289537 0.708035 0 -0.327351 0.522034 0.7876 0 -0.389912 0.54071 0.745369 0 -0.484171 0.543703 0.68554 0 -0.36996 0.45424 0.810437 0 -0.442303 0.362785 0.820214 0 -0.667112 -0.487921 0.562871 0 -0.612416 -0.512844 0.601626 0 -0.550868 -0.504101 0.665129 0 -0.570509 -0.530132 0.625399 0 -0.665835 -0.429425 0.610129 0 -0.662301 -0.366489 0.653448 0 -0.331412 -0.52388 0.784671 0 -0.38621 -0.456067 0.801784 0 -0.439297 -0.38465 0.811827 0 -0.38296 -0.54739 0.744093 0 -0.474403 -0.523102 0.708035 0 -0.59764 -0.150012 0.7876 0 -0.634735 -0.20374 0.745369 0 -0.666709 -0.292461 0.68554 0 -0.546332 -0.211485 0.810437 0 -0.481709 -0.308549 0.820214 0 0.257891 -0.785237 0.562871 0 0.298497 -0.74092 0.601626 0 0.309201 -0.679682 0.66513 0 0.327888 -0.706405 0.6254 0 0.202653 -0.765947 0.610129 0 0.143889 -0.743137 0.653448 0 0.395534 -0.476658 0.785075 0 0.314184 -0.508019 0.802008 0 0.229987 -0.536575 0.811907 0 0.402171 -0.533195 0.744265 0 0.350886 -0.612808 0.708063 0 -0.0420116 -0.614746 0.787601 0 -0.00237692 -0.666627 0.74537 0 0.0721205 -0.724452 0.685541 0 0.0323013 -0.58494 0.810441 0 0.144549 -0.553442 0.820246 0 0.826713 0.00214713 0.562556 0 0.797317 0.0535421 0.601192 0 0.741624 0.0825084 0.665701 0 0.773119 0.0917811 0.625704 0 0.792105 -0.0455753 0.608681 0 0.754007 -0.0963845 0.649715 0 0.569223 0.230541 0.789195 0 0.507844 0.251467 0.823906 0 0.558317 0.154666 0.81509 0 0.520732 0.0945109 0.848485 0 0.56735 0.039608 0.822522 0 0.62529 0.207689 0.752235 0 0.686783 0.13133 0.714898 0 0.578946 -0.2225 0.784414 0 0.510003 -0.2401 0.825958 0 0.639455 -0.210619 0.739395 0 0.717431 -0.160968 0.677772 0 0.588164 -0.128639 0.798454 0 0.582979 -0.0372631 0.811631 0 0.525255 -0.0585771 0.848931 0 -0.252904 0.786844 -0.56289 0 -0.193996 0.774859 -0.601644 0 -0.149355 0.731616 -0.665133 0 -0.149941 0.764219 -0.625405 0 -0.286133 0.7387 -0.610287 0 -0.319947 0.68563 -0.653833 0 0.0398214 0.618113 -0.785075 0 -0.0444174 0.595666 -0.802011 0 -0.129297 0.569271 -0.811919 0 0.0119632 0.667753 -0.744267 0 -0.0763195 0.702015 -0.708067 0 -0.394583 0.47283 -0.787863 0 -0.391945 0.537691 -0.746486 0 -0.365504 0.628164 -0.686889 0 -0.317327 0.492259 -0.810553 0 -0.208203 0.532671 -0.82031 0 -0.82648 0.00256302 -0.562897 0 -0.796881 0.0545695 -0.601679 0 -0.742195 0.0833536 -0.664959 0 -0.773167 0.0926916 -0.625512 0 -0.790974 -0.04392 -0.610272 0 -0.750946 -0.092449 -0.653823 0 -0.576387 0.229035 -0.784419 0 -0.580591 0.141934 -0.801736 0 -0.581483 0.0529859 -0.811831 0 -0.631985 0.216528 -0.744096 0 -0.691373 0.142863 -0.708237 0 -0.571622 -0.229158 -0.787862 0 -0.632494 -0.206611 -0.746483 0 -0.710369 -0.153515 -0.686883 0 -0.566233 -0.149682 -0.810548 0 -0.570989 -0.0333845 -0.820276 0 -0.257834 -0.785237 -0.562897 0 -0.298148 -0.741016 -0.601679 0 -0.308625 -0.680111 -0.664959 0 -0.327077 -0.706682 -0.625512 0 -0.202654 -0.765833 -0.610272 0 -0.144131 -0.742761 -0.653823 0 -0.395939 -0.477401 -0.784419 0 -0.3144 -0.508315 -0.801736 0 -0.230081 -0.536649 -0.811831 0 -0.401225 -0.534143 -0.744096 0 -0.349517 -0.613388 -0.708237 0 0.0413015 -0.614458 -0.787862 0 0.00104775 -0.665384 -0.746483 0 -0.0735144 -0.723039 -0.686883 0 -0.0326201 -0.584774 -0.810548 0 -0.144695 -0.553359 -0.820276 0 0.66713 -0.487866 -0.562897 0 0.612615 -0.512542 -0.60168 0 0.551454 -0.503685 -0.664959 0 0.571022 -0.529445 -0.625512 0 0.665726 -0.42939 -0.610273 0 0.661867 -0.366599 -0.653826 0 0.331683 -0.524085 -0.784419 0 0.386283 -0.456089 -0.801736 0 0.439297 -0.384647 -0.811828 0 0.384015 -0.546647 -0.744097 0 0.475359 -0.521957 -0.708238 0 0.597089 -0.150576 -0.78791 0 0.633097 -0.204594 -0.746528 0 0.664927 -0.293338 -0.686894 0 0.546205 -0.211692 -0.810468 0 0.48175 -0.308578 -0.820179 0 0.670087 0.484192 -0.562556 0 0.676513 0.425333 -0.601195 0 0.648483 0.369165 -0.665701 0 0.679413 0.380174 -0.625706 0 0.614039 0.502459 -0.608681 0 0.553351 0.521171 -0.649715 0 0.596019 0.148069 -0.789195 0 0.558663 0.095062 -0.823906 0 0.542598 0.203043 -0.81509 0 0.476833 0.229618 -0.848485 0 0.482277 0.301436 -0.822522 0 0.627946 0.199512 -0.752235 0 0.632813 0.297433 -0.714898 0 0.337595 0.520302 -0.784414 0 0.271474 0.494017 -0.825958 0 0.393531 0.546256 -0.739395 0 0.4858 0.551921 -0.677772 0 0.400223 0.449785 -0.798454 0 0.449737 0.372813 -0.811631 0 0.390509 0.356127 -0.84893 0 0.0443054 0.126599 0.990928 0 0.0810037 0.0565706 0.995076 0 0.107533 0.155947 0.981901 0 0.193026 0.142619 0.970777 0 0.160545 0.225474 0.960915 0 0.153981 0.174996 0.971237 0 0.016033 0.195236 0.980625 0 -0.0160632 0.261941 0.964923 0 0.357546 0.357457 0.862773 0 0.419479 0.305783 0.854725 0 0.395963 0.406776 0.823231 0 0.294737 0.407873 0.864165 0 0.252512 0.471141 0.845154 0 0.187709 0.446941 0.874647 0 0.318068 0.307832 0.896689 0 0.227486 0.274838 0.93419 0 0.30735 0.236958 0.921633 0 -0.0750626 0.488975 0.869057 0 -0.0706657 0.559056 0.826087 0 -0.0846986 0.42169 0.902757 0 -0.0649824 0.321257 0.944757 0 0.0170373 0.468563 0.883273 0 0.108633 0.454177 0.884263 0 0.106421 0.516844 0.849443 0 -0.106279 0.0812016 0.990979 0 -0.0281915 0.0943865 0.995105 0 -0.11507 0.15027 0.981932 0 -0.0775936 0.226699 0.970872 0 -0.164989 0.222219 0.960921 0 -0.119336 0.200134 0.971256 0 -0.180539 0.0755483 0.980662 0 -0.254035 0.0656711 0.964935 0 -0.2292 0.449959 0.863131 0 -0.159553 0.490725 0.856594 0 -0.263696 0.502251 0.823511 0 -0.296665 0.40596 0.864406 0 -0.369865 0.385319 0.845429 0 -0.366628 0.3152 0.875346 0 -0.196561 0.396935 0.896541 0 -0.192824 0.300002 0.934245 0 -0.134541 0.361722 0.922537 0 -0.488239 0.0797144 0.869056 0 -0.553531 0.105552 0.826087 0 -0.427228 0.0497544 0.902756 0 -0.325604 0.0374669 0.944761 0 -0.440339 0.160899 0.883304 0 -0.398261 0.243212 0.88444 0 -0.458613 0.260754 0.849522 0 -0.109569 -0.0761981 0.991018 0 -0.0979271 0.00213327 0.99516 0 -0.17824 -0.0630843 0.981969 0 -0.239489 -0.00376007 0.970895 0 -0.26232 -0.0882456 0.960923 0 -0.227116 -0.0516783 0.971279 0 -0.127377 -0.148489 0.980676 0 -0.140857 -0.221358 0.964939 0 -0.498763 -0.0789367 0.863131 0 -0.516012 -0.000100958 0.856594 0 -0.559155 -0.0955854 0.823511 0 -0.477765 -0.156697 0.864406 0 -0.480755 -0.232693 0.845429 0 -0.413067 -0.251282 0.875346 0 -0.438248 -0.0642807 0.896542 0 -0.344898 -0.0906821 0.934247 0 -0.385591 -0.0161799 0.922539 0 -0.226687 -0.43971 0.869056 0 -0.271436 -0.493822 0.826087 0 -0.179043 -0.390739 0.902903 0 -0.136203 -0.298098 0.944765 0 -0.289095 -0.369067 0.883304 0 -0.354378 -0.303612 0.88444 0 -0.389711 -0.35559 0.849522 0 0.0392692 -0.128581 0.990886 0 0.0789166 -0.0594678 0.995075 0 -0.0316348 -0.0929685 0.995135 0 0.00532359 -0.189488 0.981874 0 -0.070253 -0.229047 0.97088 0 0.0028993 -0.276783 0.960913 0 -0.02081 -0.232186 0.971228 0 0.102053 -0.167866 0.980514 0 0.166708 -0.203683 0.964712 0 0.195501 -0.139672 0.97071 0 -0.0790512 -0.498757 0.863124 0 -0.159342 -0.490782 0.856601 0 -0.0818812 -0.561328 0.82351 0 0.00137 -0.502799 0.864409 0 0.0727127 -0.529111 0.845444 0 0.111271 -0.470465 0.875374 0 -0.0742657 -0.436652 0.896549 0 -0.0203286 -0.356032 0.93425 0 -0.103677 -0.37167 0.922568 0 0.346279 -0.352586 0.869347 0 0.385049 -0.410098 0.82675 0 0.414961 -0.304464 0.857397 0 0.3149 -0.29973 0.900541 0 0.31647 -0.222084 0.922251 0 0.23958 -0.224839 0.94448 0 0.260748 -0.389218 0.883478 0 0.178869 -0.430772 0.884556 0 0.21751 -0.480372 0.84967 0 0.110256 -0.0763786 -0.990928 0 0.0987846 0.00184614 -0.995076 0 0.178658 -0.0629586 -0.981901 0 0.23999 -0.00192375 -0.970777 0 0.262414 -0.0880466 -0.960915 0 0.227432 -0.0510675 -0.971237 0 0.127724 -0.148527 -0.980626 0 0.140957 -0.221363 -0.964923 0 0.499368 -0.0790284 -0.862773 0 0.519101 -0.000820062 -0.854726 0 0.559437 -0.0963473 -0.823231 0 0.478186 -0.156736 -0.864166 0 0.481214 -0.232739 -0.845155 0 0.414552 -0.251259 -0.87465 0 0.438261 -0.0620863 -0.896689 0 0.345583 -0.0886372 -0.934191 0 0.387931 -0.0110474 -0.921633 0 0.226428 -0.439927 -0.869014 0 0.271198 -0.494258 -0.825905 0 0.179183 -0.391021 -0.902753 0 0.136217 -0.298119 -0.944756 0 0.28908 -0.369169 -0.883267 0 0.354795 -0.303624 -0.884269 0 0.389851 -0.355632 -0.84944 0 -0.0382528 -0.128162 -0.990979 0 0.032671 -0.0929309 -0.995105 0 -0.00476919 -0.189207 -0.981932 0 0.0704685 -0.229015 -0.970872 0 -0.0028629 -0.276757 -0.960921 0 0.0210883 -0.232056 -0.971256 0 -0.101657 -0.167235 -0.980662 0 -0.166929 -0.202437 -0.964936 0 0.0787629 -0.498876 -0.863082 0 0.159038 -0.491147 -0.856448 0 0.0814691 -0.561505 -0.82343 0 -0.00156452 -0.502826 -0.864392 0 -0.0728853 -0.529061 -0.84546 0 -0.111369 -0.470486 -0.87535 0 0.0741188 -0.436737 -0.89652 0 0.0202909 -0.356059 -0.934241 0 0.10367 -0.371765 -0.922531 0 -0.348425 -0.351292 -0.869013 0 -0.386262 -0.410659 -0.825905 0 -0.316517 -0.291246 -0.902751 0 -0.24143 -0.221663 -0.94476 0 -0.26181 -0.388915 -0.883297 0 -0.179306 -0.430818 -0.884445 0 -0.217827 -0.480487 -0.849524 0 -0.133432 -0.00275708 -0.991018 0 -0.0779711 -0.0592855 -0.99516 0 -0.181279 -0.0537281 -0.981969 0 -0.195966 -0.13772 -0.970895 0 -0.264091 -0.0827947 -0.960923 0 -0.214118 -0.0916838 -0.971279 0 -0.190328 0.0452643 -0.980677 0 -0.24406 0.0963018 -0.964939 0 -0.45012 -0.229069 -0.863082 0 -0.417963 -0.303028 -0.856448 0 -0.508847 -0.250996 -0.82343 0 -0.4787 -0.153894 -0.864392 0 -0.52569 -0.0941708 -0.84546 0 -0.481873 -0.0394697 -0.87535 0 -0.392457 -0.20545 -0.89652 0 -0.332357 -0.129321 -0.934243 0 -0.321533 -0.213475 -0.922532 0 -0.441768 0.222817 -0.869013 0 -0.509922 0.240457 -0.825905 0 -0.3748 0.211027 -0.902751 0 -0.285404 0.161149 -0.944759 0 -0.450783 0.128815 -0.883297 0 -0.46514 0.0374003 -0.884445 0 -0.524282 0.0586871 -0.849524 0 -0.0438084 0.127106 -0.990886 0 0.0288906 0.0944965 -0.995075 0 -0.0802385 0.056619 -0.995135 0 -0.107071 0.156429 -0.981874 0 -0.191464 0.144016 -0.97088 0 -0.160343 0.225627 -0.960913 0 -0.15331 0.175613 -0.971228 0 -0.0161068 0.195792 -0.980513 0 0.0151481 0.262771 -0.964712 0 0.0760668 0.22791 -0.97071 0 -0.356955 0.357298 -0.863083 0 -0.417355 0.303864 -0.856448 0 -0.395955 0.406379 -0.823431 0 -0.294302 0.407693 -0.864398 0 -0.252022 0.470826 -0.845475 0 -0.186494 0.446023 -0.875374 0 -0.316682 0.309748 -0.89652 0 -0.225711 0.276123 -0.934241 0 -0.302386 0.239832 -0.922531 0 0.0729003 0.488786 -0.869347 0 0.0704618 0.558102 -0.82675 0 0.156751 0.490225 -0.857397 0 0.0785825 0.42758 -0.900541 0 0.125492 0.365686 -0.922251 0 0.0616684 0.322721 -0.94448 0 -0.017824 0.468149 -0.883478 0 -0.108484 0.453641 -0.884556 0 -0.106372 0.516475 -0.849674 0 0.388312 0.784628 0.483221 0 0.317637 0.794428 0.517618 0 0.404875 0.740627 0.536249 0 0.376302 0.699235 0.607844 0 0.456772 0.679759 0.57381 0 0.412984 0.706372 0.572819 0 0.455367 0.765442 0.454685 0 0.520423 0.742581 0.421526 0 0.524913 0.477658 0.704487 0 0.467086 0.455193 0.758058 0 0.576626 0.508556 0.639442 0 0.623236 0.536791 0.568711 0 0.486206 0.534002 0.691678 0 0.476581 0.613519 0.62966 0 0.431674 0.579806 0.691016 0 0.722768 0.614816 0.315595 0 0.667973 0.665519 0.332972 0 0.581487 0.723006 0.373008 0 0.710137 0.585073 0.391672 0 0.668948 0.553428 0.496207 0 0.366396 0.862841 0.348122 0 0.368977 0.829064 0.420056 0 0.431455 0.83703 0.336515 0 0.49606 0.786762 0.367337 0 0.49981 0.818412 0.283483 0 0.476109 0.814137 0.328851 0 0.370203 0.886852 0.276481 0 0.370109 0.906644 0.202406 0 0.694023 0.695306 0.186744 0 0.726853 0.643282 0.240617 0 0.64665 0.750512 0.136335 0 0.592964 0.80066 0.0856586 0 0.653955 0.717978 0.238374 0 0.574283 0.776505 0.259318 0 0.621711 0.722888 0.301545 0 0.38187 0.92234 -0.0587877 0 0.364396 0.931104 0.0153504 0 0.353939 0.926719 0.126169 0 0.453354 0.89079 -0.0312295 0 0.540326 0.840959 0.0288418 0 0.216864 0.913297 0.344654 0 0.291019 0.887466 0.357282 0 0.236967 0.93073 0.278575 0 0.301195 0.928064 0.219054 0 0.219251 0.955888 0.195391 0 0.252349 0.938485 0.230674 0 0.147953 0.935019 0.322256 0 0.076559 0.95101 0.299449 0 0.235088 0.970513 -0.053202 0 0.308534 0.947814 -0.0804783 0 0.158513 0.987285 -0.0123907 0 0.0806559 0.996285 0.0301698 0 0.260917 0.965286 0.0107881 0 0.235574 0.965768 0.108644 0 0.304545 0.950289 0.0649901 0 -0.156871 0.970646 0.182289 0 -0.0991866 0.967465 0.232697 0 -0.00271868 0.957762 0.287547 0 -0.0980675 0.987139 0.126302 0 0.000217854 0.997946 0.0640371 0 0.145746 0.866202 0.477893 0 0.207386 0.831375 0.515505 0 0.191012 0.888874 0.416361 0 0.08974 0.892133 0.442787 0 0.0608021 0.927805 0.368086 0 0.00276044 0.902183 0.43131 0 0.0506769 0.907494 0.414152 0 0.0953823 0.843363 0.52881 0 0.0450687 0.814427 0.578472 0 0.106646 0.786452 0.60838 0 -0.217642 0.923344 0.316322 0 -0.209501 0.94815 0.239047 0 -0.213238 0.891913 0.398789 0 -0.205656 0.85346 0.478864 0 -0.149686 0.934299 0.323498 0 -0.0714649 0.919789 0.385858 0 -0.0814883 0.947805 0.308296 0 -0.148485 0.693853 0.704636 0 -0.111704 0.644219 0.756655 0 -0.0823977 0.725289 0.683477 0 -0.00399377 0.719246 0.694758 0 0.00412267 0.773515 0.633764 0 -0.181547 0.741376 0.646077 0 -0.20465 0.807597 0.553084 0 -0.626584 0.611745 0.482793 0 -0.657493 0.547606 0.517463 0 -0.579919 0.61412 0.535316 0 -0.548791 0.575004 0.606799 0 -0.504707 0.645395 0.573331 0 -0.544217 0.611708 0.57208 0 -0.588853 0.669353 0.453011 0 -0.549592 0.723525 0.417623 0 -0.284102 0.648887 0.705849 0 -0.286049 0.586319 0.75791 0 -0.212162 0.657993 0.722492 0 -0.27839 0.706999 0.650125 0 -0.242876 0.759309 0.603724 0 -0.302138 0.772126 0.559045 0 -0.352538 0.636911 0.685594 0 -0.432051 0.653711 0.621282 0 -0.416278 0.595469 0.687131 0 -0.367167 0.872523 0.322308 0 -0.294048 0.905226 0.30669 0 -0.431132 0.839896 0.329651 0 -0.516558 0.773875 0.366442 0 -0.356947 0.839066 0.410573 0 -0.333364 0.803803 0.492713 0 -0.272076 0.836759 0.475201 0 -0.707465 0.615102 0.347954 0 -0.674666 0.607074 0.419791 0 -0.6629 0.669081 0.336019 0 -0.596438 0.71449 0.365748 0 -0.623254 0.728902 0.283244 0 -0.627279 0.704634 0.32807 0 -0.729044 0.626165 0.276426 0 -0.747894 0.632174 0.202393 0 -0.447212 0.874572 0.187399 0 -0.388765 0.888744 0.242937 0 -0.514106 0.846801 0.13651 0 -0.578267 0.811334 0.0857058 0 -0.482328 0.843076 0.237812 0 -0.562568 0.78544 0.25808 0 -0.499233 0.813355 0.298732 0 -0.758997 0.648442 -0.0586322 0 -0.772823 0.634413 0.0154448 0 -0.771978 0.623001 0.126173 0 -0.707027 0.706511 -0.0310994 0 -0.632823 0.773755 0.0288733 0 -0.801589 0.488474 0.34464 0 -0.75413 0.551018 0.357218 0 -0.811952 0.512982 0.278566 0 -0.789566 0.573246 0.219048 0 -0.841351 0.503906 0.195391 0 -0.814572 0.530007 0.23067 0 -0.843538 0.429648 0.322252 0 -0.880807 0.36669 0.299449 0 -0.850225 0.523724 -0.0531409 0 -0.805762 0.586809 -0.0801549 0 -0.889932 0.455938 -0.0123812 0 -0.922588 0.384605 0.0301679 0 -0.837322 0.546577 0.0108632 0 -0.845688 0.522506 0.108656 0 -0.809619 0.58336 0.0650321 0 -0.971615 0.150753 0.182289 0 -0.950764 0.204631 0.232697 0 -0.911726 0.293379 0.287547 0 -0.969129 0.211776 0.126302 0 -0.949032 0.308599 0.0640355 0 -0.778775 0.406284 0.477883 0 -0.726614 0.454148 0.51548 0 -0.78636 0.456339 0.416331 0 -0.82074 0.361032 0.442783 0 -0.863607 0.344534 0.368085 0 -0.857174 0.281415 0.43131 0 -0.847419 0.328628 0.414151 0 -0.772613 0.351328 0.528807 0 -0.760639 0.294535 0.578472 0 -0.715006 0.344454 0.608378 0 -0.945408 0.0783391 0.316322 0 -0.966483 0.0937475 0.239047 0 -0.914154 0.0728154 0.398789 0 -0.87524 0.0681429 0.478864 0 -0.934826 0.146355 0.323498 0 -0.896855 0.216263 0.385858 0 -0.926597 0.215388 0.308296 0 -0.705778 0.0731946 0.704636 0 -0.647207 0.0928381 0.756654 0 -0.715254 0.145763 0.683477 0 -0.685278 0.218464 0.694757 0 -0.734383 0.242951 0.633763 0 -0.761191 0.0564363 0.646077 0 -0.831311 0.0549276 0.553083 0 -0.775429 -0.406877 0.482793 0 -0.723981 -0.456094 0.517463 0 -0.763268 -0.361762 0.535316 0 -0.716447 -0.344245 0.606799 0 -0.76977 -0.280567 0.573331 0 -0.749941 -0.328553 0.57208 0 -0.818558 -0.353191 0.453011 0 -0.857946 -0.299111 0.417623 0 -0.704921 -0.0696802 0.705849 0 -0.646017 -0.090866 0.75791 0 -0.69135 0.0015533 0.722492 0 -0.758423 -0.0462899 0.650125 0 -0.797198 0.00365093 0.603724 0 -0.827701 -0.0487508 0.559045 0 -0.714679 -0.138467 0.685594 0 -0.755227 -0.208897 0.621282 0 -0.694962 -0.211893 0.687131 0 -0.943279 -0.0795726 0.322308 0 -0.951788 7.378e-05 0.30669 0 -0.932016 -0.150489 0.329651 0 -0.895624 -0.252135 0.366442 0 -0.908302 -0.080191 0.410573 0 -0.867478 -0.0686593 0.492713 0 -0.879881 -0.000186698 0.475201 0 -0.803616 -0.482762 0.347954 0 -0.785845 -0.454049 0.419791 0 -0.841181 -0.423698 0.336019 0 -0.86383 -0.346456 0.365748 0 -0.885823 -0.367507 0.283244 0 -0.863987 -0.378834 0.32807 0 -0.820805 -0.499866 0.276426 0 -0.832345 -0.515937 0.202393 0 -0.969963 -0.155066 0.187399 0 -0.96538 -0.0951006 0.242937 0 -0.964223 -0.227268 0.13651 0 -0.950318 -0.299248 0.0857058 0 -0.95086 -0.198196 0.237812 0 -0.920841 -0.29232 0.25808 0 -0.927818 -0.223459 0.298732 0 -0.851248 -0.52147 -0.0586322 0 -0.842178 -0.538954 0.0154448 0 -0.831063 -0.541677 0.126173 0 -0.890415 -0.454098 -0.0310994 0 -0.931438 -0.362747 0.0288733 0 -0.712271 -0.61141 0.34464 0 -0.757089 -0.546946 0.357218 0 -0.738782 -0.613692 0.278566 0 -0.789178 -0.573779 0.219048 0 -0.739235 -0.644457 0.195391 0 -0.755784 -0.610923 0.23067 0 -0.669287 -0.669483 0.322252 0 -0.620927 -0.724384 0.299449 0 -0.760825 -0.646772 -0.0531409 0 -0.807083 -0.584991 -0.0801549 0 -0.708627 -0.705483 -0.0123812 0 -0.650876 -0.758584 0.0301679 0 -0.778572 -0.627439 0.0108632 0 -0.758264 -0.642834 0.108656 0 -0.804994 -0.589725 0.0650321 0 -0.44362 -0.877476 0.182289 0 -0.488418 -0.840996 0.232697 0 -0.560759 -0.776444 0.287547 0 -0.500888 -0.856254 0.126302 0 -0.586762 -0.807221 0.0640356 0 -0.627054 -0.615111 0.477883 0 -0.656456 -0.550712 0.51548 0 -0.677002 -0.606856 0.416331 0 -0.596985 -0.669005 0.442783 0 -0.59454 -0.714872 0.368085 0 -0.532523 -0.728259 0.43131 0 -0.57441 -0.704392 0.414151 0 -0.572883 -0.626233 0.528807 0 -0.51517 -0.632395 0.578472 0 -0.548545 -0.573569 0.608378 0 -0.366652 -0.874928 0.316322 0 -0.387819 -0.890211 0.239047 0 -0.351741 -0.846911 0.398789 0 -0.335272 -0.811346 0.478864 0 -0.428069 -0.843847 0.323498 0 -0.482822 -0.786131 0.385858 0 -0.49118 -0.814688 0.308296 0 -0.287709 -0.648616 0.704636 0 -0.288292 -0.586842 0.756655 0 -0.359654 -0.635203 0.683477 0 -0.419534 -0.584229 0.694757 0 -0.457997 -0.623363 0.633763 0 -0.288895 -0.706496 0.646077 0 -0.309128 -0.77365 0.553084 0 0.147343 -0.863209 0.482793 0 0.210049 -0.829488 0.517463 0 0.108194 -0.837702 0.535316 0 0.106002 -0.787759 0.6068 0 0.028963 -0.818794 0.573331 0 0.0807278 -0.814765 0.57208 0 0.0829561 -0.887637 0.453011 0 0.0193518 -0.908385 0.417623 0 -0.151563 -0.691952 0.705849 0 -0.113211 -0.642477 0.75791 0 -0.215115 -0.657033 0.722492 0 -0.190341 -0.735608 0.650125 0 -0.24982 -0.757052 0.603724 0 -0.209409 -0.802256 0.559045 0 -0.0891576 -0.722489 0.685595 0 -0.034705 -0.782816 0.621282 0 -0.0132332 -0.726426 0.687131 0 -0.215811 -0.921701 0.322308 0 -0.294189 -0.905181 0.30669 0 -0.144885 -0.932903 0.329651 0 -0.036968 -0.929703 0.366442 0 -0.204415 -0.888627 0.410573 0 -0.202766 -0.846237 0.492713 0 -0.271721 -0.836874 0.475201 0 0.210803 -0.913465 0.347954 0 0.188987 -0.887692 0.419791 0 0.143021 -0.930941 0.336019 0 0.0625613 -0.928612 0.365748 0 0.0757854 -0.956034 0.283244 0 0.0933063 -0.938766 0.32807 0 0.221758 -0.9351 0.276426 0 0.233477 -0.95104 0.202393 0 -0.152258 -0.970408 0.187399 0 -0.207873 -0.947519 0.242937 0 -0.0818168 -0.98726 0.13651 0 -0.00906227 -0.996279 0.0857058 0 -0.105336 -0.965568 0.237812 0 -0.00654298 -0.966104 0.25808 0 -0.0741899 -0.95146 0.298732 0 0.232897 -0.970728 -0.0586322 0 0.252328 -0.967505 0.0154448 0 0.258353 -0.957775 0.126173 0 0.15672 -0.987159 -0.0310994 0 0.0571628 -0.997945 0.0288733 0 0.361381 -0.866346 0.34464 0 0.286223 -0.88905 0.357218 0 0.355359 -0.892264 0.278566 0 0.301827 -0.927861 0.219048 0 0.384479 -0.902202 0.195391 0 0.347472 -0.907578 0.23067 0 0.429895 -0.843412 0.322252 0 0.497053 -0.814384 0.299449 0 0.380009 -0.923451 -0.0531409 0 0.306957 -0.948354 -0.0801549 0 0.451977 -0.89195 -0.0123812 0 0.520325 -0.853436 0.0301679 0 0.356138 -0.934355 0.0108632 0 0.377055 -0.919799 0.108656 0 0.312105 -0.94783 0.0650321 0 0.697443 -0.693063 0.182289 0 0.648905 -0.724395 0.232697 0 0.565158 -0.773248 0.287547 0 0.659563 -0.74097 0.126302 0 0.586393 -0.807489 0.0640355 0 0.391234 -0.786444 0.477883 0 0.320902 -0.794506 0.51548 0 0.367949 -0.831396 0.416331 0 0.451783 -0.7745 0.442783 0 0.496161 -0.786349 0.368085 0 0.528057 -0.731504 0.43131 0 0.492414 -0.763965 0.414151 0 0.418552 -0.73836 0.528809 0 0.442247 -0.685371 0.578478 0 0.375986 -0.698938 0.60838 0 0.718804 -0.619074 0.316322 0 0.726798 -0.643928 0.239047 0 0.696767 -0.596234 0.39879 0 0.668032 -0.569577 0.478869 0 0.670265 -0.66788 0.323499 0 0.598455 -0.702119 0.38586 0 0.623031 -0.718892 0.308296 0 0.527991 -0.473706 0.704854 0 0.469048 -0.45478 0.757094 0 0.492922 -0.538292 0.683553 0 0.425967 -0.579458 0.694838 0 0.45132 -0.628186 0.633791 0 0.58272 -0.49289 0.646149 0 0.640271 -0.533045 0.553093 0 0.86653 -0.126695 0.482705 0 0.853909 -0.0567902 0.517254 0 0.830294 -0.156176 0.535007 0 0.78278 -0.143983 0.605418 0 0.787782 -0.225571 0.57314 0 0.800138 -0.175464 0.571508 0 0.869842 -0.195437 0.452967 0 0.869903 -0.26233 0.417612 0 0.612183 -0.357087 0.705487 0 0.578682 -0.303559 0.756968 0 0.558749 -0.406704 0.72274 0 0.641216 -0.408046 0.649886 0 0.64291 -0.471425 0.603693 0 0.698338 -0.447074 0.558969 0 0.660717 -0.308709 0.684202 0 0.734864 -0.27588 0.619565 0 0.690119 -0.239254 0.683018 0 0.809901 -0.49007 0.322308 0 0.769969 -0.559506 0.306689 0 0.842472 -0.426079 0.329649 0 0.872776 -0.322466 0.366432 0 0.781971 -0.469016 0.410559 0 0.742177 -0.454365 0.492669 0 0.711954 -0.51703 0.475192 0 0.933902 -0.0818012 0.347946 0 0.902659 -0.0946161 0.419754 0 0.929574 -0.151661 0.336014 0 0.902495 -0.227466 0.365743 0 0.932661 -0.223355 0.283244 0 0.921653 -0.201358 0.328068 0 0.95786 -0.0780606 0.276423 0 0.976641 -0.0718385 0.202393 0 0.875862 -0.444679 0.187399 0 0.836908 -0.490498 0.242937 0 0.913658 -0.382893 0.13651 0 0.944717 -0.316486 0.0857058 0 0.885759 -0.398558 0.237811 0 0.916797 -0.304766 0.258079 0 0.881966 -0.364579 0.298729 0 0.995186 -0.078473 -0.0586322 0 0.998126 -0.0589969 0.015445 0 0.990734 -0.0502609 0.126173 0 0.987274 -0.156 -0.0310994 0 0.966767 -0.254017 0.0288733 0 0.935614 0.0759611 0.344653 0 0.933989 -0.00254736 0.357205 0 0.958401 0.0622371 0.278586 0 0.975717 0.000328091 0.219049 0 0.976855 0.0868654 0.195395 0 0.970532 0.0500069 0.230676 0 0.934912 0.148208 0.322448 0 0.927918 0.221164 0.300009 0 0.995683 0.0760483 -0.05314 0 0.996793 -0.00112396 -0.0801547 0 0.987963 0.154231 -0.0123706 0 0.97245 0.231144 0.0302067 0 0.998677 0.0499766 0.0108676 0 0.991296 0.0743687 0.108666 0 0.997886 0.00393461 0.0650347 0 0.874168 0.449819 0.182991 0 0.888597 0.394091 0.234648 0 0.909127 0.299281 0.289687 0 0.908352 0.398618 0.126538 0 0.949135 0.308244 0.0642128 0 0.868805 0.128496 0.478117 0 0.854836 0.0592524 0.515444 0 0.904385 0.0928441 0.416419 0 0.876038 0.189426 0.443495 0 0.900636 0.228889 0.36942 0 0.858269 0.276809 0.432114 0 0.878359 0.232146 0.415001 0 0.831403 0.167615 0.529788 0 0.788229 0.203023 0.580882 0 0.780672 0.138612 0.60938 0 0.80654 0.500226 0.315053 0 0.835302 0.494855 0.239608 0 0.772033 0.56261 0.295629 0 0.772172 0.503438 0.387699 0 0.723497 0.529267 0.443225 0 0.733166 0.470516 0.490998 0 0.835276 0.437934 0.332427 0 0.845485 0.356565 0.39751 0 0.872941 0.373205 0.314184 0 0.621699 0.351914 0.699741 0 0.56637 0.410827 0.714426 0 0.578263 0.304363 0.756966 0 0.665522 0.292841 0.686508 0 0.680635 0.215484 0.70023 0 0.736842 0.222209 0.638499 0 0.673241 0.388969 0.628858 0 0.711075 0.430755 0.555716 0 0.662538 0.480533 0.574576 0 -0.388297 0.78464 -0.483213 0 -0.317631 0.794432 -0.517617 0 -0.404865 0.740643 -0.536235 0 -0.376301 0.699238 -0.607841 0 -0.456771 0.679763 -0.573806 0 -0.412982 0.706377 -0.572814 0 -0.455271 0.765577 -0.454554 0 -0.520261 0.742952 -0.421073 0 -0.525021 0.477601 -0.704445 0 -0.467286 0.454854 -0.758138 0 -0.576677 0.508562 -0.639391 0 -0.623253 0.536827 -0.568659 0 -0.486256 0.534008 -0.691637 0 -0.476588 0.613538 -0.629636 0 -0.431691 0.579829 -0.690986 0 -0.723002 0.615238 -0.314234 0 -0.667775 0.666763 -0.330872 0 -0.581114 0.724348 -0.37098 0 -0.710346 0.585179 -0.391135 0 -0.668967 0.553562 -0.496033 0 -0.365867 0.863027 -0.348215 0 -0.36881 0.82914 -0.420052 0 -0.430435 0.837569 -0.336478 0 -0.495459 0.787607 -0.366335 0 -0.499863 0.818782 -0.282318 0 -0.475642 0.814672 -0.328193 0 -0.367878 0.88762 -0.277121 0 -0.364276 0.908576 -0.204303 0 -0.699137 0.692023 -0.179731 0 -0.728281 0.642967 -0.237112 0 -0.74214 0.657358 -0.130655 0 -0.666428 0.735748 -0.120664 0 -0.651288 0.757387 -0.0470183 0 -0.592425 0.803118 -0.0634949 0 -0.654205 0.721907 -0.225492 0 -0.571579 0.782628 -0.246552 0 -0.621032 0.726183 -0.294952 0 -0.383414 0.922269 0.0490425 0 -0.405335 0.905253 0.127196 0 -0.35594 0.934255 -0.0210268 0 -0.341771 0.930582 -0.131163 0 -0.458074 0.888921 -0.000707395 0 -0.530865 0.84655 -0.0391559 0 -0.546313 0.837029 0.0305256 0 -0.21658 0.913164 -0.345185 0 -0.29063 0.887506 -0.357498 0 -0.236044 0.930624 -0.279703 0 -0.297872 0.928917 -0.21998 0 -0.217917 0.956251 -0.195108 0 -0.250692 0.938789 -0.231221 0 -0.147417 0.934352 -0.32443 0 -0.07575 0.949336 -0.304911 0 -0.232101 0.97078 0.0608806 0 -0.307672 0.948143 0.0799002 0 -0.213499 0.967826 0.133014 0 -0.155725 0.986947 0.0411914 0 -0.0786776 0.995552 0.0520327 0 -0.060021 0.997955 -0.0219418 0 -0.247086 0.968946 -0.00849674 0 -0.219613 0.969454 -0.109195 0 -0.292863 0.953787 -0.0673956 0 0.146788 0.971849 -0.184263 0 0.203766 0.970876 -0.125849 0 0.099157 0.966128 -0.238192 0 0.00283148 0.954501 -0.298185 0 0.0669554 0.988483 -0.135762 0 -0.00466162 0.996915 -0.078342 0 0.0495046 0.998294 -0.0310657 0 -0.145648 0.866148 -0.478021 0 -0.20735 0.831366 -0.515534 0 -0.190866 0.888766 -0.416658 0 -0.0894461 0.892009 -0.443095 0 -0.0604288 0.927028 -0.370101 0 -0.00198093 0.902419 -0.430822 0 -0.0500512 0.907331 -0.414559 0 -0.0953249 0.843359 -0.528828 0 -0.0450488 0.814422 -0.578481 0 -0.106639 0.786451 -0.608383 0 0.216652 0.923623 -0.316188 0 0.205942 0.948922 -0.239076 0 0.212935 0.891995 -0.398767 0 0.205591 0.853482 -0.478854 0 0.148952 0.933878 -0.32505 0 0.0713798 0.918993 -0.387765 0 0.0812901 0.946299 -0.312939 0 0.148716 0.693582 -0.704854 0 0.112155 0.643624 -0.757094 0 0.0823834 0.725217 -0.683556 0 0.00402131 0.719167 -0.694841 0 -0.00410781 0.77349 -0.633794 0 0.181717 0.74127 -0.64615 0 0.204658 0.807598 -0.55308 0 -0.866227 -0.126829 -0.483213 0 -0.8537 -0.0566122 -0.517618 0 -0.829503 -0.156183 -0.536234 0 -0.781299 -0.141817 -0.607838 0 -0.787643 -0.224357 -0.573806 0 -0.799423 -0.17449 -0.572813 0 -0.868793 -0.196413 -0.454554 0 -0.867359 -0.265213 -0.421073 0 -0.616466 -0.351738 -0.704445 0 -0.576991 -0.303858 -0.758138 0 -0.661875 -0.391298 -0.639391 0 -0.703149 -0.42686 -0.568659 0 -0.658133 -0.297441 -0.691637 0 -0.730783 -0.26367 -0.629635 0 -0.684851 -0.23139 -0.690983 0 -0.808546 -0.497497 -0.314234 0 -0.840483 -0.429051 -0.330872 0 -0.86847 -0.328836 -0.37098 0 -0.776047 -0.494749 -0.391135 0 -0.733191 -0.465165 -0.496033 0 -0.933847 -0.0812723 -0.348215 0 -0.902526 -0.0945477 -0.420053 0 -0.929587 -0.150545 -0.336478 0 -0.902164 -0.227826 -0.366335 0 -0.933175 -0.22238 -0.282318 0 -0.921781 -0.200615 -0.328193 0 -0.957857 -0.0755837 -0.277122 0 -0.976674 -0.0656814 -0.204303 0 -0.874198 -0.451072 -0.179731 0 -0.836549 -0.493949 -0.237112 0 -0.854519 -0.502682 -0.130655 0 -0.905675 -0.406452 -0.120664 0 -0.921576 -0.385366 -0.0470183 0 -0.94688 -0.315253 -0.0634949 0 -0.888735 -0.399104 -0.225492 0 -0.920951 -0.301759 -0.246552 0 -0.88255 -0.366234 -0.294952 0 -0.995611 -0.0796512 0.0490425 0 -0.986202 -0.105758 0.127196 0 -0.99852 -0.0498181 -0.0210269 0 -0.990649 -0.0374778 -0.131163 0 -0.986967 -0.160962 -0.000707397 0 -0.969163 -0.243284 -0.0391559 0 -0.964882 -0.260918 0.0305256 0 -0.935391 0.0761922 -0.345205 0 -0.933876 -0.00216074 -0.357505 0 -0.95801 0.0630821 -0.27973 0 -0.9755 0.00375795 -0.219982 0 -0.976789 0.0882467 -0.195109 0 -0.970308 0.0516777 -0.231228 0 -0.934109 0.148493 -0.32464 0 -0.926063 0.221374 -0.305529 0 -0.99499 0.0792462 0.06088 0 -0.996814 0.00037892 0.0799 0 -0.986432 0.0960248 0.133014 0 -0.986764 0.156882 0.0411886 0 -0.971138 0.23282 0.0520307 0 -0.967657 0.251307 -0.0219477 0 -0.997876 0.0644295 -0.00849958 0 -0.98987 0.0907145 -0.109201 0 -0.997604 0.0162079 -0.0673972 0 -0.878593 0.440092 -0.18543 0 -0.860213 0.49413 -0.125808 0 -0.887615 0.391154 -0.243115 0 -0.905937 0.298164 -0.300616 0 -0.919323 0.36922 -0.136146 0 -0.949545 0.303669 -0.0784061 0 -0.934117 0.355622 -0.0310824 0 -0.868708 0.128578 -0.478271 0 -0.854715 0.0594602 -0.51562 0 -0.904213 0.0929562 -0.41677 0 -0.875832 0.18949 -0.443873 0 -0.899801 0.229057 -0.371346 0 -0.85817 0.276785 -0.432326 0 -0.877999 0.23219 -0.415732 0 -0.831353 0.167871 -0.529785 0 -0.788299 0.203698 -0.580551 0 -0.780793 0.139678 -0.608982 0 -0.807257 0.49912 -0.314972 0 -0.837318 0.491222 -0.240045 0 -0.773043 0.56178 -0.294568 0 -0.772472 0.503034 -0.387626 0 -0.723621 0.529266 -0.443025 0 -0.733169 0.470521 -0.49099 0 -0.835072 0.436895 -0.334302 0 -0.844706 0.356114 -0.399563 0 -0.871529 0.37186 -0.31965 0 -0.622268 0.352864 -0.698756 0 -0.566679 0.410543 -0.714344 0 -0.580673 0.304741 -0.754965 0 -0.664492 0.29983 -0.684489 0 -0.68325 0.222162 -0.695582 0 -0.737581 0.224883 -0.636707 0 -0.673383 0.38943 -0.628421 0 -0.711084 0.430898 -0.555594 0 -0.66257 0.480574 -0.574505 0 -0.147057 -0.863023 -0.483213 0 -0.209966 -0.829411 -0.517618 0 -0.107791 -0.837168 -0.536234 0 -0.106558 -0.786883 -0.607838 0 -0.0300187 -0.818423 -0.573806 0 -0.0810856 -0.814217 -0.572813 0 -0.0816717 -0.886967 -0.454554 0 -0.0157956 -0.906863 -0.421073 0 0.144024 -0.694987 -0.704445 0 0.110686 -0.642649 -0.758138 0 0.167616 -0.750398 -0.639391 0 0.188683 -0.800641 -0.568659 0 0.0795085 -0.717836 -0.691637 0 0.0249405 -0.776495 -0.629635 0 0.00843468 -0.722836 -0.690983 0 0.223293 -0.922708 -0.314234 0 0.148328 -0.931931 -0.330872 0 0.04437 -0.92758 -0.37098 0 0.230722 -0.890951 -0.391135 0 0.21583 -0.84105 -0.496033 0 -0.21128 -0.913255 -0.348215 0 -0.188976 -0.88757 -0.420053 0 -0.144081 -0.930611 -0.336478 0 -0.0621087 -0.928412 -0.366335 0 -0.0768706 -0.956221 -0.282318 0 -0.0940501 -0.938659 -0.328193 0 -0.22411 -0.934333 -0.277122 0 -0.239342 -0.949169 -0.204303 0 0.158853 -0.970801 -0.179731 0 0.211266 -0.948244 -0.237112 0 0.214018 -0.968033 -0.130655 0 0.10669 -0.986949 -0.120664 0 0.081722 -0.995556 -0.0470183 0 0.00722113 -0.997955 -0.0634949 0 0.104936 -0.968567 -0.225492 0 0.0024002 -0.969125 -0.246552 0 0.0755859 -0.952528 -0.294952 0 -0.231908 -0.971496 0.0490425 0 -0.204172 -0.970615 0.127196 0 -0.26118 -0.965044 -0.0210269 0 -0.270484 -0.953745 -0.131163 0 -0.151906 -0.988402 -0.00070739 0 -0.0681112 -0.996908 -0.0391559 0 -0.0500171 -0.998285 0.0305256 0 -0.361515 -0.866065 -0.345205 0 -0.286528 -0.888836 -0.357505 0 -0.356036 -0.891628 -0.27973 0 -0.30502 -0.926594 -0.219982 0 -0.385772 -0.901712 -0.195109 0 -0.34899 -0.906849 -0.231228 0 -0.42988 -0.842503 -0.32464 0 -0.496709 -0.81233 -0.305529 0 -0.382836 -0.921803 0.06088 0 -0.308393 -0.947909 0.0799 0 -0.396149 -0.90848 0.133014 0 -0.45413 -0.889989 0.0411886 0 -0.521523 -0.851662 0.0520308 0 -0.53803 -0.842638 -0.0219477 0 -0.369637 -0.929127 -0.00849958 0 -0.392161 -0.91339 -0.109201 0 -0.323691 -0.94377 -0.0673972 0 -0.690053 -0.699595 -0.18543 0 -0.735766 -0.665416 -0.125808 0 -0.646298 -0.723299 -0.243115 0 -0.563521 -0.76946 -0.300616 0 -0.635235 -0.760233 -0.136146 0 -0.582232 -0.809232 -0.0784061 0 -0.626874 -0.778504 -0.0310824 0 -0.390731 -0.786458 -0.478271 0 -0.320672 -0.794508 -0.51562 0 -0.367824 -0.831232 -0.41677 0 -0.450863 -0.77441 -0.443873 0 -0.4959 -0.784979 -0.371346 0 -0.528427 -0.730637 -0.432326 0 -0.492143 -0.763276 -0.415732 0 -0.416557 -0.738789 -0.529785 0 -0.437326 -0.686771 -0.580551 0 -0.37412 -0.699415 -0.608982 0 -0.724147 -0.613511 -0.314972 0 -0.725926 -0.64454 -0.240045 0 -0.773168 -0.561608 -0.294568 0 -0.717121 -0.579219 -0.387626 0 -0.726973 -0.524652 -0.443025 0 -0.674053 -0.551886 -0.49099 0 -0.673563 -0.659192 -0.334302 0 -0.599713 -0.693317 -0.399563 0 -0.622978 -0.713962 -0.31965 0 -0.527885 -0.482771 -0.698756 0 -0.565563 -0.412078 -0.714344 0 -0.469264 -0.458083 -0.754965 0 -0.490495 -0.539317 -0.684489 0 -0.422425 -0.581158 -0.695582 0 -0.441801 -0.631989 -0.636707 0 -0.578457 -0.520085 -0.628421 0 -0.629545 -0.543126 -0.555594 0 -0.661798 -0.481636 -0.574505 0 0.77534 -0.406548 -0.483213 0 0.723934 -0.455992 -0.517618 0 0.762884 -0.361214 -0.536234 0 0.715441 -0.344502 -0.60784 0 0.76909 -0.281456 -0.573807 0 0.749309 -0.328723 -0.572814 0 0.818317 -0.351762 -0.454554 0 0.857596 -0.295258 -0.421073 0 0.705424 -0.0778977 -0.704487 0 0.645436 -0.0937125 -0.758058 0 0.765427 -0.0725051 -0.639435 0 0.819745 -0.0679689 -0.568681 0 0.707229 -0.146234 -0.691674 0 0.746184 -0.216226 -0.629653 0 0.690037 -0.215339 -0.691013 0 0.946548 -0.0727678 -0.314234 0 0.932154 -0.146914 -0.330873 0 0.895892 -0.244439 -0.370981 0 0.91864 -0.0558881 -0.391137 0 0.866575 -0.0546335 -0.496044 0 0.803268 -0.483151 -0.348215 0 0.785733 -0.454001 -0.420054 0 0.84054 -0.424604 -0.336478 0 0.863779 -0.345964 -0.366335 0 0.885666 -0.368597 -0.282318 0 0.863655 -0.379509 -0.328193 0 0.81935 -0.501866 -0.277122 0 0.828753 -0.520937 -0.204303 0 0.972374 -0.148916 -0.179731 0 0.967118 -0.0920978 -0.237112 0 0.986789 -0.0955952 -0.130655 0 0.971613 -0.203516 -0.120664 0 0.972084 -0.229921 -0.0470183 0 0.951343 -0.301517 -0.0634949 0 0.953589 -0.199503 -0.225492 0 0.922435 -0.297193 -0.246553 0 0.929265 -0.222461 -0.294953 0 0.852284 -0.520766 0.0490425 0 0.860017 -0.494115 0.127196 0 0.837102 -0.546612 -0.0210269 0 0.823481 -0.551969 -0.131163 0 0.893084 -0.449904 -0.000707404 0 0.927068 -0.372839 -0.0391559 0 0.933969 -0.356056 0.0305256 0 0.711962 -0.61145 -0.345205 0 0.756791 -0.54717 -0.357505 0 0.737968 -0.614139 -0.27973 0 0.786987 -0.576425 -0.219982 0 0.738369 -0.645535 -0.195109 0 0.75462 -0.612141 -0.231228 0 0.668428 -0.669188 -0.32464 0 0.61908 -0.723422 -0.305529 0 0.758384 -0.648952 0.06088 0 0.806217 -0.586219 0.0799 0 0.741599 -0.657496 0.133014 0 0.706096 -0.706925 0.0411886 0 0.648819 -0.759175 0.0520307 0 0.635136 -0.772086 -0.0219477 0 0.769428 -0.638661 -0.00849958 0 0.747501 -0.65522 -0.109201 0 0.797552 -0.59949 -0.0673972 0 0.452116 -0.872466 -0.18543 0 0.405484 -0.90538 -0.125808 0 0.488181 -0.838178 -0.243115 0 0.557662 -0.773716 -0.300616 0 0.526726 -0.83907 -0.136146 0 0.589706 -0.803802 -0.0784061 0 0.546687 -0.836764 -0.0310824 0 0.627223 -0.614636 -0.478271 0 0.656529 -0.550493 -0.51562 0 0.676885 -0.606686 -0.41677 0 0.597183 -0.668102 -0.443873 0 0.593317 -0.714201 -0.371346 0 0.531584 -0.728344 -0.432326 0 0.573838 -0.703921 -0.415732 0 0.573907 -0.624468 -0.529785 0 0.518017 -0.628146 -0.580551 0 0.549574 -0.57194 -0.608982 0 0.35971 -0.87829 -0.314972 0 0.388671 -0.88957 -0.240045 0 0.295199 -0.908873 -0.294568 0 0.329267 -0.861011 -0.387626 0 0.274326 -0.853519 -0.443025 0 0.316581 -0.811605 -0.49099 0 0.418787 -0.844299 -0.334302 0 0.474063 -0.784608 -0.399563 0 0.486508 -0.813113 -0.31965 0 0.296017 -0.651233 -0.698756 0 0.217141 -0.665222 -0.714344 0 0.290652 -0.587852 -0.754965 0 0.36135 -0.633146 -0.684489 0 0.422177 -0.581337 -0.695582 0 0.464533 -0.615473 -0.636707 0 0.315877 -0.71086 -0.628421 0 0.322004 -0.766568 -0.555594 0 0.253556 -0.778241 -0.574505 0 0.626586 0.61182 -0.482696 0 0.657452 0.547855 -0.517253 0 0.579947 0.614376 -0.534991 0 0.548652 0.576591 -0.605417 0 0.504742 0.645537 -0.573139 0 0.544196 0.612262 -0.571504 0 0.589014 0.669327 -0.452841 0 0.550028 0.723474 -0.417134 0 0.285377 0.648722 -0.705486 0 0.289737 0.585725 -0.756968 0 0.212983 0.657456 -0.72274 0 0.278914 0.707019 -0.649879 0 0.243027 0.759293 -0.603683 0 0.30219 0.772182 -0.558939 0 0.353079 0.638112 -0.684199 0 0.432364 0.655137 -0.619558 0 0.417689 0.599203 -0.683016 0 0.367889 0.872701 -0.321 0 0.293402 0.905785 -0.305657 0 0.435573 0.838343 -0.327757 0 0.518215 0.773767 -0.364324 0 0.357178 0.839216 -0.410065 0 0.333404 0.803904 -0.492521 0 0.272035 0.836856 -0.475053 0 0.707799 0.614629 -0.34811 0 0.674776 0.606966 -0.41977 0 0.663835 0.66806 -0.336202 0 0.597337 0.714239 -0.36477 0 0.624405 0.728336 -0.282165 0 0.628342 0.703909 -0.327614 0 0.730525 0.624149 -0.277076 0 0.75154 0.627215 -0.204293 0 0.442582 0.878396 -0.180371 0 0.388172 0.889947 -0.239457 0 0.395379 0.909039 -0.131474 0 0.493967 0.861045 -0.120863 0 0.519058 0.853453 -0.0470988 0 0.580751 0.8116 -0.0634945 0 0.486285 0.844377 -0.224798 0 0.569387 0.784629 -0.245259 0 0.503424 0.813188 -0.292076 0 0.758467 0.649889 0.0486013 0 0.735514 0.665599 0.126312 0 0.778514 0.627239 -0.0213189 0 0.779406 0.612622 -0.131206 0 0.70376 0.710447 -0.000903493 0 0.641033 0.766511 -0.0391954 0 0.627203 0.778266 0.030426 0 0.801537 0.488173 -0.345187 0 0.754275 0.550676 -0.357439 0 0.812128 0.512071 -0.27972 0 0.791403 0.570348 -0.219979 0 0.842108 0.50275 -0.195109 0 0.815371 0.528527 -0.231225 0 0.842992 0.428926 -0.324633 0 0.879321 0.365232 -0.305528 0 0.851337 0.521099 0.0605989 0 0.806409 0.586065 0.0790791 0 0.854213 0.502725 0.132481 0 0.890419 0.453299 0.0410576 0 0.92245 0.382612 0.0521165 0 0.930558 0.365484 -0.0219365 0 0.845056 0.534589 -0.00866481 0 0.854115 0.508479 -0.109236 0 0.816557 0.57332 -0.0675143 0 0.969476 0.160382 -0.18543 0 0.986369 0.105861 -0.125808 0 0.94801 0.205278 -0.243115 0 0.908174 0.29128 -0.300617 0 0.960769 0.241662 -0.136144 0 0.946687 0.312465 -0.0784007 0 0.964744 0.261364 -0.031065 0 0.778365 0.406664 -0.478228 0 0.726402 0.454494 -0.515474 0 0.786169 0.456316 -0.416716 0 0.819923 0.361544 -0.443873 0 0.862589 0.343583 -0.371344 0 0.856963 0.280498 -0.432328 0 0.84679 0.328241 -0.415732 0 0.771117 0.353061 -0.529838 0 0.757016 0.299045 -0.580901 0 0.713049 0.346724 -0.609385 0 0.946459 0.0707 -0.314974 0 0.966137 0.0947563 -0.240045 0 0.955611 -0.000105984 -0.294569 0 0.920614 0.0470944 -0.387637 0 0.896512 -0.00284881 -0.443033 0 0.8697 0.0502961 -0.491008 0 0.932383 0.137398 -0.334312 0 0.892687 0.208424 -0.399582 0 0.923653 0.211437 -0.319656 0 0.709815 0.0807207 -0.699741 0 0.699681 0.000537471 -0.714426 0 0.646724 0.0936593 -0.756966 0 0.710543 0.15427 -0.686511 0 0.677301 0.225736 -0.700233 0 0.726722 0.253328 -0.638509 0 0.773289 0.0810355 -0.628864 0 0.82845 0.0694624 -0.555737 0 0.818461 0.000659717 -0.574567 0 0.348243547564817 0.0589000240793321 0.935398904456125 1 0.314711840560543 -0.0154458629646192 0.949026628919874 1 0.360991442918215 -0.0487756893142748 0.9312255930162 1 0.394839080145629 0.0255416572921337 0.918252046033793 1 0.355150792294345 0.0050723538724573 0.934641850851617 2 0.270387466279645 0.00573131160810163 0.962768492357649 1 0.249801117240117 -0.0498621311495766 0.966965039927597 1 0.294078020929686 -0.0710410408675817 0.953176194670112 1 0.282469156376745 -0.0326767409985659 0.958739703729611 2 0.324907930804702 -0.100834093030577 0.940419632610615 1 0.358515238573005 -0.139333996874017 0.923052766959696 1 0.39490937644076 -0.0873696000073237 0.914619057993991 1 0.360155830209245 -0.0941612878327927 0.928157349519864 2 0.259929010816379 -0.11648193146321 0.9585592367761 1 0.29065926336153 -0.146251906503916 0.945550767545587 1 0.292601976898745 -0.108729195594924 0.950092553060893 2 0.316355335057871 0.157041534291149 -0.935398865911379 1 0.245528687726385 0.197479441671109 -0.949026635538953 1 0.263378415713056 0.251645678049389 -0.931225566673097 1 0.334443890548545 0.211416571521771 -0.918252035441949 1 0.290304311846115 0.204648832573876 -0.934641815617932 2 0.222117225446835 0.154293328584206 -0.962768505922619 1 0.172785203841744 0.187168689716385 -0.96696504540448 1 0.196157243696689 0.230328306013393 -0.953176215220582 1 0.209315638412365 0.192467478024135 -0.958739727354192 2 0.203587482107706 0.272552455891988 -0.940419606764489 1 0.208146499703697 0.32345326696777 -0.923052760315814 1 0.268133481036777 0.302805121219671 -0.914619051682281 1 0.236025509929217 0.28787216100433 -0.928157316230167 2 0.141820702023723 0.247018352602144 -0.958559220759822 1 0.149183890966221 0.289165269871898 -0.945550759956468 1 0.172810712459196 0.259950857220451 -0.950092539070692 2 0.26602427425258 0.629263654295653 0.730051030334756 1 0.203846844306596 0.678192640892839 0.705997885450033 1 0.16084927012652 0.653682160079273 0.739393967878102 1 0.223132736910963 0.605171561369938 0.764006966851291 1 0.213738561087499 0.64236995721219 0.735789253262979 2 0.233931462063711 0.702178619027571 0.672521358977731 1 0.18481403621523 0.73170787861658 0.65601864974336 1 0.154718840775807 0.70769421501535 0.689423740095175 1 0.194484722726611 0.705499795602914 0.681531415499115 2 0.118216158775382 0.693132091086229 0.711142937763556 1 0.0720579079524534 0.675941356831862 0.733411228240356 1 0.11477207308593 0.637055107778699 0.762301173538889 1 0.11657985595617 0.665553098268653 0.737232314051831 2 0.116387703500389 0.741308251017248 0.660987339910561 1 0.0798416323758658 0.726516129760661 0.682455383279487 1 0.117374786279337 0.717680663585544 0.686501853820257 2 -0.516240358124391 0.447814379954264 0.729845322329844 1 -0.582015507149003 0.403521399380468 0.705949659371494 1 -0.571987187554114 0.355014041197466 0.739373258412037 1 -0.506592229562938 0.399547826414614 0.763850077372092 1 -0.544880485464346 0.401983692003665 0.735685731226905 2 -0.595532758477495 0.439566084745062 0.672449260409489 1 -0.638791481784031 0.401910878368148 0.655992477507156 1 -0.625247743047013 0.365845245065134 0.689417229164788 1 -0.610878651583525 0.403032843709928 0.681494334196679 2 -0.622679119649937 0.326632019326045 0.711135876095033 1 -0.620593125909494 0.27742115218198 0.733405143672448 1 -0.570414093909347 0.3060553992559 0.762283782019793 1 -0.596957005276655 0.316567210841353 0.737219917058981 2 -0.669060785670933 0.339770835684372 0.660985420205186 1 -0.666286292358801 0.300444993302784 0.682452320140866 1 -0.646285354410427 0.333413005034243 0.686497317327417 2 -0.585424269493454 -0.352591737568641 0.729845353250152 1 -0.563624455622482 -0.42883521832117 0.705949683405686 1 -0.514392190962709 -0.434287346071196 0.739373267932345 1 -0.536538537293711 -0.358331060327929 0.763850128950021 1 -0.550686794441358 -0.393992771385202 0.735685789397125 2 -0.602081884773232 -0.430551671266516 0.672449228422966 1 -0.579637556142354 -0.483329103816853 0.65599248858036 1 -0.541151946147397 -0.481593888281076 0.689417211545297 1 -0.572079026885584 -0.45643618322742 0.681494324691101 2 -0.503063663060048 -0.491268748688502 0.711135877439939 1 -0.455616672391935 -0.504491365380672 0.733405148429244 1 -0.467343557918427 -0.447919810343418 0.762283773721128 1 -0.485542994785046 -0.469915530826963 0.737219921541997 2 -0.529892599655953 -0.531319577927082 0.660985454154998 1 -0.491633548590574 -0.54083338903886 0.682452298397177 1 -0.516807706007425 -0.511623842820548 0.686497316595366 2 0.154425006023119 -0.665724420319829 0.729849458312217 1 0.233675958510543 -0.668554251500357 0.705952237617295 1 0.254069930480202 -0.623410412579402 0.739382154484402 1 0.174984891669027 -0.620998536573137 0.763860184720159 1 0.20453302526888 -0.645478856397651 0.735692346151769 2 0.223425252963872 -0.705661120949023 0.672450314330655 1 0.280555687300059 -0.700624895822291 0.655993010731897 1 0.290797302768198 -0.663485541279972 0.689419313206893 1 0.257314105178601 -0.68512515816044 0.681495955288965 2 0.311761018473588 -0.630239470032858 0.711151397777439 1 0.338971568129231 -0.589168429286449 0.73345781260599 1 0.2815463726299 -0.582843359123424 0.762328003033736 1 0.296854655997916 -0.606964059942384 0.737250572148262 2 0.341567394358388 -0.668140864375687 0.660990458452365 1 0.362430964912102 -0.634683072025216 0.682471204173646 1 0.326876029346591 -0.649605709191542 0.686507828748335 2 0.693733298096147 -0.0713307748048093 0.71656267870188 1 0.711338669347089 0.00558074137983345 0.702793980185311 1 0.671899400445031 0.0245940741078127 0.740104177208244 1 0.654515560329122 -0.0523327452402841 0.754166006659833 1 0.68366558222912 -0.0234060085478278 0.72926027177104 2 0.744081078855273 -0.0110269664261994 0.668017445384703 1 0.753640613676307 0.048124323260959 0.655429970325831 1 0.720837887342668 0.0647414405359001 0.690118106309671 1 0.73305769181097 0.0268741215915201 0.679632711837505 2 0.693552786806968 0.0891901366420675 0.714910530547777 1 0.653880330207733 0.119845363139187 0.746950355496041 1 0.632547744201184 0.0552685403838505 0.772544908403746 1 0.663682461003875 0.0723030000055965 0.74443797421651 2 0.740230655734752 0.114264672277326 0.662559167749641 1 0.712963184640952 0.138728991322111 0.687331410505951 1 0.717426314688557 0.101807928891771 0.689244780020026 2 -0.266015945770532 0.629267594303714 -0.730051525261123 1 -0.203845337573912 0.678193630275665 -0.705997373233241 1 -0.16084937730877 0.65367557478822 -0.739400453974616 1 -0.223125615469983 0.605166620596615 -0.764013089521432 1 -0.213734390005502 0.642368440902861 -0.735792547387074 2 -0.233929441977949 0.702180558756065 -0.672520303368795 1 -0.184813537403667 0.731707899013462 -0.656019172283983 1 -0.154718838795794 0.707693213062258 -0.689424745354037 1 -0.194483709760191 0.705500270305311 -0.681531397491291 2 -0.118215198725337 0.693118037263275 -0.711156910304198 1 -0.0720592137839346 0.675885844913946 -0.733462877773404 1 -0.114774175522821 0.637005271722906 -0.762343435478836 1 -0.116580542354685 0.665521870675496 -0.737261244101518 2 -0.116386155711921 0.741303771576088 -0.660992866352108 1 -0.0798391599606848 0.726498957113111 -0.682474215660185 1 -0.117373551120495 0.717671559430973 -0.6865117707671 2 -0.680687530232181 -0.0586066068872521 -0.730031719238557 1 -0.708036637438638 0.0155038733271162 -0.705954717704173 1 -0.671441495187352 0.0488100431103767 -0.739363583621499 1 -0.644516286042212 -0.0252719956248311 -0.76399310925485 1 -0.677007082029202 -0.0049082267596656 -0.735760176226334 2 -0.740137499529814 -0.00565884403703364 -0.672479266331009 1 -0.753140437207415 0.0498845959672169 -0.655896448001065 1 -0.721022864157315 0.0710491663209954 -0.68931258087226 1 -0.731158595625852 0.0327169940986245 -0.681448451316056 2 -0.695809297453634 0.100856533362731 -0.711195011077512 1 -0.665210500524821 0.139385695862614 -0.733512764013099 1 -0.641382308650136 0.0874329970812455 -0.762297564756181 1 -0.669056518770469 0.0942043315449346 -0.737253421358003 2 -0.741108769183147 0.116491154416262 -0.66117679277951 1 -0.715714712961096 0.146275504179301 -0.682857679948675 1 -0.718916602375248 0.108745078870625 -0.68661997009726 2 -0.154605896166404 -0.665482426022768 -0.73003171885075 1 -0.233540666297648 -0.668591867563978 -0.705954722472429 1 -0.253908007636025 -0.62349591564745 -0.739363590669643 1 -0.175131283384642 -0.620780855914052 -0.763993120829343 1 -0.204538762581129 -0.645388691842124 -0.735760186483937 2 -0.2233332919474 -0.705660979773477 -0.672479276541674 1 -0.280176357137927 -0.700863449373401 -0.655896422288626 1 -0.290380349330426 -0.663777914017942 -0.689312587621612 1 -0.257056320422149 -0.685262795459036 -0.681448446905403 2 -0.310937436290664 -0.630587875113123 -0.711194990515747 1 -0.338124900213294 -0.589580110344793 -0.733512259511447 1 -0.281351411978763 -0.582972330147363 -0.762297036422139 1 -0.296343443730412 -0.607199849573769 -0.737253152455979 2 -0.33980526499537 -0.668838254630469 -0.661176790281817 1 -0.36028472280118 -0.63548374568352 -0.682857718678034 1 -0.325580506564877 -0.650126255234535 -0.686619979869083 2 0.58513780729307 -0.352671947920691 -0.730035410015301 1 0.563699872325705 -0.42871366223175 -0.705957755568003 1 0.514515998842753 -0.434148908303857 -0.739365958240203 1 0.536280909389368 -0.358379915128362 -0.76399706781948 1 0.550595484769416 -0.393956533385467 -0.735763462093898 2 0.602109587697998 -0.43046098071195 -0.672481848970315 1 0.5799817616745 -0.483041227959109 -0.655896938532121 1 0.541557554844715 -0.481285677204372 -0.689313638184874 1 0.572288690514468 -0.456230984755083 -0.681450281025068 2 0.503638763317421 -0.490580278145795 -0.711196501230309 1 0.456236895114039 -0.503765633743117 -0.733513261367796 1 0.46749559324212 -0.447727345576189 -0.762298980851453 1 0.485904835607509 -0.46947275559232 -0.737254818183941 2 0.531097849685909 -0.529855862557025 -0.661176783406985 1 0.49304665698083 -0.53902584503059 -0.682858214305591 1 0.517696657513902 -0.510544689585761 -0.686620754657198 2 0.519314803184494 0.465474175156813 -0.716562673518265 1 0.57876520862442 0.413599250758259 -0.702793975567523 1 0.558033838419469 0.375035094469797 -0.740104163333082 1 0.49875368819531 0.427052629439345 -0.754166032134457 1 0.539339236524429 0.42078426714413 -0.729260271579305 2 0.595492962538333 0.446280915719787 -0.668017457297491 1 0.637994761507453 0.404045412750535 -0.655429955322033 1 0.621223759616784 0.371320702668801 -0.690118095989184 1 0.60885223526342 0.409138753726183 -0.679632702870033 2 0.613520560809808 0.335503625787317 -0.714910503503135 1 0.599443464581987 0.287383987032176 -0.746950348748947 1 0.544227583580904 0.327088456791532 -0.772544906059004 1 0.579428811857057 0.331608035109947 -0.744437948870765 2 0.666021184678966 0.342653775985308 -0.662560163377692 1 0.658341413648702 0.306834413947817 -0.687332369890838 1 0.640250676684234 0.339327773711008 -0.689245237780651 2 0.0343289799573826 0.336391429385593 0.941000952518473 1 0.101339490830463 0.293665689736796 0.950497285854301 1 0.135060838515536 0.336270107083684 0.93193233187825 1 0.0680862408305973 0.379156584384705 0.922766653797734 1 0.0847978538119115 0.336769610319622 0.937640294879384 2 0.0716628813864946 0.255337766430863 0.96420527716944 1 0.123326531830408 0.222313917761045 0.967082156041715 1 0.1529963579076 0.260589683028199 0.953282045472522 1 0.112419392164704 0.258184746542493 0.959531338540543 2 0.186539006993062 0.285369077959868 0.940133519484753 1 0.229671810090734 0.319888577716137 0.919126292987427 1 0.178274058794118 0.370980906905481 0.911369398349401 1 0.182587271568482 0.328490309795072 0.926643767675614 2 0.190622880598282 0.212882030721053 0.958306484282959 1 0.224167193167755 0.237622509074969 0.945130707968075 1 0.188726445390249 0.249307829010604 0.949931253276812 2 -0.309362276186489 0.136611896753718 0.940985255713559 1 -0.24816651587744 0.187273892938421 0.950413749716948 1 -0.27829242011545 0.232460775668779 0.9318416352116 1 -0.339629499684548 0.181883008279085 0.92274436095555 1 -0.294211733361139 0.184769236836721 0.937583605920595 2 -0.220718714543199 0.147061131842757 0.964198973819876 1 -0.1733934608858 0.185894465221593 0.967081566052145 1 -0.200796897855144 0.226087095088021 0.953217945224854 1 -0.210939196826528 0.186726845093089 0.959490663970807 2 -0.214775166939997 0.265064784846687 0.940050955464863 1 -0.234335638954121 0.316438337246225 0.919140254484557 1 -0.298004333324374 0.283963893904077 0.91135398285895 1 -0.256630658285546 0.274778772613857 0.926580036921002 2 -0.144998203863899 0.245832861130023 0.958399638680325 1 -0.158958257805682 0.284823730091404 0.945297987005289 1 -0.180015946582963 0.255641741911743 0.94993417443148 2 -0.225497064644615 -0.252017110871624 0.940988701482877 1 -0.254771536329794 -0.178160218653025 0.950417561030642 1 -0.307078263324816 -0.192838212735872 0.931842179976729 1 -0.277927832487509 -0.266803684391976 0.922745508583181 1 -0.266628060132272 -0.222721366178493 0.937586100489841 2 -0.207989650208513 -0.164503620452753 0.964210422814643 1 -0.230317904484653 -0.107485170861904 0.967092901257242 1 -0.277066262997466 -0.121105411852109 0.953218921711417 1 -0.242729565500649 -0.142930035152943 0.959498223493395 2 -0.318456035275823 -0.122354822045786 0.940051967107382 1 -0.373360284250322 -0.12508259965491 0.919141849607973 1 -0.362152518241715 -0.195669973514042 0.911355021806363 1 -0.340630222611924 -0.159159803562006 0.926581133207564 2 -0.278592191404952 -0.0619380726291929 0.958404149443754 1 -0.319988915940452 -0.0631661024166342 0.945302707128288 1 -0.29874756028043 -0.0922097790973972 0.949937029192036 2 0.16938292454077 -0.293188761982342 0.940834760138269 1 0.0905760975364513 -0.297663840514334 0.950334101740456 1 0.088354890581568 -0.351638537469275 0.931858042508109 1 0.167221242626685 -0.347301190821083 0.922655570099758 1 0.129038818248475 -0.322819668507001 0.937492627090479 2 0.0921448780454676 -0.249164132224824 0.964078391538999 1 0.0311537015049892 -0.25248649027676 0.967030768812308 1 0.0295617027701914 -0.30094577128438 0.953212968057341 1 0.0609096372820756 -0.275283345073329 0.959421602378468 2 0.0179462305368217 -0.340675281230629 0.940051849660186 1 0.00355653823236782 -0.393729481458517 0.919146031997823 1 0.0740112449568612 -0.404883794162267 0.911369315395081 1 0.0460179636193097 -0.373134369933941 0.926586325706211 2 -0.0271380464275776 -0.284127416561591 0.958395758691318 1 -0.0387759745569541 -0.323857275293446 0.945300652851485 1 -0.00460470112778867 -0.3126329891549 0.94993130963951 2 0.2254579108593 -0.251995447283445 -0.941003609319448 1 0.254585879409182 -0.178022401290487 -0.950499064594873 1 0.306906479505087 -0.19266963717617 -0.931935453556352 1 0.277902226384693 -0.26675181851057 -0.922771257743519 1 0.266523590515951 -0.222627276228352 -0.937643855178117 2 0.208048067456378 -0.164457961660774 -0.964206419642898 1 0.230443596899143 -0.107367827824139 -0.967082198852298 1 0.276945233610264 -0.120894012553715 -0.953282594292796 1 0.242699220267772 -0.142802063952232 -0.959532341911085 2 0.318645380130716 -0.121225713942482 -0.940134644023872 1 0.37382884131364 -0.123800501693724 -0.919128312430732 1 0.362267646630049 -0.195352038487104 -0.911373950599057 1 0.340788085532902 -0.158437756547887 -0.926646667078635 2 0.279345622508268 -0.0601802277057688 -0.958306498500969 1 0.321024206916048 -0.0604794513522167 -0.945131208350523 1 0.299220356993985 -0.0907649101222448 -0.949931844476339 2 -0.170022788176436 -0.292329853580182 -0.940986986731347 1 -0.0907087723181448 -0.297368333971837 -0.950414417733786 1 -0.0885296560621794 -0.351631685448477 -0.931842917558936 1 -0.16790853274731 -0.346744399572586 -0.922746627231304 1 -0.129450422653848 -0.322395262199615 -0.937585568129725 2 -0.0921379087222571 -0.248701360625714 -0.964199610793841 1 -0.031015422439312 -0.252308210279018 -0.967081563723315 1 -0.0295622083459686 -0.300932838017538 -0.953218024666205 1 -0.0609070550863736 -0.275047298088396 -0.959491102010822 2 -0.0179838130040117 -0.340689063119768 -0.940048421402443 1 -0.00365043721889034 -0.393755981303468 -0.919134613461852 1 -0.0742425639068432 -0.4048917594706 -0.911350497929181 1 -0.0461527197479843 -0.373146069116046 -0.926577341916585 2 0.0271791985561812 -0.28411460828688 -0.9583989203708 1 0.0387800784778114 -0.323871182691313 -0.945295782763505 1 0.00460650039856861 -0.312633958361378 -0.94993274026185 2 -0.330547035979902 0.0713912137546459 -0.940990375231073 1 -0.31083072713233 -0.00560018461261111 -0.950418760540735 1 -0.361776962577826 -0.0244618722836744 -0.931843420120921 1 -0.381657490771914 0.0525445036338646 -0.922747273850011 1 -0.346610203251509 0.0235022787763082 -0.937588027511127 2 -0.264955164785381 0.0108475558016819 -0.964211597347368 1 -0.249508443559723 -0.0484167347845068 -0.967093422895129 1 -0.295335538814072 -0.0648742011596787 -0.953219572129089 1 -0.280382267595205 -0.0270302645857817 -0.95949924430491 2 -0.329568168738278 -0.0881713037271957 -0.940049971459809 1 -0.375609101261807 -0.118202293077267 -0.919135631140439 1 -0.408015906857463 -0.0545085410890206 -0.911350481468298 1 -0.369142512570211 -0.071412230223564 -0.926578120008681 2 -0.261799289101484 -0.11363402535152 -0.958403426395877 1 -0.296025364503017 -0.136952642182463 -0.945300531252786 1 -0.295901810020121 -0.100982785564191 -0.949935911936801 2 -0.0352963962816439 0.336757430086389 -0.940834273143144 1 -0.101682324491833 0.294056978964391 -0.950333516572285 1 -0.135199461217576 0.336421957992532 -0.931856168668324 1 -0.0688462949989357 0.379268620805924 -0.922653278490986 1 -0.0853491088351738 0.33701797982578 -0.937491262242973 2 -0.0719073701615079 0.255740697605445 -0.964078405252571 1 -0.123203560032132 0.222578312309911 -0.967030800813236 1 -0.152973542425735 0.260848271272489 -0.953212509951615 1 -0.112529119221475 0.25851237483454 -0.959421355382482 2 -0.185720451018284 0.286180287881394 -0.940046723592966 1 -0.228524255991954 0.320669139735706 -0.919137241177056 1 -0.178078009829462 0.371091879364516 -0.911362328450121 1 -0.182076074399871 0.328946302126352 -0.92658046084115 2 -0.188958793839708 0.213922060834468 -0.958394183027521 1 -0.221724186848579 0.239241286004206 -0.945294834770309 1 -0.187482917436301 0.250233451753981 -0.949928071917223 2 0.583821424149142 0.66542513337417 0.464843100013901 1 0.527005479643864 0.668512926438407 0.524679428252656 1 0.547719970882878 0.623559333154615 0.557723135554524 1 0.604958686315965 0.620865105615821 0.49827444512457 1 0.566593686199366 0.64539028436326 0.512009206395706 2 0.501706645823738 0.705401805010946 0.500762829759953 1 0.461443657663698 0.700502037345529 0.544316683011149 1 0.486688828850324 0.663593748896334 0.568201567562235 1 0.49460309315883 0.685041508495253 0.53490829426758 2 0.496769979236623 0.630656672270075 0.596345429437525 1 0.504484238954008 0.589904117042239 0.63047018714308 1 0.555874076371965 0.583296008090847 0.59235648889963 1 0.526688058933672 0.607398026384406 0.594757609972944 2 0.438689798818982 0.668370353129065 0.600684077972328 1 0.448598995608623 0.635231831426327 0.628635893770309 1 0.468024727854384 0.649927384172345 0.598897516712158 2 0.452055333432706 0.881512931243707 0.135272216111513 1 0.484223586595059 0.850603799678392 0.204774629027797 1 0.533075582124215 0.826424792448866 0.180919294776086 1 0.501302893703748 0.857899643257036 0.111491007688501 1 0.493276523480303 0.855179141110426 0.158297085561588 2 0.443989721488149 0.865555976543833 0.23183890561984 1 0.46966873865259 0.837921578692079 0.277870154646043 1 0.509861510809413 0.822925088091293 0.250821169454676 1 0.477310195639435 0.844918240102394 0.241513035407786 2 0.547309059130319 0.802222659996994 0.238804675945922 1 0.591276070476492 0.773824892993627 0.227093296642184 1 0.577527686173178 0.798680935518851 0.169374300943673 1 0.562803205959453 0.801007530369118 0.204228037378095 2 0.520295654255567 0.798562883039745 0.30261882171753 1 0.557562484060669 0.777596892964764 0.290535051036811 1 0.5341426466615 0.800901020675349 0.270887216190195 2 0.0528165457810032 0.978867525598482 0.196844376203119 1 0.134747262708876 0.972770357563377 0.188397201321245 1 0.137447331622625 0.981925242916758 0.129652652752223 1 0.0555773968766554 0.988712994420641 0.138144228311733 1 0.0952511757665373 0.981793815471228 0.163460361946612 2 0.140441456090353 0.961208152805107 0.23752848301973 1 0.198173332463422 0.95394809974963 0.224996709796122 1 0.19248921246908 0.965448284425932 0.175878277194063 1 0.166590217949114 0.964103711807393 0.206863511414478 2 0.200720027285958 0.970715105976636 0.132513513663928 1 0.213591045189597 0.973590845854755 0.080521968585641 1 0.150470473078954 0.98561349263854 0.0777281503200969 1 0.17571236002128 0.978840374265231 0.105196514085721 2 0.248991709203886 0.951871763519804 0.178695172612439 1 0.257166478846454 0.956820058963504 0.135292658673715 1 0.225002406131661 0.961904970073817 0.155703835790356 2 -0.0621119865828634 0.82311550040576 0.564220119774902 1 -0.0385116752382286 0.866197510855027 0.498146236957711 1 -0.0923819292395087 0.875215945044171 0.47470222770861 1 -0.11610152514455 0.83273049508377 0.541116653215367 1 -0.0773809329144307 0.850361532277678 0.520200970080508 2 0.0103679645186897 0.860146406537953 0.510003012338062 1 0.0219898853252135 0.888196693620845 0.458841894775082 1 -0.0268585444976592 0.894198206557341 0.446948041562479 1 -0.00826078282465821 0.877872058172258 0.478863893089729 2 -0.064024139396426 0.903307106394831 0.424347986607867 1 -0.106614547850856 0.913203803175225 0.393287610871436 1 -0.135070726366861 0.885858347526384 0.443988537556564 1 -0.0996149476468315 0.895197463264638 0.434472190511967 2 -0.000348627875442307 0.916415128889522 0.400214027191931 1 -0.0374845764691935 0.925232070843427 0.377469549912462 1 -0.032205126229864 0.910440757024477 0.412540410554003 2 -0.470105861062514 0.75802790402271 0.451896544189346 1 -0.478323098131963 0.710691683504552 0.515826195598409 1 -0.427753908152085 0.726511337706846 0.537609829046858 1 -0.419651235856495 0.774112279224954 0.473840610264156 1 -0.449476861423472 0.743202989265452 0.495362669383237 2 -0.521479337345624 0.694709386500796 0.495440486740806 1 -0.524447468979281 0.65587744089011 0.542827235845137 1 -0.481262946599396 0.671778522538445 0.563171259773841 1 -0.501776548690936 0.683810250025966 0.529736226320154 2 -0.445006138311926 0.676108497022554 0.587306678290033 1 -0.393814043932731 0.681687462438668 0.616508848540964 1 -0.376739737113847 0.732453914802101 0.567079559275171 1 -0.411268613248004 0.704959424003568 0.577755124250506 2 -0.499326674264598 0.62593309886695 0.599073130265101 1 -0.463073254996375 0.630217973368872 0.623198965102335 1 -0.472521634550543 0.651504470634937 0.593638633913585 2 -0.698663520700506 0.702348448937356 0.135258732368948 1 -0.659376946916951 0.723361757454472 0.204678657946331 1 -0.62133827648789 0.7623153228471 0.180808511993938 1 -0.661032865048008 0.741844836987056 0.111461226288805 1 -0.660927025257644 0.73337640696826 0.158233781267785 2 -0.685900124994952 0.689858914525285 0.231732207128363 1 -0.65136340223461 0.706062229813211 0.277662499415919 1 -0.624810710657344 0.73951183167868 0.250623374486445 1 -0.655879040576397 0.715258658664997 0.241360334063288 2 -0.594619791589483 0.768030146043492 0.23809816312598 1 -0.554323459638196 0.800928484001771 0.226309366159237 1 -0.581488405643835 0.795843770679442 0.169176339493831 1 -0.588459722470587 0.782468361728735 0.203773863801563 2 -0.599567579567158 0.74139805359816 0.301370430921154 1 -0.569241803892054 0.7697375913009 0.288804430880502 1 -0.597468921934899 0.755189855594218 0.26990720381529 2 -0.914636796162309 0.352718605401969 0.19684437539091 1 -0.883520364005552 0.428754764037541 0.188397210801537 1 -0.891392754508989 0.434152920383732 0.129652652732176 1 -0.923147340597049 0.358388021879942 0.138144241241378 1 -0.904307024643872 0.393981015882118 0.163460380929375 2 -0.870764457922963 0.430597507368428 0.237527980676304 1 -0.846019428439497 0.483260680585715 0.224996193708967 1 -0.858713247112091 0.481408361043779 0.175878274635903 1 -0.865437783224828 0.456361335819895 0.206863255394672 2 -0.861171406513448 0.490875432643751 0.132519550114006 1 -0.859914605972625 0.50402824056653 0.0805365025134278 1 -0.890862995451338 0.447702209462963 0.0777367620176526 1 -0.876623827693833 0.469609040662269 0.105203826402592 2 -0.828338405134873 0.530953474989474 0.178696688633645 1 -0.830510371875824 0.540268460401244 0.135300126358733 1 -0.845291081862908 0.511242708703633 0.155707594524213 2 -0.802022869298801 0.195284846361315 0.564220128527557 1 -0.835703448569493 0.231043407657982 0.498146240791658 1 -0.860927577298787 0.182596373792795 0.474702235565316 1 -0.827851175572841 0.146908701909977 0.541116642726394 1 -0.832653895864101 0.189182717849213 0.520200976534307 2 -0.814844163349354 0.275660582052214 0.510002511044571 1 -0.837930323149735 0.295381393588906 0.45884139118275 1 -0.858732768431517 0.250778566634598 0.446948023732612 1 -0.837458753016634 0.263421074562876 0.47886363236714 2 -0.878880610244115 0.218246777047491 0.42434799729898 1 -0.901454159586462 0.180798665515225 0.393287595299307 1 -0.884240812770474 0.14528513722065 0.443988553433921 1 -0.882166215837957 0.181891712202537 0.434472198405271 2 -0.871670598181645 0.28285597949957 0.400214037098715 1 -0.891531498249514 0.25026213231606 0.377469535007834 1 -0.875832631711155 0.250712659361586 0.412540404806206 2 -0.866198278798791 -0.212853723473283 0.451896530424016 1 -0.823718419979144 -0.23529603424 0.515826223704849 1 -0.823136955051458 -0.182313347745618 0.537609829909967 1 -0.865904096587154 -0.159898219002217 0.473840634078489 1 -0.845724376059721 -0.197815324417997 0.495362688784892 2 -0.821854207191755 -0.28127905026089 0.49544048880517 1 -0.785839851428573 -0.296101986231194 0.542827267270836 1 -0.787618025597345 -0.250117151670039 0.563171277476077 1 -0.805400016741879 -0.265908685652771 0.529736266309699 2 -0.780532047613424 -0.214296703751204 0.587306673233954 1 -0.77001837460434 -0.163886187491193 0.616508871277282 1 -0.813024020876507 -0.131959673285155 0.567079557270335 1 -0.797545341855819 -0.173294916086623 0.57775513257313 2 -0.749597848086565 -0.28146379493363 0.5990731145224 1 -0.742470070225053 -0.245660525517846 0.623198954646399 1 -0.765634720763565 -0.248068632890687 0.593638628709841 2 -0.883871541109405 -0.447431257478679 0.135258732624657 1 -0.891716360449978 -0.403573739574566 0.204678663214563 1 -0.917009190198457 -0.355359198440202 0.180808518228005 1 -0.909806703870346 -0.399437014443283 0.111461225956726 1 -0.901719969093173 -0.401953263093244 0.158233789066439 2 -0.868049256167133 -0.439152103309304 0.231732204836575 1 -0.872787210017425 -0.401298443909771 0.277662501616476 1 -0.896394491444877 -0.365708430178105 0.250623369442245 1 -0.882928927604809 -0.402751114512723 0.241360333561497 2 -0.914187608221144 -0.328182530508117 0.238098162667941 1 -0.933023517771779 -0.279692601874458 0.226309370159617 1 -0.936582303441314 -0.307099152430711 0.169176341164296 1 -0.92601571708588 -0.317862408348039 0.203773872268912 2 -0.890387820722992 -0.341118156450016 0.301370437428341 1 -0.907969218134807 -0.303519240453248 0.288804435422211 1 -0.902856135948938 -0.33486019844651 0.269907205888711 2 -0.618093937189033 -0.760875367696401 0.196844378419497 1 -0.680792818069753 -0.707784941932413 0.18839719886589 1 -0.688358839362296 -0.713603897154641 0.129652649599411 1 -0.626115123680476 -0.767217383569433 0.138144233764165 1 -0.654144273665171 -0.738300119488222 0.163460365469956 2 -0.67860365558324 -0.695084251882504 0.23752796650083 1 -0.72104247155279 -0.655276832087636 0.224996205984679 1 -0.723203265066366 -0.667921361546816 0.175878266553417 1 -0.701460313611113 -0.682056788609383 0.206863242966728 2 -0.73296617059241 -0.667333719529799 0.132519549437806 1 -0.745087587127033 -0.662074075849377 0.0805365050892252 1 -0.70108201720599 -0.708913225109299 0.077736769579388 1 -0.717516076324307 -0.688601431958179 0.105203835352915 2 -0.760937186001581 -0.623723354287586 0.178696684599017 1 -0.770466979284605 -0.622910501578265 0.135300118785607 1 -0.747429534624161 -0.645937022866057 0.155707581451681 2 -0.433565723958826 -0.702423495121769 0.564220142043147 1 -0.47798164054867 -0.723405420778836 0.498146228606261 1 -0.439700499412527 -0.7623651761707 0.474702222871778 1 -0.395538723585707 -0.741935980703217 0.541116658806225 1 -0.437227600400577 -0.733440521790047 0.520200972754257 2 -0.513969182923817 -0.689779373927375 0.510002507522876 1 -0.539858966675128 -0.705641107867852 0.458841375897086 1 -0.503867551322676 -0.7392087203171 0.446948037292487 1 -0.509317125096884 -0.715069242322869 0.478863624132262 2 -0.479154037341246 -0.768423310929887 0.424347986442863 1 -0.450514803566393 -0.801463925905186 0.393287594035081 1 -0.411420001577019 -0.796066937951869 0.443988535676812 1 -0.4455937182711 -0.782782120687994 0.434472179231695 2 -0.538373411627137 -0.741600644958682 0.400214034655916 1 -0.513512262302973 -0.770561596777394 0.377469549425873 1 -0.509089260549016 -0.755491930093167 0.412540412885215 2 -0.0652337380960146 -0.889578454980242 0.451896529343491 1 -0.0307628916049729 -0.856112877256664 0.515826209429223 1 -0.0809731073454956 -0.839187554000599 0.537609853795661 1 -0.115506863419058 -0.872934619068577 0.473840593988072 1 -0.0732095282656796 -0.865459626142839 0.495362672173289 2 0.0135455037307624 -0.868549354418914 0.495440466432191 1 0.0387717957772098 -0.838877867505326 0.542827256900739 1 -0.00551173787074784 -0.826358923215807 0.563171227287161 1 0.00401200607960708 -0.848150597653351 0.529736219970631 2 -0.0373892225342215 -0.808550929112907 0.587306663477052 1 -0.0820836157981974 -0.782974662437923 0.616509404243701 1 -0.125737280651622 -0.814009938358248 0.567080086483791 1 -0.0816417848494645 -0.812061752037577 0.577755420278828 2 0.0360493973770711 -0.799886447425279 0.599073128433338 1 0.00420116526410851 -0.782043830738686 0.623198882080013 1 -0.000666817436722132 -0.804818708712618 0.59363856908159 2 0.152401081452649 -0.978875412611673 0.135258723836815 1 0.108266102833647 -0.972783368780642 0.204678652433754 1 0.0545954300535402 -0.981938911292807 0.180808506650673 1 0.0987414376766274 -0.988709972466976 0.111461227517724 1 0.103633550034133 -0.981796544100294 0.158233774494992 2 0.149416281179711 -0.961269122189457 0.231732203217062 1 0.111951125772904 -0.954077965518834 0.277662487378446 1 0.0708083682436649 -0.965531840263907 0.250623370360266 1 0.110198973022102 -0.964172031876237 0.24136032008433 2 0.0296206736814867 -0.970857931511363 0.238098158062558 1 -0.0223167791960272 -0.973787832979418 0.226309361372054 1 0.00264880860061238 -0.985641005811168 0.169176331187655 1 0.016150548735358 -0.978917789636536 0.203773851850293 2 0.0492773765372971 -0.952220829528994 0.301370445034687 1 0.00808565797008279 -0.957323028816344 0.288804447603835 1 0.0394729579226143 -0.962144863946912 0.269907211843042 2 0.532633730832172 -0.82296546214206 0.196844378798956 1 0.462766946196102 -0.866189936424802 0.188397198947399 1 0.465963126897171 -0.875184015346068 0.129652644382638 1 0.536186708479346 -0.832554041112871 0.138144242999755 1 0.5000233637322 -0.85027538904686 0.163460368133176 2 0.451363981713122 -0.860182814801729 0.237527975744221 1 0.400390712208553 -0.888243335619961 0.224996187557722 1 0.411749123821513 -0.894206316814636 0.175878279877276 1 0.431911312407789 -0.877895288263336 0.206863249087878 2 0.408173267434518 -0.903310244255021 0.13251955334696 1 0.399425192135179 -0.913212470945432 0.0805364983685706 1 0.457570245487927 -0.88583444370357 0.0777367669770789 1 0.433174295340386 -0.895187935574738 0.105203823196521 2 0.358053278125726 -0.916435530168404 0.178696700214545 1 0.354335261029844 -0.925248164822623 0.13530012903955 1 0.383354114159503 -0.910453628906117 0.155707605778801 2 0.534064663405306 -0.62938435299052 0.564245442314329 1 0.540295301344913 -0.678126882008596 0.498152304952004 1 0.589178234533038 -0.653759392234074 0.474707274236002 1 0.583394856455074 -0.605429371656503 0.541140959004201 1 0.562433139762201 -0.642460974398622 0.520216547381258 2 0.497194407309905 -0.701962386027979 0.510009157379235 1 0.504279435653488 -0.731490942625719 0.45884287857522 1 0.547326088053052 -0.707633893392193 0.446949098449335 1 0.522684105661686 -0.705355157750109 0.478867516676031 2 0.582747720158007 -0.693157764811267 0.424350048991837 1 0.623021057934352 -0.676129964720941 0.393290112150678 1 0.629969678327357 -0.637277264708775 0.443994168030137 1 0.606774680019894 -0.665675175435366 0.434476062299949 2 0.538937830703628 -0.741190634013759 0.400214044553995 1 0.574163865584756 -0.726495732186078 0.377470563115791 1 0.561198680162151 -0.717632177883405 0.412541484086563 2 0.825864746378076 -0.337011601173783 0.451871878480058 1 0.80459718356684 -0.294073918595839 0.515834830587255 1 0.773011632160698 -0.336584234613725 0.537571118958483 1 0.794526097667339 -0.379667943748484 0.473768353400954 1 0.800425974631331 -0.337230154663595 0.495329004595702 2 0.830228719946621 -0.255614154986677 0.495381451243326 1 0.809869985635069 -0.222438620778424 0.542677563642772 1 0.784179197795707 -0.260852931908824 0.563096446801011 1 0.807859777291399 -0.25845199677029 0.529666080114173 2 0.757841591897485 -0.286090543656141 0.58643936766657 1 0.720044886351825 -0.320618778374818 0.615306757683743 1 0.735542051432198 -0.371289498561036 0.566683132261298 1 0.747401828724416 -0.329002565958287 0.577115299589036 2 0.772761744391732 -0.213828481937851 0.597582448217747 1 0.746476868306141 -0.239053724654743 0.620972517462992 1 0.765871046993822 -0.250141836252175 0.592455753126299 2 0.978060574278748 -0.157547852981796 0.135258784022524 1 0.958628279228813 -0.197639901860642 0.204678661661596 1 0.950750917578126 -0.251512841945494 0.18080851708381 1 0.970832383961142 -0.211620128865091 0.111461280284048 1 0.965768957012862 -0.204831017016878 0.158233815454729 2 0.960393547470027 -0.154945970729825 0.231731687677283 1 0.94197695722083 -0.188355168967356 0.277661996324268 1 0.940156405095211 -0.231023357024308 0.250623363712389 1 0.951035570576065 -0.193140683965747 0.24136006905765 2 0.932494007301168 -0.271841170561792 0.23809766146053 1 0.919230846838588 -0.322142079751413 0.22630885985604 1 0.938219330899469 -0.302061103772716 0.169176338167901 1 0.935997165656844 -0.287142626706267 0.203773615748965 2 0.920842997177504 -0.247389151986207 0.301368936979428 1 0.912966313673083 -0.288141568206408 0.288802409644383 1 0.927251674293322 -0.259779486729715 0.269906189167454 2 0.947155081103222 0.252395262818664 0.197256113394378 1 0.966778901162615 0.172470459671884 0.188492340344001 1 0.97633214011359 0.172722315529973 0.129699639798345 1 0.957413699876384 0.252809447307403 0.138511916323387 1 0.963123407896674 0.212880649255487 0.163692004220921 2 0.95752911316428 0.163481196611365 0.237651354309078 1 0.968488150233119 0.106313822491714 0.225037025060841 1 0.977676335664805 0.115273282507249 0.175889817987512 1 0.968382161261942 0.139498683005867 0.20693142277611 2 0.985230030226915 0.109060095840915 0.132534165010805 1 0.991944433695968 0.097681696646691 0.0805521040583125 1 0.98387152938931 0.161451024416711 0.0777850821387922 1 0.985229470789351 0.135353034459517 0.105235293436164 2 0.982226303706368 0.0573350857223703 0.17869972888285 1 0.989458194787767 0.0510766381542024 0.135306125516939 1 0.984354930287984 0.0832471900412458 0.155716438469478 2 0.765719611317642 0.29224758433077 0.572792116714475 1 0.809582734371744 0.297319896020086 0.506093381388782 1 0.794051670659885 0.351461939396478 0.495754292584768 1 0.750466774989521 0.346544980937869 0.562667304286251 1 0.780857718250334 0.32227032630755 0.534954399435105 2 0.821129423082432 0.248855989716532 0.513654946477906 1 0.851097244161821 0.252441243986426 0.46020560572064 1 0.839475128143198 0.300857762249362 0.452577714549869 1 0.830982118033843 0.275088881304178 0.483520431709608 2 0.833277566094093 0.340858153432678 0.435371706624558 1 0.820984294045342 0.394201606437266 0.412869115757116 1 0.782152142434431 0.405014645796678 0.473502978115062 1 0.808490957232452 0.373296190028309 0.454868718343102 2 0.870115741823491 0.284394868163872 0.402525515545443 1 0.863904336442284 0.324364695197654 0.385285246217412 1 0.852339431914796 0.312860428286477 0.419258050158308 2 -0.583782492987986 0.665719549100209 -0.464469848833732 1 -0.526989572031608 0.66858674501609 -0.524605736257699 1 -0.547716796822357 0.623601635084568 -0.557679839211088 1 -0.60495046921956 0.621147152566866 -0.497947830704766 1 -0.566581470351282 0.645568234536025 -0.511808432570222 2 -0.501676202435601 0.705491681748237 -0.500668256476109 1 -0.461430295156857 0.700533002781102 -0.544287894759631 1 -0.486686886218068 0.663604844924091 -0.568190612808116 1 -0.494588665706532 0.685094332385957 -0.53485729607913 2 -0.496772240767259 0.630675520132649 -0.596324721564953 1 -0.504498817508764 0.589928711685735 -0.63043575589553 1 -0.555884753975214 0.583345768232568 -0.59230119135988 1 -0.526694452911027 0.60743227724232 -0.59471949035804 2 -0.43868981974358 0.668375892116434 -0.600677604386874 1 -0.448602987764702 0.635244828117209 -0.628619369954557 1 -0.468025881812661 0.649939614292467 -0.598883938449684 2 -0.432817329956195 0.889802832436105 -0.144013957576163 1 -0.475089892236282 0.856128465783603 -0.203193166226827 1 -0.517127142152049 0.839159327239851 -0.167944159589058 1 -0.47504561364367 0.873149793694138 -0.108786233442731 1 -0.475572998978192 0.865572977702582 -0.156159306020742 2 -0.436914026216702 0.868591213024317 -0.233835055952514 1 -0.468155603931046 0.838863527576289 -0.277524039188341 1 -0.506278996906243 0.826310926546885 -0.246884102626519 1 -0.47198636042624 0.848152490061849 -0.240548913963772 2 -0.542300912553839 0.808416698892241 -0.229034108566104 1 -0.588394819753762 0.782816960463193 -0.202137268602202 1 -0.563503313834428 0.813976549978441 -0.1411089698315 1 -0.553437544443349 0.811973878798655 -0.185251480862146 2 -0.519806474671925 0.799829545982994 -0.300136273089323 1 -0.555806619008307 0.781900451480088 -0.28230819879543 1 -0.531455359583009 0.804725417203844 -0.264789342848028 2 -0.0514755197414854 0.974411591136651 -0.218379559632783 1 -0.128443374491513 0.971933273854967 -0.196950035448957 1 -0.116577727493438 0.98288369790902 -0.141991938926075 1 -0.0396126861732441 0.985692313573833 -0.163452468538579 1 -0.0841167655308582 0.979863764441226 -0.180401811982553 2 -0.138778497608341 0.959570133566963 -0.244923322471738 1 -0.196897286265418 0.953847508355534 -0.226438933381153 1 -0.18657111141897 0.966126497117998 -0.178461537869449 1 -0.162799276582335 0.963635249737331 -0.211861569434687 2 -0.187450662341121 0.972926048393365 -0.135491361207952 1 -0.18662953969246 0.979343655881676 -0.076937421342269 1 -0.115797638086881 0.989762432049741 -0.0834749169851482 1 -0.151771775127556 0.982276470511709 -0.109584090408567 2 -0.244488596564855 0.952905185065338 -0.179401186618417 1 -0.245407807751176 0.959757686653817 -0.136454176098405 1 -0.216136400954606 0.963634036982691 -0.157563533507797 2 0.0621426918793917 0.823087102753301 -0.564260010473762 1 0.0385608810255883 0.866141591894285 -0.498230435350606 1 0.0924016699286925 0.87513843667697 -0.47483927308487 1 0.11610203261224 0.832671622824239 -0.541203421662049 1 0.0774056814487595 0.850303159713191 -0.520286134730881 2 -0.0101864091197175 0.860169021034421 -0.509968281355848 1 -0.0214391007149199 0.888348541915039 -0.458553500257106 1 0.027277349499033 0.894271670833218 -0.446779423155205 1 0.00856092478357748 0.877917755817758 -0.478760574037158 2 0.0640080705936416 0.90283073261403 -0.425361810991054 1 0.106445359277459 0.912660502408228 -0.394584938599735 1 0.13493430241471 0.885676887863861 -0.444391423434447 1 0.0995378143349948 0.89486127390359 -0.435177812352339 2 0.000809721902666041 0.915828938539078 -0.40153903994548 1 0.0375137039432873 0.92418561177705 -0.380018628365078 1 0.032427653182724 0.909903391755778 -0.413708329641061 2 -0.813535369025477 -0.349491811379224 -0.464469352339713 1 -0.79871223270461 -0.2945921319556 -0.524605719155036 1 -0.762333702510868 -0.328206131067194 -0.557679819260509 1 -0.777685539272413 -0.383397441426271 -0.497947319277025 1 -0.789054781697586 -0.339359600041933 -0.51180816074373 2 -0.825988442262811 -0.25911372306754 -0.500668250331424 1 -0.808835790617989 -0.222370016987075 -0.544287866506253 1 -0.78151997693657 -0.257801609852721 -0.568190595931266 1 -0.804399328707466 -0.258676106315179 -0.534857261135187 2 -0.753318838419887 -0.277569705072766 -0.596324202152497 1 -0.716954023204839 -0.29750982363266 -0.630435204482186 1 -0.726572255952831 -0.348414346058276 -0.592301185902424 1 -0.740459589508854 -0.313209758815387 -0.594719192413214 2 -0.771226537675879 -0.210681406563869 -0.600676587856576 1 -0.742780299812461 -0.230348078171057 -0.628617836481127 1 -0.762757420633034 -0.244278070435941 -0.598883145459561 2 -0.980001103987968 -0.136669818517705 -0.144013962612755 1 -0.961037805691409 -0.187279401065798 -0.203193177129552 1 -0.957889129768493 -0.232502796901465 -0.167944155337855 1 -0.977212190356272 -0.181977245680056 -0.108786235659288 1 -0.970169272959474 -0.184820268661344 -0.156159311343992 2 -0.961093402101518 -0.147120514379663 -0.233835052716312 1 -0.942475226096203 -0.186019208574618 -0.277524050281258 1 -0.942317892351532 -0.226155947465892 -0.24688411177575 1 -0.952493256665281 -0.186792252971053 -0.240548927901478 2 -0.936430361428608 -0.265944863968669 -0.229034112637421 1 -0.926327142540482 -0.317693289721364 -0.202137270625881 1 -0.948269725656782 -0.284390832952211 -0.141108969313415 1 -0.943254716159344 -0.275436893395247 -0.185251478923911 2 -0.92131263235778 -0.247204621871114 -0.30013628714396 1 -0.915385194795383 -0.286983599194627 -0.282308201366451 1 -0.929568458692773 -0.256770643057856 -0.264789358034364 2 -0.942494391602508 0.252074235778307 -0.219054624125047 1 -0.964019491665674 0.178178268411534 -0.197138656153038 1 -0.970796475009393 0.192863450438415 -0.142024009394822 1 -0.949621316948203 0.266867400885492 -0.163977005436152 1 -0.957844955751666 0.222762667136958 -0.180758337546768 2 -0.955435236461529 0.164520254464932 -0.245153778520974 1 -0.96799655958163 0.107488727611587 -0.226488777119962 1 -0.976494246782568 0.121110520180746 -0.178467597922583 1 -0.966755824869727 0.142940926979811 -0.211980787637262 2 -0.98323357356463 0.122375706667519 -0.135499980263937 1 -0.989082150385984 0.125141068211762 -0.0769466673779249 1 -0.977100037035978 0.195732966722209 -0.0835079290370245 1 -0.981098881334513 0.159201999275214 -0.10960491213851 2 -0.981818359274957 0.0619417123879464 -0.179402740984901 1 -0.988619381932036 0.0631854300662858 -0.136458183833894 1 -0.983260850000997 0.0922221070874974 -0.157568651440086 2 -0.76570727720192 0.293250083793418 -0.57229189161625 1 -0.809483759701499 0.297686477184431 -0.506025238184717 1 -0.793944865326364 0.351679958552013 -0.495769842606486 1 -0.750405640385231 0.347380756345657 -0.562221467081099 1 -0.780775832340368 0.322871374765365 -0.534695902126298 2 -0.821076016763375 0.249183810440759 -0.51357801505338 1 -0.851003532617144 0.252491557465418 -0.460336697238813 1 -0.839356227240447 0.300953876527198 -0.452730439072381 1 -0.83088515855096 0.275297334433595 -0.483551780474059 2 -0.832778584624388 0.340723978439365 -0.436424438525599 1 -0.8205036928533 0.393834458241966 -0.414165405185424 1 -0.782024853639657 0.404982655467812 -0.473739976898268 1 -0.808168221182623 0.373208589220238 -0.455509330087561 2 -0.869352729633873 0.284146130389871 -0.404319334794527 1 -0.862842726854838 0.323916000673852 -0.388021978311458 1 -0.851702710623489 0.312666835017305 -0.420680549051995 2 0.0809900542670985 -0.881716469650898 -0.464469311126264 1 0.0333581748599555 -0.850654564730652 -0.524605723216669 1 0.0765685335115718 -0.826444147316631 -0.557679822664934 1 0.124314391206796 -0.858099040724453 -0.497947290444682 1 0.0789187540194939 -0.85530351652903 -0.511808126418504 2 -0.00881251775713282 -0.865632649064413 -0.500668266068541 1 -0.0384572804307829 -0.837965168851018 -0.544287888639187 1 0.00368112611953413 -0.822934969487684 -0.568190615683481 1 -0.00255729618541561 -0.844964875820288 -0.534857293149565 2 0.0311961374365027 -0.80222309275402 -0.596324209986038 1 0.061397514469236 -0.77379947471204 -0.63043524317325 1 0.106838428618104 -0.798677188133469 -0.592301208177499 1 0.0690655211498907 -0.801006332192397 -0.594719229795061 2 -0.0379519058483662 -0.798583659268396 -0.600676576562975 1 -0.0104576206004171 -0.777607381092962 -0.628617835542721 1 -0.00338263476808451 -0.800911526987821 -0.598883152287351 2 -0.17285653886374 -0.974270029621916 -0.144013963561652 1 -0.118864125454876 -0.971873754464769 -0.203193173572476 1 -0.0748806426268214 -0.982853629730197 -0.167944148964454 1 -0.12890430442551 -0.985618032186856 -0.108786241058503 1 -0.1240243543027 -0.979798361681193 -0.156159306462476 2 -0.157074127208544 -0.959516856394767 -0.233835056813163 1 -0.114325494837249 -0.953829959976015 -0.277524042022411 1 -0.0761051279459699 -0.966083288154434 -0.246884108077481 1 -0.116686522092217 -0.963596700874125 -0.240548924506956 2 -0.0364445438301716 -0.972779472564344 -0.229034101984031 1 0.0158934769771354 -0.979161848565482 -0.202137259208 1 -0.0225593552953938 -0.989739220307916 -0.141108961335828 1 -0.0295256303460339 -0.982202852693813 -0.185251458636043 2 -0.0495956159070453 -0.952610513545337 -0.300136277592946 1 -0.00993215391829964 -0.959265692412462 -0.282308196698727 1 -0.0430491422039747 -0.963418358535089 -0.264789344818685 2 -0.530984159348241 -0.818470266557165 -0.219054634031377 1 -0.467356504602122 -0.8617765793839 -0.197138655143374 1 -0.483416623471118 -0.863684047159413 -0.142024003489908 1 -0.547255104496927 -0.820677163070599 -0.163977003212169 1 -0.507850508651821 -0.842127181640505 -0.180758336467666 2 -0.45171411368797 -0.857832940991119 -0.24515377051814 1 -0.40135538558386 -0.887403475013878 -0.226488792244246 1 -0.416936536287333 -0.891275906385832 -0.178467599893793 1 -0.434689191662949 -0.875268016821405 -0.211980792835856 2 -0.420222209480968 -0.897294285800544 -0.135499971782284 1 -0.424659311322695 -0.902001978767895 -0.0769466668736032 1 -0.488093336062676 -0.868792200591616 -0.0835079212094701 1 -0.454586233309856 -0.883884059880717 -0.10960489921457 2 -0.362308474287794 -0.91462357809027 -0.179402732602982 1 -0.36559283645725 -0.920707350413474 -0.13645818848528 1 -0.391552732998578 -0.906638269543414 -0.157568645118439 2 -0.51551339970205 -0.63761183446901 -0.57229187907313 1 -0.533260648086046 -0.677874985016316 -0.506025242226486 1 -0.579809684338913 -0.646411476628522 -0.495769848142474 1 -0.562266212073387 -0.60633157118784 -0.562221444891712 1 -0.548341492161267 -0.642789350146528 -0.534695893197713 2 -0.490713787535879 -0.703887472501281 -0.513578001750845 1 -0.503107989121718 -0.731328105871827 -0.460336695634034 1 -0.545599460898238 -0.705275722793105 -0.452730438527797 1 -0.518580665441726 -0.705147281628569 -0.483551775635213 2 -0.581390600189833 -0.686729890610494 -0.436424437220717 1 -0.628108160894185 -0.658643496201345 -0.4141653782844 1 -0.626819736038883 -0.618603214937067 -0.473739963015818 1 -0.604679902644786 -0.653285733076537 -0.455509311392312 2 -0.538883607101582 -0.738997976908205 -0.40431933380305 1 -0.57469544400223 -0.720516570458524 -0.388021992267424 1 -0.560554412777622 -0.713398194243043 -0.42068055252033 2 0.863589048513384 -0.195438534260651 -0.464472354158589 1 0.819327531389756 -0.231140041674518 -0.524609298008962 1 0.809650770681854 -0.182561574899734 -0.557688320812829 1 0.8545118534101 -0.146934978141079 -0.497955518939623 1 0.837826547222464 -0.189245438661597 -0.511814046439157 2 0.820541798680104 -0.275875849025594 -0.50066977158904 1 0.7850676276172 -0.295520228821274 -0.544288900654329 1 0.78379372385631 -0.250799001524224 -0.568193633169302 1 0.802818149256622 -0.263539920483462 -0.534859596820629 2 0.772591684394626 -0.218228292372638 -0.59633591850499 1 0.75488053388686 -0.180724337710686 -0.630459112056699 1 0.792586140832421 -0.145195558556124 -0.592322516521599 1 0.783132684396667 -0.181837895874296 -0.59473566910471 2 0.747768127181814 -0.282868512944159 -0.600681171597008 1 0.736307857459792 -0.250235699731931 -0.6286308368105 1 0.760661719272107 -0.250709944020338 -0.598891312203883 2 0.873170150328973 -0.465462104529238 -0.144013955678934 1 0.887575991750613 -0.413371941719515 -0.203193169643497 1 0.911610296566694 -0.374934048742774 -0.167944154780087 1 0.897544858313246 -0.427167667251558 -0.108786232510296 1 0.893518088057215 -0.420728324659034 -0.156159300645136 2 0.864016708473624 -0.445893502516503 -0.233835064086021 1 0.871818072653895 -0.403479894686208 -0.277524045158341 1 0.895282113686468 -0.37091649943769 -0.246884115426388 1 0.880377113932718 -0.40874332226422 -0.240548929385814 2 0.913906638695645 -0.33526601184849 -0.229034613601696 1 0.936150316287264 -0.287461710707605 -0.202137774547404 1 0.934327399609555 -0.327301174503788 -0.141108967438189 1 0.925007077089335 -0.331597694351018 -0.185251729462642 2 0.890660558572107 -0.3415408903064 -0.300136281746639 1 0.909246978551735 -0.305874996613879 -0.282308706746824 1 0.902962598253581 -0.338654634471754 -0.264789612297686 2 0.614328203220886 -0.757916782013764 -0.219054621370639 1 0.67517681506936 -0.710785820002562 -0.197138654172531 1 0.672028019996423 -0.726649727591518 -0.142024007601408 1 0.611399090327408 -0.774073793731458 -0.16397701046099 1 0.643975852356029 -0.743226030634554 -0.18075833789437 2 0.676260366684133 -0.694690776099905 -0.245153768832775 1 0.719945414118095 -0.655934425428511 -0.226488783975971 1 0.718813032961806 -0.671949204577971 -0.178467588713015 1 0.698102929890019 -0.683886564099684 -0.211980777804635 2 0.723521488980402 -0.676933870710636 -0.135499975020737 1 0.726628054862906 -0.682608805080736 -0.0769466698002776 1 0.675441423789425 -0.732676325321056 -0.0835079246938438 1 0.700148720611344 -0.705472406095709 -0.109604911425373 2 0.757899270090261 -0.627209849608622 -0.179402729997929 1 0.762670285672097 -0.632213444636908 -0.136458183143523 1 0.74126762896868 -0.652555091133346 -0.157568636641327 2 0.447102108259484 -0.687315567331172 -0.572291872113585 1 0.4799102017783 -0.716636070071078 -0.506025237026859 1 0.435602753530503 -0.751184023583903 -0.495769830941738 1 0.402905982048924 -0.72211398358006 -0.562221454682004 1 0.441881950080301 -0.720136785838118 -0.534695880379621 2 0.517797599627482 -0.684209975184182 -0.513578019163548 1 0.540065473084067 -0.704477500923392 -0.460336697978869 1 0.50215728314969 -0.736838650366826 -0.452730459286352 1 0.51038439772527 -0.711102402504653 -0.48355179636811 2 0.473459574415684 -0.765146802965588 -0.436424446282287 1 0.432311486604717 -0.800898495895506 -0.414165404584382 1 0.394628797144536 -0.787299834341782 -0.473739962261857 1 0.434455460742305 -0.776961270347696 -0.455509321997579 2 0.536304419513907 -0.740872094739776 -0.404319341558882 1 0.507661591626708 -0.769219845223121 -0.388021992609457 1 0.505261167766664 -0.753571448009869 -0.420680571955074 2 0.470577069698422 0.757992482784403 -0.451472726433867 1 0.478230033835365 0.71082706845189 -0.51571666683959 1 0.427569694332064 0.726681526818456 -0.537527680271313 1 0.420045324067292 0.774136122806834 -0.473460924591257 1 0.449625720535735 0.743279532816414 -0.495115476573053 2 0.521604139319983 0.694762067407977 -0.49523463654954 1 0.524493292056092 0.655977867971605 -0.542647321418986 1 0.481093415861756 0.671964547662163 -0.563089988578961 1 0.50175318041596 0.683928701689237 -0.529591738315162 2 0.444954087613532 0.676903650237494 -0.586430359056993 1 0.394082500620339 0.682625026104163 -0.615292742269499 1 0.376860208033122 0.732741322944797 -0.566636997413459 1 0.411297921792801 0.70549273778385 -0.57708774364929 2 0.499493067425637 0.627208991580919 -0.59758158120545 1 0.463403240895245 0.632168430907402 -0.620968517627371 1 0.472577079898346 0.652538531227253 -0.592450832399335 2 0.712508751711886 0.686591063825349 -0.144036096685563 1 0.667427857565245 0.716420432537117 -0.203043570929615 1 0.638315377415411 0.751143813837624 -0.167777063303285 1 0.683635660901798 0.72159195145784 -0.10879081768632 1 0.676261107557656 0.719772321200807 -0.156086034608475 2 0.691110721322284 0.683919462817189 -0.233760549194482 1 0.653253220957665 0.704400239630077 -0.277397993905271 1 0.629509960418704 0.736832621610316 -0.246685843149598 1 0.660852249035743 0.710958581188625 -0.240410770645552 2 0.60209647275043 0.765155379255847 -0.228255098079825 1 0.563797101075995 0.800913260732393 -0.201333282008801 1 0.600301226269077 0.78726921017942 -0.140909068907062 1 0.6017662990046 0.776951996730781 -0.18475922660176 2 0.601451035173175 0.740880651413014 -0.298901372705001 1 0.574070314456862 0.769243498819695 -0.280516132456626 1 0.602220467595928 0.75358131712146 -0.263779801718191 2 0.910657857176482 0.35005592320979 -0.219054616412656 1 0.884636421762843 0.422491529583125 -0.197138657243169 1 0.898746894212983 0.414603271976032 -0.142024487710523 1 0.925115373525434 0.342286174448316 -0.163977542115888 1 0.905845631104639 0.382797003023108 -0.180758589930394 2 0.869665221688498 0.428493221387477 -0.245152754264554 1 0.846305565507668 0.482015110659545 -0.226487767820415 1 0.861185234212292 0.475991734496061 -0.178467576848242 1 0.866139021198463 0.452605904029311 -0.211980257301849 2 0.867368130624488 0.478947895588165 -0.135517502279509 1 0.873702148127363 0.480189471308697 -0.0769872964813434 1 0.905511530278797 0.416028690648255 -0.0835316214234277 1 0.887280197037754 0.447916487332671 -0.109625494293349 2 0.830709670090773 0.526993264928566 -0.179410738855077 1 0.836929200884877 0.530002642808477 -0.136483631995229 1 0.8496703708068 0.503351055585306 -0.15758137160484 2 0.791238800076568 0.213606400222839 -0.572836045798529 1 0.829705549187094 0.235182422714783 -0.506183497972832 1 0.848947311801859 0.182266150887954 -0.495865226582495 1 0.810793477569686 0.160727125354221 -0.562729206679006 1 0.821119713477211 0.19817044036957 -0.535029163281082 2 0.810542319525255 0.28126824434584 -0.513743933432047 1 0.836850465186092 0.295993410099788 -0.460367187383981 1 0.855935611017427 0.249905069727024 -0.452747111295967 1 0.833919600226903 0.265796633730324 -0.483646291855637 2 0.87398588435353 0.213873651973776 -0.436450252619459 1 0.89527193085498 0.163693076829462 -0.414195864515632 1 0.870642446646502 0.132140198197213 -0.473844739764083 1 0.873142499507864 0.173169995661819 -0.455574410198003 2 0.870335847176664 0.281117637072782 -0.404322468473819 1 0.888439060364836 0.245125779895999 -0.388033472715131 1 0.872812532545155 0.247682617365784 -0.420695059306947 2 0.214328965970513 0.0138633343593701 0.976623491441445 1 0.16299465302315 0.0207444463236366 0.98643215490856 1 0.157900750828023 -0.028578457280593 0.987050485898436 1 0.209221012644752 -0.0354568062367539 0.977228306582131 1 0.186236810654437 -0.0073603071593012 0.98249604108858 2 0.168070360065437 0.0721757299324688 0.983133237216147 1 0.112591670829185 0.0784662979769436 0.99057014397255 1 0.107495420120229 0.0270236066021329 0.993766386533074 1 0.137889331722692 0.0496387829481562 0.989211254440705 2 0.106451114857729 -0.0310347698383989 0.993781898061163 1 0.109599292608738 -0.0827639947582291 0.990552485263442 1 0.161023820348999 -0.0802848637141047 0.983697952197079 1 0.133833596694674 -0.0557030817775872 0.989454760599748 2 0.0408379450053069 0.0284322212315374 0.998679048851585 1 0.0397932952292615 -0.0296605731315056 0.998683205593554 1 0.0737082776887807 -0.00131103503486569 0.997169425679354 2 0.387819936042629 -0.176171961118519 0.904727341522596 1 0.413293988020264 -0.222705041325948 0.883010921705798 1 0.45076052793501 -0.185442905575789 0.873190172593096 1 0.425064264181552 -0.138808954413908 0.894457483349189 1 0.419568673280174 -0.180925336682298 0.889551033853975 2 0.377530935203671 -0.245548297581588 0.892862698368481 1 0.393708285239309 -0.289620442080237 0.872518387841593 1 0.429545393401722 -0.266835024446911 0.862767288578668 1 0.403776841298318 -0.256337388770206 0.878339543925505 2 0.477030582514639 -0.234590367065268 0.846916692484809 1 0.516447018012619 -0.192214515771031 0.834504672456737 1 0.48976691113319 -0.142923593620639 0.86007919510143 1 0.483945869682573 -0.1889668075206 0.854452464623175 2 0.45272594553933 -0.330433807101645 0.827975195840704 1 0.500538016005325 -0.298327404441773 0.812578241957467 1 0.465498679966584 -0.282878157030178 0.838509182573131 2 0.43201860752146 0.120146191631457 0.893713108493864 1 0.46003755945708 0.190042268600728 0.86734482319929 1 0.416029508956817 0.219073943970837 0.882591521464419 1 0.388102054553431 0.149269668373042 0.909287377431021 1 0.424533590878205 0.169820958264053 0.889272908125679 2 0.493544768365293 0.167535746064839 0.853515896060151 1 0.511916500510867 0.218271616241003 0.830905005952205 1 0.478332173441411 0.240770709585189 0.844555470840302 1 0.486300453657259 0.204301840839254 0.849686473477104 2 0.434176852977568 0.267978571801152 0.860076378751433 1 0.397359827866901 0.29020934662516 0.870649088996248 1 0.379300115741792 0.241386409173757 0.89330777128851 1 0.407008574089542 0.254840830234353 0.877277113355182 2 0.5005566575334 0.305097798757504 0.810008611761478 1 0.456262386254933 0.332276314377605 0.825381169018259 1 0.467846333137822 0.286852602779411 0.835913000259621 2 0.181544577608708 0.114763844341126 -0.976623500327984 1 0.144058718450035 0.0790234926813076 -0.986432150995089 1 0.110946815687115 0.115932289756943 -0.987050485761059 1 0.148422929727217 0.151662145885339 -0.977228305159475 1 0.14634274433009 0.115421969415113 -0.982496042807421 2 0.17839517014572 0.0403979674970047 -0.983133241124052 1 0.13720951860697 0.00269910052520446 -0.99057013851471 1 0.102849743420024 0.0413217803770976 -0.993766394249184 1 0.140731561136307 0.0408907934231074 -0.989211255506977 2 0.0678791045384387 0.0876782123804845 -0.993781912278108 1 0.0400203281562929 0.131377965366905 -0.990552458215766 1 0.0830811437842155 0.159598830082174 -0.983697983297533 1 0.0755324621839443 0.123730026348636 -0.989454770479518 2 0.0497504865502454 0.001001817981955 -0.998679054077446 1 0.0147593392037787 0.0473858920653251 -0.998683227101536 1 0.0588606320596061 0.0443853820424755 -0.997169449970177 2 0.210201455872674 0.370481212326739 -0.904727347730138 1 0.203458981046584 0.423100341024283 -0.883010936479184 1 0.255672355075839 0.414976866182281 -0.873190183640251 1 0.262294353288728 0.362145521238274 -0.894457495054217 1 0.233092871569906 0.392988095268461 -0.889551055543766 2 0.161099259502681 0.420560402949998 -0.892862700566631 1 0.148282192441752 0.465724381738541 -0.872518403270945 1 0.190667829342277 0.468354634499962 -0.862767304376955 1 0.175990987408622 0.444715713493607 -0.878339567276282 2 0.248037176959888 0.470178880172383 -0.846916682391133 1 0.304833644714983 0.45906478454302 -0.834504691642425 1 0.312221395532847 0.403505655609349 -0.860079183647361 1 0.280448586845971 0.437333622584981 -0.854452469297832 2 0.17203925358311 0.53343217638533 -0.827975159347067 1 0.229591803188981 0.535560430077953 -0.812578225756129 1 0.210324975790035 0.50246635593552 -0.83850916056425 2 0.420130552924143 0.156733635590528 -0.893713126780825 1 0.483882584597677 0.116655950938836 -0.867344783594179 1 0.465343325794869 0.0673016734029974 -0.882591550255062 1 0.401719230252006 0.107358856431733 -0.909287358760255 1 0.443273100355439 0.112146530373191 -0.889272902487222 2 0.497761603613871 0.154559001709742 -0.853515922721953 1 0.542446116584827 0.124311554454261 -0.830905000382883 1 0.528500415678724 0.0863692052295907 -0.84455551974119 1 0.513511200608926 0.120556636300378 -0.849686489886198 2 0.508770705953014 0.0384038109295037 -0.860076928394449 1 0.492051920218552 -0.00122193841715907 -0.870649645664051 1 0.448743439558809 0.027661350602868 -0.893307766638346 1 0.479068662976261 0.0330632384745195 -0.877277430436468 2 0.584290650116935 0.0473905011333636 -0.810008610613704 1 0.564431292434848 -0.000632835738663428 -0.825381678181492 1 0.547103506241714 0.0429246838339167 -0.835913304233058 2 0.253259659697007 0.735281461942583 0.628603860324554 1 0.269722700265977 0.763344282835116 0.587027572706164 1 0.223599410813739 0.781369849318402 0.582652066330216 1 0.207137382697229 0.753300765591799 0.624210104541024 1 0.23859269340247 0.758837207690453 0.606033426791153 2 0.316938688735318 0.742344838825179 0.590326594202933 1 0.332738690314021 0.770314469410177 0.544023804068602 1 0.285483777433481 0.791233191494124 0.540656098631719 1 0.30144497285235 0.767381323523796 0.565928729550302 2 0.230326178329996 0.809735595560705 0.539607815389271 1 0.179384344815584 0.821834580095932 0.54080435456452 1 0.172649685900299 0.793370938621854 0.583773723008491 1 0.201631920169899 0.802138699679646 0.56209961606369 2 0.297475468281192 0.823310044751834 0.483224680664709 1 0.242281243938963 0.84181173959721 0.482169516094678 1 0.264142808737105 0.817299498298945 0.511894343183845 2 0.0279024827192822 0.659008945441516 0.751594546742107 1 -0.0258857242322704 0.643717280628106 0.764900298060201 1 0.00228322699818218 0.607903589912093 0.79402446749243 1 0.0560742327801637 0.622871075057328 0.780314002584886 1 0.0151055894816743 0.633879762711936 0.773326026732336 2 -0.0407239988386822 0.674302560039624 0.737354172968509 1 -0.0906325713463995 0.662478208264891 0.743682128288091 1 -0.0758295266734923 0.631949347564844 0.77132147324183 1 -0.0583049451716205 0.653520420471025 0.754792445051726 2 -0.0552831993512048 0.589265098220498 0.805962412180122 1 -0.0236302886443349 0.549050829568092 0.835486659294478 1 0.0339363052616491 0.567232733596581 0.822881198454826 1 -0.0106850228470303 0.578889753176568 0.815334164167663 2 -0.148658137775108 0.611398480809816 0.777079351785458 1 -0.128161859333825 0.568987916586368 0.812188179159367 1 -0.102108515171407 0.601070303325348 0.792533847298638 2 0.301093862671113 0.539120777215719 0.786443893636619 1 0.356309487140444 0.482977947035902 0.799881678331642 1 0.393530722781138 0.505607457301198 0.767811864880551 1 0.338461655124287 0.561935009694265 0.754567255210982 1 0.347742673371668 0.523022364014873 0.778068683251553 2 0.326605830297244 0.463977061404189 0.823527649828254 1 0.365891035899942 0.421207413849253 0.829946087032322 1 0.395551999233095 0.440096734816479 0.806158579611244 1 0.361346902821257 0.452386535877793 0.815452130277273 2 0.431187632700822 0.464373783613062 0.773648280842699 1 0.458864892835453 0.482415028629307 0.746238324631236 1 0.421304032445778 0.523698518416584 0.740530959938358 1 0.42651459474648 0.494364354110835 0.757584959994012 2 0.444522158380927 0.382888611467785 0.809676296836088 1 0.480071919525934 0.407072603804139 0.776906948285109 1 0.438309116527147 0.42405384935373 0.792447914514823 2 -0.621058955004044 0.468183656998477 0.628500497935083 1 -0.642657033424441 0.492486472424668 0.586938600095298 1 -0.674037499817153 0.454125945171603 0.582634607190778 1 -0.652430994887002 0.429820446518294 0.62417606714117 1 -0.647984109286841 0.461467899648149 0.605972755157016 2 -0.608185840026617 0.531042334393297 0.590010603801454 1 -0.629932131199178 0.554646455630126 0.543705751836507 1 -0.66434385575809 0.516033400325973 0.540570001684536 1 -0.636754778063563 0.523942174526001 0.565726440710198 2 -0.698941249311355 0.469282378372349 0.539586360769663 1 -0.726188814603627 0.424569247675338 0.540787463924542 1 -0.701194302379009 0.409374966740761 0.583760732269083 1 -0.700580182790063 0.439646608495316 0.562082468773557 2 -0.691171706380984 0.53734124208327 0.483096598781308 1 -0.725781995630008 0.490556997605147 0.482107821385779 1 -0.695720999183481 0.503782416495025 0.511819968885063 2 -0.618134244124571 0.230192959881519 0.751590207130796 1 -0.620211211666055 0.174303588336005 0.764899337901158 1 -0.577446222218834 0.190027692677965 0.794023636821798 1 -0.575059972455437 0.245819528173405 0.780309664048939 1 -0.598189151501407 0.210253339715584 0.773323541822668 2 -0.653884919725625 0.169643436377586 0.737352688364809 1 -0.658061490302295 0.118521273606007 0.743681110834502 1 -0.62445230326336 0.123165347762457 0.7713209435586 1 -0.639552491012736 0.146499485647341 0.754791448178855 2 -0.57750821735048 0.129516402385423 0.805962431574379 1 -0.529475632951499 0.147176727535716 0.83549273971365 1 -0.528979790895252 0.207547242373643 0.822887155906535 1 -0.553856984215571 0.168718816787564 0.81533703719568 2 -0.627412527768569 0.0475504778612793 0.777078853749316 1 -0.580744140435958 0.0539384922125737 0.812188147057425 1 -0.603205326404869 0.0886305484965393 0.792533573717792 2 -0.419589820130168 0.453339991970829 0.786272359139275 1 -0.348974228503791 0.488569986530691 0.799720816716995 1 -0.358920600192467 0.531783218449941 0.767087515961049 1 -0.429681508319459 0.496769786179511 0.753858273399992 1 -0.389758892722224 0.493189141551888 0.777640042956571 2 -0.340133528557545 0.454054751650912 0.823582499987275 1 -0.286993534973573 0.478091729212715 0.830160779344714 1 -0.295740211493047 0.512532420338235 0.806158350176627 1 -0.318189747895003 0.483661493142185 0.815487310162291 2 -0.306956507043011 0.554655370423274 0.773427182557232 1 -0.315047783833091 0.588012395715389 0.745070505408161 1 -0.367030418869253 0.565250105001545 0.738862099636183 1 -0.337229244270264 0.560323171856849 0.756655850464824 2 -0.224809004319625 0.540384229352922 0.810678096680826 1 -0.235985418102065 0.582442232025571 0.777755688706135 1 -0.266154379114345 0.548107229364736 0.79287438165432 2 -0.637186602958638 -0.445984972140491 0.628500456203567 1 -0.666974168997717 -0.459016642655155 0.58693860784347 1 -0.64018798708583 -0.500715223780657 0.582635073430457 1 -0.610395336238233 -0.487676416291203 0.624176554467979 1 -0.639119758047268 -0.473667885682152 0.605972966422862 2 -0.692991546582926 -0.414318159032253 0.590010634816317 1 -0.722160478277173 -0.427706433399069 0.543705769860983 1 -0.696070360543446 -0.472366058145807 0.540570029703705 1 -0.695066880996622 -0.443683136813864 0.565726484254796 2 -0.6622982848276 -0.519716924324884 0.539586359780102 1 -0.628193529498337 -0.559448027432305 0.540787451508219 1 -0.606019267247633 -0.540371771503929 0.583761255204697 1 -0.634619468240669 -0.530433405761343 0.56208270587801 2 -0.724625825009703 -0.49129623766183 0.48309658715876 1 -0.690826181994777 -0.538669672204132 0.48210781695725 1 -0.694114988741223 -0.505993168859718 0.511819976793715 2 -0.409940176457727 -0.516747013367313 0.75159017762486 1 -0.357428214063877 -0.535993428710862 0.764899366601821 1 -0.359167726716961 -0.490462399376282 0.794023615134161 1 -0.411491391189851 -0.470952030568613 0.78030965779913 1 -0.38481324674237 -0.503939914736104 0.773323526613925 2 -0.363402004644802 -0.569458608598485 0.737353202373325 1 -0.316072564455451 -0.589228445236116 0.743682154646469 1 -0.310103409131085 -0.555829579138291 0.771321490530516 1 -0.33696179338116 -0.562979825595182 0.754792015786288 2 -0.30163700985543 -0.509220493683776 0.805962460257436 1 -0.303589660308419 -0.458081371699034 0.835492736750624 1 -0.360852448046332 -0.438954207982488 0.822887171906537 1 -0.331611987413274 -0.474612534693484 0.815337047412892 2 -0.239102402682165 -0.582010617349628 0.777079876643518 1 -0.230756352983529 -0.535652318440785 0.81218866588312 1 -0.270692268378535 -0.546294056380183 0.792534137601685 2 -0.560812624704598 -0.258963994635401 0.786272380687907 1 -0.572496259242151 -0.180917814445593 0.799720772374535 1 -0.616667927634764 -0.177023876494812 0.767087516833464 1 -0.605235102829981 -0.25514131393222 0.753858253548901 1 -0.589492723381361 -0.218279031461765 0.77764002089284 2 -0.536938877521011 -0.183175844518194 0.823582491640524 1 -0.543377830044826 -0.125208711400511 0.83016074802424 1 -0.578835297901957 -0.122884311874954 0.806158341689101 1 -0.558315111461603 -0.153156878499407 0.815487262475046 2 -0.622363183209316 -0.120534975037622 0.773427171783942 1 -0.656588341068902 -0.117922241297282 0.745070507498782 1 -0.651003263328569 -0.174394823612504 0.738862077497197 1 -0.637108385665223 -0.147574671795361 0.756655835417028 2 -0.583405615261568 -0.0468179188871165 0.810678116620611 1 -0.626859408274052 -0.0444507126640071 0.777755694875733 1 -0.603527007582131 -0.0837532530283782 0.792874385604272 2 0.227255591991929 -0.743817824575151 0.628500463242823 1 0.230444111637582 -0.776174364272041 0.586938611607923 1 0.278379424456374 -0.763584568554198 0.582635081457466 1 0.275185690558527 -0.731220980333182 0.624176559627461 1 0.252986109093372 -0.754210704259296 0.605972977758445 2 0.179893580908313 -0.787105771629026 0.59001062409323 1 0.183613085426695 -0.818984150477199 0.543705779028287 1 0.234149121400008 -0.807971495111962 0.540570012403282 1 0.207180080794707 -0.79815372479732 0.565726476098211 2 0.289618400265068 -0.790484343434951 0.539586352559899 1 0.337943966267383 -0.770326366882821 0.540787976215394 1 0.326653814358387 -0.743342620920979 0.583761731544224 1 0.308363768859442 -0.767471881253026 0.562082955168819 2 0.243328643295433 -0.840979237172583 0.483096585268483 1 0.298827898783082 -0.823472820760126 0.482107815211754 1 0.266734525323953 -0.816503112924474 0.51181996369201 2 0.364705846231212 -0.549438354832339 0.751713966460144 1 0.399121320663818 -0.50527106416277 0.765193123604561 1 0.355214033662592 -0.492829347394016 0.794339212429941 1 0.320609336042151 -0.536740890934761 0.780462223739747 1 0.360200563242017 -0.521486774420713 0.773547620390901 2 0.42923705804931 -0.521350162675302 0.737552303000974 1 0.462719831239943 -0.482164652215052 0.744021135734837 1 0.432661344649223 -0.466104664617487 0.771747773162317 1 0.431207480462568 -0.494034088984003 0.75511127696064 2 0.39057737603441 -0.44369462362626 0.806497248760961 1 0.341219230561981 -0.429813353565511 0.835999494732981 1 0.305587443797371 -0.478577270575495 0.82317210162796 1 0.348468701143417 -0.461648474658672 0.81574936985599 2 0.479825765849401 -0.405724780580693 0.7777724333557 1 0.437943199628603 -0.383508871371621 0.812997643719864 1 0.435758808012219 -0.425236102383268 0.793171571134438 2 0.072982054913036 -0.613382835714663 0.786277312006639 1 -0.00485179721296461 -0.600380613915634 0.799723290520316 1 -0.0222020825915191 -0.641189115896429 0.767088521369936 1 0.0556220523116238 -0.654451937630957 0.753861722758553 1 0.0254286194068806 -0.628089688742512 0.777642984607919 2 0.008282400200241 -0.56726049997572 0.823584930975215 1 -0.0488338175666061 -0.555475319821007 0.830160780202839 1 -0.0620002657621072 -0.588479811537223 0.806158321871231 1 -0.0268706012517724 -0.578316424521621 0.815488499435306 2 -0.0776852578147134 -0.629149688974606 0.773427682546599 1 -0.0907462789327756 -0.660892355244505 0.745070514524795 1 -0.0353126742748452 -0.673031551457892 0.738862594957396 1 -0.0565259545735457 -0.651528901673315 0.756656353750844 2 -0.135753915231938 -0.56932008387307 0.810677994121499 1 -0.151432998612559 -0.609913974705646 0.777756133195078 1 -0.106845118897197 -0.599869754847219 0.792874540258023 2 0.778902024581184 -0.0159615210395239 0.626901503757343 1 0.810005744727411 -0.0217308579222037 0.586048522334683 1 0.812545642092271 0.0278634797304951 0.582254132877098 1 0.78142890876246 0.0336305762070716 0.62308570015889 1 0.796249291648036 0.00595294613753784 0.604973867374911 2 0.804879318323879 -0.0733176371825335 0.588893690466633 1 0.835905627623243 -0.0789389541555398 0.543220592700196 1 0.840939859286784 -0.0273395631029406 0.540303854806719 1 0.823535504150266 -0.0503678469495919 0.565028626095878 2 0.841421845621359 0.0307208112380071 0.539408033787746 1 0.837070527611626 0.0823884105331502 0.540908547814434 1 0.808101423636989 0.0795087711097319 0.58368192774446 1 0.825355136798755 0.0551575300395705 0.561948172120426 2 0.875077178526498 -0.028646720018939 0.482963258522908 1 0.875546534488746 0.029448129670078 0.482059961817304 1 0.85905829789484 0.0010466162319847 0.511660638670742 2 0.623241601369063 0.158113820086382 0.765805852172589 1 0.597652994181342 0.219255661822524 0.771227683679636 1 0.564255683014367 0.192765194051827 0.802821987228356 1 0.589479878687517 0.131509469513731 0.796973887900779 1 0.594204601913011 0.175567500737732 0.784922246289997 2 0.625091711015682 0.238681409957773 0.74322392312823 1 0.601560557703634 0.287033797788612 0.745579812027792 1 0.574219524720188 0.267683364927596 0.773737519131042 1 0.600021830902004 0.253329127520413 0.758941946494947 2 0.538901488669644 0.24117653509775 0.807100859426231 1 0.537061210586059 0.16981573059303 0.826333054419915 1 0.53838725620767 0.205643280747325 0.817320844312229 2 0.535763650863976 0.33155456060237 0.776385588171846 1 0.537924757876787 0.286691075967731 0.792649247871396 2 0.626486750833425 -0.11784142076302 0.77041772654173 1 0.584219258073001 -0.175766884876628 0.792330357438341 1 0.60968081168922 -0.216721936439648 0.762502848857983 1 0.652291735420957 -0.158925928403679 0.741002536199341 1 0.618852334973148 -0.167493484222457 0.767405352078839 2 0.555351125739674 -0.136368740450332 0.820408949620594 1 0.544915007185475 -0.231492202784315 0.805840701903606 1 0.550787118281314 -0.184146682290982 0.814091413404716 2 0.579353769153107 -0.263285432907462 0.771429536648052 1 0.603245523976403 -0.28911698344723 0.74341318345068 1 0.633656278404399 -0.242634644565022 0.734638002793859 1 0.606915256776699 -0.253119080084606 0.753538540537203 2 0.534760979915394 -0.330003902640622 0.777747096393249 1 0.540538512644357 -0.281126335788749 0.792863661512075 2 -0.253258667332764 0.735282474637934 -0.628603371084245 1 -0.269721682135503 0.763344728182405 -0.587027533944882 1 -0.223597405303557 0.781369829652785 -0.582653556018556 1 -0.207135374948241 0.753301240027684 -0.624211085996159 1 -0.238591184971096 0.75883766479523 -0.606033896140118 2 -0.316936685180894 0.742347334530545 -0.590324592143525 1 -0.332734184272173 0.770318465076781 -0.544021798647936 1 -0.285480248768806 0.791235147311484 -0.540656088930231 1 -0.301442195966523 0.767383519348376 -0.565927701229073 2 -0.230307603055318 0.809730885700404 -0.539622699988408 1 -0.179355715130267 0.821828552798868 -0.540823542270486 1 -0.17263768735214 0.793369961955212 -0.583779749373227 1 -0.201616570987495 0.802135597647101 -0.562109904468125 2 -0.297410683481354 0.823311906420216 -0.483261332418317 1 -0.242201142901722 0.841805869432522 -0.482220564412646 1 -0.264100824020033 0.817297166984134 -0.511919634029445 2 -0.0278885255220102 0.658870462043605 -0.751717860526874 1 0.0259072566649979 0.643369720619539 -0.76519407346975 1 -0.00229927522557197 0.607495191782871 -0.794340597547157 1 -0.0560978134982479 0.622677936066225 -0.780466710491349 1 -0.0151066651721935 0.633609746805821 -0.773550228209589 2 0.0408206349961379 0.674079311273184 -0.737553276330006 1 0.0909394165789525 0.662058603585017 -0.744021085128505 1 0.0760611258132027 0.631398145201265 -0.771747714866029 1 0.0584695766604921 0.653138600658519 -0.755111683326869 2 0.0551867711926479 0.588531650969349 -0.806497200770062 1 0.0234168620842291 0.548288871958578 -0.835999887614511 1 -0.0340684079464737 0.566794693779985 -0.823174009338329 1 0.0105704490626784 0.578304789298972 -0.815750187932843 2 0.149708659006267 0.610272375210142 -0.777772435338557 1 0.128883133027813 0.567681293743349 -0.812997614085724 1 0.102589112741322 0.600155380782137 -0.793171500162253 2 -0.301023625129684 0.539094891752898 -0.786488144696563 1 -0.356264619232397 0.48297716232652 -0.799903904786992 1 -0.393559456511917 0.505655842397308 -0.767768256770968 1 -0.338465964321837 0.561959570094693 -0.754547516186279 1 -0.347722915656205 0.523035187473993 -0.778071349682645 2 -0.326461963735019 0.463888281496577 -0.823634244802586 1 -0.365809093699435 0.420951468097896 -0.830116311709053 1 -0.395569366167058 0.439927853605011 -0.806243475425637 1 -0.361285650964181 0.452260388770195 -0.815552736605017 2 -0.431306728084809 0.46423127491831 -0.773668123290113 1 -0.459005743203183 0.482240055879463 -0.74626799469663 1 -0.421352708626699 0.523711721044904 -0.740493987258882 1 -0.42660076440584 0.494302316684826 -0.757580274406948 2 -0.44482094699872 0.381658270820821 -0.810089458380341 1 -0.480489964095131 0.40588477412133 -0.777281022144982 1 -0.438533708931547 0.423380568346234 -0.792690329868258 2 -0.777584491697503 -0.0137947512043539 -0.62856584980284 1 -0.80933389444103 -0.0206948229901327 -0.587023083776518 1 -0.81221567896068 0.0285858879152127 -0.582672169901495 1 -0.780463259931079 0.0354830852976717 -0.624198534702705 1 -0.795435386009144 0.00739831855945552 -0.606023162341584 2 -0.80395670233645 -0.0720676390830918 -0.590314464017507 1 -0.835435299125717 -0.0784274227126114 -0.544020144541176 1 -0.84072256715451 -0.0270424290771527 -0.540659390936052 1 -0.822974748300228 -0.0495943116257436 -0.565923981428838 2 -0.841245358036429 0.0310329140971324 -0.539667209027898 1 -0.836951513224698 0.0827611862868184 -0.541033954229746 1 -0.807822896906207 0.0802913165033156 -0.583961373962572 1 -0.825130440678589 0.0557053899956391 -0.562219928156314 2 -0.874912137157751 -0.0284761658951948 -0.483273896597808 1 -0.875422250159441 0.0296337506252894 -0.48227472848087 1 -0.858889391505009 0.0012881348271399 -0.511947143935194 2 -0.635614063926518 0.176280296461176 -0.751592612141586 1 -0.60459471613388 0.222929314673383 -0.76477701281171 1 -0.579067507172836 0.185671087900752 -0.793877066421507 1 -0.609787288286737 0.138921893046468 -0.780296186014894 1 -0.60774817552577 0.181094436409314 -0.773251821602496 2 -0.629473629282265 0.24570952754641 -0.737168291492917 1 -0.603847852174411 0.289849019503927 -0.742651072392126 1 -0.579019633073871 0.267124178513863 -0.770363589202258 1 -0.604612007814518 0.256564008197621 -0.75421808333674 2 -0.543545689931873 0.234920745038994 -0.805746964066002 1 -0.514907931551875 0.192489868140046 -0.835391004891564 1 -0.54998938448731 0.143097052549096 -0.822843110161229 1 -0.547377487775247 0.18921947468031 -0.815213599327856 2 -0.537258875780867 0.330699094947163 -0.775674738262528 1 -0.502036843002244 0.298630084917015 -0.811542980114842 1 -0.541074179921906 0.283175971278301 -0.791740618565383 2 -0.605740141253908 -0.119717723499588 -0.7864788161462 1 -0.569434622478184 -0.189580762980581 -0.799900849179843 1 -0.60252532335757 -0.218043344147702 -0.767766290113865 1 -0.639052895291906 -0.148263016159032 -0.75453881968349 1 -0.604893274681066 -0.169086846036404 -0.778065346743767 2 -0.542071464884978 -0.167134511101846 -0.82363076736896 1 -0.513391697554755 -0.217822019829155 -0.830114776699528 1 -0.540634809651661 -0.240262728768422 -0.806242430078852 1 -0.54177161122686 -0.203846516349618 -0.815550433659575 2 -0.574791718548181 -0.266741701564977 -0.773667587405585 1 -0.60047832481987 -0.287520652108983 -0.74626750499813 1 -0.628285693064794 -0.238897295634759 -0.740491885616097 1 -0.601937106975861 -0.252975058915006 -0.757578973828862 2 -0.50043663216395 -0.305109980956593 -0.810088994288651 1 -0.53449920664586 -0.331547702939014 -0.777280986566036 1 -0.538173803820083 -0.286238025535181 -0.792689788201864 2 -0.227167267625679 -0.743789521966696 -0.628565862523791 1 -0.230416003789061 -0.776117226488905 -0.587023074538999 1 -0.278175050223926 -0.763629428519258 -0.582672177396853 1 -0.274922630330948 -0.731299696701175 -0.62419852502944 1 -0.252839187494353 -0.754217714394879 -0.606023162503014 2 -0.179895808486342 -0.786878288234766 -0.590314454799143 1 -0.183574520014306 -0.818781459337709 -0.544020140774777 1 -0.23407850712677 -0.80793112042192 -0.540659390399439 1 -0.207146061950281 -0.798020862382318 -0.565923970260144 2 -0.289473457797684 -0.790482060717106 -0.539667205907727 1 -0.337342751406913 -0.770413573301602 -0.541033967472195 1 -0.325992026052483 -0.743473859274591 -0.583961359621263 1 -0.307958174096597 -0.767531724978465 -0.562219929867801 2 -0.243280016021746 -0.840890367665689 -0.483273901468402 1 -0.298703934301885 -0.823418584636533 -0.482274734919988 1 -0.266636523009113 -0.816454175600293 -0.511947147904189 2 -0.364068103620748 -0.55003121528106 -0.751592102496595 1 -0.398848881663012 -0.506115041816285 -0.764777017067196 1 -0.35552571629928 -0.493350530379767 -0.793877057193498 1 -0.320557103310117 -0.537012754931745 -0.78029565294634 1 -0.360035724420338 -0.522041629482159 -0.773251546058193 2 -0.428202218847333 -0.522736590918698 -0.737168330096187 1 -0.462262406852433 -0.484725107863525 -0.742651063701573 1 -0.43297743773512 -0.468134699170269 -0.770363615756163 1 -0.430842689132465 -0.495737666265631 -0.754218113790779 2 -0.391387577434309 -0.444348043886589 -0.805746970985833 1 -0.342183564227517 -0.430223570963198 -0.83539096439657 1 -0.306049500276698 -0.478851519444323 -0.822843128285832 1 -0.349107283239503 -0.462114790230861 -0.815213589597328 2 -0.48053618822894 -0.408771862829244 -0.775674748522342 1 -0.439152041908847 -0.385183285917166 -0.811543030554678 1 -0.436517659779732 -0.42708586635799 -0.79174066787471 2 -0.0733259488836964 -0.61308786393994 -0.786478810492155 1 0.00433688449893064 -0.60014797415926 -0.799900840529113 1 0.0211812829411365 -0.640414540624351 -0.767766298373116 1 -0.056471508409674 -0.653591157596909 -0.754538803785663 1 -0.0261111379802819 -0.627538266307421 -0.778065336140412 2 -0.0085551842371501 -0.567187763940859 -0.823630764581605 1 0.0485143395101759 -0.555575290872013 -0.830114793793583 1 0.0614382338736905 -0.588419604682947 -0.806242421467671 1 0.0264528646638575 -0.578247382826495 -0.815550432724974 2 0.0760660719121592 -0.629087196808359 -0.77366760144499 1 0.0878902688828486 -0.659938063528309 -0.74626749935501 1 0.0330540175140895 -0.671358750404041 -0.7404918923654 1 0.0545848757734021 -0.650649944069681 -0.757578986433809 2 0.135533186057868 -0.570227985062105 -0.81008900194356 1 0.150150940076424 -0.610793107518576 -0.777281002125866 1 0.105923598341423 -0.600286303773384 -0.792689801367877 2 0.63718690794782 -0.445891367858966 -0.628566837930486 1 0.666928606135337 -0.458971521010362 -0.58702360235505 1 0.640293944576047 -0.500534457930141 -0.582672680017859 1 0.610551503869361 -0.487450214014544 -0.624199532250915 1 0.639171884354376 -0.47352978008047 -0.606023919779794 2 0.692774505606307 -0.41424920269029 -0.590315481817314 1 0.721980062692839 -0.427607070497126 -0.544020649275796 1 0.696054250452083 -0.472286389921945 -0.54065940089553 1 0.694951293578895 -0.443609338713582 -0.565924508767094 2 0.662341108456591 -0.519577541752203 -0.539667211092482 1 0.628462041430739 -0.558902698668355 -0.541033956664572 1 0.606348236628681 -0.539782968387134 -0.58396186402942 1 0.634801672067682 -0.530065775655057 -0.562220178811869 2 0.724557016266845 -0.491222680999121 -0.483273927632376 1 0.6908132666917 -0.538534336110364 -0.482274732381753 1 0.694099154125044 -0.505884501459122 -0.511947166776526 2 0.410607340483053 -0.51621823079718 -0.751593125928273 1 0.358092791041339 -0.535725846288409 -0.764777555554249 1 0.359341358394512 -0.490578001212833 -0.793877090246533 1 0.411672396812752 -0.470813229415163 -0.780296116927772 1 0.38523413301044 -0.503733626457417 -0.773252079415517 2 0.364830787371543 -0.568779068647743 -0.737168836024612 1 0.318154327707327 -0.589425997428926 -0.742651085820634 1 0.311424801427575 -0.556447383608716 -0.770363611836505 1 0.338336899887241 -0.562947058931905 -0.754218398099158 2 0.301654251238656 -0.509542782864887 -0.805746926774921 1 0.303446136283207 -0.458381564093315 -0.835384543558897 1 0.360860734868233 -0.439041588196837 -0.822835725092701 1 0.33162728633968 -0.474821218367573 -0.81521016286029 2 0.24027087945016 -0.583334433638781 -0.775674726533427 1 0.230625154713193 -0.536686730527315 -0.811543029248869 1 0.271290991519448 -0.547129698122153 -0.791740629565381 2 0.560490398165573 -0.2591629414922 -0.786439510900098 1 0.572149136532877 -0.181301185849133 -0.799881121537933 1 0.615563281615984 -0.177730876707656 -0.767811353940566 1 0.604131389837406 -0.25565582249011 -0.754562583928391 1 0.588761658156133 -0.21872634858373 -0.77806589640397 2 0.536950320253989 -0.183388507805197 -0.823527100830306 1 0.543591384639331 -0.125698398566986 -0.829946063661667 1 0.578690074341101 -0.123545923304703 -0.806158529448558 1 0.558242491216649 -0.153592544454928 -0.815451789845398 2 0.621789849850598 -0.122240406446719 -0.773648247971126 1 0.654786195138338 -0.120567699060823 -0.746237820195763 1 0.648666530750274 -0.176041992610324 -0.740529877443948 1 0.635638530488647 -0.149248740112935 -0.757584394495866 2 0.584681732705237 -0.0484796982013546 -0.809676314582034 1 0.627657310890903 -0.0471493599093871 -0.776906949180355 1 0.60385166723826 -0.0854349955380776 -0.79244787958752 2 0.620763874655013 0.470740338580204 -0.626901541368277 1 0.642535894697346 0.493689806690267 -0.586048497026759 1 0.673740378358608 0.455059132874573 -0.582255628669448 1 0.65195642943457 0.432103764393954 -0.62308716833675 1 0.647678362470251 0.463206978254164 -0.604974601009526 2 0.608069007399838 0.532409910489017 -0.588892168793964 1 0.629867932000164 0.555192192868581 -0.543218575669997 1 0.66426761488839 0.516407671636466 -0.540303331954602 1 0.636651599918859 0.524808429666009 -0.565027580075528 2 0.698780240215842 0.469706226994478 -0.539422794289358 1 0.725625837048567 0.425342909613403 -0.540931747513991 1 0.700497669937714 0.410659198116491 -0.583691805517555 1 0.700144007283175 0.440496854305911 -0.561960334609305 2 0.69113462931935 0.537470079748472 -0.483002822325577 1 0.725656458598875 0.490732842104641 -0.482114390120196 1 0.695616514989941 0.504055178735118 -0.511687257168469 2 0.597149430383997 0.238414861132603 -0.765805827615376 1 0.612385919848945 0.173909747092414 -0.77122764875948 1 0.569796462614884 0.175710662350171 -0.802821973393648 1 0.554198192080599 0.240093706125682 -0.796973845893938 1 0.583917032496158 0.207227209319215 -0.784922187528702 2 0.64600250106738 0.174321838670158 -0.743224423486958 1 0.655386247621657 0.121372658962281 -0.745580292899867 1 0.62189299476179 0.120957064230761 -0.773737503431956 1 0.634330245169698 0.147735984364422 -0.758942164158843 2 0.577740100867297 0.121642210999662 -0.80710082288295 1 0.534306801072616 0.178292910530873 -0.826333048680736 1 0.556438327539732 0.150087100794575 -0.817320813639184 2 0.628324249195915 0.0466805829455692 -0.776385570660175 1 0.603702603150924 0.0842461207740679 -0.792649210107072 2 0.437573214825672 0.463575364204806 -0.77041772944784 1 0.369330383547816 0.485593642084685 -0.792330373122333 1 0.36585610180341 0.53369273159794 -0.762502841646434 1 0.434300687570367 0.511981072684231 -0.741002543906915 1 0.402211938422445 0.499257159774644 -0.767405360597112 2 0.369133186909627 0.436751823578995 -0.820408942430496 1 0.304777907498772 0.507573925478078 -0.80584071248608 1 0.337357608114722 0.472722248675463 -0.81409143174818 2 0.313952239908369 0.553537800632567 -0.771429506197189 1 0.318097678368329 0.588479701024121 -0.743412693425622 1 0.370021539538196 0.568749451770319 -0.734637484572122 1 0.342225298724111 0.561513426814744 -0.753538268410558 2 0.238660196440055 0.581303092821008 -0.777747139569538 1 0.272063426349663 0.545156282161516 -0.792863664925535 2 0.051020444016194 0.207183425551463 0.976945115088938 1 0.0301901840916774 0.161035031573236 0.98650361295761 1 0.0759689343496689 0.141364249073871 0.987054066278119 1 0.0967936186157495 0.187501952067388 0.977482426133459 1 0.0635339683652349 0.174387049223525 0.982647875586945 2 -0.0176395058903349 0.181475273529017 0.983237474179726 1 -0.0397708963374076 0.13103638766777 0.990608301238382 1 0.0080636874497027 0.110570736024471 0.993761966422282 1 -0.0047923793524373 0.146135037882679 0.989253961718115 2 0.062698408888341 0.0916501599359129 0.993763752487784 1 0.125834856416999 0.128166606655769 0.983756767292392 1 0.0943370352367365 0.109985488936187 0.98946978950577 2 -0.0138288460922139 0.047364442180391 0.998697462341377 1 0.0244639167293182 0.0695646470313177 0.997166775276512 2 0.275085088228903 0.336471410969467 0.900557545957777 1 0.338031367259055 0.33287215007568 0.880326188349086 1 0.326411717348599 0.382981619608676 0.864198082183092 1 0.263292565618044 0.386412193430031 0.883915891418446 1 0.300976440004664 0.360012099485504 0.883062991573118 2 0.346649994390262 0.291246147390742 0.891676663738628 1 0.388841644641265 0.3318996069238 0.859455719690159 1 0.367965307816863 0.311766977215593 0.876107756637331 2 0.377023545381411 0.38237902086409 0.84358625205293 1 0.315194521066026 0.421674521802857 0.850260965402719 1 0.346356098947635 0.402318311498683 0.847549556425553 2 0.417118259531476 0.357744279266086 0.835413936423989 2 0.0141834064590697 0.425028100023479 0.905019051055558 1 -0.0290445171216798 0.479308511677856 0.877158795514741 1 -0.079935493439234 0.455682451308567 0.886595504846493 1 -0.0367652256601652 0.401651529520673 0.914958000474886 1 -0.0329227812180052 0.440897294911283 0.896917953701697 2 0.0202602127307342 0.503555368536875 0.863773439292373 1 -0.0729264510017217 0.524441415657716 0.848255629446338 1 -0.026362146318531 0.514606071819508 0.85702804515918 2 -0.117421181452035 0.490325095094531 0.863636103790624 1 -0.153123937828346 0.46467798618227 0.872228621630089 1 -0.115688097142051 0.430164453508327 0.895353128442002 1 -0.116621682151013 0.460542432131199 0.880075664487653 2 -0.172625480609053 0.534555917633822 0.827160582592407 1 -0.1229351203597 0.530217277188442 0.838801870100959 2 -0.181174471115573 0.112509590283346 0.976968890661922 1 -0.143514682481874 0.0784314437541322 0.986551691968781 1 -0.110745643688562 0.11581096728281 0.987093654946064 1 -0.148397590520115 0.149880930849931 0.977502573833253 1 -0.146055723297704 0.114232686440341 0.982681340493592 2 -0.177818895068827 0.0392468375131001 0.983280029707982 1 -0.136505893523164 0.00251669578324675 0.9906643404944 1 -0.102174986355843 0.0416979263791825 0.993817120336947 1 -0.140105249882792 0.0405028363962836 0.9893073729106 2 -0.0672836666276928 0.0878558878166288 0.993805308654354 1 -0.0832277610209826 0.158960521121676 0.983789830905963 1 -0.0753070423271601 0.123498542703347 0.989504785456431 2 -0.0487408823768583 0.00117914010564791 0.99872487856803 1 -0.0580574489838521 0.0445629744626417 0.997204331096998 2 -0.23624548045814 0.365041421745563 0.900458563640449 1 -0.213024785546979 0.423723803155663 0.880417893028755 1 -0.263151489763658 0.428315905612403 0.864501278348299 1 -0.286266366285527 0.369420952262121 0.884040773104081 1 -0.249897856377529 0.39697993474826 0.883157634938453 2 -0.17164014150391 0.417777237903194 0.892235601976179 1 -0.194542854301164 0.470747161753513 0.860581766194614 1 -0.183206132105586 0.444525059024136 0.876940957522826 2 -0.246613591839672 0.476441154691362 0.843904971154039 1 -0.303425296624005 0.429839319014916 0.850452493656613 1 -0.275222018183128 0.453467984154528 0.847809817382859 2 -0.20986897309616 0.506081594718275 0.836469239924748 2 -0.399840998926221 0.144770072404276 0.90503085131781 1 -0.464811093274882 0.120442846212477 0.877172169443198 1 -0.458083326362979 0.0647903223310541 0.88659457394638 1 -0.393367444617594 0.0891397364554048 0.914953741733146 1 -0.429491517474345 0.104903074124149 0.896922190296592 2 -0.472631364924327 0.174810514488462 0.863795996959848 1 -0.521309284823619 0.0927055500244951 0.848255079188458 1 -0.497556649875626 0.133918031965277 0.857038019954372 2 -0.502612307157501 0.0398456990218941 0.863635478559085 1 -0.489253321391253 -0.00203596037559396 0.872228579220623 1 -0.444862383701595 0.0229011610943213 0.895352502833696 1 -0.474041164123966 0.0314016498128776 0.880075045228794 2 -0.561737353214564 0.0010106661505813 0.82716055614931 1 -0.542255885607357 0.0469288070664801 0.838801500569087 2 -0.162801115942042 -0.13762810931423 0.976987233716269 1 -0.118559071323874 -0.112426688240635 0.986577763816219 1 -0.143998413906466 -0.0696860211211332 0.98713611664794 1 -0.188229044252715 -0.0948818038539433 0.977529576283442 1 -0.15349797597381 -0.1037257443754 0.982711546104189 2 -0.0919496585308705 -0.157201323537566 0.983275820701234 1 -0.0440543531456168 -0.129440847773311 0.990635890036026 1 -0.0706529734293874 -0.0846428111279213 0.993827619127667 1 -0.081363336961413 -0.121015745686634 0.989309334693909 2 -0.103821458958891 -0.0370595550378743 0.993852441802506 1 -0.176650504413446 -0.0301142597001107 0.983831994708516 1 -0.140338170602044 -0.0336080387117321 0.98955418973035 2 -0.0155526646106391 -0.0464323112649311 0.998714005235493 1 -0.0597437938074571 -0.0417752399588008 0.997224220134601 2 -0.420177934477498 -0.111879006845243 0.900459572579149 1 -0.46881336023344 -0.0716603911110047 0.880418416377992 1 -0.488670636459141 -0.117914987332893 0.864501277192261 1 -0.439800389970129 -0.158098659538044 0.884041328977779 1 -0.454772449500427 -0.114993522188079 0.88315817595408 2 -0.450369672843562 -0.0341392168997548 0.892236151631145 1 -0.507824251895742 -0.039551842430395 0.860581782173194 1 -0.479382381361961 -0.0368733260105667 0.876941229996071 2 -0.529329848596305 -0.0873146566861412 0.843904932634639 1 -0.502564875007893 -0.155747397952659 0.85045249737803 1 -0.516321659071047 -0.121622402400453 0.847809784603878 2 -0.546165214574397 -0.0432090560044064 0.836469223802607 2 -0.261237756108774 -0.335536459941441 0.90503126295171 1 -0.258181644806966 -0.404842795880212 0.877171800129189 1 -0.203027352717018 -0.415542075637695 0.886672917313704 1 -0.206181611846956 -0.346467897453127 0.915026801203749 1 -0.232412745700724 -0.37600445405776 0.896961030586114 2 -0.312304734040789 -0.395480111203506 0.863796170472145 1 -0.249261546856606 -0.467147408322885 0.848255522571902 1 -0.281116423796868 -0.431821847610207 0.857038139526798 2 -0.193201967934708 -0.465696852973641 0.863638975910932 1 -0.149192375560234 -0.465910317950206 0.872252275218587 1 -0.159052060788924 -0.415886630297829 0.895445700030646 1 -0.176248278385452 -0.441073149604265 0.880126059790398 2 -0.174536681580695 -0.5339288243332 0.827165155069362 1 -0.212192709294044 -0.501212960437022 0.838804017571898 2 0.0807644346260207 -0.197991467074506 0.976846421458012 1 0.0707133290764317 -0.148330663195714 0.98642454783332 1 0.022310200039179 -0.159137553573998 0.987019482590609 1 0.0323594720029813 -0.208785730748885 0.977424717627628 1 0.0515722311594112 -0.178678758280567 0.982578065411767 2 0.121159618396606 -0.136985762428164 0.983137588053714 1 0.0591339692001167 -0.0940918433766653 0.993731088124748 1 0.0902166819246484 -0.115626842464828 0.989188581298677 2 0.00382072639812039 -0.110853610129453 0.993776003933955 1 -0.025550668199701 -0.177696468567266 0.98377101673215 1 -0.0108760679753365 -0.144378749861664 0.98948288786382 2 0.0218178762667309 -0.0703207387779786 0.997171203969494 2 -0.0234586926413469 -0.434173470654472 0.900464177067061 1 -0.0767044495239666 -0.468013462744366 0.880418783564495 1 -0.0388729199153947 -0.501194891868166 0.864498963767098 1 0.0144120255777024 -0.467122138183011 0.884046045308849 1 -0.0311816290490584 -0.468045172255898 0.883159413422383 2 -0.106640731409451 -0.438847158092702 0.892258337468147 1 -0.119300119444037 -0.49519492334547 0.860581528621962 1 -0.113032249839795 -0.467301333912991 0.876952712571553 2 -0.0805298030868719 -0.530411677151738 0.843900791873894 1 -0.00718804406024646 -0.526093296533094 0.850454445821876 1 -0.0438876831591708 -0.528636631794447 0.847808558721404 2 -0.127674116144702 -0.532788448912753 0.836469235515124 2 0.237427664535634 -0.352791854252159 0.905037594649606 1 0.303849651336955 -0.371315844837969 0.877391906934968 1 0.330806866646864 -0.326379624863387 0.885545002198719 1 0.264594223176226 -0.308044538656152 0.913738312105278 1 0.284462912955224 -0.339990642642018 0.896373195615007 2 0.278887571960886 -0.419189935268048 0.864046809325945 1 0.365954720551596 -0.381640645219482 0.848711168252796 1 0.322798521477047 -0.400888029785455 0.857386639896978 2 0.380993036516832 -0.328847231660212 0.864188749842838 1 0.343671134781702 -0.287261900169894 0.89412759275198 1 0.3625395634602 -0.308239288540478 0.879685785891416 2 0.409902941547462 -0.356537394247186 0.839462713844644 2 0.163051313822512 -0.137628160522099 -0.97694559940389 1 0.119076062221649 -0.11253555113812 -0.986504138828645 1 0.144550872963636 -0.0697131878746775 -0.987054065633162 1 0.188515332660497 -0.0948004297358701 -0.977482427410988 1 0.153899420354259 -0.103739175381579 -0.982648130428815 2 0.0923943688973591 -0.157185834208637 -0.983237987455529 1 0.0448440748578533 -0.12938759250944 -0.990608290157144 1 0.0715147881529735 -0.0847138823207087 -0.993761985589832 1 0.0820168096953447 -0.1210431200364 -0.989254235940218 2 0.104594197988563 -0.0372933272928044 -0.99376372613361 1 0.177135972485549 -0.0297256824176079 -0.983756774598066 1 0.140967364166815 -0.0335305033340523 -0.989469777698317 2 0.0166519751796985 -0.0464470064103149 -0.99869744890187 1 0.060680364880094 -0.041899435962204 -0.997166767399678 2 0.420317298950358 -0.110522629836662 -0.90055922552407 1 0.469129825641581 -0.0706096466927629 -0.880326193861432 1 0.48918171935863 -0.117979520409647 -0.864198594156449 1 0.440130131642698 -0.157857648481215 -0.883917973063138 1 0.455101876658751 -0.114348090600812 -0.883064125217239 2 0.451635612158692 -0.0318675575344441 -0.891676657224346 1 0.509665144005877 -0.0399569815934707 -0.85945624102297 1 0.480942046727588 -0.0359402926803671 -0.876108047127521 2 0.529774478295876 -0.0877420970694938 -0.843586266622735 1 0.502850516505174 -0.155876003721615 -0.850261506121573 1 0.516683733797207 -0.121899683049378 -0.847549829171089 2 0.54773230175446 -0.0442451601368687 -0.835414216067063 2 0.261209822250772 -0.335593096323636 -0.905017713800659 1 0.258046553895774 -0.405005610134007 -0.877138977313947 1 0.202967061605931 -0.415790365542565 -0.886573803552605 1 0.20623149873879 -0.346615561454714 -0.914959011260944 1 0.232369992887855 -0.376159342514777 -0.896909876709523 2 0.312269251762789 -0.395607819046502 -0.863750752333048 1 0.249014350501904 -0.467477288279638 -0.848148499968522 1 0.280977766500209 -0.432055072492102 -0.85697022296424 2 0.192920804693427 -0.465989960994715 -0.863543905275922 1 0.148965991425917 -0.466185757738405 -0.872146619811742 1 0.159047229652836 -0.416118931292205 -0.895338528450307 1 0.176105271356089 -0.441336474319055 -0.880025763842273 2 0.174375628980914 -0.534941514416454 -0.826558749736873 1 0.211991700513906 -0.501892595365491 -0.838457950724205 2 -0.0804464354212337 -0.197510673664991 -0.97696886641737 1 -0.070007193785961 -0.147806322556708 -0.986551686703633 1 -0.0215243703829858 -0.158787125208147 -0.987093629230393 1 -0.0319620833457717 -0.208480257525024 -0.977502581826764 1 -0.051020241466549 -0.178263710792894 -0.982681316794192 2 -0.120793113465188 -0.136267969461273 -0.983280038762255 1 -0.108957756346907 -0.0822707697682552 -0.990664326945413 1 -0.0581522255141488 -0.0937907011679861 -0.993817121093106 1 -0.089542392263301 -0.115117635538946 -0.989307368527391 2 -0.00279372313535409 -0.110624935687731 -0.993805299446905 1 0.0260993762092477 -0.17752174339518 -0.983789817743713 1 0.0116643987625991 -0.144176592435194 -0.989504755521772 2 -0.0387393577515791 -0.0296028293363083 -0.998724877766428 1 -0.0207763666026922 -0.0701772136013855 -0.997204319910921 2 0.0233102008940515 -0.434228940736639 -0.900442527160921 1 0.0764868324294699 -0.468116282466491 -0.880384678419384 1 0.0386312935112558 -0.5012675915993 -0.864468816000756 1 -0.0145843258665178 -0.467148117688142 -0.884029458916996 1 0.0309864619209922 -0.468109658225944 -0.883134170213472 2 0.106492211937088 -0.438980198923045 -0.892210225073677 1 0.119003845414506 -0.495436968610357 -0.860483308979937 1 0.112810092287443 -0.467490514015131 -0.876882522580841 2 0.080179517606935 -0.530559802184037 -0.843839409336375 1 0.00697747787346077 -0.5261178676177 -0.850439263354721 1 0.0436070023768212 -0.528722786730395 -0.847769962265709 2 0.12741977426463 -0.533377458677303 -0.836146380942758 2 -0.238487256080801 -0.352079258598413 -0.905028465884028 1 -0.305461720763839 -0.370522362511974 -0.877151705446824 1 -0.332721996869767 -0.321520432582208 -0.886572381387685 1 -0.265941604519748 -0.3032463413289 -0.914953649903604 1 -0.285961941506925 -0.337211591975494 -0.896913220680238 2 -0.279776403499557 -0.419169104968188 -0.863773270122539 1 -0.367647203171776 -0.381285861522708 -0.848147927742811 1 -0.324094993599625 -0.400704826129925 -0.856980013559345 2 -0.383566695142476 -0.327478543509504 -0.863543279675845 1 -0.397336177323264 -0.285735453708859 -0.872146623566255 1 -0.346606765691266 -0.279851528122055 -0.895337357205478 1 -0.365317501693041 -0.303867522138144 -0.880024899591081 2 -0.454874499550642 -0.331147927769136 -0.826558744421533 1 -0.411818875818131 -0.35671018131017 -0.838457593175184 2 -0.212602782438737 0.0156565661215924 -0.976988226621361 1 -0.161998504180155 0.021270278218343 -0.98657831796166 1 -0.157457818734086 -0.0282615311771091 -0.987136096662822 1 -0.208049564289062 -0.0338731016742095 -0.977530120874631 1 -0.185150127347104 -0.00630465275356532 -0.98271208223504 2 -0.166788264566731 0.0731353604075235 -0.983276305721586 1 -0.111723801307961 0.0788267548828944 -0.990635904223339 1 -0.106911547392288 0.0269490863711887 -0.993827635752673 1 -0.136955142668512 0.0500815572094236 -0.9893096200325 2 -0.10577688947715 -0.0310424805621344 -0.993852414859322 1 -0.160615153245466 -0.0794671697739586 -0.98383194334531 1 -0.133291113051942 -0.055297793947498 -0.98955413292304 2 -0.0398746229569712 0.0284231461422247 -0.998713982389894 1 -0.0728888791231923 -0.00131930344961472 -0.997224203182367 2 -0.405772051959081 -0.15635258188439 -0.900442504150692 1 -0.421568922024179 -0.217398962645229 -0.880384704041515 1 -0.464796269746262 -0.191640764877634 -0.864468801910484 1 -0.448790718858672 -0.130485586343062 -0.884029482288164 1 -0.435623013874402 -0.174123296897337 -0.883134178117739 2 -0.384587044517231 -0.236932801335419 -0.892210268299582 1 -0.434414213114294 -0.266278316951446 -0.860483338728974 1 -0.409749590082071 -0.251751707137266 -0.876882573587169 2 -0.479815104768823 -0.240207033060404 -0.843839416771632 1 -0.498212274683928 -0.16921551858455 -0.850439297305533 1 -0.489370029578753 -0.20485703523924 -0.847769967983039 2 -0.467896995582762 -0.286006411644277 -0.836146393926968 2 -0.408541417917167 0.118020079488552 -0.905029052122068 1 -0.446780252058928 0.17601394301425 -0.877151745665774 1 -0.408600688185733 0.217083015914519 -0.886572378010804 1 -0.370582513228008 0.159221481798844 -0.914954079001724 1 -0.409073059208562 0.167764135084975 -0.896913494050536 2 -0.485108892489405 0.136552952613724 -0.863773285171239 1 -0.476234032496556 0.231829939347019 -0.848147954649335 1 -0.481243875937337 0.184408378113337 -0.856980076530027 2 -0.429979595872391 0.26359650843983 -0.863543234041487 1 -0.394534944627743 0.289590133169068 -0.872146605033618 1 -0.373262182030176 0.24316334443009 -0.895337314516877 1 -0.401884771356784 0.253536829948959 -0.880024843447847 2 -0.455504715961232 0.330279761809796 -0.826558762689753 1 -0.466510926126802 0.281433122858892 -0.838457568164189 2 -0.0510365681528404 0.207651164069449 -0.976845901131329 1 -0.0299783311206288 0.161566395711269 -0.986424018255872 1 -0.0754890989317837 0.141858984039818 -0.987019457711856 1 -0.0965414017969978 0.187932466180546 -0.977424700661897 1 -0.0633017338716132 0.174868024058586 -0.982577769496792 2 0.0175019318846013 0.182039420077659 -0.983137050539063 1 -0.00746531721772331 0.110879952927839 -0.99373105995568 1 0.00502309926520851 0.146571993866244 -0.989188269347673 2 -0.0620669500048407 0.091928373681443 -0.993776021699602 1 -0.125117810180372 0.128742806547492 -0.983771005747654 1 -0.0936623143858765 0.110412970577523 -0.989482884739624 2 -0.0236824256659553 0.0697150102679934 -0.997171198087218 2 -0.274125917837461 0.337562292488697 -0.900444330267709 1 -0.337037789921715 0.333746576326251 -0.880385162906635 1 -0.325899258267949 0.382813525822308 -0.864472051447966 1 -0.262819872336524 0.386464912082514 -0.884035528798432 1 -0.300237679829001 0.360470928142634 -0.883136501212259 2 -0.344186535508616 0.292539928879456 -0.892209940491347 1 -0.387488674027573 0.330864385421865 -0.860483683965846 1 -0.366053523280927 0.311893752925739 -0.876882548047382 2 -0.376723477288945 0.382099945203589 -0.843840444984441 1 -0.314897058360088 0.4215248523922 -0.850443286472762 1 -0.346058976375717 0.402106204188723 -0.847772378781143 2 -0.416597523161263 0.356613321674389 -0.836146820124019 2 -0.0152799825748319 0.424972747176349 -0.905037074979474 1 0.0275668529675362 0.478999849146534 -0.877391825662883 1 0.07578698775114 0.458490074328487 -0.885545026876039 1 0.0329984745846583 0.404738775882333 -0.913737742339087 1 0.0302951448366881 0.442262111618475 -0.896372875311342 2 -0.0207647873620986 0.503057548978102 -0.864047267432478 1 0.0717407089828369 0.523856491271766 -0.848711162889572 1 0.025515396660535 0.514061237075462 -0.857386770744474 2 0.1149380373421 0.489985459476398 -0.864188751735757 1 0.109187585119753 0.434404804524775 -0.894127589671543 1 0.112122087858514 0.462466537809668 -0.879685805021369 2 0.122051144800235 0.529379667279466 -0.83946267967759 2 0.460761657230932 0.743405905239498 0.484736975329816 1 0.422155469956906 0.775617889648933 0.469304011656488 1 0.396852751986079 0.763126181582441 0.510069135427803 1 0.435450032000212 0.730919605869424 0.525496546973964 1 0.429094401358674 0.753775295828751 0.497735357690772 2 0.447644850443541 0.786560451548187 0.42537746073835 1 0.404469407390838 0.81848682748435 0.408098581668263 1 0.378925932199813 0.807456775601405 0.451980502649784 1 0.413606212866635 0.797626221208528 0.43901802615292 2 0.353241957829401 0.79013861099526 0.500800685043636 1 0.376308208534215 0.743223925213602 0.553216989618695 1 0.365036685508144 0.767234433074665 0.527392030598628 2 0.323180225963865 0.840655108454692 0.434384285194888 1 0.338521939042494 0.816166396983589 0.468039434393349 2 0.509391912554668 0.550219633597656 0.661626985914687 1 0.505903490146957 0.50617118377058 0.698551326097722 1 0.551321114477021 0.493595894705911 0.672634906261717 1 0.554542931426039 0.537392453496508 0.635368807769425 1 0.530713660408517 0.522259818262201 0.667576922865642 2 0.468400869381121 0.521802758301768 0.712992114909952 1 0.496430426134474 0.466814969820424 0.731904982186569 1 0.48270855594426 0.494611327388567 0.722879036902864 2 0.546037585538755 0.444560804563521 0.709975187140492 1 0.594499397972741 0.430343648737907 0.679287354993905 1 0.599309363406039 0.479012216662453 0.641413284997304 1 0.573317259695918 0.462298521916519 0.676447440025134 2 0.530030923046708 0.385030033352625 0.755400480525421 1 0.513727218953024 0.426341608043398 0.74439698782844 2 0.670500022580909 0.613248852520425 0.417321702697506 1 0.717070117382827 0.600474563406619 0.353946872452096 1 0.695898536979815 0.640655915379619 0.324540434301129 1 0.64951366578254 0.653673334933287 0.38799707129397 1 0.684022659723298 0.627737676031888 0.371386261908137 2 0.73245038022307 0.567750593514435 0.375925755615261 1 0.763446134950206 0.556540175420974 0.3279006800993 1 0.747944979576415 0.589142211792859 0.305826970002295 1 0.740746989463079 0.578887099750601 0.34113865791355 2 0.725434437289505 0.629579097014858 0.278338482835919 1 0.706247948432809 0.660369596521433 0.255499437638132 1 0.676854203072026 0.671548267278979 0.301718108675708 1 0.701594239087086 0.650983801270798 0.290226328349104 2 0.783805493920545 0.571851359235217 0.241683120151452 1 0.761049269871375 0.612156803980896 0.214089604307856 1 0.75537405701338 0.601323679934631 0.260255232366548 2 0.404841279534696 0.872204843796469 0.274379765365389 1 0.368576440467228 0.875508358424635 0.312538213170949 1 0.399187583918477 0.850492371424064 0.342543237821469 1 0.435445410818105 0.847193874859973 0.304393645036708 1 0.402283339067302 0.861933016183406 0.308671521119929 2 0.335611468189148 0.899401360468483 0.280089023871825 1 0.296029362275381 0.899817337373903 0.32055358406565 1 0.328955701227455 0.875815935499953 0.352974037354811 1 0.332542275062677 0.888301613060111 0.316777703124819 2 0.367965287652894 0.846607431797297 0.384389183162244 1 0.435631164673692 0.822287231856538 0.366208968862495 1 0.402091052643417 0.835050195061726 0.375573141281838 2 0.284151347016963 0.869893550579997 0.40295734704149 1 0.326369709541423 0.859059685321198 0.394055289870302 2 0.631258671826416 0.744676867553889 0.216657389023056 1 0.674438590242805 0.707115870440589 0.21269794835755 1 0.671004378714987 0.723626269002953 0.161696928801052 1 0.627485857497011 0.760823571326068 0.165562918959332 1 0.651563652807225 0.734642799183826 0.189302413508385 2 0.66974655229501 0.69769175146938 0.25436211303603 1 0.711054662052554 0.669860760171597 0.213855993659065 1 0.690808137008549 0.684189506330941 0.234247491445189 2 0.715291588879179 0.680942972599903 0.156641014626339 1 0.709219762624124 0.69783629701715 0.100424796446776 1 0.664383911915038 0.739948523572006 0.105392381607461 1 0.690606595380702 0.711235658222237 0.131156830493064 2 0.765715682114471 0.623599327033884 0.156916004180326 1 0.739121196148228 0.647362844339454 0.185580694435 2 0.454579126803317 0.890277981582979 0.0237922515648708 1 0.417978344638724 0.907361520627743 -0.0450371125858647 1 0.373426304212773 0.927430031470562 -0.0217292389784851 1 0.410104192777233 0.910654154057085 0.0471303446791045 1 0.414503048285783 0.909977477378207 0.00105200579426893 2 0.4519028817581 0.889875150893609 -0.0636395135578701 1 0.422927169949678 0.899051707244598 -0.113787903394205 1 0.388905365869244 0.916368565680762 -0.0952048601976367 1 0.420725052268582 0.903808754913114 -0.079471557296272 2 0.34549758610841 0.935877489149827 -0.0697027810252937 1 0.310021799635455 0.949504567329839 -0.0498679906943259 1 0.337989855956131 0.941223109905952 -0.00193689962303489 1 0.341974416629291 0.939158473732908 -0.0358361551945379 2 0.348781000852853 0.923322676192127 -0.159981048954056 1 0.305238584244422 0.942624652761221 -0.134421149865324 1 0.347481566609416 0.930569136800318 -0.114963418949274 2 0.162508596599628 0.943551708242167 0.288485075474979 1 0.182546276038335 0.924856113270777 0.333708659792205 1 0.227065919241226 0.92262229601596 0.31181978233297 1 0.207030758466921 0.941310917486138 0.26660564264941 1 0.194918689955144 0.933717897064197 0.300359223484853 2 0.135277567203825 0.924820008569118 0.355550152429995 1 0.156838463038892 0.901837324160737 0.402679900287588 1 0.204097466524839 0.901770421036471 0.380799568967382 1 0.169818760546147 0.914007101970944 0.368462079144576 2 0.254138633359488 0.901075671956045 0.351245427664401 1 0.268915359595765 0.921251528500846 0.281104870679272 1 0.261720847791904 0.911828009955638 0.316404642524075 2 0.23408469486351 0.870601535740701 0.432536094565406 1 0.24435343569197 0.886677805473742 0.392263008278165 2 0.226317085149487 0.973527838803056 0.0315647021362658 1 0.248165195255567 0.968549017678295 -0.0212210923206803 1 0.196994028188429 0.979870889627057 -0.0328321152043676 1 0.17503647842366 0.984360797501671 0.0199656489031831 1 0.211794960995421 0.977351894777043 -0.000632155303365075 2 0.286185138758377 0.958182969959154 -0.00421728089176163 1 0.272041063661817 0.959981585274342 -0.0669101161276806 1 0.27927661382973 0.959659787759329 -0.0355795648439223 2 0.219587674554015 0.971396209169513 -0.0895956950787766 1 0.16272735803867 0.981477078441307 -0.101410711226738 1 0.140005829519264 0.989163393816645 -0.04459019727802 1 0.17999231858179 0.981370546909294 -0.0671711746694475 2 0.25287337540666 0.954561071381891 -0.15720722288458 1 0.262738913917523 0.958241097990384 -0.112175684843897 2 -0.0482787676939524 0.987444380865926 0.149756393049087 1 -0.127571579503183 0.979752134232988 0.15443640265912 1 -0.128118275860549 0.969800757123788 0.207648270409934 1 -0.0488513745080154 0.977786762465004 0.203087652720875 1 -0.0882944810563392 0.97982539856505 0.178940079308665 2 -0.127339511648386 0.985545839280214 0.112375888866443 1 -0.185088056010232 0.975938345745392 0.115739032583375 1 -0.185328085331527 0.969950477244994 0.157772171095528 1 -0.156442399840018 0.978492434391193 0.135180839151831 2 -0.183351891131927 0.960219368325109 0.210843743311007 1 -0.182027867189148 0.950392467827209 0.252548229491292 1 -0.126861601155636 0.960131163887282 0.2493925402088 1 -0.155197743241595 0.960802925553792 0.230263652820661 2 -0.259611033474703 0.951992258424393 0.161492541270322 1 -0.257577447888418 0.942014599407764 0.214578614142812 1 -0.221721034998876 0.957090981755919 0.186375591993708 2 0.0683347136529323 0.858806848478146 0.50764748768092 1 0.120655989822293 0.855421730051104 0.503728624291596 1 0.117820205643108 0.879745364711467 0.460641698073298 1 0.0655095083764521 0.883121528680788 0.464556444635102 1 0.0931431414887147 0.869858762664959 0.484471030039143 2 0.123326100827257 0.827739684405552 0.547399358842616 1 0.176704717311397 0.849437651011878 0.497075337219588 1 0.150131448920991 0.83923701908698 0.522642348860719 2 0.16851588378513 0.878217206907058 0.44747463951533 1 0.106137865115707 0.903257269037504 0.415810847967595 1 0.137426891034552 0.891386375403866 0.431953631299071 2 0.205598341738223 0.86083771437517 0.465256541827559 2 -0.145778354627606 0.920634826692993 0.362148638228569 1 -0.183788532752818 0.929442672393142 0.320127443567642 1 -0.215657346088695 0.908528143926585 0.357910256071352 1 -0.177547740434294 0.899261488035131 0.399759364307965 1 -0.180837553721535 0.915191401382096 0.360272337433742 2 -0.152099738800533 0.94340372918123 0.294771632838683 1 -0.213765882833902 0.936544026776616 0.277916820912843 1 -0.183039660679819 0.940537251358661 0.286522444808949 2 -0.256034103800791 0.914947116135493 0.311727244719217 1 -0.289802329958353 0.889685133437329 0.352895596984599 1 -0.249213589794518 0.882552936920148 0.3987820217738 1 -0.252909772011654 0.89974736922871 0.355651550771127 2 -0.300040827004726 0.920891700551905 0.248554639211354 1 -0.257161019911555 0.929667976493706 0.26348940022606 2 -0.142770503553419 0.770837527917975 0.620671193805241 1 -0.165151151775821 0.718242398029963 0.675937750986819 1 -0.115530121995331 0.710116673442189 0.694577104403399 1 -0.0931272784504175 0.762919312323734 0.639523541634719 1 -0.129286772461784 0.741382644241672 0.658421060144387 2 -0.204220895035106 0.722847347484582 0.660249130560572 1 -0.21954519794055 0.6811713399623 0.698504514849413 1 -0.180454673951576 0.67641637570414 0.714095510989871 1 -0.192475524180366 0.70016487855458 0.687684321325431 2 -0.130214060239257 0.66960697117221 0.731278972128464 1 -0.0759801586585942 0.703083705036974 0.707137287421421 1 -0.10316470732532 0.686797023828464 0.719665575056974 2 -0.199002027014469 0.61840320272583 0.760095942935274 1 -0.164764240550876 0.644645471767368 0.746450551614187 2 -0.566550341656201 0.66786377474871 0.482625643560254 1 -0.60816850620629 0.64102152224063 0.468246444264467 1 -0.603642728115728 0.613329573306839 0.509385094886651 1 -0.562025634697362 0.640160330533791 0.523755231812875 1 -0.585485302948658 0.641019295163453 0.496330814273209 2 -0.610880477531109 0.668567691966903 0.424082086296273 1 -0.653900615814496 0.637494572668663 0.407515664867783 1 -0.65111589015162 0.609862607275277 0.451631268756845 1 -0.631481077416576 0.639705106760095 0.438190946293019 2 -0.642535837599392 0.58011771050185 0.500508202009197 1 -0.590982255263963 0.587800109931565 0.552511990198271 1 -0.617201835102044 0.584375954278158 0.526890535710638 2 -0.699772945735118 0.567116374307102 0.434201080084403 1 -0.671787962552495 0.574148271778507 0.46779965856759 2 -0.354093309148233 0.673419076577028 0.648854462412418 1 -0.318537846450771 0.643342283642772 0.696193979110458 1 -0.281490032152598 0.678513672853029 0.67855700296582 1 -0.316838945046109 0.708235816012953 0.63083954897618 1 -0.318038961432857 0.676502446258454 0.664220834907399 2 -0.348316566690075 0.613337854499113 0.708921841492432 1 -0.285304593598338 0.618118406547446 0.73249515374116 1 -0.317011530224392 0.616117745568639 0.721153634610729 2 -0.248303911569428 0.653892779820938 0.714676930267642 1 -0.252627183609845 0.705549497735337 0.662177247261804 1 -0.250658209255933 0.680224165135304 0.688930965149191 2 -0.242402519936492 0.618876179118193 0.747066735584272 2 -0.399113807136936 0.816112844514976 0.417834156934016 1 -0.362466827195089 0.856757371064288 0.366855475825942 1 -0.399438183861029 0.856823103921392 0.326221216243061 1 -0.436336739423754 0.816695181110367 0.377388553685611 1 -0.399770843061991 0.837494511233555 0.372480047189175 2 -0.321161011663985 0.856227566861938 0.404732421598102 1 -0.330867607688628 0.889578516452867 0.314743709956781 1 -0.326398836827566 0.873933119507743 0.360165084618451 2 -0.37830928405113 0.881466126223447 0.28288208256095 1 -0.411690804401614 0.874556138271964 0.256579256071673 1 -0.432889088867111 0.85013754769772 0.299957188561892 1 -0.405852461703787 0.866334009530705 0.29160910679775 2 -0.347340825536623 0.912231454988129 0.216515928247334 1 -0.339534041224273 0.902117846075612 0.265981902120644 2 -0.704328585183222 0.654692484456282 0.274265017186606 1 -0.71879652193702 0.62109979277774 0.31242574912953 1 -0.685631989127339 0.642513503515654 0.342211344425702 1 -0.671159689182909 0.67609060157188 0.304054661834091 1 -0.695449439203704 0.649036032768859 0.308446468267416 2 -0.751673016129489 0.597134132301727 0.280047647119167 1 -0.764315574507904 0.559602929399944 0.320507279537103 1 -0.731350539132755 0.583500483092784 0.352857783837068 1 -0.74208964305706 0.590776441293652 0.316698276669403 2 -0.691600458294334 0.611553785835051 0.384171341263705 1 -0.647864343047938 0.668364686434962 0.365509004283393 1 -0.670213860162878 0.640422407085068 0.375112849734476 2 -0.739556935586857 0.539053452770547 0.402875432546331 1 -0.716251170101236 0.575849043997091 0.393904711812747 2 -0.514265049618759 0.829915110795395 0.21620994008556 1 -0.465081644211236 0.85939633584129 0.212744155392245 1 -0.481136611683494 0.861546090845421 0.162112542052076 1 -0.530084295671986 0.831639810482433 0.165488332537621 1 -0.498033757685221 0.84629113689715 0.189286185546163 2 -0.458462548376342 0.851661768131566 0.253999492445943 1 -0.418345088792441 0.882436022627259 0.215348404332273 1 -0.438670240500826 0.867560269580131 0.23481178868808 2 -0.426579505873761 0.890564331150972 0.157411898891132 1 -0.444265506333096 0.890214278978718 0.101025951738047 1 -0.498441065264968 0.860482976243432 0.105637005660452 1 -0.463028309510247 0.87650737206831 0.131665987628325 2 -0.355796189146255 0.920903579040371 0.158621250512051 1 -0.387449326259824 0.902576946538532 0.187185278043377 2 -0.706185413182624 0.707485003807595 0.0238615673082032 1 -0.733652395695315 0.678067669399821 -0.0448938924745036 1 -0.766490606395383 0.641923663040491 -0.0216041174088488 1 -0.739290141326933 0.67150752438991 0.0471816897901454 1 -0.737248079064444 0.675524080814378 0.00114932330426074 2 -0.706620356038103 0.704849628318583 -0.06339578633941 1 -0.724217149567212 0.680295214120305 -0.113198662213654 1 -0.751117655894466 0.653369075485236 -0.0947157919699321 1 -0.729417007805972 0.679621219347832 -0.0791042773464146 2 -0.783045132171632 0.618151222229427 -0.0694623709256259 1 -0.806969610314588 0.588636036501247 -0.049605682659674 1 -0.790560500184451 0.612497294556351 -0.0017892555143064 1 -0.787306660711601 0.61572924660272 -0.0356419516496856 2 -0.770175367095658 0.617657823195486 -0.158441259084658 1 -0.801910259464623 0.58222153944731 -0.133126140317633 1 -0.7773974740708 0.618508859693603 -0.114068272562977 2 -0.847154051523772 0.446128501776151 0.288482555375915 1 -0.823184745730406 0.459407690125622 0.333699597783052 1 -0.807302918585191 0.501059122330885 0.311808227107651 1 -0.831264754035405 0.487780144313377 0.266600613821042 1 -0.82778778791091 0.473913713491202 0.300352142489528 2 -0.837756420991865 0.41444122021875 0.355543640195567 1 -0.809242871639425 0.427844191664442 0.4026602508773 1 -0.794576515273406 0.472769741335693 0.380777482916727 1 -0.816802753268 0.443950174200374 0.368447679254832 2 -0.778458364152145 0.520147707725029 0.3512061916156 1 -0.793066207043262 0.540440536211431 0.281086344213664 1 -0.786333928641048 0.530683552773454 0.316375594307023 2 -0.755694565315844 0.491654775943992 0.432470886413315 1 -0.767799605801979 0.506390283931097 0.392210554304657 2 -0.85588537219361 0.516171484890165 0.0316108670132695 1 -0.844339288970896 0.535505083997534 -0.0211529079295708 1 -0.870943888765226 0.490316072891753 -0.0327968355154189 1 -0.882054951486357 0.470724954496147 0.0199789514085537 1 -0.863991159825562 0.503577525475023 -0.000591399372709726 2 -0.822708615974483 0.56847906390381 -0.00407938127945776 1 -0.828702881566392 0.555739991398558 -0.0667176774991878 1 -0.826201279991805 0.562441555645588 -0.0354142528737577 2 -0.855838915684146 0.509298140844431 -0.0895445638167779 1 -0.883031290593001 0.458285195093542 -0.101410431297873 1 -0.897429411956966 0.438939501139544 -0.0446054338190191 1 -0.877611277896901 0.47464225446809 -0.0671533931331436 2 -0.829533432469962 0.536040720533165 -0.156055881390758 1 -0.829931772510473 0.546442917372074 -0.11149961931201 2 -0.954033735544808 0.259222416692627 0.149756382223188 1 -0.971221235957238 0.181432833001324 0.154436412106599 1 -0.96192591204452 0.177837196626242 0.207648268058058 1 -0.945025973500955 0.255692949530073 0.203087660942034 1 -0.959153484797748 0.218810251287361 0.178940081560905 2 -0.976659727895672 0.183443719800466 0.112375742314884 1 -0.985367957737487 0.125552070290337 0.115738884355142 1 -0.979747215491439 0.123473603133536 0.157772171862382 1 -0.978944912538681 0.153585376359268 0.13518077171351 2 -0.969881370363278 0.122346286826845 0.210843734437713 1 -0.960126144147239 0.120568835263327 0.252548226184524 1 -0.952341054364873 0.176044293141957 0.24939253653391 1 -0.96173625773825 0.149302700608677 0.230263645035868 2 -0.985622611791239 0.04727695437692 0.161492549449855 1 -0.975504652612064 0.0461280465760377 0.214578624322202 1 -0.978762996166688 0.0848882102437522 0.186375599075961 2 -0.795658492749236 0.33037635128403 0.507645464818821 1 -0.776273646529555 0.379090919340169 0.503722169214755 1 -0.80028313334838 0.383909953931217 0.460634641470308 1 -0.819656433545598 0.335202791083671 0.464553963005599 1 -0.798504711803537 0.357385697292165 0.484466521182371 2 -0.749120987759647 0.373078022168932 0.547393329290903 1 -0.753268829904489 0.430548415532242 0.497057696099557 1 -0.75177580070856 0.402124007209359 0.522630588833716 2 -0.783171337999185 0.431651663123293 0.447454722355122 1 -0.826253861508014 0.380064672808734 0.415804369294149 1 -0.805298874046222 0.406153787999875 0.431940329134323 2 -0.75519723387482 0.461548306153608 0.465215312112027 2 -0.920623557739173 0.145848418480667 0.36214863610322 1 -0.940746238592246 0.112420569280625 0.320127435993925 1 -0.930703830076559 0.0756485565278562 0.357910278991522 1 -0.910113988975547 0.109029178237623 0.399759359463887 1 -0.92628073636358 0.11082312228168 0.360272340564907 2 -0.944231115078678 0.14687266026121 0.294771625330448 1 -0.956763568031312 0.0861047324445209 0.277916809032019 1 -0.951066146448005 0.116561171872469 0.286522428671617 2 -0.949286245196106 0.0392312047966095 0.311727274895968 1 -0.935695422093176 -0.000690459665470838 0.352895624807604 1 -0.916369198189982 0.0357081054878599 0.398782038012126 1 -0.933864662268538 0.0375059238210529 0.355651603509617 2 -0.968538229489459 -0.000784625733494958 0.248554613705578 1 -0.963634217410744 0.0427086161471303 0.263489396293423 2 -0.777228243061453 0.102419032942339 0.620671190245114 1 -0.734123470006462 0.064880944652634 0.675937781852489 1 -0.711062415413522 0.1095629924749 0.694577123738064 1 -0.754357718026571 0.147186325794139 0.639523542681712 1 -0.745048753199681 0.106141055037937 0.658421082774553 2 -0.750576243070716 0.0291462435179754 0.660249110136891 1 -0.715675710979528 0.00169355080332361 0.698504535165896 1 -0.699073723645579 0.0374016585112922 0.714095470099006 1 -0.725374506696262 0.0333076654299791 0.687684317161872 2 -0.677072451540561 0.0830790800207492 0.731278459190905 1 -0.692152303617495 0.145004817730427 0.707136817943897 1 -0.685062841327702 0.11411723191342 0.719665088723957 2 -0.649631481680392 0.00183519328073412 0.760095941975154 1 -0.664009257173764 0.0425064798707078 0.746450273405303 2 -0.81025000632395 -0.332440111919416 0.482625633452634 1 -0.797581948444708 -0.380315963072654 0.468246441600896 1 -0.76984705252336 -0.384568886056888 0.509385100696468 1 -0.782504467079564 -0.336697588487571 0.523755214139556 1 -0.790570584670994 -0.358743637558954 0.496330801165478 2 -0.824618229926842 -0.374383180290878 0.424082079555795 1 -0.808359991049183 -0.424899753441776 0.4075156648086 1 -0.781219594301897 -0.430789828660087 0.451631252112881 1 -0.803534103994286 -0.402894358260158 0.438190935854742 2 -0.750279276941374 -0.431821855600868 0.500508210661621 1 -0.74165535243527 -0.380417451250927 0.552512001185161 1 -0.746500800782725 -0.40641190963375 0.526890554375464 2 -0.755601542555085 -0.49027506805149 0.434201094074907 1 -0.753641401678217 -0.461486848736044 0.467799653886133 2 -0.749880557119605 -0.128664523026076 0.648854442994529 1 -0.710288913047226 -0.104143803828283 0.696193984224024 1 -0.732290166121734 -0.0580407906112088 0.678557012499619 1 -0.771480682827936 -0.0824746633983525 0.630839534524004 1 -0.741671611967712 -0.0934221872659696 0.664220824786162 2 -0.690954892936421 -0.141736738026452 0.708921875600477 1 -0.676030004648186 -0.0803317149264968 0.73249518675811 1 -0.683925094680958 -0.111104947553106 0.721153672076983 2 -0.698619270815079 -0.0340870305852347 0.714676958439769 1 -0.749083558381144 -0.0222361803121355 0.662177240225416 1 -0.724389373665813 -0.028189393897023 0.688930990126595 2 -0.663493026999884 -0.0392951098144656 0.747066769957168 2 -0.899502562062078 -0.127387241418872 0.417834167073713 1 -0.926832901119061 -0.079974029238099 0.366855480577423 1 -0.938320233658847 -0.115115729055442 0.326221197025883 1 -0.911559024469848 -0.162608583178755 0.377388567385476 1 -0.920040631495815 -0.121404895768207 0.372480049948461 2 -0.913565198481382 -0.0408531479593569 0.404732416276617 1 -0.948283441512672 -0.0397792440938268 0.314743709507233 1 -0.932022843697787 -0.0403636013207431 0.360165098481722 2 -0.955227454352238 -0.0874057888424568 0.282882077223158 1 -0.958971300595691 -0.12128890448612 0.256579239609139 1 -0.942299087681199 -0.148995505540943 0.299957192769084 1 -0.949347617526655 -0.118277060406143 0.291609089062096 2 -0.974917467262526 -0.0484457385350303 0.216515928391582 1 -0.96288675686871 -0.0441464980572134 0.265981885550392 2 -0.840298677188353 -0.467545055994378 0.274265009044315 1 -0.812821466266318 -0.491685399412765 0.312425744250839 1 -0.822938719989842 -0.453527067036522 0.342211329774705 1 -0.850399794112757 -0.429387415857182 0.30405465423584 1 -0.832175514062907 -0.46084843142446 0.308446449217679 2 -0.800188190890392 -0.530358425914611 0.280047635876321 1 -0.768401230832255 -0.553980074816905 0.320507286567632 1 -0.780942347859896 -0.515243867679287 0.352857793241065 1 -0.791180516670915 -0.523208856146896 0.316698274582131 2 -0.795338828572099 -0.468770355725444 0.384171355870509 1 -0.835853810682293 -0.409619720685897 0.365509019636642 1 -0.816185583792451 -0.4395097975371 0.375112856573917 2 -0.74120636636774 -0.536783794370304 0.402875437277496 1 -0.768999160137668 -0.503248101192999 0.393904735503085 2 -0.948212388334399 -0.232637057558075 0.216209935791666 1 -0.961052077816455 -0.176750519051911 0.212744143683631 1 -0.968058125875768 -0.191355609143874 0.162112550202807 1 -0.954741247483666 -0.247149293340293 0.165488324003039 1 -0.958771191305242 -0.212139738953609 0.189286179836753 2 -0.951650910290745 -0.172845990021419 0.253999486604218 1 -0.968521573615178 -0.125182006968036 0.215348390497979 1 -0.960654869716913 -0.149109346747613 0.234811762815133 2 -0.978796971726695 -0.130501600449833 0.157411900633482 1 -0.983929790725377 -0.14743008359923 0.101025955940976 1 -0.972394848385274 -0.208141574081354 0.105637010262149 1 -0.976691568588445 -0.169510269348698 0.131665999070412 2 -0.985778258086324 -0.0538074045613248 0.158621250345017 1 -0.97812967229421 -0.089574539059014 0.187185275112226 2 -0.891081061493785 -0.452996969671633 0.0238615650158295 1 -0.87159162720206 -0.48821036111621 -0.0448938904609436 1 -0.84736431841569 -0.53061087619267 -0.0216041167530795 1 -0.867094424953878 -0.495599449865888 0.0471816908530927 1 -0.870283517397414 -0.49241610792494 0.00114932613377957 2 -0.888709128571824 -0.454224941920461 -0.0633957834127113 1 -0.870794613947396 -0.478548451992009 -0.113198661355518 1 -0.853499323471395 -0.512453325589104 -0.0947157907092804 1 -0.871760389080444 -0.483702131080997 -0.0791042740391759 2 -0.829871243679107 -0.553701135690745 -0.0694623752098985 1 -0.809193977177749 -0.585574980689324 -0.0496056832914521 1 -0.826816518861098 -0.562595616258633 -0.00178925228932213 1 -0.828884757885213 -0.55850241890297 -0.0356419530163435 2 -0.825425408926598 -0.541613746955157 -0.158441274705074 1 -0.801529952866867 -0.582745824282636 -0.133126138198476 1 -0.828466362996131 -0.54821939611532 -0.114068279503816 2 -0.686078120320539 -0.667829889430407 0.288482559679548 1 -0.691300658908029 -0.640930176367388 0.33369958168818 1 -0.726005952085568 -0.612955049590377 0.311808231221861 1 -0.720781258816283 -0.639847557063784 0.266600618507334 1 -0.706519097661288 -0.640825535791936 0.300352140903991 2 -0.653037916842701 -0.668683677052966 0.355543619974706 1 -0.65697342058734 -0.637424203586873 0.402660240539878 1 -0.695167965817859 -0.609593282467998 0.380777471122357 1 -0.674627361224047 -0.639637085262752 0.368447651024829 2 -0.735247141644575 -0.579623451928605 0.351206211111575 1 -0.759060862424442 -0.587245187029467 0.281086358075231 1 -0.747701038225861 -0.583857658877327 0.316375615896433 2 -0.701113585812045 -0.566778611150802 0.432470890473201 1 -0.718868913732237 -0.573737650800158 0.392210565229601 2 -0.755391594711564 -0.654489535530468 0.0316108659935216 1 -0.770210592226468 -0.637534047619478 -0.0211529111421513 1 -0.735454745870608 -0.676800630003925 -0.0327968401946922 1 -0.720256482558765 -0.693422051489525 0.0199789518072518 1 -0.745918777427755 -0.666090294836675 -0.000591406390841333 2 -0.794886815942396 -0.606772635867198 -0.00407937878118093 1 -0.784623513254889 -0.616409842101975 -0.0667176748722536 1 -0.790224082191485 -0.611959930519838 -0.0354142534343976 2 -0.748840015832243 -0.656568867765124 -0.0895445604923431 1 -0.708726596421166 -0.698194287493805 -0.101410429404222 1 -0.694777041420043 -0.717866146287629 -0.0446054356703256 1 -0.722608276747614 -0.687985034119205 -0.0671533953339991 2 -0.76614525151871 -0.623287506163488 -0.156055879328517 1 -0.776161314245547 -0.620451717492178 -0.111499611109474 2 -0.541347576995828 -0.827236094024492 0.149756380823207 1 -0.472676522807207 -0.867620648992967 0.154436410828708 1 -0.466384653941444 -0.859891498568907 0.207648265467126 1 -0.535207491981398 -0.819759964648342 0.203087655558265 1 -0.504495511013636 -0.844593344515369 0.178940073974795 2 -0.47627000459028 -0.872171454052691 0.112375742201734 1 -0.423902784058753 -0.898343399966816 0.115738885073407 1 -0.420188720955178 -0.893640166789625 0.157772181176212 1 -0.448579005189767 -0.883571818895265 0.13518077867775 2 -0.416068075325402 -0.884605501852654 0.210843744464453 1 -0.411363080350387 -0.875877037156711 0.252548230519227 1 -0.461717639735812 -0.851329893091684 0.249392540624014 1 -0.439188165000326 -0.868528963238476 0.230263652623019 2 -0.34953699565389 -0.922773797888638 0.161492544483151 1 -0.345317899650475 -0.913506005767652 0.214578622474345 1 -0.38318779948684 -0.904627523944445 0.186375606329636 2 -0.560078236319892 -0.654624495002346 0.507645462051151 1 -0.600418603568496 -0.621135243861781 0.503722180048499 1 -0.612421559976707 -0.642480058210302 0.460634644428475 1 -0.572084675245823 -0.675956051949207 0.464553970246606 1 -0.586645559296894 -0.648985107815886 0.484466531632818 2 -0.586309001550422 -0.597169620567144 0.547393340114908 1 -0.642248626369681 -0.583354998926288 0.497057696721102 1 -0.614753894176396 -0.590718728535591 0.522630596044555 2 -0.6525381009266 -0.611452655241151 0.447454707504909 1 -0.616789767307146 -0.668367411685741 0.415804365705253 1 -0.635126256848584 -0.640376258914762 0.431940313881704 2 -0.672327060115401 -0.575609272657924 0.46521530179309 2 -0.423198709402791 -0.830495682383507 0.362148642487741 1 -0.397624869921929 -0.859963241823075 0.320127444310007 1 -0.359549473869031 -0.861775104086135 0.357910266291785 1 -0.384934054585516 -0.831877885298851 0.399759364785947 1 -0.391635751894472 -0.846699187792924 0.360272344842167 2 -0.431467592573224 -0.852631738344839 0.294771629089289 1 -0.377546716546617 -0.883328546004519 0.277916812824364 1 -0.40475185554525 -0.868498729144387 0.286522439683401 2 -0.330656713810313 -0.890701361965861 0.311727259349947 1 -0.288489142803021 -0.890112526267502 0.352895612314937 1 -0.317134188412977 -0.860484678804611 0.398782041536824 1 -0.324250370542849 -0.876567981520022 0.355651581998699 2 -0.298548573001988 -0.921376886311346 0.248554623565218 1 -0.338397673576974 -0.903272867241501 0.263489397097771 2 -0.337583229208164 -0.707539109242033 0.620671215178635 1 -0.288561718231523 -0.678143405377846 0.675937735567638 1 -0.323930434835584 -0.642403178815126 0.694577145243399 1 -0.373091844536766 -0.67195362889235 0.639523535068982 1 -0.331178688698672 -0.675783942785608 0.658421081513654 2 -0.259660206386857 -0.704833406413592 0.660249094458228 1 -0.222765735205262 -0.680124357655607 0.698504518444295 1 -0.251595862139667 -0.65330071762529 0.714095471528659 1 -0.255829895809655 -0.679579237866345 0.687684277567151 2 -0.288239376007561 -0.618261198987002 0.731278965343545 1 -0.351794389771452 -0.613466382396043 0.707137278627012 1 -0.320227699225102 -0.61626897832428 0.719665600716919 2 -0.202490149934962 -0.617268877369093 0.760096459169424 1 -0.245614800306031 -0.618374923851912 0.746450795756016 2 0.0657882029099441 -0.873322835545498 0.482625642335192 1 0.1152358697526 -0.876069797631051 0.468246448981277 1 0.127851618474654 -0.851006731784588 0.509385111285917 1 0.078411564017953 -0.848251040727732 0.523755211115075 1 0.0968860135015842 -0.862735194088569 0.496330813153716 2 0.101238204845294 -0.899949273771968 0.424082087778213 1 0.154306580502889 -0.900097281472457 0.407515668920295 1 0.168295807276979 -0.876105608015096 0.451631265783847 1 0.134869687581556 -0.888707672639791 0.438190951199491 2 0.178838441098552 -0.846998643943455 0.500508231735677 1 0.132614553369763 -0.822911815707671 0.552512023806987 1 0.155839595500167 -0.835552930196948 0.526890587942369 2 0.232785397143795 -0.870123231810605 0.43420109026782 1 0.206012238125656 -0.859363106456501 0.467799668777129 2 -0.109358346435889 -0.752938610860525 0.648855479382328 1 -0.120444629312405 -0.707707231134242 0.696194543988334 1 -0.171090020018581 -0.714385143331429 0.678557024300374 1 -0.159962404883221 -0.759208266922377 0.630840097773738 1 -0.140339237849874 -0.73424097967286 0.664221410756182 2 -0.0787172440789772 -0.700936456812887 0.708922347616374 1 -0.132504608574788 -0.667766122890222 0.732495154255486 1 -0.1056773736703 -0.684784638684259 0.721153927355876 2 -0.183466051088412 -0.674959813770294 0.714676889127774 1 -0.210331247839327 -0.719292015031867 0.66217722708333 1 -0.197038464962964 -0.697646125989809 0.688930947260646 2 -0.16765746365409 -0.643161787858887 0.74706694498066 2 -0.156809150527817 -0.894842141647517 0.417834155933383 1 -0.210347398869121 -0.906183880503595 0.366855476953144 1 -0.180475103828525 -0.927968041243622 0.326221193429241 1 -0.127036988780132 -0.917192176336209 0.377388555148419 1 -0.168845165404583 -0.912526443810744 0.372480034396176 2 -0.243453676934919 -0.881476649805149 0.404732424394624 1 -0.255203384664696 -0.914163496045689 0.314743723038456 1 -0.249622904935999 -0.898879470783438 0.360165099935259 2 -0.212053670156256 -0.935485354896971 0.282882070700143 1 -0.180985883619573 -0.949516127395843 0.256579246828682 1 -0.149483110859391 -0.942221232430125 0.299957188491672 1 -0.180876280894794 -0.939432656036478 0.291609085313227 2 -0.255191487553534 -0.942172371744354 0.216515933284451 1 -0.255562583706267 -0.929401774997165 0.265981896576148 2 0.184994931475021 -0.943651217555424 0.274265009533991 1 0.216444924248792 -0.92497834081628 0.31242575420644 1 0.177027595149178 -0.922808596575527 0.342211338447889 1 0.145583247558752 -0.941466342705104 0.304054661260196 1 0.181136280242454 -0.933856008566855 0.308446463948576 2 0.257129453592536 -0.924914384897593 0.280047664725768 1 0.289417624946983 -0.90198206962812 0.320507281423999 1 0.248701511119344 -0.901938949151078 0.352857793193589 1 0.253113113061426 -0.914137782699416 0.316698297016534 2 0.200054002439428 -0.901269741740075 0.384171327115876 1 0.13127798246576 -0.92152378986342 0.365509010940241 1 0.165783261322457 -0.912054471776351 0.375112844830826 2 0.281465977441855 -0.870804491708544 0.402875427080782 1 0.240983439607366 -0.886873673045828 0.393904710360022 2 -0.0717625811200948 -0.973692492572283 0.216209943305832 1 -0.128881277106239 -0.968634151931757 0.212744143828291 1 -0.117156257833955 -0.979810174656353 0.162112546120453 1 -0.0599784102860894 -0.984385935160405 0.165488324853788 1 -0.0945195435136827 -0.977400457632312 0.189286179475787 2 -0.129689801216864 -0.958486094894353 0.25399949472257 1 -0.180234319866626 -0.959802510165578 0.215348403116159 1 -0.155047092700708 -0.959714566912072 0.23481177989679 2 -0.178350573840586 -0.971218722055017 0.157411903898475 1 -0.163836698253633 -0.981331249431586 0.101025959814475 1 -0.102531921862026 -0.98912148954107 0.105637004491752 1 -0.140600374321133 -0.98127046343105 0.131665996065429 2 -0.253448620904443 -0.954158303565614 0.158621245238508 1 -0.21706831322416 -0.957936906692537 0.187185281856055 2 0.155466799528837 -0.987452129117154 0.0238615685746967 1 0.194979104348017 -0.979798173449479 -0.0448938892231487 1 0.24279058641862 -0.969859208857129 -0.021604116619458 1 0.203395991306208 -0.977804461920423 0.0471816936691093 1 0.199383102581548 -0.979853752337181 0.00114932848308247 2 0.157367676341636 -0.985576152636677 -0.0633957828444946 1 0.186036298183093 -0.976054734535383 -0.113198662644894 1 0.223626059495522 -0.970082777723571 -0.0947157915603735 1 0.190639340909698 -0.978565689590015 -0.079104272884275 2 0.270156509500369 -0.960357625027347 -0.0694623766146611 1 0.306860323047906 -0.950541968534012 -0.0496056832365599 1 0.279559851719541 -0.960200925305401 -0.00178925280816336 1 0.275027758994288 -0.960903103237914 -0.0356419536916931 2 0.260034417404031 -0.95239359973691 -0.158441268163863 1 0.306537428380646 -0.942378429334532 -0.133126141827323 1 0.265377120480543 -0.957327250266189 -0.114068282695997 2 0.423133858794327 -0.858869967950867 0.288482546556621 1 0.395936791155319 -0.855524580803081 0.333699575081098 1 0.358606108588242 -0.879885832292332 0.311808222775342 1 0.385796974278225 -0.883226919434197 0.266600604086307 1 0.391134413738513 -0.869965412664201 0.300352117328687 2 0.434156264459934 -0.827710809073453 0.355543649702113 1 0.403210507817743 -0.821793621491391 0.402660239653914 1 0.364938532139932 -0.84951871460533 0.380777483356531 1 0.39985953787479 -0.839267584862609 0.368447670286216 2 0.324050386481862 -0.878375009241135 0.351206198436778 1 0.323940758794458 -0.90337798469436 0.281086343963895 1 0.324229144599521 -0.891527560181934 0.316375593558387 2 0.322382073045581 -0.841942926196268 0.432470883027896 1 0.323513813844603 -0.860979649127885 0.392210556579836 2 0.389027753768339 -0.920668010354248 0.0316108630945745 1 0.368322820212749 -0.929522434437262 -0.0211529081771387 1 0.41640797340246 -0.908601551391145 -0.032796835215602 1 0.436912383685874 -0.899283191348747 0.0199789537252263 1 0.402988117728726 -0.915243673185762 -0.000591401568559237 2 0.331441726665906 -0.943485174274474 -0.00407937831989862 1 0.343778602647482 -0.936702537130691 -0.066717677904211 1 0.337815909277319 -0.940653755310044 -0.035414251426597 2 0.393029867676712 -0.915080124026653 -0.0895445629369977 1 0.445013751389817 -0.889793034641158 -0.101410429057994 1 0.468033768092232 -0.882604855512624 -0.0446054373660511 1 0.431014634526481 -0.899840256593814 -0.0671533921054693 2 0.356029379542576 -0.921253535351998 -0.156055878620704 1 0.35023743342418 -0.929903290876637 -0.111499618812993 2 0.619462586947984 -0.770482336507856 0.149756381109846 1 0.679091115792626 -0.717651870574316 0.154436412725263 1 0.673684431779259 -0.709279328040639 0.207648271647219 1 0.614249656680779 -0.762332356184805 0.203087665961938 1 0.647358191308218 -0.740797591622924 0.178940086685052 2 0.68230846374448 -0.722475402158168 0.112375735334365 1 0.723381870109908 -0.680758839524751 0.115738888733201 1 0.720056733610033 -0.675773436098799 0.157772175458679 1 0.701707988329597 -0.699662781220795 0.135180770966441 2 0.712737510418048 -0.669062502083906 0.210843753303612 1 0.705890277230555 -0.661890109758475 0.252548235967168 1 0.666984156276054 -0.702194616758052 0.249392543319334 1 0.690303381234544 -0.686082863194155 0.230263664525268 2 0.769596902353694 -0.617582176686048 0.16149255314418 1 0.762086341860168 -0.610705530213159 0.214578623958557 1 0.741940116775945 -0.643978553259819 0.186375613470255 2 0.449511370235889 -0.734955184544207 0.507647977590737 1 0.405194519731483 -0.762973306475162 0.503723228888711 1 0.421785662381196 -0.780984817248943 0.460634648653742 1 0.466088896268344 -0.752966047547602 0.464555512013466 1 0.4359379368204 -0.758480134081502 0.484467834897935 2 0.38676223697241 -0.742148061831009 0.5473948361406 1 0.356337246171994 -0.79108150322428 0.497057687736586 1 0.371837039473493 -0.767207714874981 0.522631375752428 2 0.379880047806788 -0.809550076597397 0.447454688463176 1 0.445056742064912 -0.793138422300705 0.415804341142219 1 0.412768938718697 -0.801928018732659 0.431940292873904 2 0.339675957311475 -0.817294164024415 0.465215283004069 2 0.659072649523701 -0.659121615805191 0.362150655424584 1 0.695000355743753 -0.643906334484049 0.320127938506766 1 0.708490162593541 -0.608254102500211 0.35791076560137 1 0.672212218706142 -0.6231565361175 0.399761346798974 1 0.684236726872349 -0.6341109176875 0.360273588731273 2 0.677569872866503 -0.673827029889297 0.294772119910908 1 0.723426690664491 -0.632031513146115 0.277916802341857 1 0.700915868068514 -0.653322247104077 0.286522680787701 2 0.744928688750273 -0.589714526843457 0.311726749207622 1 0.757399917456477 -0.54942874210293 0.352894087693781 1 0.720370663512469 -0.567515891121527 0.398781518539763 1 0.733467229798095 -0.579254027687805 0.355651051974549 2 0.784024652640718 -0.568657172223509 0.248554097943187 1 0.754492612855578 -0.60096156796582 0.263489126093557 2 0.568630052983567 -0.539593909517896 0.62072978809249 1 0.555836298919067 -0.483728253921732 0.67608568104633 1 0.510853122695772 -0.506392078172825 0.694729629975665 1 0.523747595227396 -0.562435287578048 0.639582580450418 1 0.540386144147875 -0.523646954146635 0.658528979217709 2 0.590357905539078 -0.464410918792552 0.66025939521154 1 0.578397838453868 -0.421322217164025 0.698606077375825 1 0.543773208108584 -0.440532041295291 0.71433819228436 1 0.567494355057066 -0.452824495887973 0.687815473595338 2 0.498954937398213 -0.464636723928001 0.731612349332003 1 0.474695966370661 -0.523974271609986 0.707289971790088 1 0.487149989115124 -0.49463548489631 0.719915088085476 2 0.524827633167227 -0.381701704875655 0.76067199011099 1 0.512409836527514 -0.423607824199318 0.746930211455975 2 0.850935731676075 -0.207361975945199 0.48255438422264 1 0.868826637931725 -0.161183618418782 0.468179715539886 1 0.848959321903124 -0.141526466383123 0.509184791406507 1 0.831061165191973 -0.18769445219661 0.523549630565268 1 0.850508266456446 -0.174557200639717 0.496193621239806 2 0.887196550538071 -0.181845008253666 0.424049905360189 1 0.903735765270496 -0.131421451584817 0.407486875142338 1 0.88525690344444 -0.110733521836939 0.451568149023864 1 0.886904516532628 -0.146401694578783 0.438142808527275 2 0.860878519173677 -0.0918078478495953 0.500357565959191 1 0.823900728549864 -0.128642788326493 0.551973722676912 1 0.842988852298455 -0.110302185605099 0.526543128179107 2 0.899488973153146 -0.0475841094416694 0.434154407243318 1 0.881006556871442 -0.0697533620879004 0.467699825472444 2 0.683072118892805 -0.337115326403382 0.647807500003101 1 0.636883414948322 -0.333126336729308 0.695311976833294 1 0.627235842251045 -0.382886428411609 0.678259479402153 1 0.673058960085327 -0.386713359857414 0.630387326055459 1 0.655667645032903 -0.360287963929618 0.663546058685931 2 0.644289437982603 -0.291697951461986 0.707027153424117 1 0.595931130106632 -0.330609547441189 0.731854694166599 1 0.620500794010356 -0.31134905618884 0.719882789052949 2 0.5858744076994 -0.382161552883176 0.714623520605942 1 0.619525849395529 -0.421906772616797 0.662028033735853 1 0.60315628542228 -0.402330486152021 0.688834380333055 2 0.560954791208694 -0.35651061497401 0.747050853985536 2 0.802590889987442 -0.425673599543006 0.417812411544839 1 0.796833179123111 -0.480080895026469 0.366848309800342 1 0.826780685752202 -0.458401219682255 0.326220195618388 1 0.833044761755821 -0.404263555967441 0.377372648097452 1 0.815688905305573 -0.44257672090174 0.372468391817097 2 0.763105351512435 -0.50393156204713 0.404724322533091 1 0.790559231554363 -0.525204666961031 0.31474320035837 1 0.777748672584935 -0.515175340928302 0.36016069626391 2 0.824171598534552 -0.490755812143809 0.282882063763502 1 0.847115921805081 -0.46554429225363 0.256579247093868 1 0.849913033326283 -0.433330464694564 0.299956166481941 1 0.837559998825226 -0.462324791743227 0.291608570370753 2 0.817200446833276 -0.533848420820192 0.21651591207304 1 0.804940416643971 -0.530255079240342 0.265981608501381 2 0.954632446724897 -0.115665707522397 0.274262994407661 1 0.946593406670476 -0.0799895401982164 0.312420179337859 1 0.932349568707084 -0.116808302079121 0.342204784666118 1 0.940375793421199 -0.15247440099068 0.304051615488321 1 0.944124941028147 -0.116311569308663 0.308442119800106 2 0.959103075378103 -0.0412758245473128 0.280046119833909 1 0.947272717478876 -0.00349491359157307 0.320500666215108 1 0.93465155396477 -0.0422055800393912 0.352847152300026 1 0.947614436739391 -0.041772484955369 0.316692108755444 2 0.918986528984637 -0.0882710183921908 0.384148578447969 1 0.916991254644323 -0.159926115332195 0.365496421730004 1 0.918650310679 -0.124190253732323 0.375095013782979 2 0.915176254993473 -0.00149103275797246 0.402841254647065 1 0.917944824263027 -0.0449269920598858 0.393875627824149 2 0.903860817184792 -0.369138311325184 0.216209440800827 1 0.881399009243811 -0.421898339039878 0.212743650813556 1 0.895651692120858 -0.414200715641625 0.162112552555685 1 0.917672914848111 -0.361235338372473 0.165488336648303 1 0.900355070596384 -0.391927307298564 0.189285944858808 2 0.871498036710499 -0.419531184165434 0.253998982127722 1 0.8571307343493 -0.468008302194899 0.215348389293373 1 0.864830481634046 -0.444026845612534 0.234811519543212 2 0.868570174603585 -0.469744465476531 0.157411894657213 1 0.882672771577732 -0.459065841637777 0.101025955101776 1 0.909026377945454 -0.403169419044137 0.105636999310457 1 0.889795609205768 -0.436948323112281 0.131665988633725 2 0.829138261671303 -0.535894652701519 0.158621249006966 1 0.843974030844844 -0.502462765528933 0.187185260656795 2 0.987165429201494 -0.157282545373879 0.0238616181361959 1 0.992095560627765 -0.117338349860475 -0.0448938950454212 1 0.997417399553083 -0.0687950868518087 -0.0216040197047477 1 0.992800663545339 -0.108717337724 0.0471818453415506 1 0.993509516846467 -0.113167080692029 0.0011493990615752 2 0.985968063524233 -0.154894770188276 -0.0633957926626325 1 0.985771085123728 -0.124686546174795 -0.113198660902168 1 0.991707488082279 -0.0870908058125642 -0.094715793645562 1 0.98958196200248 -0.121084786921526 -0.0791042837676353 2 0.996837040043615 -0.0398325534270786 -0.06946227408344 1 0.998843933353451 -0.00189190542876184 -0.0496053327223043 1 0.99959418655167 -0.0308408221845927 -0.00178890682595865 1 0.998861291195081 -0.0353681803754835 -0.0356417324148335 2 0.986135238521451 -0.0469981067679717 -0.15844126571033 1 0.990980550776577 0.000323675527798363 -0.133126038711697 1 0.992478244881181 -0.0434415320375874 -0.114068226230443 2 0.947549022756226 0.137012098305204 0.288619873331346 1 0.935969086207243 0.112169179909403 0.333804083018732 1 0.94763276394623 0.0691441593644065 0.311824718745537 1 0.959204368614891 0.0939820902864526 0.266649164700809 1 0.948231312372841 0.10314804101469 0.300429058960901 2 0.921249952932985 0.157005829488464 0.355883067444327 1 0.906075839842103 0.129320606105418 0.402943323914085 1 0.920700161727562 0.0844625385756385 0.380828088334086 1 0.921691037592523 0.120828994404561 0.368642234609035 2 0.935522241999232 0.0367338513319678 0.351206237938359 1 0.959264517845013 0.0289198760651078 0.281096373116057 1 0.948084538240384 0.0328478015497653 0.31638057131255 2 0.900357137517098 0.0462655921312689 0.432486850637285 1 0.918811578727204 0.0415290884947362 0.392218318178626 2 0.995823006020447 0.0854888861117305 0.0316236766919327 1 0.997846153002889 0.0630581524518802 -0.021150256472226 1 0.992808405995137 0.115255898295711 -0.032791086444517 1 0.99028156098539 0.137639247207745 0.0199948665642886 1 0.994978323357047 0.100441267026397 -0.000582116419836634 2 0.999728727547439 0.0236674292353991 -0.00407693061911469 1 0.997090242343532 0.0374960811625725 -0.0667171266487118 1 0.999005531400031 0.0306044119903318 -0.0354127512260075 2 0.991745692013673 0.0910187701780794 -0.089544110513715 1 0.983760653146704 0.148273084197511 -0.101407686922923 1 0.984037612705592 0.172388900869408 -0.0445973760871838 1 0.988989960234184 0.131854714584186 -0.0671491412236511 2 0.986183571730831 0.0539215366205239 -0.156055886327488 1 0.992619943750157 0.0457400120175579 -0.111499341539178 2 0.924014648606515 0.351330174731702 0.150202457395609 1 0.892056355019398 0.424586798882509 0.154907954026199 1 0.882073755640781 0.42227611483397 0.208978529126846 1 0.914340168417676 0.349150479217058 0.204402955592371 1 0.904182865532387 0.387276945743262 0.179835435626837 2 0.897824178695962 0.425961565929881 0.112304295241116 1 0.870788396963458 0.478060186622746 0.115282494670771 1 0.864835991122313 0.476635194245865 0.157858569937797 1 0.882009459927423 0.451634468742257 0.135189360139128 2 0.855472770956478 0.472754396161603 0.211478046257479 1 0.845696950167219 0.469200721469122 0.25455268215183 1 0.872439527776015 0.418842130893254 0.252097814823213 1 0.864538425683963 0.446087085045016 0.231938264854867 2 0.824959508005426 0.54185194823766 0.159964906137594 1 0.815417777790471 0.53786362324229 0.213602828321574 1 0.841089072973122 0.507842623192649 0.18592966878385 2 0.837655701672695 0.19780537776752 0.509076151708498 1 0.850730063797472 0.148162766605796 0.504323914298574 1 0.872989889797921 0.159064461835629 0.461105412530613 1 0.859902000946083 0.2086946924165 0.465848791147723 1 0.855887031967435 0.178549712700374 0.485411964240498 2 0.825240774448578 0.136592859308731 0.548015947258416 1 0.862475249105616 0.0939416881444918 0.497153745342058 1 0.844501501198386 0.115355180412877 0.522984544526632 2 0.887281632177485 0.110749241403596 0.447614911052658 1 0.891685847997462 0.177608612026865 0.416400759643115 1 0.890128059728757 0.1442832738922 0.432317007315787 2 0.882254211232989 0.0701623603519702 0.465269472637284 2 0.81606488182988 0.435028331789616 0.380366255564155 1 0.821450101630529 0.469390275776442 0.32395886241903 1 0.790022478488251 0.502247747337518 0.351673137665004 1 0.784149835132497 0.467640932955128 0.407883372430488 1 0.803657376326351 0.469000065598536 0.366308591379804 2 0.845713141237166 0.440744207276041 0.300990005490443 1 0.821597052595348 0.497960330178011 0.27755485909827 1 0.83416344101882 0.469636558943453 0.289456003369747 2 0.789834255834605 0.531787236243555 0.305544625603927 1 0.763375269320072 0.526842129485353 0.373887367918413 1 0.777176972583105 0.529696178519157 0.339970392681208 2 0.803522675334063 0.535445032972787 0.259865775638536 2 0.70309362085591 0.351976245903722 0.617802630208581 1 0.648204134712706 0.370858753446757 0.665048747450531 1 0.644102876570539 0.322623210112658 0.693644120461407 1 0.699363572836384 0.303913428275599 0.646804283970274 1 0.674431219683085 0.337710783872671 0.656537458864537 2 0.647739504618928 0.419235103544134 0.636206070471023 1 0.594509400578692 0.381677656688976 0.707655891196398 1 0.621861379415457 0.400931595720012 0.672725060250605 2 0.600548205214556 0.328461991452067 0.729058829040537 1 0.645236963674972 0.281283858527433 0.710372605937857 1 0.623304845132612 0.305072604872919 0.720175812748005 2 0.56587961467408 0.35711255930414 0.743018746178396 2 -0.460701350139943 0.743503383678424 -0.484645120477062 1 -0.422099756021303 0.775691140737575 -0.469234275730344 1 -0.396840269819233 0.763140238156273 -0.510058142214639 1 -0.435431533624348 0.730955620180181 -0.525462022504861 1 -0.429057884582546 0.753830940071346 -0.497683817567755 2 -0.447402351676884 0.786794958501045 -0.425194773465438 1 -0.404188486352188 0.818686613443003 -0.40797689258068 1 -0.378835137913676 0.807501413905745 -0.45197480840655 1 -0.413438757770793 0.797764579322212 -0.438923138696557 2 -0.353231417499537 0.790146578213951 -0.500796162699433 1 -0.376301730215124 0.743233972016149 -0.553208518402502 1 -0.365028186432764 0.767243467161253 -0.527385535269625 2 -0.323034587924393 0.840692468726908 -0.434419263414879 1 -0.33844384722916 0.816189117476031 -0.46805466142406 2 -0.509428021416999 0.550237721794486 -0.661584065779725 1 -0.505983983625377 0.506147085005916 -0.698511800123127 1 -0.551401600795232 0.493571138662417 -0.672589464820624 1 -0.554579827726025 0.5374108268355 -0.63532120670787 1 -0.530772898405579 0.522257405981626 -0.667533906723834 2 -0.468462921197022 0.521796252193928 -0.712955142740385 1 -0.496585395705673 0.466617309345035 -0.731925405798034 1 -0.482819792813983 0.494512054050439 -0.722874815372485 2 -0.546247398671581 0.444390902745265 -0.709914877923519 1 -0.594714324083151 0.430217263906642 -0.679185227736955 1 -0.599390982942321 0.479027444379652 -0.641322238992944 1 -0.573465170327818 0.462222841078316 -0.676373954115633 2 -0.53049765495168 0.383861560830865 -0.755679049287369 1 -0.514052016588741 0.425669445389976 -0.744568332971811 2 -0.670587105280465 0.6135392968444 -0.416749880041934 1 -0.717303868007953 0.600749255613095 -0.35300300252951 1 -0.695926802412399 0.641499149311784 -0.322813232566107 1 -0.649423816078462 0.654562147206622 -0.38665635351891 1 -0.684101676561208 0.628326349715991 -0.37024694722632 2 -0.732828501965327 0.567539644163739 -0.375506077976307 1 -0.764228730893678 0.55586367361639 -0.327220322952044 1 -0.7485862028682 0.588952576641082 -0.304622301326477 1 -0.741267293758684 0.578695118834875 -0.340330850870283 2 -0.726277147322395 0.629642242143428 -0.275907561122311 1 -0.70697757688381 0.661144151432338 -0.251436603278504 1 -0.676780116513243 0.673113570135169 -0.298361874461687 1 -0.701993142294837 0.651811877710212 -0.287336965406613 2 -0.785646987689613 0.569779864684707 -0.240538493280384 1 -0.763161456034271 0.610391287576668 -0.211742844302425 1 -0.75675374133893 0.600347026476936 -0.258477950657861 2 -0.402117537031268 0.873307738569438 -0.274925355131751 1 -0.367143582193294 0.875974348681158 -0.312901053068488 1 -0.398410123344239 0.850850474308728 -0.34256952066454 1 -0.433373767399161 0.848177814214177 -0.304597626992717 1 -0.400526868615777 0.862652906589833 -0.30895356822566 2 -0.333691403732803 0.899916792789889 -0.280712228554446 1 -0.295082319742488 0.899978989007586 -0.320967607417897 1 -0.32849462657628 0.875924961544909 -0.35312712868208 1 -0.331347095422901 0.88860400717518 -0.317162543060071 2 -0.367616354333292 0.846737049406123 -0.384433069005475 1 -0.434925058113966 0.822721532130583 -0.366072052542518 1 -0.401561391341168 0.835328825812767 -0.375525170102163 2 -0.283893562513215 0.86990939456377 -0.403100974476621 1 -0.326065030448025 0.859129820148664 -0.394147974475751 2 -0.629900754167436 0.752586358213062 -0.19164911141774 1 -0.677116766785561 0.707436047487314 -0.202742726276023 1 -0.683352246250041 0.714488810981116 -0.150328336008443 1 -0.635763311850422 0.759213854394997 -0.139098621565932 1 -0.657128842545575 0.734105711635616 -0.17111319333828 2 -0.669948433799662 0.700653268906864 -0.245633225237243 1 -0.714306499852498 0.668041300177732 -0.208589653411813 1 -0.692545837991532 0.684770618504131 -0.227247699194526 2 -0.721141257491356 0.67515166500486 -0.155304170829099 1 -0.68621628783924 0.719375186832585 -0.108182083825951 1 -0.704188957449087 0.697780733831091 -0.131842854793804 2 -0.742998688209716 0.643491285167611 -0.183715987076061 2 -0.443156754504878 0.895174531626946 -0.0467665890906714 1 -0.421224361164709 0.906628465941176 0.0241919429343611 1 -0.369972050919636 0.92898725217017 0.0140134819220789 1 -0.392100203402396 0.91806256397941 -0.0569409444774442 1 -0.407064701512712 0.913219732062325 -0.016398615086961 2 -0.470472889379355 0.881684570583166 0.0369867635830499 1 -0.394695375387494 0.91451128410657 0.0881953806256733 1 -0.433103285399789 0.899171024024669 0.0626645490326153 2 -0.345873470185556 0.93609676769418 0.0645463021954764 1 -0.306531511677183 0.950701816951206 0.0486228923878508 1 -0.330683885632452 0.943783418147417 -0.00185940522875272 1 -0.338511794491796 0.940565294322134 0.0313561315578452 2 -0.3067593406957 0.942053652281449 0.134877713190336 1 -0.351206080936562 0.929522634460066 0.111708515823897 2 -0.161625626841458 0.942899411295757 -0.291147872038976 1 -0.182133490811175 0.924443007194329 -0.335057625339147 1 -0.226460022935305 0.922494637720371 -0.312647432692174 1 -0.205952142978196 0.940934561057539 -0.268741986112228 1 -0.194170841851112 0.933313644638959 -0.302100665094646 2 -0.134857183008225 0.924262612071766 -0.35714781963595 1 -0.156615309165954 0.901576097804866 -0.403344402895375 1 -0.203880961272961 0.901643822436866 -0.381211581038925 1 -0.169498228697445 0.913655341225827 -0.369463885827278 2 -0.253800528311498 0.901024727749339 -0.351617561404622 1 -0.267700988609754 0.921337962557451 -0.281974607571786 1 -0.260941701424861 0.911837379719021 -0.317023222353754 2 -0.233949312546355 0.870545298992391 -0.432721038247767 1 -0.244115033671017 0.886618748143453 -0.392539449368162 2 -0.200435346137604 0.979293467986889 -0.0265364450785249 1 -0.239749327111436 0.970512060310544 0.0262076592292963 1 -0.194078326616446 0.979690648563014 0.0510725833540543 1 -0.15462883561849 0.9879452201513 -0.0016575414225885 1 -0.197401567090329 0.980252376740272 0.0122768054871772 2 -0.276231239745543 0.961124193817954 0.00440732967524727 1 -0.270115235329166 0.960273215167963 0.0704608590273763 1 -0.273336094697612 0.961291453122391 0.0374521116903418 2 -0.222962777214404 0.969979224626269 0.0970193602948155 1 -0.156158151580918 0.985311394941176 0.0697916920689558 1 -0.18969981725535 0.978371382455623 0.0834587178505668 2 -0.265156796394133 0.957116334940088 0.116099080983102 2 0.032967905080415 0.984820117659234 -0.170183702299784 1 0.106988922873425 0.981269081718776 -0.160193228399964 1 0.123053833169638 0.969687967554918 -0.21137764277462 1 0.0491086813215511 0.973820238901376 -0.221508260989864 1 0.0781077808080734 0.97845106657747 -0.191020737723088 2 0.0942088617962447 0.989897109063146 -0.106332954000092 1 0.175419618938131 0.972129052052129 -0.155179218357603 1 0.134971446333932 0.982170921936667 -0.130908916679675 2 0.176542342399069 0.961285676842882 -0.21186042419508 1 0.179436298053264 0.950642448177724 -0.253480566487046 1 0.126026460471665 0.959264582737694 -0.253042393674716 1 0.15136847755989 0.960871890622372 -0.232593218607605 2 0.253853489493985 0.943144261148638 -0.213840943357316 1 0.214939151667965 0.958915862114765 -0.184737055550119 2 -0.0681453856481734 0.858841513174074 -0.507614013179108 1 -0.1205778749023 0.855390476701368 -0.503800391652144 1 -0.117624199610374 0.879656799867407 -0.46086020070006 1 -0.0652010261475388 0.883086181815228 -0.464662414540078 1 -0.0929499156653021 0.869827702640412 -0.484561322634695 2 -0.12328695704229 0.827737193749153 -0.547413726201233 1 -0.176637581905781 0.849405744807244 -0.497153697346458 1 -0.150078048696191 0.839218442688818 -0.522687916044074 2 -0.168393143206555 0.878132946640173 -0.447685790234257 1 -0.105840487201601 0.902983344301013 -0.416478340917948 1 -0.137216183620039 0.891204363965606 -0.432392056639959 2 -0.205496417349318 0.860791125731637 -0.465386995823069 2 0.145283259013839 0.920273759526869 -0.363267079555058 1 0.182925330394175 0.929368382112698 -0.320835744548481 1 0.215011510816893 0.908712758381413 -0.357833881458816 1 0.177270150912966 0.899165746206747 -0.400094921803617 1 0.180265991348859 0.915099971443978 -0.360792384067421 2 0.150921824370898 0.943059915910558 -0.296466547500685 1 0.211494737246762 0.937090434268939 -0.277870241289302 1 0.181312730118914 0.940631397946911 -0.287345048254008 2 0.255216634815639 0.91537190602807 -0.31114502954234 1 0.289392182973325 0.890098756923873 -0.352186216333161 1 0.248970712255162 0.882715067952395 -0.398573750305989 1 0.252382029057211 0.900049855335323 -0.355259398544081 2 0.297784818274583 0.921945720667415 -0.247294637959685 1 0.254890918948396 0.930456869309147 -0.262831495346202 2 0.142866275407396 0.770766044187386 -0.620737938611539 1 0.165352582332169 0.718056705406272 -0.676086196070145 1 0.115639512736606 0.70995055072362 -0.694731055765434 1 0.0931303762620616 0.762862746180863 -0.639591640331696 1 0.129389938534526 0.741265991133961 -0.658533570423378 2 0.204635644059395 0.72272017899093 -0.660259375169144 1 0.22028671007162 0.680831651978902 -0.698605599463885 1 0.180983474838466 0.676020599462975 -0.714338211118697 1 0.192948975549838 0.699908049813129 -0.687815489359783 2 0.130556344749249 0.669177471516762 -0.73161235585771 1 0.0760537665245431 0.70292150199643 -0.707291446710187 1 0.103373634068257 0.686507142611448 -0.71991576582861 2 0.200236356387166 0.617289442182266 -0.760672021365691 1 0.165558053540462 0.643893103008336 -0.746930242612495 2 -0.849477584631364 -0.208398460368825 -0.484645108551743 1 -0.868161616129398 -0.161741245584354 -0.469234233239228 1 -0.848419393421466 -0.141598457677854 -0.510057610811654 1 -0.829735073806187 -0.188244862529108 -0.525461469900734 1 -0.849521328018618 -0.175114143688504 -0.49768349873331 2 -0.886540915339425 -0.182373206238704 -0.425195275757084 1 -0.903517186925643 -0.131422319103653 -0.407977835080735 1 -0.885044987366379 -0.110767273375873 -0.451975298024135 1 -0.886477960058844 -0.146684097811621 -0.438923583165835 2 -0.860626420060002 -0.0917862214109368 -0.500796432455147 1 -0.823140823751885 -0.128224473528343 -0.553205869494146 1 -0.842490448372822 -0.110083198363746 -0.527384255399389 2 -0.899360513480788 -0.0474683155941002 -0.434431638283247 1 -0.880821054833507 -0.0696850981509654 -0.468060773057983 2 -0.680728897834833 -0.314463025660212 -0.661584074266667 1 -0.637732093884621 -0.324812217870756 -0.698511819060701 1 -0.639806949518898 -0.371892258430382 -0.67258948176081 1 -0.682482967614016 -0.361367819486322 -0.635321231400621 1 -0.660714301801808 -0.343409138052928 -0.66753394110017 2 -0.641020936118226 -0.284292116840547 -0.712954644570077 1 -0.597232704540767 -0.32808830709059 -0.731925421226227 1 -0.61950851804597 -0.306377047203641 -0.722874589195771 2 -0.591440575109502 -0.382187391351412 -0.709914853425492 1 -0.592937475621722 -0.43266223882559 -0.679185228301064 1 -0.640804316116431 -0.422027280674282 -0.641322250409699 1 -0.616810591520211 -0.402562973202834 -0.676373958401141 2 -0.52900721291455 -0.385912801991974 -0.755679042261822 1 -0.563686649111325 -0.357353168409967 -0.744568306167905 2 -0.790732946964587 -0.44817245442039 -0.416749358174984 1 -0.793005430633076 -0.496554937747486 -0.353003005798972 1 -0.825155083068468 -0.463631860766354 -0.322813231153808 1 -0.823208275857374 -0.415368357545449 -0.386655843276987 1 -0.808972656026376 -0.456456113064242 -0.370246685328207 2 -0.766218671520267 -0.521581957186887 -0.375506080437852 1 -0.764817519679469 -0.555053374614547 -0.327220316682151 1 -0.791453068012799 -0.529951544310978 -0.304622306054306 1 -0.779435927487893 -0.526160530878752 -0.34033085255514 2 -0.823257256601117 -0.496160747939766 -0.275907563419343 1 -0.847253448531228 -0.468070818853801 -0.251436600241807 1 -0.849305556198438 -0.435652581373924 -0.298361878262453 1 -0.836837673565524 -0.466214330797706 -0.287336964841156 2 -0.784671454468479 -0.571123337568528 -0.240538507354694 1 -0.816346726874897 -0.537188892572796 -0.211742861723718 1 -0.804813871065798 -0.534198456861973 -0.258477970636146 2 -0.954826036400076 -0.112569922521353 -0.274925838908837 1 -0.946554793515558 -0.0784846964282965 -0.312901560130301 1 -0.932322434074354 -0.115984360604232 -0.34256949396326 1 -0.940584913692211 -0.150061670609069 -0.304597634753252 1 -0.944201260556372 -0.11434999792607 -0.308953803823628 2 -0.958986767606052 -0.0392717523250761 -0.280716219952618 1 -0.947114286075205 -0.0025376263959196 -0.320974617246093 1 -0.934563617340691 -0.0417471232109309 -0.353130564157871 1 -0.947503432490607 -0.0405399865293118 -0.317166263090981 2 -0.918893972461041 -0.0879723085504154 -0.384433596006222 1 -0.916853581900486 -0.159404270665904 -0.366072561218496 1 -0.918533692705738 -0.123779469987562 -0.375525646035511 2 -0.915053576742296 -0.00121592593115392 -0.403117087395854 1 -0.917835971312598 -0.0446397320099965 -0.394155971825043 2 -0.910402281302819 -0.366509133166156 -0.191649108363935 1 -0.882052233613161 -0.425366384382514 -0.202742722998973 1 -0.890686341088733 -0.429117424054188 -0.150328331627777 1 -0.918516690071476 -0.370036921016559 -0.139098616325345 1 -0.901239855030587 -0.398115473541304 -0.171113183768366 2 -0.873386385730013 -0.420644653704925 -0.245633222241519 1 -0.856077718195254 -0.472909947323097 -0.208589658623064 1 -0.865263940729222 -0.447044373168322 -0.227247697553939 2 -0.864952434442017 -0.477212626360454 -0.155304166033496 1 -0.896218390534157 -0.430331199219985 -0.108182076402203 1 -0.881235061294643 -0.454097267198426 -0.13184284497622 2 -0.841596051299132 -0.507784211208142 -0.183716004411046 2 -0.988304916650078 -0.144842988088246 -0.0467665864828776 1 -0.992420298602261 -0.120444079448165 0.0241919433132902 1 -0.997846438775239 -0.0647911446876291 0.0140134297528983 1 -0.994294864294336 -0.0892126630032032 -0.0569409864682384 1 -0.994313363222593 -0.104940940392968 -0.0163986334286537 2 -0.983916311158412 -0.174990300470474 0.0369867617857796 1 -0.991719268265065 -0.0927779242224676 0.0881953855087306 1 -0.988998780188491 -0.134046239925588 0.0626645513096104 2 -0.997161756679812 -0.0396751786951986 0.0645461954226258 1 -0.998894938837075 0.00225454807177676 0.0486226398732439 1 -0.999777825097305 -0.0228535265471069 -0.00185961208398804 1 -0.999136462344542 -0.0312928654676279 0.0313559697218857 2 -0.990740372529995 -0.000634780104257609 0.134877619859475 1 -0.9925571866684 -0.0467784207216297 0.111708468406284 2 -0.946652252414602 0.13763312041911 -0.291302756012204 1 -0.935442442952457 0.112425770636217 -0.335172446721704 1 -0.94731740567471 0.069681973044684 -0.312670935212183 1 -0.95850816199159 0.0948837203374107 -0.268804424894264 1 -0.947610295022588 0.103726248178561 -0.302189725520199 2 -0.920589538635224 0.157203849520067 -0.357493520276818 1 -0.905747803939115 0.129435258396686 -0.403638718913094 1 -0.920496922362262 0.0846337184790537 -0.381277864762012 1 -0.921248993047534 0.121012508835855 -0.369669199170516 2 -0.935349779960492 0.0370428765736031 -0.351631025462772 1 -0.958963692542328 0.030105991821927 -0.281991604512177 1 -0.947839641650243 0.0335955627732431 -0.317038456141738 2 -0.90020522081589 0.0464032401639577 -0.43278815545642 1 -0.918645069792965 0.041752335623391 -0.392579974745588 2 -0.993300680915563 0.111995653430932 -0.0265441249833237 1 -0.99709848481314 0.0718902253628641 0.0262059340188542 1 -0.991714806924374 0.118162475957913 0.05107088109229 1 -0.987373948201614 0.158233976931711 -0.00166520171098495 1 -0.99327565976455 0.115176385534207 0.0122721041545356 2 -0.999443522039201 0.0342932069924434 0.00440575430398285 1 -0.996744713274841 0.0398458577855984 0.0704604612104543 1 -0.998708230258088 0.037097818471012 0.0374511210039293 2 -0.991404487530759 0.0876896605122631 0.0970190678445407 1 -0.985342485910178 0.155963559896232 0.0697901484308467 1 -0.989107117799928 0.121918450280727 0.083457800413592 2 -0.992209911668758 0.0435860702845914 0.116098896122242 2 -0.926308966968371 0.335657525669961 -0.170872365066928 1 -0.899977659379978 0.405111726330812 -0.16097156282093 1 -0.883797170133732 0.415941010450593 -0.214437178464481 1 -0.910615641291274 0.346719746756105 -0.224471350055165 1 -0.906172793942806 0.3762658428245 -0.192900193920194 2 -0.912263901956836 0.395607116657194 -0.106546000000705 1 -0.870106455521833 0.467493901317954 -0.155745891209367 1 -0.892241112510744 0.432059525512086 -0.131300168418051 2 -0.858764367883224 0.466108379905704 -0.212931797252737 1 -0.8468025993284 0.466312303868316 -0.256190859868348 1 -0.871991555225637 0.416275191352535 -0.25773610593065 1 -0.865955711871395 0.441474228885827 -0.235486704264612 2 -0.817752923499939 0.534380453784218 -0.213203087475828 1 -0.845041503776285 0.501614038610166 -0.184700505321613 2 -0.837593263274083 0.19799797899882 -0.509103190257283 1 -0.850655185654561 0.148331660740562 -0.50439874615181 1 -0.872835929147358 0.159137077669869 -0.461370415225486 1 -0.859759855694598 0.208790752105974 -0.466065725580257 1 -0.855776025809617 0.178681784161603 -0.485556565315239 2 -0.825153976894255 0.136989267997163 -0.548049395846418 1 -0.862364625948054 0.094086552177862 -0.497318011907442 1 -0.844402591718644 0.115625943608052 -0.52308348713332 2 -0.887143495651447 0.110845940819705 -0.447865965631005 1 -0.891336314694141 0.177697979943599 -0.417107122528757 1 -0.889879643729827 0.144375713891303 -0.432794013343473 2 -0.882120936233195 0.0703035250343754 -0.465501575041915 2 -0.815860410643374 0.434360183508158 -0.381569328441667 1 -0.821708221875372 0.468318020795406 -0.324857042745761 1 -0.790535894771017 0.501495323900498 -0.351598285153639 1 -0.784224972189387 0.46730471808256 -0.408122961236122 1 -0.803813835437868 0.468290309771651 -0.366873742710296 2 -0.845701696318518 0.439150257403395 -0.303345673894871 1 -0.822979773633498 0.495598581177525 -0.277738085733772 1 -0.834847209827788 0.467656218098631 -0.290725498308236 2 -0.79070265677579 0.530820900363367 -0.304974705408092 1 -0.763793473471401 0.52637197576048 -0.373697215738836 1 -0.777827575531833 0.528982477443119 -0.339593259237985 2 -0.805131127752224 0.533221443135691 -0.259382014690362 2 -0.703163855254798 0.35294451470257 -0.617184955958379 1 -0.648554021209773 0.371562976728608 -0.664330606526756 1 -0.643824093733005 0.326570762975343 -0.692089990212458 1 -0.698827763907734 0.308140382707326 -0.645374493013008 1 -0.674309228513366 0.34016405627839 -0.655433015198488 2 -0.647861630136982 0.419475084780994 -0.635916913558486 1 -0.594937507915953 0.382003575167169 -0.707108719827965 1 -0.622135301860047 0.401214843455406 -0.672305052166439 2 -0.60203543632406 0.329126043810657 -0.727561909233117 1 -0.645792207319173 0.28740126007256 -0.707421858046063 1 -0.6242962895719 0.308450232069986 -0.71791750588567 2 -0.566851228907193 0.356854908891712 -0.742401759823343 2 -0.0643040020795423 -0.872300831780442 -0.484645122290675 1 -0.114451360899834 -0.87565191346273 -0.469234250622038 1 -0.12750739336861 -0.850651356132473 -0.510057625919316 1 -0.0773702337186959 -0.847296684709588 -0.525461502527852 1 -0.0959727047069238 -0.862056684550003 -0.497683537505147 2 -0.100508905036897 -0.899507434127099 -0.425195286487307 1 -0.154212320901095 -0.899907670328341 -0.407977831696759 1 -0.16814801860133 -0.875956669794014 -0.45197530530257 1 -0.134431864616218 -0.888418730633665 -0.438923599411239 2 -0.178653937147231 -0.846867712470099 -0.500796409325962 1 -0.132415376559304 -0.82247714814997 -0.553205850857234 1 -0.155648141611792 -0.835273625028468 -0.527384239703361 2 -0.232772727256856 -0.870010984629799 -0.434431605592149 1 -0.205914073986423 -0.859244311511528 -0.468060752501716 2 0.0887150316656823 -0.744585812925348 -0.661584051115146 1 0.111844385004971 -0.706891725154688 -0.698511796028352 1 0.155979262620709 -0.72341344311574 -0.672589469763554 1 0.132782361923222 -0.760748262315906 -0.635321197024785 1 0.122429368471502 -0.734495664887006 -0.667533894132831 2 0.0722912404448753 -0.697498392229739 -0.712954657761506 1 0.127475293510864 -0.669387248570746 -0.73192543137293 1 0.0999430047867328 -0.683863561560647 -0.722874585730004 2 0.180716555891855 -0.680596075592139 -0.709914870468475 1 0.228258229234943 -0.697617464799151 -0.679185233654965 1 0.203352109976464 -0.739854753159636 -0.641322249842954 1 0.192255017688101 -0.711020681491265 -0.676373962835969 2 0.203552453355523 -0.622369574919068 -0.755679059413791 1 0.165674115941265 -0.646526344882244 -0.744568337061978 2 0.1818870039672 -0.890524575567042 -0.416749348506183 1 0.227199227424372 -0.907637231723985 -0.353003013080109 1 0.185952892338368 -0.928039311804318 -0.322813230423053 1 0.140653199273243 -0.911273202722166 -0.386655845748836 1 0.184128920356698 -0.910431430361175 -0.370246685637907 2 0.259279351152565 -0.889895390664554 -0.37550609883869 1 0.291545863220954 -0.89890580076561 -0.327220326946411 1 0.259441327435862 -0.916480737510616 -0.304622312954652 1 0.259549423470123 -0.903880466001205 -0.340330872794787 2 0.217476494671133 -0.936286277552623 -0.275907558263068 1 0.183346637744092 -0.950427735698991 -0.251436605139565 1 0.151880596830307 -0.942361684759182 -0.298361881545566 1 0.184799258433466 -0.939948102347585 -0.28733696709144 2 0.300693466556415 -0.922753387654835 -0.24053848511601 1 0.258631873847866 -0.942391982919957 -0.211742846923736 1 0.259351650463929 -0.93049970809101 -0.2584779528418 2 -0.187996872578705 -0.942879556826975 -0.274925852811138 1 -0.217858249119638 -0.92447989288051 -0.312901557220589 1 -0.177795590202434 -0.922532211185868 -0.342569499312056 1 -0.147939009106252 -0.940920974919448 -0.304597620066187 1 -0.183020696372 -0.933324700525136 -0.308953805242641 2 -0.258993788589047 -0.924186207327794 -0.280716217042397 1 -0.290260790223077 -0.901542949318192 -0.320974614405296 1 -0.24909185019005 -0.901722666690601 -0.353130548310812 1 -0.254238797632869 -0.913656450676403 -0.317166254719817 2 -0.200287359630022 -0.901104571690539 -0.384433580070811 1 -0.131720719499197 -0.921238413841219 -0.366072559063552 1 -0.166121254278144 -0.91182728984101 -0.375525638507653 2 -0.281610337091584 -0.870642981939564 -0.403117066649144 1 -0.241171888105862 -0.886707820152267 -0.394155925822853 2 0.0672411079046978 -0.979101344634309 -0.191649106020907 1 0.13197825556296 -0.970327096634497 -0.202742726743709 1 0.132877816302342 -0.979697990802382 -0.150328337330422 1 0.0680889355942101 -0.987908982573703 -0.139098620185298 1 0.100131925820978 -0.980154555806823 -0.17111319132312 2 0.130165812609734 -0.960626096605958 -0.245633228635042 1 0.185221782634427 -0.960315681116675 -0.208589657917474 1 0.157783434950494 -0.961059285584338 -0.227247705901072 2 0.186571173919534 -0.970085608193873 -0.155304170937402 1 0.132322709718418 -0.98533450072971 -0.108182081597705 1 0.159555624382352 -0.978428462255247 -0.131842854788706 2 0.222863944894831 -0.957319210299384 -0.183715994567806 2 -0.167649367350421 -0.984693310076399 -0.0467665885152834 1 -0.192125847374456 -0.981067452405174 0.0241919507896226 1 -0.246731593846736 -0.969030169797424 0.0140134328171198 1 -0.222407854487923 -0.973199298899633 -0.0569409886472122 1 -0.207455149532974 -0.978077180314164 -0.0163986314030635 2 -0.137621066174576 -0.989835205366783 0.0369867709935106 1 -0.218221417377327 -0.971851115077138 0.0881953835355757 1 -0.178131999614735 -0.982016486856217 0.0626645610995166 2 -0.270406709413452 -0.960617353362645 0.0645461973046923 1 -0.31081988769161 -0.94930871936786 0.0486226428986053 1 -0.287213548391763 -0.957907669779353 -0.00185960858197705 1 -0.278989017185997 -0.959905339402726 0.0313559772043115 2 -0.305551914510682 -0.942446063250167 0.134877612040467 1 -0.262228307669055 -0.958433246136484 0.111708460662875 2 -0.423428223949026 -0.857788250874036 -0.291302751408536 1 -0.395990563933005 -0.85491681052297 -0.335172431395391 1 -0.359008757502625 -0.879419343566236 -0.312670929787616 1 -0.386435211299566 -0.882274393435904 -0.268804428754914 1 -0.391477109184841 -0.869177402655739 -0.302189714230528 2 -0.433987113447187 -0.826953307841484 -0.357493503204079 1 -0.40299178318547 -0.821418947377458 -0.403638701612013 1 -0.364940832399467 -0.849290975783184 -0.381277846323543 1 -0.399771194686766 -0.838764363955956 -0.369669165695747 2 -0.324268668940685 -0.878123364629081 -0.351631038910464 1 -0.3249686710333 -0.902725179822823 -0.281991609969019 1 -0.324849785065869 -0.89106720565266 -0.317038460630971 2 -0.32231087176203 -0.841806257036246 -0.43278816390295 1 -0.323585692831264 -0.860780830916601 -0.392579967770788 2 -0.413461134440274 -0.910076333958422 -0.0265441238706199 1 -0.376491941265861 -0.926081680082538 0.0262059373367852 1 -0.418835460199792 -0.906662407144906 0.0510708772270083 1 -0.455604539407787 -0.890151008434966 -0.00166520187420055 1 -0.416478138967716 -0.909069585534912 0.0122721072095578 2 -0.341460063842584 -0.93993039453822 0.00440575889978998 1 -0.345906575261707 -0.935647165852057 0.0704604616392708 1 -0.343899978915103 -0.938364048860006 0.0374511298932359 2 -0.389758293784659 -0.915784282393878 0.097019057763654 1 -0.452817820856761 -0.888921043207316 0.0697901437287193 1 -0.421602114577006 -0.903022030368288 0.0834577874870987 2 -0.348062357769932 -0.930178860695322 0.116098881544684 2 -0.605474523483154 -0.777248510966325 -0.170872364369151 1 -0.663392525980276 -0.730742935937814 -0.160971559907425 1 -0.668692152300796 -0.712007974038173 -0.214437175083558 1 -0.611146249968667 -0.758904910302898 -0.224471358063538 1 -0.637873116555541 -0.745549007298012 -0.192900191758422 2 -0.658149293179065 -0.745365086468219 -0.106545988989884 1 -0.713491004756346 -0.683056171710783 -0.155745881500979 1 -0.686630551321772 -0.71505758203653 -0.131300155337445 2 -0.70866875062358 -0.672697304264447 -0.212931796794153 1 -0.705166363022562 -0.661258075550245 -0.256190852849644 1 -0.665361938523727 -0.700677043147146 -0.257736111268339 1 -0.687462492759581 -0.687149356864713 -0.235486700476264 2 -0.760926155249808 -0.612596513539604 -0.213203088864265 1 -0.738195891622353 -0.648674597799588 -0.184700498959249 2 -0.447137664057809 -0.735413727302354 -0.509103184730638 1 -0.403938972462904 -0.763184525019025 -0.504398768369585 1 -0.421069917547796 -0.780940378016067 -0.461370411587116 1 -0.464252240962219 -0.753160084000556 -0.466065741401575 1 -0.434385965410076 -0.758675719383273 -0.48555657976357 2 -0.385270818014158 -0.742436246129484 -0.548049419725801 1 -0.355967488524255 -0.791083345224049 -0.497318029877915 1 -0.37090167606489 -0.767344417295476 -0.523083528111408 2 -0.379563542524537 -0.809470215667412 -0.447865963737541 1 -0.444439036065999 -0.792799109102095 -0.417107125680925 1 -0.412297651510291 -0.801711017636598 -0.432794000759001 2 -0.33945328468806 -0.8172217963679 -0.465501588436855 2 -0.66521548145279 -0.641704471909196 -0.381569325483208 1 -0.699318319859866 -0.636772638890427 -0.324857033954859 1 -0.721239328659486 -0.596874275943185 -0.351598286144053 1 -0.686771977241819 -0.601437568481751 -0.408122962739397 1 -0.693762456432299 -0.619762884960345 -0.366873735169018 2 -0.678993092001907 -0.668604657794832 -0.303345676203397 1 -0.725657067870595 -0.629551754978529 -0.277738086652254 1 -0.702749574470106 -0.649472794081743 -0.290725493266151 2 -0.749181054371058 -0.587970515303279 -0.304974716165049 1 -0.736634890152133 -0.56375315231437 -0.373697227331511 1 -0.743454194731179 -0.576293688241299 -0.339593266125613 2 -0.755923140967718 -0.600950819146228 -0.259382029914657 2 -0.552959730434444 -0.559683006740403 -0.617184964295051 1 -0.55379175870586 -0.501992332166901 -0.664330626466756 1 -0.509540050027441 -0.511397217556558 -0.692089998099224 1 -0.509008610761125 -0.569404339478052 -0.645374506381685 1 -0.531888357350558 -0.536189887459865 -0.655433040902774 2 -0.599144616418881 -0.486528423848082 -0.635916890177941 1 -0.547152768825834 -0.447773060213734 -0.707108709021163 1 -0.573828292531848 -0.4677035255151 -0.672305047004424 2 -0.499056785568196 -0.470864304407068 -0.727561906829641 1 -0.472896047768311 -0.525372872443913 -0.707421862765862 1 -0.486272053729876 -0.498424680772937 -0.717917506690239 2 -0.514556113036359 -0.428833027676307 -0.74240175208175 2 0.809735348085671 -0.33071210151676 -0.484645586534063 1 0.797426335543563 -0.379440726462206 -0.469234231640957 1 0.769614818225699 -0.38413204480003 -0.510057580797803 1 0.781917273525872 -0.335412013467054 -0.525461950844541 1 0.790206493409677 -0.357665186498308 -0.497683712771738 2 0.824423113513325 -0.373552440792695 -0.425195276853748 1 0.80820922422719 -0.424751232550137 -0.407978343203524 1 0.781123737365303 -0.430603589352952 -0.451975821925274 1 0.803394533955069 -0.402388538723921 -0.438923852245643 2 0.750211885481277 -0.431606560145559 -0.500796430640992 1 0.74130335581375 -0.380093446921857 -0.553206365693212 1 0.74629430017931 -0.406143693208395 -0.527384485926639 2 0.7554994400999 -0.490228212136303 -0.434432136381108 1 0.753559220921644 -0.461357060825068 -0.468061052370501 2 0.735523820041421 -0.145732338671529 -0.661617671391026 1 0.706805316197404 -0.112139686618352 -0.698549301892268 1 0.736159289980775 -0.075272717844103 -0.672631548264269 1 0.764513701049895 -0.108818247072286 -0.635357822338081 1 0.736337430690137 -0.110577434402559 -0.667570585702053 2 0.685653404816477 -0.146829000376376 -0.712989608670308 1 0.676007560998544 -0.0858669015476895 -0.731904989020083 1 0.681245224213552 -0.116420488711165 -0.722877770042578 2 0.703060075212476 -0.0387048183750639 -0.709975227163943 1 0.733910637403963 0.0012806362045036 -0.679286412805593 1 0.766411166997245 -0.0352690777349252 -0.641408823865517 1 0.735557522510821 -0.0370227777619147 -0.676445330142875 2 0.655118796302664 4.83475894691371e-05 -0.755400463477823 1 0.666211255335914 -0.042956480043466 -0.744397007846165 2 0.903144005113753 -0.102201346515297 -0.41675235109678 1 0.933421452073252 -0.0643952105380068 -0.353004016765367 1 0.940079519151652 -0.109927897717047 -0.322813707932699 1 0.910135671909949 -0.147829233573214 -0.386658373853466 1 0.922769608419872 -0.106221086354218 -0.37024843646127 2 0.92646125561409 -0.0284023853250754 -0.375507580279333 1 0.945002465520667 -0.000499953777928056 -0.327221334706435 1 0.951796296062659 -0.0364644260577272 -0.304622811474192 1 0.939845724054343 -0.0324675451710916 -0.340331869678283 2 0.957664516646147 -0.0824958394715466 -0.275907568700411 1 0.960567376394668 -0.119325596152524 -0.251436591972205 1 0.943172360891734 -0.146758838456462 -0.298362385263953 1 0.951049259434137 -0.114705386365168 -0.287337208847362 2 0.97051024180448 0.00083030802578055 -0.240539010969124 1 0.976189691861703 -0.0452415552281554 -0.211742856276468 1 0.965101702727512 -0.0408819595823549 -0.258478224760487 2 0.838638000590289 -0.47016156165403 -0.274925853471974 1 0.811910865307008 -0.492875704228651 -0.312901557082059 1 0.822438328316304 -0.454172127131962 -0.342569502555809 1 0.849153610908069 -0.431459173274653 -0.304597628150422 1 0.831088233469761 -0.462476443285628 -0.308953812835133 2 0.798920404589871 -0.531907133711416 -0.280716223693577 1 0.767723063674938 -0.554646816623095 -0.320974626237189 1 0.780615497678435 -0.515548428565933 -0.353130559286402 1 0.790375045447661 -0.524131100240072 -0.317166270282469 2 0.795109480372631 -0.468941437499599 -0.38443408810616 1 0.83544588487408 -0.409952156800253 -0.366072569266336 1 0.81586517906353 -0.439760930894333 -0.375525901479977 2 0.741008381719948 -0.536870958251238 -0.403117054922417 1 0.768783267109714 -0.503376084741704 -0.39415619251951 2 0.951959734021806 -0.23860838099591 -0.191649114263229 1 0.96361896127054 -0.174328558805174 -0.202742714657619 1 0.972809013053342 -0.17636919111908 -0.150328329932078 1 0.960598055493629 -0.240524151514734 -0.139098616093551 1 0.963124673859923 -0.207653126186382 -0.171113182254233 2 0.95383307182835 -0.173054641088596 -0.245633222617685 1 0.9705504931673 -0.120597666585761 -0.208589651725285 1 0.962779037283784 -0.146922717108096 -0.227247684083884 2 0.980259263675521 -0.122333175218555 -0.155304165080685 1 0.977998274494906 -0.178639032451134 -0.108182082035825 1 0.979845543830819 -0.15060472964884 -0.131842846661798 2 0.979333092354004 -0.0838716616306907 -0.183715991935662 2 0.884691893859773 -0.46373067913675 -0.0467665915193205 1 0.873680037189883 -0.485888727613172 0.0241919411520991 1 0.845358009141473 -0.534102322910338 0.0140134306673547 1 0.856839262949 -0.512257361610625 -0.0569409862687483 1 0.86609906907485 -0.499543773459431 -0.0163986351524058 2 0.898861291957181 -0.436761355934291 0.0369867609347826 1 0.856851102856256 -0.507858886571066 0.0881953836844116 1 0.878906939186034 -0.472873124326963 0.0626645514042162 2 0.83004141601987 -0.554018876754585 0.0645461984011129 1 0.80679810490564 -0.588959500815841 0.0486226400750819 1 0.822270420817133 -0.569165840444209 -0.001859609989082 1 0.826712030834479 -0.561961150777148 0.031355973148749 2 0.801898834114896 -0.581828789852659 0.134877622583981 1 0.830491190434082 -0.545565739121036 0.111708471446638 2 0.684958926070598 -0.667775566371323 -0.291302769569736 1 0.690706290150164 -0.64079327915354 -0.33517244033569 1 0.725437751919999 -0.613193383348385 -0.312670948583508 1 0.719678221543229 -0.640159898054282 -0.268804428858747 1 0.705663960879911 -0.640907694003379 -0.302189739935321 2 0.652370349110783 -0.668288826481806 -0.357493500050188 1 0.65668495210795 -0.637100156550503 -0.403638705580875 1 0.694950668306028 -0.609524572570079 -0.381277834583751 1 0.67417637272653 -0.639397345730682 -0.369669163687498 2 0.734940030810274 -0.579752984189107 -0.351631032022729 1 0.758122495666379 -0.588021391265798 -0.281991608922051 1 0.747071327706245 -0.584305684715834 -0.317038476825856 2 0.701006110942392 -0.566668180054788 -0.432788150234963 1 0.718657693070404 -0.573744175635487 -0.392579942604278 2 0.737767610913601 -0.674453615562314 -0.0265441251906751 1 0.764413583274084 -0.64424001996469 0.0262059326980781 1 0.73285998124311 -0.67851054698981 0.0510708782644812 1 0.70579458863786 -0.708377468869109 -0.00166520124456337 1 0.735877830561818 -0.6770121683495 0.0122721020536294 2 0.788409994435954 -0.615201671016279 0.0044057555035669 1 0.782962731862072 -0.618107798781832 0.070460464566748 1 0.786166552090146 -0.617038578104625 0.0374511215673207 2 0.750520705503575 -0.65367543576237 0.0970190653192629 1 0.705485447632958 -0.705346877197925 0.0697901434344653 1 0.728542644050209 -0.680016708403369 0.0834577958218413 2 0.777095575657592 -0.618468151620835 0.116098900190218 2 0.552105272814519 -0.816023543314221 -0.170872373360126 1 0.489978060890533 -0.856736053830928 -0.160971564642108 1 0.470522374954253 -0.855986738101031 -0.214437180004714 1 0.532906774669654 -0.815748991481733 -0.224471355421669 1 0.511945465379528 -0.837040787312988 -0.192900200549173 2 0.505505051638562 -0.856268060974614 -0.106545993385028 1 0.429144018199977 -0.889646203457743 -0.155745882144633 1 0.46787960547892 -0.873989598957294 -0.131300161452741 2 0.420782559953717 -0.881858592546928 -0.212931787931791 1 0.410986009986493 -0.874992684611675 -0.256190851568329 1 0.460775584745716 -0.84931797381659 -0.25773610818861 1 0.441080463381831 -0.866156386155042 -0.235486695156633 2 0.34747469321749 -0.912985888650769 -0.213203073082797 1 0.388810976492509 -0.902517123031581 -0.184700488593306 2 0.561247040527151 -0.652508880379306 -0.509103185962837 1 0.601007406073939 -0.620005886633228 -0.504398754133918 1 0.612600258421995 -0.641785037404056 -0.46137041111186 1 0.572835915796598 -0.674269516875759 -0.466065742983704 1 0.587310715471015 -0.647569413884807 -0.485556572329225 2 0.587043444838524 -0.595840061346386 -0.548049414851337 1 0.642364750489653 -0.583002971606691 -0.497318017242774 1 0.615172795423415 -0.58987085752573 -0.523083506006986 2 0.652560212156214 -0.611126237143542 -0.447865961722216 1 0.616657639237593 -0.667674892815292 -0.417107116356605 1 0.635065491667894 -0.639860524600098 -0.432793998867387 2 0.672327319455303 -0.575374406830351 -0.465501574835212 2 0.404734558108193 -0.830955523009097 -0.381569339291703 1 0.389505852699462 -0.861865295290183 -0.324857036698012 1 0.34478580361048 -0.870383607482042 -0.35159830161126 1 0.35977662212731 -0.83901322975606 -0.408122957811292 1 0.375045166564895 -0.851324755517955 -0.366873753043702 2 0.42606105782286 -0.852371394855914 -0.303345683973761 1 0.374499236214241 -0.88468283333674 -0.277738084140085 1 0.40052424594265 -0.869052780865138 -0.290725494450278 2 0.327683603147693 -0.894206411115196 -0.304974704817009 1 0.308528474397529 -0.874790740115577 -0.373697220541406 1 0.318347977803794 -0.885151543600817 -0.339593269863959 2 0.33794508698157 -0.904629320839786 -0.259382002437606 2 0.361416127246003 -0.69884755043305 -0.61718496535022 1 0.306291881133166 -0.681811250075015 -0.664330610353897 1 0.328911259621582 -0.642631572856386 -0.692090002374425 1 0.384243560686852 -0.660051492987074 -0.645374487983987 1 0.345584358517739 -0.671547552163272 -0.655433026356479 2 0.277569756873144 -0.720165906734127 -0.635916894360017 1 0.256778005868273 -0.658742993532519 -0.707108708587032 1 0.267489603480925 -0.690271605762478 -0.672305041723335 2 0.293601373438769 -0.620136329514641 -0.727561923985461 1 0.353526970421701 -0.61209973194668 -0.707421845762673 1 0.323763929301754 -0.616493797061381 -0.717917518220175 2 0.248837672575663 -0.621888752788201 -0.742401760952353 2 0.566664655774968 0.667886813909975 -0.482462008552169 1 0.608248841613286 0.641044757571896 -0.468111881748261 1 0.603655835658951 0.613493287220299 -0.509172267194709 1 0.562069956849832 0.640320456745594 -0.523511045348687 1 0.58554730169402 0.641110767396429 -0.496140978690192 2 0.611178315162216 0.668406408127565 -0.42390366204313 1 0.654169157569313 0.637288245980968 -0.407409526116213 1 0.651171320176867 0.609845536087495 -0.451571765262356 1 0.63165591373743 0.639613890600678 -0.438070658285319 2 0.642513667438793 0.580277487147938 -0.500352454426509 1 0.590949302002724 0.588345499360468 -0.551964197284233 1 0.617171085289138 0.584725888873282 -0.526535790854285 2 0.699811249339605 0.567066126915519 -0.43420207672958 1 0.671794251834617 0.574201695864949 -0.467720954599316 2 0.354473500980434 0.67423853689456 -0.647795920638931 1 0.319444433044617 0.643856485825812 -0.695309972881769 1 0.282391413642334 0.67844468817017 -0.678255576029737 1 0.317219788872799 0.708480421395455 -0.630373504900538 1 0.318679326736634 0.676875897974649 -0.663538399012935 2 0.34978655011384 0.614693573115985 -0.707025184163475 1 0.287791990490859 0.617748441219369 -0.731854231513789 1 0.318990407892755 0.616608557223603 -0.719881575789173 2 0.249354048585093 0.653544342385647 -0.714623068989801 1 0.253217693888914 0.705481257212011 -0.662024100101509 1 0.25148076759547 0.680020719211752 -0.68883224600957 2 0.244271054180434 0.618144387569432 -0.747050687161711 2 0.399613758515496 0.816144351761922 -0.417287598784307 1 0.362949813877682 0.856934528279913 -0.365951594526814 1 0.402046366424999 0.856189107590058 -0.324639822542866 1 0.438947601700974 0.815880638848764 -0.376148981171823 1 0.401334330516712 0.837207961932606 -0.371421024995994 2 0.321187932616593 0.856430367563261 -0.404283904109169 1 0.330915300232786 0.889974341605607 -0.313581443874154 1 0.326441548556905 0.874246133584413 -0.35936437244692 2 0.378380283919183 0.882170941555182 -0.28049057231236 1 0.412720863695632 0.875273854630301 -0.252423278378863 1 0.436443275394438 0.849487340052725 -0.296598058787445 1 0.407685710340966 0.866402819697133 -0.288747127089681 2 0.345139975865167 0.913683903159779 -0.21405374318365 1 0.338458942585124 0.903048690332995 -0.264168879737909 2 0.706356648468654 0.652277068459943 -0.274855625187264 1 0.719696084578539 0.61984686892688 -0.31282544434912 1 0.686260282592412 0.641759482179022 -0.342377726880091 1 0.672916864943918 0.674176673036036 -0.304411240155116 1 0.696770906634702 0.647443765119312 -0.308821820120229 2 0.75277265612559 0.595442568880466 -0.280679035369295 1 0.764756077978545 0.55875687462519 -0.32092725316767 1 0.731585986825315 0.583089069221106 -0.353044433403671 1 0.742749546667098 0.589717754721204 -0.31710413785968 2 0.69182053495409 0.611261176364774 -0.38423777591416 1 0.648547653984966 0.66770376515429 -0.365506142199036 1 0.670661153340115 0.639940721997748 -0.375142222172491 2 0.739610687115979 0.538884899035192 -0.402996833941431 1 0.716384425758795 0.575615160925104 -0.393996622400142 2 0.522303515337573 0.830997937717527 -0.191141665945561 1 0.464747238401604 0.861960799613178 -0.20271683461276 1 0.468674415321984 0.870452381954958 -0.150748510387909 1 0.525959871236023 0.839034908313699 -0.139045863726736 1 0.495877211336322 0.851382931802035 -0.171070631742419 2 0.46180463245678 0.852494839800424 -0.24509491438008 1 0.415720407461689 0.884925432916153 -0.210087093570452 1 0.439038976152951 0.869241957563644 -0.227728615429956 2 0.41926696465127 0.89434530495576 -0.156035872479916 1 0.472152587651664 0.874872821210344 -0.108460147471323 1 0.446047665435286 0.885261090037857 -0.132348864056829 2 0.382634057721242 0.905061382856965 -0.18524200219935 2 0.714365199419322 0.698135594917119 -0.0469144514117983 1 0.731941925478194 0.680938869186516 0.0238726525799817 1 0.769086807432405 0.639067039177138 0.0136464874510277 1 0.751947137258473 0.65660825015272 -0.057136773436686 1 0.742649697789786 0.669424840092597 -0.0166563268345886 2 0.693057144810862 0.720003667846179 0.0367313461735227 1 0.747598182646344 0.65827565186891 0.0875311804616916 1 0.721179076392158 0.689956781756338 0.062203436175233 2 0.783177620027967 0.618562906029117 0.0639137081773155 1 0.809238658163471 0.585644271590427 0.0480477059487271 1 0.795315140835005 0.60626038064345 -0.00216970306378395 1 0.789763737030409 0.612822768575636 0.0308842708069047 2 0.800926573682258 0.583533938221879 0.133203294278392 1 0.775278985998958 0.621731743128876 0.110534626487647 2 0.8467565124669 0.445083363310064 -0.291298232570547 1 0.822873476845411 0.458889157774768 -0.335159889856339 1 0.807357743547739 0.500448224618364 -0.312656849803013 1 0.831222168987494 0.486635824277849 -0.268798403031191 1 0.827603441488029 0.47307780354819 -0.302180386271018 2 0.83717309422515 0.41393935457865 -0.357482924954118 1 0.808847513976084 0.427697011961783 -0.403604623665378 1 0.794449549309058 0.472604428945274 -0.381241508622149 1 0.816437262795365 0.443610844796447 -0.36964565386613 2 0.778501068805101 0.519823308950676 -0.351588806852285 1 0.793520221913369 0.539309007704097 -0.281972544520798 1 0.786575069525395 0.529950128831484 -0.317007604167112 2 0.755580922775938 0.491646912818724 -0.432674576810851 1 0.767758781322665 0.506220459933601 -0.392501299165306 2 0.86934683188858 0.49337452465802 -0.026650052489123 1 0.848762062945793 0.52819078090415 0.0259824996048133 1 0.871614972414376 0.487612899860305 0.0508646890496143 1 0.891733216099163 0.452500562502744 -0.00175393089186193 1 0.871156745057064 0.490865039584996 0.0121158955738146 2 0.828592101850369 0.559911409107762 0.00415911531765418 1 0.8295735777154 0.554050220539563 0.0699087124463036 1 0.82959030361164 0.557315069234592 0.0370515271905274 2 0.853365282079106 0.51227450458088 0.0966111540829369 1 0.888724327565615 0.453247195442073 0.0695345240732032 1 0.871693198235723 0.483118595393869 0.0831259855392014 2 0.828088420157517 0.548518575413976 0.115054512418585 2 0.94669288710865 0.272922023115304 -0.170871362381324 1 0.966215388997303 0.201252674618287 -0.160970575929124 1 0.959490682914228 0.18298015337959 -0.214437167724771 1 0.940499426857574 0.25474744677173 -0.224471365407403 1 0.954272007488844 0.228231805815417 -0.192899699999025 2 0.970568692444462 0.216164571262497 -0.106542256777637 1 0.978716660144049 0.133225208754757 -0.155745890896662 1 0.975796236308647 0.174903768549466 -0.131298309548578 2 0.968726208610113 0.127679417076749 -0.212931796883546 1 0.959168789361844 0.120484133206754 -0.256191349230829 1 0.950136272486635 0.175771294472199 -0.257736616684223 1 0.960064638627902 0.151836439322363 -0.235486947193928 2 0.975676893986902 0.0483403208245813 -0.213203094305168 1 0.978494127096578 0.090888686517788 -0.184700513813325 2 0.79390457802991 0.332303734367276 -0.509159431253431 1 0.77530927547766 0.380143075204407 -0.504403710988931 1 0.799662385546798 0.384353282304595 -0.461348892888057 1 0.818237168845725 0.336515114048367 -0.466094307847948 1 0.797304852209553 0.35856615287751 -0.485573924165364 2 0.747905403284146 0.374541191320164 -0.548049214090037 1 0.752951822199536 0.430908617631571 -0.497223654125348 1 0.751000024262308 0.403031573256807 -0.52303560934877 2 0.782865697467202 0.431827604103888 -0.447817287049134 1 0.825543423901843 0.380184581703601 -0.417100117362656 1 0.804783017808379 0.406298172375619 -0.432766114697782 2 0.754976314644439 0.461721254976845 -0.465396885772168 2 0.915341168475217 0.128172971426784 -0.381595758048091 1 0.940043492538935 0.104117390528993 -0.324863085058018 1 0.934325715221153 0.0589534279304871 -0.35160486016901 1 0.909111733280511 0.082925035557717 -0.408149873571847 1 0.925545106187872 0.0936318264823896 -0.366890459801924 2 0.94231075173917 0.141816831341241 -0.303351234907833 1 0.957109448588801 0.0827891451660501 -0.277739104350507 1 0.950285515636211 0.112372707057787 -0.290728802642737 2 0.951700222955582 0.0353217971933138 -0.304976239961809 1 0.927313242828611 0.0231082480187484 -0.373703309601484 1 0.940202570230147 0.0292433503255093 -0.339597114366298 2 0.964784316054151 0.0418598267104004 -0.259382802035323 2 0.775689754252629 0.128504564619998 -0.617818965538615 1 0.742390975311007 0.08097201741481 -0.665051574417426 1 0.710721749296841 0.117585970915155 -0.693645613589923 1 0.744421743315479 0.165196852513931 -0.64681868165468 1 0.744120800132552 0.123202236102437 -0.656545986307602 2 0.770450868988602 0.0415600486232521 -0.636207999850624 1 0.705312720816944 0.0406597276862465 -0.70765586921571 1 0.738757236404273 0.0411585715816543 -0.672725951797196 2 0.678918513722612 0.087261683442227 -0.729058823357563 1 0.687340156133036 0.151696621816073 -0.710374543780189 1 0.683580210402078 0.119559922949538 -0.720176762168791 2 0.66771144615511 0.0437052973390248 -0.743018715519796 2 0.431549924159368 -0.0459035042766384 0.900850062915501 1 0.472497991239823 -0.00966692691710474 0.881282343972353 1 0.435493749635869 0.0617988540361099 0.897925182492554 1 0.434117183544398 0.00796127030668842 0.900688912333031 2 0.46208408186227 -0.0974390062213968 0.881496144014768 1 0.428790113702864 -0.0924631467821155 0.898674263271879 2 0.495946673534749 -0.0557793360717599 0.866648431713289 1 0.525291560999256 -0.0270006833057245 0.850528720062373 1 0.501726547075301 0.0190908640938114 0.864901322720484 1 0.499192265305152 -0.0183518724717923 0.866417414396319 2 0.523904433812174 -0.101308262419775 0.845720423765805 1 0.49333042714626 -0.0994452006508363 0.864197441602321 2 0.343894866976045 0.122780351678998 0.930807329684711 1 0.271984655012179 0.124133416285347 0.954218776864354 1 0.276417942910105 0.0603504209631564 0.959079604373438 1 0.310513570808334 0.091650229855312 0.945987664171528 2 0.25802286756864 0.177831901509306 0.949650125617237 1 0.206869376899493 0.171416154353817 0.963196197619347 1 0.220918389484418 0.117809212456165 0.96817934564142 1 0.239636582960619 0.147912537418593 0.959547288616491 2 0.220373989200565 0.0684689044477027 0.973050416354629 1 0.245580838107424 0.0371341299051037 0.968674040012876 2 0.168612559860683 0.121499914883044 0.978199572548931 1 0.194630229475694 0.0950531318225169 0.976317588398837 2 0.322149355378887 0.290794865808041 -0.900850075656386 1 0.376576997796046 0.28554810014383 -0.881282320607128 1 0.38864632119777 0.205980679184741 -0.897925217463721 1 0.355887460297773 0.24872670667914 -0.900688920210917 2 0.316560541400217 0.350435958623813 -0.881496122113719 1 0.292549779827049 0.326840593924663 -0.898674261835061 2 0.368442651045303 0.336636373320506 -0.866647929978911 1 0.409098974324593 0.330602766581618 -0.850528177430535 1 0.417126996240277 0.279463020447972 -0.864901346543671 1 0.393068045982098 0.308264921477466 -0.866417140613931 2 0.364299855328214 0.389903513063696 -0.845719895268453 1 0.34066010413005 0.370425227340648 -0.86419715834865 2 0.35038509283166 0.102804680283637 -0.930807331319617 1 0.293004188854232 0.0594422194653997 -0.954218782909627 1 0.259100109795324 0.113650069370335 -0.9590796391073 1 0.30508142285055 0.108368670186215 -0.945987668589221 2 0.313271492720056 0.00779256654858535 -0.949650129936071 1 0.268115909660253 -0.017084231108086 -0.963196185807706 1 0.247972983588309 0.0345426288228812 -0.968179351370599 1 0.280810561552646 0.0211907275078601 -0.959547290584511 2 0.218531262766187 0.0741400859735238 -0.973050421371279 1 0.220506139991375 0.11430680617239 -0.968674070923543 2 0.207825630767607 0.000812261199135103 -0.978199563452529 1 0.21332964021141 0.0375010749740634 -0.976317590939358 2 0.145541746218683 0.5969057521181 0.788919026612838 1 0.168998713361884 0.551641133980976 0.81678526649863 1 0.246438009695669 0.559375627216282 0.791264212896272 1 0.196278527053475 0.578986275612848 0.791201473206977 2 0.0869238283261495 0.583280988605777 0.807636552149603 1 0.100921832700992 0.610587066730039 0.785508593507512 2 0.117931569718076 0.543480894088635 0.83118844269891 1 0.137038310075484 0.508559643571411 0.850084101886571 1 0.18802749379918 0.516547018310212 0.835449348089866 1 0.153100876849071 0.530412244057938 0.833925338563079 2 0.0649993551309788 0.52774704233167 0.846900212525552 1 0.0760097621857212 0.555894020659564 0.827832328646061 2 0.325220034861419 0.607271910188599 0.724696893552555 1 0.342987762572766 0.657396512532406 0.670895180899138 1 0.283927298911677 0.679516016765718 0.676405830633949 1 0.304892409255304 0.644103115775924 0.701337164804051 2 0.393167820325321 0.642780183550201 0.657500181522323 1 0.39837732886863 0.678035051474242 0.617644288397945 1 0.348379816688928 0.692934010336823 0.631298908094746 1 0.371005630559036 0.668283606699696 0.64481956812038 2 0.303274974169062 0.71272025733524 0.632558327477778 1 0.268817788991301 0.708001478167928 0.653058168891122 2 0.362016012733298 0.722519709172575 0.589044574341269 1 0.332880514649059 0.718124784378789 0.611229856153532 2 -0.522720651212754 0.322912924732657 0.788900118444266 1 -0.472398643480655 0.331190787661168 0.816798368295819 1 -0.455812090168657 0.407518358333363 0.791142389257103 1 -0.489986317730167 0.365755448608439 0.791138332237281 2 -0.52787497395542 0.262926404972695 0.807632400009102 1 -0.549520478043712 0.284690856392065 0.785498198544258 2 -0.480416548090888 0.280028793475823 0.831226495361228 1 -0.44121204996534 0.287129574960832 0.850262937064708 1 -0.433059481930697 0.338167891080553 0.835614154699879 1 -0.457078883021802 0.309336507492591 0.834026021770168 2 -0.481801186347054 0.224798255367737 0.846944588038157 1 -0.505185443846241 0.244026006894881 0.827853941706856 2 -0.476909072089193 0.498268407943899 0.723897408435743 1 -0.519098327338167 0.53058138674231 0.670028849433564 1 -0.558535559502851 0.480324711386343 0.676171607224176 1 -0.518300027576809 0.489821302926148 0.700822613463253 2 -0.48926379566502 0.575308981484381 0.655496976812153 1 -0.52135948769752 0.590683584747142 0.615794368553655 1 -0.551408047449724 0.546224536028701 0.630588985664361 1 -0.520679996452414 0.561130573545733 0.643474887854439 2 -0.584146422509273 0.508986829944622 0.63228564567429 1 -0.590301879905893 0.47465439930307 0.652889922816789 2 -0.575411904875751 0.568234126518175 0.588283443318696 1 -0.580190841020537 0.538994603254727 0.610717254905675 2 -0.468638115737322 -0.397351523256571 0.788900121200791 1 -0.460960751730671 -0.346934605965099 0.816798389064821 1 -0.528427283933573 -0.307573375621506 0.791142409169175 1 -0.499268584945484 -0.352980371890323 0.79113837819207 2 -0.41318019063454 -0.420790233889183 0.807632372866234 1 -0.440568214320816 -0.434650777501646 0.785498178799381 2 -0.414780054959017 -0.370369983701707 0.831226504766549 1 -0.409418530442455 -0.330890065224917 0.850262949263209 1 -0.455439984303679 -0.307364830137546 0.835614174601844 1 -0.435441869677047 -0.339118003119487 0.834026053156788 2 -0.362680100135634 -0.388754127410136 0.846944577407036 1 -0.388193157428826 -0.405051971583351 0.827853935232608 2 -0.621254444078714 -0.299594432416775 0.723897411311234 1 -0.665023086622397 -0.329733372153293 0.670028846894847 1 -0.629413318901717 -0.382770439806493 0.676171598895699 1 -0.626011478065696 -0.341569720950754 0.700822623246541 2 -0.698341762831764 -0.287537310610524 0.655496954743642 1 -0.722882132547036 -0.313310741931438 0.615794342010339 1 -0.689885005201453 -0.355627376537305 0.630588983656737 1 -0.694565702986582 -0.321797141503574 0.643474859646582 2 -0.664586592312693 -0.398270515707503 0.632285647478664 1 -0.633836511956235 -0.414733955567265 0.652889880439771 2 -0.718235306550918 -0.371655384481412 0.588283469596591 1 -0.691903501904296 -0.385235785120093 0.610717286072766 2 0.233038160905025 -0.568441275493566 0.788948400805982 1 0.187445034075852 -0.545546844689856 0.816853712412007 1 0.129202376346337 -0.597587877001131 0.791161866465302 1 0.181385311365986 -0.583874198331801 0.791171933338556 2 0.272363655051212 -0.522835232860714 0.80778320012602 1 0.277142357677963 -0.553223435568734 0.785597875358177 2 0.223901116766835 -0.508813837831009 0.831341604651789 1 0.187996954760724 -0.491519472135905 0.85036730227058 1 0.151505436356154 -0.528075499374482 0.835662427489696 1 0.187838718354688 -0.518836880136126 0.83410650331601 2 0.257261485433492 -0.4648364158984 0.84718649037904 1 0.264997500668961 -0.494172757142754 0.828051330517944 2 0.0929488631635849 -0.683423987571802 0.723901064929952 1 0.1080903733078 -0.734367068443689 0.670029352268084 1 0.169536232590161 -0.716889493705102 0.676172622599603 1 0.13140148801512 -0.700920884526544 0.700825011494279 2 0.057663673167108 -0.753015527505974 0.65549748048774 1 0.0745932058916959 -0.784319817443404 0.615794842766507 1 0.125035221247513 -0.766014455438329 0.630589487543708 1 0.0914139516200858 -0.760011543967808 0.643475378961598 2 0.173408927657802 -0.755132141215375 0.632285690246969 1 0.198568939822413 -0.730974104704605 0.652890460272456 2 0.131518111559721 -0.797930140963418 0.588283997860386 1 0.152570792032882 -0.77708389086613 0.610717567096372 2 0.594127651578653 0.0739327818611415 0.800865913538933 1 0.575657119319904 0.00118015586753326 0.817762923773176 1 0.613820689321524 -0.0175140950895403 0.789165014921349 1 0.604687172769062 0.0282515925125047 0.795927406787655 2 0.546350967534255 0.0221101661264275 0.837325340963524 1 0.554521984066058 -0.0479594852947679 0.830883851552464 1 0.550816490820386 -0.0129268427431696 0.834665884568249 2 0.586185995972711 -0.08303548864661 0.805873809096447 1 0.62096739690603 -0.0677595771841124 0.780792283822472 2 0.55547949434818 -0.0922502034676429 0.826444813944186 2 0.691222541853735 -0.134034189441199 0.710025015353929 1 0.736286186826093 -0.128773707533422 0.664263396539417 1 0.738716045530425 -0.0661054156892001 0.670711131098069 1 0.715694222935179 -0.100159495628536 0.691081876605664 2 0.737793755832133 -0.181566907779768 0.650128613935984 1 0.770266947910623 -0.173009261708665 0.613741863437379 1 0.768899950531563 -0.12026497728258 0.62797917703472 1 0.753837767330659 -0.151010070566815 0.639478422078949 2 0.77363673216717 -0.0710309069279085 0.629671998209127 1 0.759411963303237 -0.0410623926384683 0.649321503808303 2 0.800138915589496 -0.122544668034342 0.587211289159177 1 0.787406243728832 -0.0968518991140562 0.608840531086129 2 -0.145545587151356 0.596839998533457 -0.788968313825202 1 -0.168922657714358 0.551509387456883 -0.816890151790232 1 -0.246353443742485 0.559311604194682 -0.7913356014111 1 -0.196237792727295 0.578920214125725 -0.791260379580616 2 -0.0869484229994276 0.583066860899463 -0.807789933942209 1 -0.100935467443877 0.610456890377106 -0.785608900303179 2 -0.11791096923886 0.543237680823995 -0.831349082210182 1 -0.136779476034423 0.508141635173788 -0.850377800166032 1 -0.187715908286988 0.516249337406118 -0.835701571169196 1 -0.152934112139758 0.530139678179087 -0.834128784179238 2 -0.0650853367261325 0.527272478917827 -0.847188777494683 1 -0.0760652650642604 0.555550740163642 -0.828055528735145 2 -0.325213472444487 0.607280244142421 -0.724694344164647 1 -0.342987707627418 0.65740341112208 -0.670889065300457 1 -0.283925813618689 0.679519057480723 -0.676403370483947 1 -0.30488841984674 0.644108940060354 -0.701334805958433 2 -0.393168341330316 0.64278921835534 -0.657491184830046 1 -0.398377301632506 0.678040004948736 -0.617638239040203 1 -0.348379324723226 0.692937025840743 -0.631295912770257 1 -0.371005605902413 0.668289558509452 -0.644813488921848 2 -0.303274451853322 0.712722203733175 -0.632556277644405 1 -0.268816530611539 0.70800344785241 -0.653056640086858 2 -0.362014006982742 0.722523198686593 -0.589041562588575 1 -0.332879251380227 0.718127508806505 -0.611227328070806 2 -0.61267936145644 0.0459735824968265 -0.788912723921579 1 -0.576801774618626 0.00980288348284599 -0.816829563132776 1 -0.608095153185155 -0.0614628417279317 -0.791312092610612 1 -0.611278471543443 -0.00775788091729926 -0.79121962965578 2 -0.581635306130625 0.0975582946274376 -0.807609546225105 1 -0.611930164999458 0.0925547676224388 -0.785493227696498 2 -0.553252476400605 0.0558765034935661 -0.83122910643375 1 -0.525697382834033 0.0271205349006021 -0.850274037480633 1 -0.549065165136986 -0.0189322528893745 -0.835653559721086 1 -0.551573897777818 0.0184798594959298 -0.834046206746912 2 -0.521921208719933 0.101459577259013 -0.846927752179869 1 -0.552155400623089 0.099580762380852 -0.827833881140664 2 -0.678060804505032 -0.12165869175026 -0.724684462269504 1 -0.731219912193067 -0.123074868886623 -0.670880831049978 1 -0.734010173479219 -0.0601120419532841 -0.676384881060754 1 -0.706808088724813 -0.0909693667398008 -0.701320087904564 2 -0.732826414575664 -0.175301149534342 -0.657487039985174 1 -0.767960751042833 -0.169360352160359 -0.617635693235741 1 -0.766679426207213 -0.117220342256238 -0.631289099279828 1 -0.750229961572778 -0.146349376707877 -0.644807872571327 2 -0.77156214140874 -0.0682353355276185 -0.632543571276058 1 -0.756439416113479 -0.0369805722092863 -0.653028242792163 2 -0.799029349488006 -0.121038622137052 -0.589038016858778 1 -0.785847861504537 -0.0947044497980723 -0.61121873267248 2 -0.233051828720298 -0.568485808107788 -0.788912692663908 1 -0.187564915116229 -0.545541422038387 -0.816829578394604 1 -0.129457230561493 -0.597325693797121 -0.791312074067492 1 -0.181517329384606 -0.583757449799304 -0.791219619662352 2 -0.272518912709893 -0.523020618963043 -0.807609517863356 1 -0.277121589747193 -0.553378924186479 -0.785492913971319 2 -0.224106371843614 -0.508907500857238 -0.83122909219913 1 -0.188242927507931 -0.491587510321334 -0.850274045304627 1 -0.151665178297982 -0.528042324288758 -0.835653536031401 1 -0.188021400414728 -0.518867295398735 -0.834046198132326 2 -0.257776336539032 -0.465023953387528 -0.846927764594497 1 -0.265332480127696 -0.494358776608328 -0.827833875458433 2 -0.0938279078321692 -0.682468227132449 -0.724684463357147 1 -0.108908162427745 -0.733463561910991 -0.670880811866018 1 -0.169651818274711 -0.716660916171922 -0.676384901530419 1 -0.131898711212258 -0.70032530149676 -0.701320090643989 2 -0.0597342037976311 -0.751129534828902 -0.657487019953767 1 -0.076241119682357 -0.782708661641055 -0.617635659886047 1 -0.125433525056846 -0.765378647443325 -0.631289086755295 1 -0.0926469715891752 -0.758735138482916 -0.644807829269199 2 -0.173530230561546 -0.754885402579121 -0.63254358870095 1 -0.198582121231427 -0.730844290517697 -0.65302827433831 2 -0.131798670057974 -0.797324829399276 -0.589038048105967 1 -0.152770889007128 -0.776651052021848 -0.611218744369924 2 0.468649772915461 -0.397311791858778 -0.788912254264993 1 0.460980970621969 -0.346947544293055 -0.816781036237204 1 0.528179624997703 -0.307676847230988 -0.791260676385889 1 0.499144272442855 -0.353007981425287 -0.791194831847471 2 0.413216233148694 -0.420799220973863 -0.807608000809413 1 0.44066190656119 -0.43455865331517 -0.785492897065637 2 0.414848887594738 -0.370388448117646 -0.831183570188541 1 0.409762833276457 -0.330918429938917 -0.850084194683702 1 0.455730289937602 -0.307383564845277 -0.835450129899565 1 0.435621953630006 -0.339136983787316 -0.833923503343011 2 0.362723889860771 -0.388853546641783 -0.846880659675611 1 0.388232428306936 -0.405105631405873 -0.82780836522657 2 0.620070117569385 -0.300114692995395 -0.724691178920916 1 0.663906679790272 -0.330223986061996 -0.670887933084754 1 0.629158619946994 -0.382804945462928 -0.676388399866173 1 0.625288735449622 -0.341845925134974 -0.701325139367891 2 0.695902110086807 -0.288915745346149 -0.657496555805674 1 0.720837661602668 -0.314377658979073 -0.617640712253253 1 0.689155879855238 -0.355807180324399 -0.63129158778876 1 0.692967078267712 -0.322570178479098 -0.644813932706124 2 0.664313563169086 -0.398307327339652 -0.632545610528105 1 0.633708254864037 -0.414703620300142 -0.653030554205143 2 0.717572538739913 -0.371734200289735 -0.589039538560889 1 0.691429376050675 -0.385290703891093 -0.611220516956583 2 0.524115882681392 0.289405952755243 -0.800865895738039 1 0.466410060669452 0.337407819651582 -0.817762916053612 1 0.486296604700547 0.374963824909314 -0.789165030997693 1 0.505807906175439 0.332569799078349 -0.795927399505677 2 0.455003398581311 0.303249482403666 -0.837325365680837 1 0.420427478766099 0.364739899594473 -0.830883339486144 1 0.438021576210236 0.33421982035937 -0.834665615638398 2 0.425427498302891 0.411728490710822 -0.805873796954486 1 0.462545101161095 0.419814053009296 -0.780792299087496 2 0.395168967639223 0.401134621795767 -0.826444536174666 2 0.480427851944465 0.514726361002756 -0.71002502030851 1 0.519977084320036 0.536958229858242 -0.664263396988499 1 0.558777969645431 0.487686943693984 -0.670711168617434 1 0.520136673861892 0.501705315763125 -0.691081896436656 2 0.490166386069211 0.580555143423847 -0.650128144211107 1 0.521467813475729 0.592719105489813 -0.61374088385559 1 0.551363492307133 0.549244410396764 -0.627978683919446 1 0.521106785759988 0.565264490046003 -0.639477950639854 2 0.584134839265655 0.512197615859455 -0.629671999694193 1 0.590241699719725 0.479591436897096 -0.649321550634842 2 0.575298899426989 0.569448905782583 -0.587209303903387 1 0.58009858829946 0.54117985071916 -0.608839530611704 2 0.209765986738183 0.406059159118714 0.889360208105889 1 0.148301960488231 0.450936209595502 0.880212242232194 1 0.116742629429462 0.415744255762962 0.901877917543692 1 0.163448049785358 0.411361826424184 0.896663879043604 2 0.177697368192688 0.473595272173929 0.862691503230021 1 0.107600034231583 0.485861538139701 0.86748177858726 1 0.142750435906178 0.480047822698563 0.865682685717389 2 0.0629001135709646 0.461844518615977 0.88469474942374 1 0.0655497081792696 0.420918445698794 0.904627435005974 2 0.0639941410961058 0.495184905944717 0.866473442764287 2 -0.0268817040776832 0.351294746353699 0.935824348014915 1 -0.0405502387843363 0.291831002220555 0.955582564966643 1 0.0206137331600145 0.276894552610555 0.960641126398907 1 -0.00312227275933596 0.314421029224971 0.949199962553446 2 -0.0949975250711609 0.295470755259829 0.950602556810317 1 -0.101271816369876 0.248080267133858 0.963391683984125 1 -0.0468614388838818 0.244480890479098 0.968535261971332 1 -0.0709696826238615 0.270158113707285 0.960200741042853 2 -1.25760269067843e-05 0.228760773008377 0.973506114609845 1 0.0358489270158888 0.242229839810281 0.969562606977729 2 -0.0644784376548328 0.197203895548734 0.978269156142497 1 -0.0322676356302758 0.213121292240184 0.976530733778701 2 -0.321352843476305 0.324058158834222 0.889698819571457 1 -0.382758233464939 0.279443126163034 0.880639707205349 1 -0.359320546954078 0.239248195376841 0.901948031675372 1 -0.340710835916059 0.281975807561411 0.896858705467165 2 -0.395204809474179 0.314364423612977 0.863185008126366 1 -0.428749157736164 0.252161171009185 0.867611616890813 1 -0.412246700017384 0.283455939480607 0.865988634851649 2 -0.419728014790621 0.202262186595944 0.884791985214253 1 -0.380057608886998 0.192254605302336 0.904662373926255 2 -0.451121521129263 0.21369285167781 0.866545527751411 2 -0.34241422351153 0.0829768440592104 0.935822597711241 1 -0.290048844967272 0.0516146375513006 0.955591366543822 1 -0.256979728954385 0.105195112388597 0.960636070627166 1 -0.300003826411136 0.0941979513884163 0.949196706182291 2 -0.310348042739806 0.000952424311566729 0.950608047702228 1 -0.26717513638524 -0.01966575015617 0.963407722377537 1 -0.246925244937691 0.0309738107737918 0.968553120507589 1 -0.278822685578071 0.0159812313661279 0.960213355568394 2 -0.217450516223069 0.0706654931930597 0.973532985227232 1 -0.219249106612396 0.108941766193083 0.969573513143445 2 -0.207299673732232 -0.00043260382476486 0.978306991087392 1 -0.212514064172354 0.0351383371099479 0.976563560376183 2 -0.407500165894614 -0.205485671796457 0.889699321545355 1 -0.384044976828661 -0.27767210711339 0.880639720256219 1 -0.33857404280027 -0.267802719299337 0.901948594623521 1 -0.373459573586646 -0.236900333745857 0.896859261072667 2 -0.421103230851709 -0.27871837471801 0.86318499530934 1 -0.372310406462839 -0.329842817625629 0.867611606931139 1 -0.396973861339205 -0.304477431021464 0.865988635937693 2 -0.322065416450923 -0.336682790830734 0.884792227852658 1 -0.300286777421765 -0.302047305849594 0.904663059415233 2 -0.342637750829503 -0.363007691328505 0.866545719631795 2 -0.184700217295279 -0.300019696566231 0.935826031412133 1 -0.138644070390246 -0.25993175961799 0.955594351891057 1 -0.179384185875537 -0.211930466580442 0.960642138097846 1 -0.18224339324935 -0.256232196323728 0.949200892427098 2 -0.0967569609393006 -0.29488288437085 0.950607591682578 1 -0.0637417014487729 -0.26024861331451 0.96339598591977 1 -0.105622878128981 -0.225352452566151 0.968548913903344 1 -0.101264446994268 -0.260288666796185 0.960209646128969 2 -0.134220347113583 -0.185061678042937 0.973541219349463 1 -0.171230685821808 -0.174915205819002 0.96958532023817 2 -0.063365087844335 -0.197492734977312 0.978283285769403 1 -0.0988565052630751 -0.191403063323449 0.976557837327124 2 0.0694371817617136 -0.451030647641859 0.889716394693955 1 0.145183447163238 -0.450992028513939 0.880706408151688 1 0.149745558251952 -0.404716476075573 0.902022860360322 1 0.109703498045151 -0.428351473059072 0.89689867794448 2 0.134858807282041 -0.486567491369046 0.863230349481972 1 0.198336961197313 -0.455899408192115 0.867743285385192 1 0.166701859925407 -0.471546391576866 0.86607378206525 2 0.220028303460107 -0.410405911000642 0.88491908995561 1 0.193822019476063 -0.379222181249574 0.904676112235379 2 0.238836247689174 -0.437960384690767 0.866726063897386 2 0.226830132835127 -0.270495705834749 0.935557601502412 1 0.203297741509038 -0.214430320086008 0.955321591137549 1 0.145859285524051 -0.23706073057665 0.960443782466911 1 0.186523592660424 -0.254046427701442 0.948954267854919 2 0.248349638890564 -0.187311155643629 0.95038951770326 1 0.226222695447628 -0.144653856127331 0.963236344803718 1 0.181223647473045 -0.171788127542769 0.968340896861023 1 0.214920761979735 -0.179670686864742 0.959974963199444 2 0.13447897340452 -0.185915024376139 0.973340312026536 1 0.113397836342525 -0.217698573656203 0.969409520507802 2 0.167902501619276 -0.122871674772203 0.978143779192112 1 0.151289315880199 -0.154492793070674 0.976380802967736 2 0.408369329689637 -0.205217948344996 -0.889363271485109 1 0.385001532928367 -0.277669984413691 -0.880217648490951 1 0.338777990369316 -0.267751402900922 -0.901883649322641 1 0.374001143466043 -0.236743261087619 -0.896669027599066 2 0.422117683579386 -0.278712452646747 -0.86269404919436 1 0.372588437764613 -0.329869161690425 -0.867483411508572 1 0.397623428759872 -0.304489682733489 -0.865685518919461 2 0.322269654601945 -0.336743070678282 -0.88469684471014 1 0.30037738075647 -0.302052513971958 -0.904631269180183 2 0.342761534283 -0.363087333148708 -0.866465192503024 2 0.184686160792786 -0.300035129053904 -0.935824455647851 1 0.138701195931426 -0.259944913761798 -0.955582357546297 1 0.179415359112127 -0.211905489033663 -0.960642011573019 1 0.182252144095677 -0.256227619554261 -0.949200929483684 2 0.0967868682267459 -0.294893309359739 -0.950601239896653 1 0.0638724726929525 -0.260232830571873 -0.9633912828899 1 0.105780572802924 -0.225338564494518 -0.968535160245565 1 0.101358361210765 -0.260287104229149 -0.960200225601801 2 0.134443811051393 -0.185082911519692 -0.973506714958293 1 0.171371293017505 -0.174902537673436 -0.969563413025578 2 0.0637441938504819 -0.197442579384421 -0.978269204135014 1 0.0991577662540906 -0.191388167018975 -0.976531012329078 2 -0.0695612666490631 -0.451053340500125 -0.889695784423818 1 -0.145452080631027 -0.451028521858192 -0.880644814729746 1 -0.150120290248785 -0.404732518652937 -0.901951638624949 1 -0.109953915935296 -0.428373907328175 -0.896859089111489 2 -0.134994997026924 -0.486587783339956 -0.863196854990963 1 -0.198714377035182 -0.455980083930676 -0.867615115987958 1 -0.166959447352279 -0.471598861325357 -0.865996638817109 2 -0.220783359600553 -0.410286114799306 -0.884792888436328 1 -0.194545643896047 -0.378885293438197 -0.904664354679338 2 -0.23947326048635 -0.437996543323734 -0.866537957848834 2 -0.228294316755626 -0.268355646345047 -0.935822179133172 1 -0.204338318829035 -0.212221801736923 -0.955591740471262 1 -0.14608466349017 -0.236141288576627 -0.960636937714668 1 -0.18737205861131 -0.252519556217369 -0.949197478596041 2 -0.25054075549463 -0.183162746147186 -0.95060670111652 1 -0.227718253540788 -0.141119716988429 -0.963407354212957 1 -0.181568807652066 -0.170189235121809 -0.968553553762584 1 -0.216194717469276 -0.176800040616095 -0.960213150215508 2 -0.134392504388221 -0.184977262008149 -0.973533574907512 1 -0.113352159477811 -0.216999446071811 -0.969574048355836 2 -0.167967137722901 -0.121493433416141 -0.97830701664692 1 -0.151279378167991 -0.15333473043681 -0.976563838571863 2 -0.450471824953304 -0.0732256333083221 -0.889695768190565 1 -0.473899984571011 -0.00104207849930144 -0.880644789502666 1 -0.431312188665034 0.0177041087286985 -0.901951644349277 1 -0.441384392979387 -0.0278017933858486 -0.896859062235094 2 -0.504487771858411 -0.0219761069631646 -0.863196852037606 1 -0.495068239533534 0.0480831092785477 -0.867615107979941 1 -0.500109880624683 0.0130558168616507 -0.865996617335941 2 -0.458430202041414 0.0831923074539502 -0.884792863263038 1 -0.420457504981244 0.0679439849693359 -0.90466470414533 2 -0.490560265082587 0.0924043543446221 -0.866537942890226 2 -0.325758251478157 0.134214520571633 -0.935822597492034 1 -0.26494427721411 0.128823318855537 -0.955592151529646 1 -0.269687187762815 0.0660341553738251 -0.960642505134667 1 -0.298036827415724 0.100214195690957 -0.949200129429083 2 -0.251601700037547 0.181722503458176 -0.950602981681705 1 -0.204535257654728 0.173091707318154 -0.963394693247572 1 -0.21790502907623 0.120240308149363 -0.968548785452088 1 -0.234914297899878 0.151076022185264 -0.960207769416883 2 -0.217358854939338 0.0708341087500712 -0.973541819581459 1 -0.241336592306239 0.0408742042588249 -0.969586136601873 2 -0.167345318122923 0.122534529958799 -0.978283371452711 1 -0.192477654630788 0.0967486438059205 -0.976558108134022 2 -0.208899817029223 0.40573463871443 -0.889710956411295 1 -0.147616689973198 0.450200694799931 -0.880706043624687 1 -0.116728909385522 0.415446871064327 -0.902021194494112 1 -0.163004415529833 0.411043037161971 -0.896894458153073 2 -0.176856484480066 0.47290607062681 -0.863239102807587 1 -0.107501120662671 0.485409469378318 -0.867745145758732 1 -0.142278538223527 0.479471797647179 -0.86607863388239 2 -0.063217685785014 0.461356556522526 -0.884918943622068 1 -0.0660890737123171 0.420726709815043 -0.904674801733877 2 -0.0641960789306564 0.494701377284258 -0.8667270382679 2 0.0245179513563018 0.352164523554489 -0.935557086043281 1 0.0384331079067123 0.29297336897907 -0.955321653461793 1 -0.0213373334479175 0.277520706532362 -0.960443795914412 1 0.00157738027014284 0.315164762634912 -0.948954057465278 2 0.0908211751753117 0.297514684333566 -0.95038952602832 1 0.0979930114189968 0.249998087284591 -0.963236379799399 1 0.0456388118406017 0.245500022523745 -0.96834086496815 1 0.0682673514902223 0.271684126594437 -0.959974999442991 2 -0.000482282102481227 0.229453053019974 -0.973339771527791 1 -0.0362187694627581 0.242775994663563 -0.969409254274639 2 0.0636140534092449 0.198095696982813 -0.978143769508094 1 0.031587177365711 0.213912760931592 -0.976380493875039 2 0.601375550399304 0.568627692264887 0.561143565968603 1 0.646705351014113 0.545645514554311 0.532962857501702 1 0.649840861798207 0.597375726836832 0.469662012036351 1 0.626479038891984 0.583851593840093 0.516131299015635 2 0.600542250770557 0.523209576582173 0.604691609579738 1 0.578609699479308 0.553637551039451 0.598934401344813 2 0.643313734118111 0.509002714066709 0.57202767374089 1 0.67639938518542 0.491632676940203 0.548488353886933 1 0.679613995868695 0.528099919970539 0.509295904779281 1 0.661942825211412 0.518942577635724 0.541052361107122 2 0.642425037730937 0.465083445073863 0.609072607397149 1 0.621908391115298 0.494484457235701 0.607301785384159 2 0.606188770598076 0.682466151743194 0.408058116350265 1 0.551388606175141 0.733356648340624 0.397579374504845 1 0.529176815765429 0.7164985483042 0.454403960875369 1 0.568313176248582 0.700241726209384 0.431723586553564 2 0.561361691608835 0.751097349470915 0.347533640834437 1 0.518361248310666 0.782633233684012 0.344538063800288 1 0.508612240201086 0.765228557071263 0.394716655524574 1 0.535334309382544 0.758644099829736 0.371369450881141 2 0.488277127964851 0.754599609292092 0.438450732231437 1 0.495386296569092 0.730570548671308 0.469971964968897 2 0.467960027929396 0.797141795013554 0.381632571107599 1 0.478454366525803 0.776417433003575 0.410329009548317 2 0.569944927133999 0.813547821926628 0.11478772176868 1 0.567176661834651 0.821603819781933 0.0573135804394711 1 0.498118088505962 0.865279450524267 0.0538806386807002 1 0.534774836124607 0.840613343947644 0.0844767312116383 2 0.620436526144006 0.776378164739156 0.111111462753746 1 0.599391511958207 0.78807473113322 0.140337775104126 2 0.610490487537686 0.789987769555184 0.058084429891863 1 0.605996787152133 0.795372706185252 0.0144947188000687 1 0.562548945271564 0.826740078075509 0.0137024384563861 1 0.586939584105461 0.808962218482827 0.0359273075321583 2 0.654780987322176 0.753988388867903 0.0524074616734359 1 0.638047247811071 0.765704569319969 0.0818174630423526 2 0.404869938347815 0.908449363942824 0.102643970922199 1 0.362312867340322 0.917393530336804 0.164409810176908 1 0.409540225366174 0.890692900036399 0.197038777538079 1 0.407674787306552 0.900557571208631 0.150005017953487 2 0.316491785418871 0.937612980678959 0.144112481691506 1 0.289963193428874 0.937841489375607 0.190511451698513 1 0.335894811058744 0.91802278343517 0.210882261001137 1 0.326411511751138 0.92841274228388 0.177608539173296 2 0.370449648593681 0.897451299838117 0.239631481243097 1 0.407539323273221 0.882196649779904 0.235912859886285 2 0.301054106153451 0.919927473183005 0.251325573166585 1 0.335986827635746 0.909329570473135 0.245651794369435 2 0.0950076201479788 0.993179983348348 0.0666283544317628 1 0.0404770917342407 0.998070099411524 0.0471646520402912 1 0.000952078915298564 0.992811921465464 0.118565560336668 1 0.0480609236223425 0.994403209747285 0.0927535498875836 2 0.11970630091396 0.992794510252986 0.00890176009803837 1 0.135178067075304 0.989885912472265 0.043347761931391 2 0.0651271720904347 0.99795285478801 -0.000447712146738001 1 0.0231019379937551 0.999666522405797 -0.0138563933973767 1 -0.00155044833134312 0.999504571881303 0.0337126407361931 1 0.0318132697653489 0.999458881828551 0.0166583229048325 2 0.0854752971900267 0.99486966781627 -0.0539427767153182 1 0.102664089768712 0.994510482405662 -0.0225377871354442 2 -0.000522974703726473 0.972922654075798 0.230557217197076 1 0.0369468614811507 0.955131359363222 0.293717915425499 1 0.0902403464333447 0.961293857807456 0.260099641762693 1 0.0449156620267318 0.968182240305645 0.245580331121119 2 -0.0030920172425591 0.94456050036668 0.328403725401952 1 0.0286894432581184 0.929128933187241 0.368532958615244 1 0.068728813053519 0.940092637010763 0.334012087622298 1 0.0328403451614844 0.942935095714008 0.33141214106786 2 0.112345364211362 0.943755541676375 0.311093793572206 1 0.126486037988324 0.953232457082664 0.274524352901354 2 0.0916585502376257 0.921112468087441 0.378437563513226 1 0.102073789378067 0.93309203313598 0.345010646232043 2 -0.167032797233713 0.859394220879591 0.483128667057856 1 -0.205334265996799 0.831323665610113 0.516473477966071 1 -0.154331988266746 0.803966542649622 0.574063862278039 1 -0.160882123649624 0.832862028319715 0.529344297892751 2 -0.20965704843479 0.873573732086398 0.439273918193028 1 -0.172481290640526 0.880320341116502 0.441939389532007 2 -0.239022568970041 0.845671975942277 0.477346380718293 1 -0.266363881541333 0.822364582763096 0.502814074289441 1 -0.232639527768809 0.807781948520759 0.541772221580807 1 -0.235990827139641 0.827332740831142 0.509936951117854 2 -0.278709175992728 0.855125559648622 0.437107400683708 1 -0.244350013475012 0.864940539050553 0.438485983428417 2 -0.0497913520891798 0.787086318923268 0.614620646275829 1 0.0246057717460497 0.794584246674356 0.606584515528002 1 0.0122954382547319 0.83076880766348 0.5563775549902 1 -0.018784185915749 0.809821803070204 0.586129141260896 2 0.0437387554021788 0.762532042577978 0.645515325617214 1 0.0950025573671822 0.768653041382195 0.632512859416801 1 0.0759129209917265 0.801019965812422 0.593858950237521 1 0.0598562054161038 0.782279430135097 0.620081002872619 2 0.0702781510846896 0.829542320177211 0.554070737085745 1 0.040349551932692 0.845503119259152 0.532457960425659 2 0.12894435071079 0.799179223911132 0.587151937022403 1 0.0996828225335614 0.814934060525722 0.571013919468058 2 -0.328796389392345 0.740996524985063 0.585375311074957 1 -0.318028675520924 0.788630958116798 0.526333167968169 1 -0.365816334126364 0.779837794398612 0.507826452256947 1 -0.347721051728077 0.761286254537002 0.547240377453929 2 -0.281401634413575 0.790038786715795 0.544753344841506 1 -0.302941948392336 0.820876286155539 0.48430356580894 1 -0.292377634404927 0.806000499839605 0.514884671464762 2 -0.34551998999719 0.822281360294741 0.452111806475511 1 -0.382967043773946 0.798990409995379 0.463427719777047 2 -0.312357797974053 0.839359815177468 0.444950762647066 2 -0.479011985157542 0.783470227856355 0.395734129407201 1 -0.533479283553224 0.749277148227341 0.392337130253019 1 -0.524499597246226 0.723721368520754 0.448386096548892 1 -0.50225807907901 0.754364001516466 0.422503282876577 2 -0.546320917884498 0.764085442280063 0.34307750242692 1 -0.586120915099407 0.734153640996842 0.342634738424602 1 -0.573388829716885 0.719476150648605 0.391939099076653 1 -0.560207614037614 0.74225647564954 0.367748457200618 2 -0.569648949611973 0.69696158304166 0.435646299626142 1 -0.545957901458657 0.69634328748921 0.465878640136025 2 -0.61461657671302 0.691091622223024 0.380386310210458 1 -0.592521183236974 0.694479451170484 0.408282576286306 2 -0.597667992936935 0.793405826782731 0.114778150474181 1 -0.606135403760159 0.793294660296683 0.0573528420797563 1 -0.668991081791376 0.741134580582437 0.0539006064851818 1 -0.634238144411472 0.768344725339129 0.0844814535406338 2 -0.546744953845448 0.829910267210958 0.111222405892342 1 -0.564507996372301 0.813433562645566 0.140294066427171 2 -0.562663133698626 0.824730490100368 0.058157854274557 1 -0.569150875569619 0.822140356579736 0.0145658213020198 1 -0.612428031490431 0.790500098552418 0.0137394807803816 1 -0.587984818902281 0.808199501237705 0.0359825305384181 2 -0.514664705170114 0.855766180845119 0.0526145966453851 1 -0.531064869804117 0.84341600307431 0.0819766378438536 2 -0.738861310581739 0.66579530424414 0.102650233221268 1 -0.760523543679518 0.628081952850451 0.164405227801924 1 -0.720537979931506 0.66474890061334 0.197014743232717 1 -0.730492152445063 0.666023145836648 0.149995999108372 2 -0.793913469571421 0.590750105318255 0.144116004835225 1 -0.802333338763849 0.565586271457083 0.190509907433278 1 -0.769291210990961 0.603147751319884 0.210872804622986 1 -0.782100382165292 0.597340074998199 0.177605504484907 2 -0.739046219206921 0.629665354978369 0.239597175031083 1 -0.713035262106885 0.660281976954479 0.235842956754094 2 -0.781873746189426 0.570598603625918 0.251308453154357 1 -0.760996546372187 0.600553516800743 0.245626166976769 2 -0.915205597467236 0.397281900596852 0.0666273952999702 1 -0.936705942800796 0.346935423588758 0.0471629319707508 1 -0.943923923134926 0.307706693105378 0.118564760880099 1 -0.930878405429599 0.35300637914393 0.0927526916228137 2 -0.907183688632675 0.420699996132197 0.0089055652192661 1 -0.899643989803005 0.434497070896779 0.0433539724578861 2 -0.928969269484761 0.370363305893577 -0.000457018751060041 1 -0.943588070630562 0.330921144462168 -0.0138683534161798 1 -0.95105920042032 0.30740458288582 0.033708247067894 1 -0.940701589147007 0.339133493623619 0.0166514890546038 2 -0.919722759339839 0.388819006932964 -0.0539712635399856 1 -0.914076739123007 0.405039372920698 -0.0225501449083284 2 -0.925465750426985 0.300152855009549 0.230557209829552 1 -0.896967152450296 0.330290229602828 0.293717920041693 1 -0.886359349130657 0.382879429757301 0.260099627128292 1 -0.906916369940498 0.341902210131999 0.245580318683616 2 -0.89928624048337 0.288944305713871 0.328403731765565 1 -0.874789343947931 0.314401846688229 0.368532471714344 1 -0.872843718020466 0.355869629809809 0.334011596500508 1 -0.88663696998052 0.322615892857892 0.331411907756214 2 -0.862849631276127 0.398482974513272 0.311091779980077 1 -0.867492258869624 0.414860271905628 0.27452307630853 2 -0.847708728130217 0.371811705600599 0.378432541318498 1 -0.855882810178253 0.38541899996921 0.345007127928775 2 -0.86894862869725 0.106709623433314 0.483128670323529 1 -0.854087769509163 0.0616085773102178 0.516472982947064 1 -0.812308906023996 0.101660909785096 0.574063344959193 1 -0.841814292887008 0.104360456307946 0.529344040781865 2 -0.89560570721676 0.0705535498511923 0.439273915706645 1 -0.890534260867356 0.107994424167573 0.441939395373492 2 -0.878143803562303 0.0340030099829924 0.477346367285646 1 -0.864426419628604 0.000797590442064332 0.502814084892865 1 -0.840136318752118 0.0283650323511252 0.541771712159174 1 -0.85976558026965 0.0312192623451508 0.509936695876065 2 -0.899398615654786 -0.00081954545895274 0.437107392067274 1 -0.898115710441999 0.034890864891741 0.438485980444745 2 -0.763950183597208 0.195869060124314 0.614620158818259 1 -0.748091088216974 0.268942087420299 0.606583990316866 1 -0.78630838496412 0.268415694804414 0.556377540427424 1 -0.775990940931426 0.232384252251039 0.58612888074329 2 -0.7116957242329 0.277235039202583 0.645514365616932 1 -0.701676018628511 0.32788117137546 0.632511351663521 1 -0.738357399302172 0.319726730743823 0.593857959923857 1 -0.725495949699961 0.298665329069303 0.620080008749602 2 -0.767225404611553 0.323181620655899 0.554069262932042 1 -0.791653084995127 0.299649854562752 0.532456954001707 2 -0.720221979417903 0.369595710074223 0.587146504053352 1 -0.744246798517639 0.346633883959137 0.571010457807647 2 -0.806332997247919 -0.0837235309977052 0.585375284949197 1 -0.848309185629476 -0.0587631912035601 0.526333196222328 1 -0.854713741993382 -0.106928687755745 0.507826454977529 1 -0.83147808696662 -0.0954519383282993 0.547240382999777 2 -0.838329663657343 -0.0234937568667603 0.544753359663595 1 -0.874314255804773 -0.0344501296336326 0.48430357590374 1 -0.856901987054064 -0.0289999278190757 0.51488470204581 2 -0.888808056884036 -0.0745101065739623 0.452111810526732 1 -0.87822870680174 -0.117321697414099 0.463427738590259 2 -0.894802729448849 -0.0376933084012351 0.444950761798131 2 -0.893147355133072 -0.213461944275854 0.395734124253837 1 -0.877458792086341 -0.275829138000005 0.392337112456073 1 -0.85037911827325 -0.275186028934552 0.448386085082847 1 -0.872649024724673 -0.244564299172239 0.422503257621434 2 -0.895510637530643 -0.283466442155807 0.343077491682021 1 -0.879342794465458 -0.330567736521073 0.342634728358616 1 -0.86144919664623 -0.322994195062819 0.391939083471073 1 -0.879041284672088 -0.303418790236392 0.367748430337801 2 -0.838880791012611 -0.326395088587561 0.435646299096034 1 -0.830972115593946 -0.304054633438841 0.465878627686048 2 -0.847194458256438 -0.370975832648862 0.380386322467566 1 -0.843588311717329 -0.348914915171158 0.408282572049679 2 -0.93926317694751 -0.323239906609408 0.11477814496104 1 -0.941773914696462 -0.331327202100446 0.0573528460868526 1 -0.91159026617777 -0.407225144297227 0.0539006004110519 1 -0.926729446050596 -0.365764620569759 0.0844814480966234 2 -0.958244591721757 -0.263528695052516 0.111222404708216 1 -0.948063647440336 -0.28551409265607 0.140294055567298 2 -0.958237401597606 -0.280268220009027 0.0581578567531524 1 -0.957779188875058 -0.287239012420275 0.0145658185024833 1 -0.941060933733476 -0.338175591334733 0.0137394767622585 1 -0.950340521238002 -0.309459114225081 0.0359825354265214 2 -0.972922409389034 -0.225028552223817 0.0526145977384875 1 -0.966244248613712 -0.244442503769344 0.0819766430343705 2 -0.861529125046596 -0.496956901094765 0.102650233688454 1 -0.832355815121798 -0.529212995368581 0.164405227415711 1 -0.854872034568537 -0.479854015752163 0.197014741009246 1 -0.859159769719142 -0.488927098681209 0.149995994228904 2 -0.807168920843261 -0.57250511357925 0.144116000324059 1 -0.7858385375382 -0.588288806976152 0.190509911734916 1 -0.81135120697213 -0.54525644224012 0.210872793267408 1 -0.809785982541599 -0.559233582647571 0.177605501202973 2 -0.827224939210836 -0.508297230547222 0.239597170640316 1 -0.84830517325487 -0.474098597804204 0.235842951578201 2 -0.78428377323836 -0.56728110721349 0.251308449407395 1 -0.806321037339833 -0.538169187287192 0.245626150155775 2 -0.66065115175135 -0.747645335334141 0.0666273995029063 1 -0.619412958190954 -0.783651537384994 0.0471629767599171 1 -0.58433484869777 -0.802638789740568 0.11856481213056 1 -0.623385957370194 -0.776233151795703 0.0927527157290975 2 -0.680444444172391 -0.73277956221039 0.00890556352616424 1 -0.691236539681635 -0.721345246542071 0.0433539785675205 2 -0.63930315990099 -0.769053374678664 -0.000457023480171727 1 -0.606309064792252 -0.795145119724865 -0.0138683564949645 1 -0.586252486696579 -0.80951818408073 0.033708295150848 1 -0.613227556028968 -0.789862355020169 0.0166515045399018 2 -0.653998271822437 -0.754556063562385 -0.0539712600453509 1 -0.667680186246609 -0.744174310342975 -0.0225501502333847 2 -0.571446982718567 -0.787418251547678 0.230557220090644 1 -0.591302737514976 -0.751001344657378 0.293717926156901 1 -0.638040350357532 -0.724661570697843 0.260099643480727 1 -0.60542105359642 -0.756875317474453 0.24558033752451 2 -0.552697488556953 -0.765983306529162 0.328403730992043 1 -0.569338738375844 -0.734818386839004 0.368532469727048 1 -0.608175257922841 -0.720153915256366 0.33401158649952 1 -0.580811832779921 -0.743548043807359 0.331411905445063 2 -0.645614835407994 -0.697480444696799 0.311091774399916 1 -0.662625375245589 -0.696835148314574 0.27452307961911 2 -0.615570078308738 -0.691322439499223 0.378432530397675 1 -0.631037323266787 -0.694891546566063 0.345007104537016 2 -0.370006802296395 -0.793444170864594 0.483128668535997 1 -0.322520753795419 -0.79324788030395 0.516473498221846 1 -0.347702522035095 -0.741136915219263 0.574063848621284 1 -0.359387644683531 -0.768363938652735 0.52934430608489 2 -0.343858066163293 -0.829969739748974 0.439273915515944 1 -0.377899259291376 -0.813576235175494 0.441939388343852 2 -0.303700447979311 -0.824657087600609 0.477346383923833 1 -0.267881026678012 -0.821871889391745 0.502814073013062 1 -0.286592754243495 -0.790251894684057 0.541772228766315 1 -0.295373411611577 -0.808038509512151 0.509936964081105 2 -0.277150156628949 -0.855632193049704 0.43710739944155 1 -0.310716406954246 -0.843377135419674 0.438485993543947 2 -0.42235639361458 -0.666032835761789 0.614620179174623 1 -0.486952111762466 -0.628369192682299 0.606584014546013 1 -0.4982611304645 -0.664879515580613 0.556377561679293 1 -0.46080507417397 -0.666200931241033 0.586128924907509 2 -0.483591996520589 -0.591192069057651 0.645514324816303 1 -0.528663478185091 -0.566012683762835 0.632511366470741 1 -0.532243653636395 -0.603418952671819 0.593857959354785 1 -0.508238296462217 -0.5976949426715 0.620080011170161 2 -0.544449617079349 -0.629806787448635 0.554069268633438 1 -0.529618033297743 -0.66031044589203 0.532456960670317 2 -0.574067403467275 -0.570760799359515 0.587146522886445 1 -0.559653381294241 -0.600705523808519 0.571010474656515 2 -0.169544803417612 -0.79274082592526 0.585375826994254 1 -0.206254599604624 -0.824948933604122 0.526333190235076 1 -0.16242575952924 -0.845923769986389 0.50782645086774 1 -0.166160637717019 -0.820279203529854 0.547240659184638 2 -0.23671409580279 -0.804559320913809 0.544753337447597 1 -0.237413842295267 -0.842167560832315 0.484303567613842 1 -0.237216588422761 -0.823923723334935 0.514884674723688 2 -0.203793387145415 -0.868331343388806 0.452111794882313 1 -0.159807996838836 -0.871499214958494 0.463427702855961 2 -0.240660806212228 -0.862655731917714 0.444950761815761 2 -0.0729829766019313 -0.915396422100495 0.395734101450774 1 -0.00882026590231817 -0.919748516686406 0.392337116619718 1 -0.00106385034178605 -0.893795468489778 0.448386071563838 1 -0.0370685884430477 -0.905512643473506 0.422503239806081 2 -0.00713542297994552 -0.939277373531859 0.343077510581157 1 0.0426566191883776 -0.938455951499386 0.342634732196052 1 0.0409835130425385 -0.919097349123633 0.391939091102797 1 0.0169298206617318 -0.92977949516784 0.367748449536012 2 0.0511917821157042 -0.898684408328607 0.435646283329692 1 0.0323887208827484 -0.884259129861496 0.465878606788702 2 0.0910213724713463 -0.920367563423119 0.3803863094967 1 0.0711546295103984 -0.910120641488487 0.408282565606809 2 0.0171713093883201 -0.993178726086734 0.114778147919808 1 0.0240869768882609 -0.998065932973827 0.0573528473668204 1 0.105597298522861 -0.992813167393092 0.0539006061029499 1 0.0614877924538509 -0.994399317698247 0.0844814553680203 2 -0.0454830980896189 -0.992779532537162 0.111222402252359 1 -0.0214276927307446 -0.98989050099861 0.14029405499696 2 -0.0295604997271026 -0.997945433521867 0.0581578554562997 1 -0.0227892928894085 -0.999663760051289 0.0145658247096183 1 0.0308204980004498 -0.999504166075749 0.0137394827885493 1 0.000641956633424541 -0.999455604247024 0.0359825383560228 2 -0.0866343302142554 -0.994841508436157 0.0526145989443438 1 -0.0661070389532614 -0.994489550882942 0.0819766365426953 2 0.206407040220054 -0.972930739949569 0.102650231194049 1 0.246099692408815 -0.955152842977045 0.164405220701486 1 0.192198540345531 -0.961314354930397 0.197014737835368 1 0.19950248579153 -0.968195941656682 0.149995984608332 2 0.295055423799238 -0.944577268352859 0.144116000815318 1 0.31665805073802 -0.929168704475851 0.190509905257104 1 0.267848730606437 -0.940134546298695 0.210872807061663 1 0.28162508281347 -0.942965075801616 0.177605499069639 2 0.227793028090384 -0.943810461409784 0.239597178069297 1 0.188753831793078 -0.95329072189634 0.235842950641271 2 0.297159869328862 -0.921197886858416 0.251308451633089 1 0.262662775359271 -0.933160632759163 0.245626175023652 2 0.506900673238286 -0.859351955092117 0.0666274028437383 1 0.553887870191215 -0.831258897609893 0.0471629336158928 1 0.582785190680034 -0.803764661696764 0.118564761380984 1 0.545604700541515 -0.832744751716164 0.0927527041325334 2 0.486646415093853 -0.873582593803568 0.00890556452124151 1 0.472436483341846 -0.880312789922255 0.0433539842383464 2 0.533858157748721 -0.845664642751586 -0.000457024650734115 1 0.568868558143022 -0.822347646163263 -0.0138683561128069 1 0.588735548744834 -0.807714040614552 0.0337082460832114 1 0.561706275824555 -0.827295279093018 0.0166514825489626 2 0.515529217162219 -0.855160264662106 -0.0539712651138371 1 0.501427752785583 -0.864964350028906 -0.0225501561524801 2 0.572292298515455 -0.786804113823398 0.230557209167859 1 0.531522041458897 -0.794434750761049 0.293717929923235 1 0.492028576052885 -0.830745011203769 0.260099628452593 1 0.53274563480971 -0.809676963174653 0.245580325032065 2 0.557700613523146 -0.762348286417523 0.328403732664862 1 0.522918742269466 -0.768544616473849 0.368532464108788 1 0.496970698170622 -0.800949204836995 0.334011609649113 1 0.527675603275844 -0.782153980248368 0.331411917868029 2 0.463837260830328 -0.829550025202642 0.311091781778059 1 0.457966858172869 -0.84552809371917 0.274523068674454 2 0.467265378086167 -0.799072304298002 0.378432536155892 1 0.465879997480817 -0.814885765496963 0.345007138817658 2 0.640272710679886 -0.597078781668428 0.483135159532369 1 0.654765796375072 -0.55184797469862 0.516480699256544 1 0.597421879042875 -0.559678222798223 0.574087991179882 1 0.619703971365919 -0.579217602324758 0.529360101295481 2 0.683091052948905 -0.583499922906811 0.439276999354725 1 0.656980514730108 -0.610808454485513 0.441943732216842 2 0.690450268375634 -0.543666505461196 0.477344369695756 1 0.698880113648387 -0.508738523834205 0.502798961856761 1 0.663028719482592 -0.51675155137623 0.541766309267782 1 0.677224880463506 -0.530605243193347 0.509933031436773 2 0.728113952166584 -0.527989843404915 0.437101820352061 1 0.706084840247461 -0.556124804279366 0.438484727915528 2 0.502916067922277 -0.607469615694474 0.61465386506664 1 0.447136033752513 -0.657280882042759 0.606601338270093 1 0.47836672865116 -0.679326258922725 0.556385554760277 1 0.491196807876959 -0.644100687461638 0.58615030601858 2 0.412814826474701 -0.642595679893908 0.645532765641971 1 0.374941960550083 -0.677692031357401 0.632516975229746 1 0.409412734268806 -0.692656764507499 0.593861956269767 1 0.411385267936944 -0.668051576935842 0.620091441678034 2 0.430737491083115 -0.712420293975557 0.554073367159868 1 0.464331716964178 -0.707739835135967 0.532462343607418 2 0.365428635004841 -0.722344320389961 0.587148058084695 1 0.398362125025855 -0.717888158918137 0.571013288370004 2 0.701794276402711 -0.406332592080109 0.584997443782612 1 0.720873309596339 -0.451095189593088 0.526272543048403 1 0.754348034759625 -0.415939650316112 0.507747624612131 1 0.728911621745831 -0.411592757612704 0.547007105384899 2 0.692071318142225 -0.473748474571135 0.54470409356942 1 0.727594286789047 -0.486048198103517 0.484276596320612 1 0.710318128926926 -0.480216411064706 0.514846227273629 2 0.762865499775803 -0.462160730443579 0.452082078551526 1 0.779469460994246 -0.421331433730149 0.463375773215824 2 0.746071867250078 -0.495463045199899 0.444932841695495 2 0.848040946219845 -0.352306149973157 0.395714554736395 1 0.872005543184851 -0.292627214795538 0.392326491257568 1 0.849705030434026 -0.277284778871561 0.448371401288107 1 0.849730248982614 -0.315121519374515 0.422485771437274 2 0.891100524205204 -0.297047600099757 0.343070991569575 1 0.905705993139287 -0.249436264000861 0.342630689499179 1 0.886776978961551 -0.245057451269039 0.391931124596604 1 0.889503529540921 -0.271229970235471 0.367741126585976 2 0.870523987658742 -0.229055481431596 0.435618427344711 1 0.850993558985093 -0.242514295178721 0.465835219450681 2 0.903451245257789 -0.197856585140777 0.380373670447358 1 0.887567913010199 -0.213594084756642 0.408262254987339 2 0.949875559209791 -0.290578509917422 0.11477815229965 1 0.956660549251131 -0.285511362374728 0.0573528448794983 1 0.976853417603488 -0.206367630303239 0.0539006595677975 1 0.964731133774475 -0.248808313592972 0.0844814833084011 2 0.930134648211205 -0.350043052576396 0.111222394833872 1 0.934820729608797 -0.326272333322036 0.140294059783259 2 0.939967524685715 -0.336495809735619 0.0581578516647933 1 0.943694252347814 -0.330587042109535 0.0145658244441317 1 0.960109316468394 -0.279551900454911 0.0137394819590567 1 0.950737118761359 -0.308238310501389 0.0359825366901008 2 0.919378530543766 -0.389817186641848 0.0526145928708967 1 0.925387450419629 -0.370185913215704 0.0819766213424804 2 0.98909585972411 -0.104348022845299 0.102650289045377 1 0.984453423105249 -0.0611043697038608 0.164405225071799 1 0.973656756907295 -0.114271529701884 0.197014737479418 1 0.982458879452755 -0.109451553066211 0.149996022345329 2 0.989523652156167 -0.0112758865842078 0.144117009955637 1 0.981544155402973 0.0140303484822577 0.190511408499587 1 0.976890290751689 -0.0357794824818453 0.21087329516442 1 0.983839777822937 -0.0235513900498138 0.177606254990637 2 0.96800881707633 -0.0750114153830724 0.239595640671846 1 0.964961432267452 -0.115068861068637 0.235841916851521 2 0.96793812524001 -0.00205539824691653 0.251308935072002 1 0.968655281853724 -0.0385590540038735 0.245625619808335 2 0.973925052799358 0.216553009283815 0.0666844558654198 1 0.961715658235634 0.269951604871339 0.0472713672807553 1 0.944413541184952 0.306052313092336 0.118982331809781 1 0.960544844545421 0.261663620271392 0.0929918962699013 2 0.981206790566148 0.192884008256771 0.0089303129182601 1 0.983215343250538 0.177292929457907 0.0433905639224271 2 0.969243499157671 0.246414615571004 -0.00042887454256161 1 0.957883733755499 0.286927035644861 -0.0138285493586762 1 0.950088864197176 0.310379692237189 0.0338280890903459 1 0.960370443685788 0.278599722360339 0.0167256510290548 2 0.972612920564288 0.226043190471984 -0.0539598190811307 1 0.977579187070622 0.209603767919063 -0.0225320382492999 2 0.924629492243795 0.30165168822047 0.231969770718835 1 0.919252586372464 0.260431978551128 0.295073326091149 1 0.942013884766476 0.211301362913729 0.260467207887223 1 0.934366288209999 0.256756176690868 0.246472575253653 2 0.8959468184893 0.295767832856992 0.331413420193856 1 0.891276527133931 0.260407790043282 0.371136239470192 1 0.91495317193297 0.225195231670678 0.334963844787313 1 0.906055789877062 0.260654735315655 0.333401218973954 2 0.932149832976013 0.184830618426768 0.311470978277893 1 0.945587636721801 0.174301096724393 0.274776223695849 2 0.904001437733361 0.197356448709643 0.379341237261661 1 0.918729947008369 0.191230189581501 0.345654064219521 2 0.764789013827251 0.451259680219872 0.459688652467317 1 0.722736593000237 0.451011244079405 0.523792574533639 1 0.73979273906911 0.404632124423023 0.537439820634595 1 0.75317234711218 0.42842968624341 0.499131374959472 2 0.711732397713476 0.486626231350585 0.506688181090869 1 0.687306536344061 0.455972932648201 0.565561824385353 1 0.699999753792445 0.471613685515409 0.536481795347229 2 0.69287829269802 0.410279387095984 0.592897429052598 1 0.722384833233496 0.378782802781711 0.578361783499053 2 0.668172730022415 0.438023841566006 0.601461948331545 2 0.734938520438988 0.268494440442204 0.622638309774431 1 0.763131133844948 0.212788621977205 0.610166170750373 1 0.793786508834852 0.236484034198769 0.560273764345853 1 0.76514451391393 0.252759597131877 0.592050583862257 2 0.738033725734325 0.184204955892115 0.649124527411647 1 0.759763677043077 0.142337435621472 0.634376172056372 1 0.784963539968144 0.170927946649989 0.595522212807479 1 0.762003758950589 0.177691316733827 0.622732755947871 2 0.81042612577082 0.185459991732973 0.555750985292423 1 0.816369220086031 0.217317659089163 0.53509557089584 2 0.799785504012936 0.122074172270631 0.587788550483105 1 0.805635705541715 0.153866571802695 0.57214580626093 2 -0.601382718403437 0.568679474132785 -0.561083601482111 1 -0.646725082008416 0.545732225740221 -0.532851096909622 1 -0.64984010226647 0.597686233112063 -0.469278147253792 1 -0.626490100325743 0.584041019639522 -0.515915796863845 2 -0.600576813409181 0.523231081695895 -0.604640586849522 1 -0.578632609423302 0.553673483177238 -0.598881471710918 2 -0.643338124812409 0.509041161068069 -0.571966004387485 1 -0.676424320865134 0.491681184006929 -0.548414760349924 1 -0.679633992302901 0.528196098751486 -0.509171953210297 1 -0.661965811994107 0.519010679726649 -0.540960141485627 2 -0.642497043220875 0.465116348111397 -0.608971524535424 1 -0.621961184004195 0.494511203577159 -0.607225148883967 2 -0.606010976648305 0.683407234635923 -0.406755880691015 1 -0.551129590104959 0.734224973948623 -0.396343654793243 1 -0.52908374280556 0.716752456210526 -0.454113819800004 1 -0.568181751102748 0.700844563865542 -0.430929756295722 2 -0.560699875463318 0.752909563649878 -0.344640605603799 1 -0.517582994734938 0.784194139132134 -0.34216151744396 1 -0.50823620900006 0.765845664329418 -0.3939924635019 1 -0.534827498442042 0.759876826100871 -0.36956874661677 2 -0.488149456792517 0.754854978941589 -0.43815968570701 1 -0.495310432705729 0.730747775393532 -0.469781772015549 2 -0.467464069208724 0.797730017201007 -0.381013413643216 1 -0.478145994417276 0.776845216606918 -0.409876320991418 2 -0.598850849744316 0.793106974748239 -0.110505365952549 1 -0.562120716360537 0.825529786463639 -0.0513787804622049 1 -0.526568986649124 0.846097485951823 -0.0819055904990476 1 -0.563359553803858 0.820548981862696 -0.096335233138529 2 -0.592219942423037 0.805184978370235 -0.0324621486255348 1 -0.538976948324517 0.842405213575762 -0.00431778720624677 1 -0.565982670986427 0.824352318503507 -0.0184127090102358 2 -0.494981604806908 0.86863981424658 -0.0199600446504629 1 -0.485488916312431 0.871765127723663 -0.0644342693380002 2 -0.505215842108553 0.862883160864153 0.0163440986074306 2 -0.384939302160922 0.916054053054884 -0.112075871696413 1 -0.353304910943659 0.920296866334582 -0.167860611638935 1 -0.40109347501888 0.893949487308862 -0.199760150816454 1 -0.393434370956489 0.905924155545678 -0.156076726847197 2 -0.30654291294497 0.940351629744208 -0.14745429821685 1 -0.284499051967346 0.9392439221678 -0.191846560045648 1 -0.331290452880145 0.919353402846142 -0.212280918497436 1 -0.319135046296031 0.930465745626248 -0.179984424939439 2 -0.366356243444416 0.898776417181559 -0.240894598529887 1 -0.40192823665502 0.884331701116169 -0.237534225610255 2 -0.298640394369866 0.920499374673965 -0.252096468108738 1 -0.332716373955358 0.910238097848817 -0.246659166784351 2 -0.106744837974343 0.993652957909812 -0.03326468156698 1 -0.0323780241081109 0.998273864750769 -0.0501871339017426 1 -0.0413690601404607 0.99402291790256 -0.100352638327058 1 -0.074157763744286 0.99497554954928 -0.0668935940731403 2 -0.0316813472692036 0.99950506761587 -0.00929298157353681 1 0.0224404246149224 0.998328362793514 -0.0547477687632387 1 -0.00463327871694425 0.999590714213213 -0.0320453557846934 2 0.0311733936437641 0.993718783310469 -0.107167718704334 1 -0.00421779172882683 0.990682147207299 -0.135449279817201 2 0.0583753268343412 0.995069715066768 -0.0806205058420512 2 0.000869703586386936 0.967797567061589 -0.251493420986461 1 -0.0364867303229905 0.95265212579416 -0.301773517632043 1 -0.0887901908137108 0.959097451968455 -0.268645163671689 1 -0.0440110532254678 0.964433846355669 -0.26032037786501 2 0.00321912476604973 0.942116321807556 -0.335263014167559 1 -0.028431699609048 0.928098468832382 -0.371138400418437 1 -0.0681327950402488 0.938794162461743 -0.337727601871182 1 -0.0324786219785275 0.941058996330462 -0.33670342891823 2 -0.111669090667144 0.942553557922113 -0.314905359869832 1 -0.125310693211644 0.951754878182292 -0.280117474307456 2 -0.0913219652164708 0.920513970995884 -0.379960735680373 1 -0.101562821577631 0.932144315678233 -0.347662406489359 2 0.166991191108212 0.859370978130439 -0.483184870629399 1 0.205305830175097 0.831335423972414 -0.516466640945072 1 0.154346111839657 0.803945764134645 -0.574089654952071 1 0.160868145481076 0.832838365077817 -0.529384312562865 2 0.209473188794084 0.873626385433479 -0.439258282484607 1 0.172320707489937 0.880254397205904 -0.442132377058344 2 0.23896956429015 0.845731604960283 -0.477267357889408 1 0.266347313032519 0.822439432797458 -0.50270184603283 1 0.232647165460013 0.80780789330453 -0.54173148025443 1 0.235968388372836 0.827376393637977 -0.509877564052248 2 0.278599019813369 0.855299831939483 -0.43683858359007 1 0.244203011693227 0.865054691848761 -0.438343880369111 2 0.0498087987936076 0.787052186779998 -0.614663154709617 1 -0.0245883830973235 0.794569618585281 -0.60660432312455 1 -0.0122648526440756 0.830758132268458 -0.556393432434408 1 0.0188082506840007 0.809800116209915 -0.586158910574303 2 -0.0437297501711495 0.762515449711193 -0.645535285436792 1 -0.0949975119513264 0.768648623260664 -0.632519433331563 1 -0.0758994714787052 0.801017136933055 -0.593865091575477 1 -0.0598449786703164 0.782269945121324 -0.62009424300161 2 -0.0702394069626265 0.829537082035675 -0.554083734232471 1 -0.0402394668380905 0.845513866510015 -0.532448342730041 2 -0.128930311431843 0.799177531850314 -0.587158306247169 1 -0.0996564545908298 0.814930944662397 -0.571023863637608 2 -0.726683772869614 -0.396217359828696 -0.5610836101305 1 -0.718871463678647 -0.446431303719468 -0.532851083762063 1 -0.769244834428033 -0.433339555993261 -0.469277638208918 1 -0.749051988228179 -0.415348944368685 -0.515915533048399 2 -0.683211395225199 -0.409495065943692 -0.604640596995677 1 -0.705382234803202 -0.379217881810169 -0.598881490361608 2 -0.682929340645151 -0.454548492178621 -0.571966020541103 1 -0.676642831978524 -0.491379771043341 -0.54841475100807 1 -0.7123627075981 -0.483148456373875 -0.509171969625968 1 -0.698167124004904 -0.469183591673543 -0.540960146532919 2 -0.640893983426444 -0.467322420621865 -0.608971542793253 1 -0.662504773962728 -0.438707961951389 -0.607225177173497 2 -0.837226352549315 -0.365166308533089 -0.406755370144116 1 -0.868597960860007 -0.297267284321361 -0.396343662246025 1 -0.845167996221665 -0.28169996756489 -0.454113817857981 1 -0.842120512075177 -0.323800180961004 -0.430929504716031 2 -0.889325328298054 -0.300595607145407 -0.344640593510099 1 -0.905754923745944 -0.24992199342659 -0.342161530805694 1 -0.885416210161867 -0.246702342850909 -0.393992465511966 1 -0.887956649759777 -0.273836581985367 -0.369568751733363 2 -0.868756060479072 -0.230995216378676 -0.438159683336785 1 -0.848041427718621 -0.245255092620879 -0.469781762958739 2 -0.903140396481687 -0.198073701793793 -0.381013909381728 1 -0.886578723974241 -0.214686289535282 -0.409876570002689 2 -0.939344623016499 -0.32445778097969 -0.11050536124182 1 -0.958830248396848 -0.279505924532628 -0.051378781188603 1 -0.96740507914959 -0.239338047712652 -0.0819055883604258 1 -0.954476027684414 -0.282223189689407 -0.0963352317515649 2 -0.948782360527551 -0.314418910163713 -0.0324621547001235 1 -0.967727983232453 -0.252279700906885 -0.0043177883886501 1 -0.958903855618734 -0.283542533344586 -0.0184127113752063 2 -0.979083348694236 -0.20233060621324 -0.0199600482325704 1 -0.979122356426549 -0.192337026097307 -0.0644342690652426 2 -0.9767711233156 -0.213842868672605 0.0163440943077228 2 -0.990172135794277 -0.0830230064013135 -0.112075867095496 1 -0.984431229454734 -0.0516254089668686 -0.167860620888469 1 -0.974140979762545 -0.10521682530352 -0.199760145912151 1 -0.983162988449073 -0.0942324065390618 -0.156076734078252 2 -0.98905461628663 -0.000954835390855136 -0.147455290582741 1 -0.981189261683939 0.0196677459447592 -0.191848567957876 1 -0.976731070356503 -0.0309800461735148 -0.212281915517329 1 -0.983543566731343 -0.0159856249883429 -0.179985428461821 2 -0.967996971120362 -0.070688480858736 -0.240895089376362 1 -0.965251894522204 -0.108983035546624 -0.237534457616287 2 -0.967730773995049 0.000424363911575767 -0.252100976263787 1 -0.968502062581809 -0.0351539743464506 -0.24666166021008 2 -0.978004213437477 0.205539861081003 -0.0332739068455909 1 -0.95941241472231 0.277712949992876 -0.0502222890296988 1 -0.958140904532026 0.267852077367334 -0.100411369520102 1 -0.969188130371722 0.236952253860363 -0.0669277389506845 2 -0.960371463457198 0.27874643977485 -0.00929953888983576 1 -0.94251469325621 0.329887631352624 -0.0547883270687909 1 -0.952089486205005 0.304513556269438 -0.0320689765081947 2 -0.93540383938118 0.336787778253293 -0.10739313492994 1 -0.94344448355222 0.302132571252689 -0.135825656274231 2 -0.928288949049046 0.363093269833329 -0.0807479677692253 2 -0.91962942833455 0.30009610563178 -0.253217605417281 1 -0.916716315305822 0.259973175561574 -0.303302844073244 1 -0.939450587192776 0.211952043558585 -0.269138480622169 1 -0.930496453839367 0.256281685641747 -0.261430880396576 2 -0.893522450073333 0.29493373631004 -0.338531546133032 1 -0.890195351953939 0.260271263720391 -0.373812112097522 1 -0.913534423229485 0.22536551212423 -0.338662783347963 1 -0.904127361844377 0.260320888781067 -0.338813151404398 2 -0.930788935444228 0.185071780492838 -0.315320333645407 1 -0.943803023769231 0.1749286187417 -0.280441954763206 2 -0.903341056815516 0.197498311387284 -0.380824501702449 1 -0.917671101594191 0.191410944303228 -0.348304129121999 2 -0.764706036938623 0.45112242090251 -0.459954770084977 1 -0.722739414654767 0.451083448217299 -0.523725430713258 1 -0.739761141710909 0.404814237855133 -0.537348663289091 1 -0.753105284579112 0.428447101753565 -0.499213116250669 2 -0.711742288143292 0.486656345259471 -0.506645679173249 1 -0.687325337622814 0.456063948907285 -0.565463810873073 1 -0.700012625013462 0.471673391904239 -0.536410498190404 2 -0.692943175967225 0.410575820365172 -0.592608668306578 1 -0.722383098616288 0.37934810947037 -0.577990751865776 2 -0.668237581354001 0.43818615369353 -0.601263350389147 2 -0.735283857651784 0.270563049255545 -0.621322344804777 1 -0.76352093937287 0.214460064702275 -0.609091604025383 1 -0.793799942397262 0.237083791113813 -0.55999835127576 1 -0.765316091724301 0.254092142417734 -0.591247817481056 2 -0.738959589245758 0.187340765782846 -0.647182509010194 1 -0.760364769278249 0.144664409283405 -0.633121757566682 1 -0.785056187573859 0.171798656108346 -0.595154837492089 1 -0.762493742205886 0.179690891755719 -0.621561706623644 2 -0.810432737049698 0.185925090420102 -0.555581516417052 1 -0.81634226676409 0.217713476358081 -0.534969788366108 2 -0.799783416468912 0.122875683321329 -0.587623729846369 1 -0.805635360492768 0.154499842549065 -0.571976496301081 2 0.152267397983877 -0.813555166382157 -0.561083595972397 1 0.20243804100864 -0.821642056492821 -0.532851089699031 1 0.174420687784497 -0.86550426806765 -0.469277624675924 1 0.163550494350408 -0.840740446503064 -0.515915508233942 2 0.178329072025371 -0.776313216677518 -0.604640582448189 1 0.142682496188485 -0.78804290157882 -0.598881470748291 2 0.221264418332547 -0.789967384056801 -0.571966018619978 1 0.258235849997951 -0.795370415320958 -0.548414754955136 1 0.23936960690143 -0.826798442427121 -0.509171972353273 1 0.230474696996756 -0.808982069756703 -0.540960153626334 2 0.246402461723409 -0.7539370940229 -0.608971518163437 1 0.212510634857975 -0.765647577616417 -0.607225154810935 2 0.0885766890286566 -0.909091821364495 -0.406755357925487 1 0.0143069047249668 -0.917946493273031 -0.396343643909807 1 0.00674155163701148 -0.890852554707519 -0.454113809287573 1 0.0477228735282623 -0.900963700194498 -0.430929467659245 2 0.0110668425788241 -0.938687795444487 -0.344640619340082 1 -0.0422038825580832 -0.938654618529217 -0.342161517873732 1 -0.0389805727810724 -0.918316736036949 -0.39399249335998 1 -0.0139594799186715 -0.929117414901456 -0.369568762461578 2 -0.0487705016171687 -0.897618144189163 -0.438159711845433 1 -0.0288074859520353 -0.882323825294009 -0.469781786324059 2 -0.090706536281212 -0.920146304849639 -0.381013930503396 1 -0.0697889574293693 -0.909528823185797 -0.409876615977835 2 0.0183042024232618 -0.993632669132991 -0.11050536708062 1 -0.0304691477657763 -0.998273992471984 -0.0513787794862424 1 -0.0713204596814041 -0.994016361108879 -0.0819055964555261 1 -0.0265390558059364 -0.994972253023977 -0.0963352376431846 2 0.00584032419726046 -0.999506605394691 -0.0324621483376063 1 -0.0591122008736985 -0.998322702973858 -0.00431778345036256 1 -0.0266526228169676 -0.99959127457561 -0.0184127035002865 2 -0.11012583680605 -0.993687669225418 -0.0199600441260075 1 -0.119642098991392 -0.99063634963429 -0.0644342817889649 2 -0.0984621812063973 -0.995045706512564 0.0163441070712236 2 -0.227020547603836 -0.967365704547137 -0.112075875933842 1 -0.255107292689949 -0.952203200818779 -0.167860622679473 1 -0.20095915586288 -0.958977148349351 -0.199760158371757 1 -0.214193869148391 -0.96416335657625 -0.156076746856788 2 -0.304726503548041 -0.940941938388535 -0.147455293473046 1 -0.32190910072455 -0.92708838672103 -0.191848565405825 1 -0.272362603694918 -0.938499689497719 -0.212281913124116 1 -0.288728345076448 -0.940345298471527 -0.179985430090789 2 -0.231898846986697 -0.942463962460423 -0.240895092357414 1 -0.194630184154613 -0.951686844085385 -0.237534474773494 2 -0.299448906619215 -0.920235238396428 -0.252100984567929 1 -0.265850245912877 -0.931963308509836 -0.246661660961041 2 -0.497700134496687 -0.8666214282908 -0.0332739077135599 1 -0.56059567903257 -0.826637180992666 -0.0502222905257766 1 -0.550824064723656 -0.82847534342392 -0.100411372344422 1 -0.524850552341246 -0.848530134342845 -0.0669277377680638 2 -0.561874866699762 -0.82723021462513 -0.00929954027541253 1 -0.604994542802655 -0.794443387263565 -0.0547883240889203 1 -0.583821354476023 -0.811390827916432 -0.0320689795643327 2 -0.609359655653965 -0.785548766677124 -0.10739312481481 1 -0.578885430748707 -0.803905043517372 -0.13582565099381 2 -0.632178869178185 -0.770652938130578 -0.0807479503313563 2 -0.569589910828612 -0.78188516442375 -0.253217620496814 1 -0.530530567056658 -0.791513214038193 -0.303302863443369 1 -0.491885107461456 -0.827973749515044 -0.269138484408734 1 -0.531278099016101 -0.805759536711412 -0.261430903264314 2 -0.556612360231036 -0.75865137489403 -0.338531551387662 1 -0.522618186367544 -0.766198182893783 -0.373812138254766 1 -0.496633318858218 -0.799181075975712 -0.338662782237422 1 -0.52697083140664 -0.779432965834207 -0.338813176571197 2 -0.463643206775453 -0.828042271893035 -0.315320324978461 1 -0.458018275759822 -0.843553748733607 -0.280441947187949 2 -0.46697976699207 -0.798097610533694 -0.380824485068492 1 -0.465618500539831 -0.813607453671364 -0.348304108577112 2 -0.665349516580096 -0.587874213040128 -0.459954776553383 1 -0.652344002127278 -0.547973323407307 -0.523725395916434 1 -0.613599345960646 -0.578459816228508 -0.537348642845731 1 -0.640199105259529 -0.583848066793311 -0.499213085498017 2 -0.682777607604149 -0.526521811862384 -0.506645663114078 1 -0.64613737761596 -0.512753592959679 -0.565463794335091 1 -0.664903340084227 -0.519996261841747 -0.53641045964192 2 -0.6046119717159 -0.532153185713448 -0.592608665585813 1 -0.584009806602867 -0.569802101688246 -0.577990729115185 2 -0.623236294548744 -0.500124843906786 -0.601263337800849 2 -0.484535537823332 -0.615688344811874 -0.621322353185438 1 -0.439904278602903 -0.659880098369565 -0.609091592255047 1 -0.47077732883735 -0.681685834436518 -0.559998343308778 1 -0.478151233362146 -0.649340337579498 -0.591247804522418 2 -0.406522795601202 -0.644901118406435 -0.647182513889861 1 -0.372549982428314 -0.678445925572319 -0.633121740569609 1 -0.40598590451499 -0.69354404028247 -0.595154852249045 1 -0.406519727823319 -0.669647194487548 -0.621561701433261 2 -0.427262686701941 -0.713313571160805 -0.555581496883805 1 -0.459321150003041 -0.709110488932092 -0.534969763335208 2 -0.364008062734649 -0.722668351755547 -0.58762371558072 1 -0.395892910361087 -0.71846172721864 -0.571976500117564 2 0.820778144864393 -0.106588363938454 -0.561100577924454 1 0.843973953888242 -0.06137471539292 -0.53286779697931 1 0.877038968185528 -0.101571817711073 -0.469285220411443 1 0.850124124449331 -0.104257919384516 -0.515928018226118 2 0.793396649337644 -0.0703115254622114 -0.604673866188059 1 0.793542524955232 -0.10782884258587 -0.598908568968713 2 0.81964907072218 -0.033679460034459 -0.572008532595813 1 0.836211509382541 -0.000183057863004097 -0.548460245867919 1 0.860289465034541 -0.0278400403799449 -0.509191669323878 1 0.840588342252295 -0.0307949425517784 -0.540991609574206 2 0.793106174704789 0.00134025246604084 -0.609067300462353 1 0.793793986248043 -0.0345094002941081 -0.607290469155025 2 0.891968975616674 -0.196682681884906 -0.40675790327601 1 0.877439607025788 -0.2700538040109 -0.396344149315981 1 0.849333979174376 -0.268876406210579 -0.454114825353595 1 0.871614195780313 -0.233025323645412 -0.430931267145923 2 0.896164848944605 -0.279544706796542 -0.344641108837381 1 0.879671494724985 -0.330198247191713 -0.342161516069937 1 0.861324628543497 -0.320847896613637 -0.393992461291142 1 0.879328966247463 -0.300388884060192 -0.369568993443777 2 0.838613803721023 -0.323762317984944 -0.43815969102123 1 0.830237096670936 -0.30005010968482 -0.469782515273441 2 0.847081013478339 -0.370607749726816 -0.381013915895817 1 0.843446721938677 -0.347432784907828 -0.409876577107855 2 0.950657434857013 -0.28964069766419 -0.110505363782477 1 0.939999327914858 -0.337461286087829 -0.051378777946055 1 0.923326627844496 -0.374997540831524 -0.0819055895441095 1 0.938074086073576 -0.332703219628999 -0.0963352301727887 2 0.952391962807091 -0.303309979592505 -0.0324621493861562 1 0.93119425766003 -0.364717589668671 -0.00431778388711751 1 0.942431454430513 -0.334238741701992 -0.0184127038121272 2 0.911021860394879 -0.411802098235952 -0.0199600474004912 1 0.905179447919157 -0.419909605649532 -0.0644342711558482 2 0.915917660274578 -0.401129079491884 0.0163441009619296 2 0.849865866199865 -0.514841618016672 -0.112075869717411 1 0.826766628541584 -0.536868364891637 -0.16786061521289 1 0.849942011653262 -0.487463654093474 -0.199760152375157 1 0.850784265395047 -0.501653185765253 -0.156076730482185 2 0.800723246422508 -0.580579163193982 -0.147455297729192 1 0.782238126890756 -0.592639970090329 -0.191848558879239 1 0.808401846206197 -0.549044766430496 -0.212281917931988 1 0.805099651695101 -0.565179723794741 -0.179985426358442 2 0.824676203653377 -0.511786234210625 -0.240895104042605 1 0.844964393563656 -0.479191742389629 -0.237534481662782 2 0.782661401215645 -0.569161587322562 -0.252100989586929 1 0.80419799873179 -0.540831306990367 -0.246661675283266 2 0.670408372892172 -0.741141533804306 -0.0332739014797715 1 0.612945238628189 -0.788602941327151 -0.0502222881315959 1 0.617712853696129 -0.779878174770492 -0.100411371560314 1 0.6448124882449 -0.761372904402689 -0.066927730692283 2 0.613113957138406 -0.790002529932384 -0.00929953830566491 1 0.568607279223402 -0.820880727955535 -0.054788322904521 1 0.591268078214977 -0.805980590706245 -0.0320689764558665 2 0.558798851150501 -0.822283789887991 -0.107393133516409 1 0.585673662325338 -0.798973326210151 -0.135825665673311 2 0.537580691618531 -0.839383044100818 -0.080747957753187 2 0.567603781248417 -0.783327373090142 -0.253217608463087 1 0.588830496452343 -0.749155216076699 -0.303302842458838 1 0.635448781860509 -0.723668438441504 -0.269138487334719 1 0.602148636148249 -0.754268496343479 -0.26143088147945 2 0.549517277761817 -0.763805653377956 -0.338531533051312 1 0.567199246202811 -0.73380773791205 -0.373812116278684 1 0.606597678469647 -0.719286933987968 -0.3386627745588 1 0.57844135594143 -0.742036891734537 -0.338813142817066 2 0.644241405168086 -0.696830040380112 -0.315320334894643 1 0.660731942688051 -0.696273825101575 -0.280441962001812 2 0.614731121629509 -0.690749905175028 -0.380824497704176 1 0.629902584470052 -0.69424805350182 -0.348304114503865 2 0.35349724751457 -0.814448160998343 -0.459954753986868 1 0.319568549333795 -0.789749268107508 -0.523725416282978 1 0.360535838753887 -0.762321591934966 -0.537348650042637 1 0.357440334360512 -0.789284555162427 -0.499213086583166 2 0.28976231761476 -0.812064624311417 -0.506645679249122 1 0.287990400137553 -0.772962730437677 -0.565463809656723 1 0.289079600616752 -0.793048518966976 -0.536410488366412 2 0.319272575614375 -0.73946430563889 -0.5926086625162 1 0.361445243768393 -0.73150489500853 -0.577990738009412 2 0.28305626966917 -0.747279973832625 -0.601263334323077 2 0.435824585194394 -0.651079048144597 -0.621322357391976 1 0.491645325562782 -0.622288151617065 -0.609091605391485 1 0.502843243694844 -0.658388603344071 -0.559998349330631 1 0.469802293114758 -0.65540627807142 -0.591247812265865 2 0.487715126056698 -0.585911337257343 -0.647182517759141 1 0.530116554556691 -0.563967022327323 -0.633121739969872 1 0.534143235485066 -0.600432428260788 -0.595154867408625 1 0.511251012810576 -0.593555490747278 -0.621561717505142 2 0.546370221516695 -0.62677737030664 -0.555581516799101 1 0.532466044245526 -0.65596788847743 -0.534969785572923 2 0.574813693111803 -0.569508986729051 -0.587623723177094 1 0.56096010529915 -0.598533584685388 -0.571976519513063 2 0.328936987534194 0.741249587308839 -0.58497209162501 1 0.318075624320377 0.788711893407965 -0.526185475980952 1 0.365841988324478 0.779947383246666 -0.507636228590002 1 0.347802307488214 0.761464749913273 -0.546940684929913 2 0.281430913900728 0.790091111291422 -0.54466081642583 1 0.302941688774768 0.820975929195723 -0.484133701060456 1 0.292392808513146 0.80607830460518 -0.51475451855992 2 0.345659403324118 0.822415563484751 -0.451766124164244 1 0.38323582765678 0.79907263044678 -0.463065927136967 2 0.312373888347751 0.839518177131147 -0.44464511562872 2 0.480244308222908 0.783399675158232 -0.394394645170143 1 0.534533198686565 0.749207128122338 -0.391037177891179 1 0.524815624271974 0.723721511788631 -0.448019465385254 1 0.503034961953911 0.754332140877021 -0.421651176054764 2 0.548493428701287 0.763843247730493 -0.340106099284736 1 0.587914332522757 0.733839401116292 -0.340237012856767 1 0.574061525536855 0.719330898780144 -0.391207769687119 1 0.561642663209063 0.742078178897236 -0.3659039697734 2 0.569948524858931 0.696924129695847 -0.435317117727726 1 0.546173238383445 0.696354891943227 -0.465613373833354 2 0.615284554971091 0.690818765356745 -0.379804341832506 1 0.593008195183553 0.694327802298654 -0.407828507347023 2 0.569512494106214 0.814447413213217 -0.110351111780176 1 0.611406010659013 0.789721901349124 -0.0513981661422669 1 0.641969574108864 0.762254872434542 -0.0818804180594859 1 0.606436243933917 0.789255356623976 -0.0962441504734802 2 0.582766685469327 0.812051892273011 -0.0324832145024285 1 0.634582937664564 0.772946897548998 -0.00438740903740058 1 0.609085347621273 0.793036107776287 -0.0184580024551851 2 0.673095421972225 0.739242443927032 -0.0200778531087558 1 0.679044347863191 0.731135991653967 -0.0644953428435388 2 0.664462700122891 0.747198099177267 0.0161814122045586 2 0.752256113243569 0.6491763706148 -0.112147108707873 1 0.766067773723478 0.62040713793178 -0.167876918525506 1 0.726259676981616 0.657709925259973 -0.199728147335326 1 0.740004235129382 0.654124068843978 -0.156095981090542 2 0.799586033562186 0.582136853844289 -0.147484777941823 1 0.805351884370595 0.560825002243376 -0.191854979907631 1 0.771981705244182 0.599174819668463 -0.212275387697498 1 0.786298933386683 0.591052488079175 -0.179996761215551 2 0.741590576867459 0.626156471539798 -0.240866783445703 1 0.716876096880041 0.655516730897133 -0.237482961188685 2 0.783163843485408 0.568476110970537 -0.252085343203074 1 0.762880391956194 0.597708942474424 -0.246639591826757 2 0.912009289869779 0.408626879280497 -0.0332915222148449 1 0.939411534133212 0.339269608770356 -0.0502139992011855 1 0.932585870594161 0.346499629046583 -0.10040918849723 1 0.923351073454632 0.378011815949361 -0.066935491857468 2 0.940791077057417 0.339008737112259 -0.00926283209945258 1 0.956411183805307 0.287120554554778 -0.054776931486445 1 0.949240151457286 0.313285796096689 -0.0320449287097773 2 0.954714580871696 0.277355905837337 -0.107389452155025 1 0.940848276314115 0.310122115557168 -0.135824093309951 2 0.964421366162307 0.251891610971432 -0.0807404155078648 2 0.920386703093996 0.297765994676532 -0.253218124286035 1 0.894446977475159 0.328511848200802 -0.303302832609399 1 0.884613015804886 0.380724418850802 -0.269137987624284 1 0.903425024449201 0.339598976183811 -0.261430880906946 2 0.896230347217261 0.286597436598004 -0.338534079072824 1 0.873164115345775 0.312684777839718 -0.3738131082035 1 0.871530506471828 0.354640222609018 -0.338661272149747 1 0.884465604269415 0.320832309342963 -0.338813657343237 2 0.861806397823005 0.39738027443952 -0.31531630992407 1 0.866372708670975 0.413235581937824 -0.280439425205114 2 0.846902715977061 0.371202361825351 -0.380816516125008 1 0.854918789425414 0.384545671451293 -0.348298072729161 2 0.883804516576259 0.0845437355556373 -0.45998474935843 1 0.84979461513367 0.0599373772189756 -0.523808420761971 1 0.836304514528057 0.107462734743543 -0.537499953670232 1 0.861046374911059 0.0961289691575326 -0.49930685568486 2 0.861846320837757 0.0246446487684442 -0.506668767867416 1 0.824052945550744 0.0350888258652765 -0.565567522305038 1 0.84352333945166 0.0298949153471338 -0.536475301544206 2 0.801696887173852 0.0753345615628862 -0.592910474315332 1 0.807038022381356 0.118149503182065 -0.578398458366596 2 0.798024101070495 0.0383666435392132 -0.601465627802255 2 0.752382486857305 0.214759302724298 -0.622656756426439 1 0.742452095435225 0.276396859041787 -0.610180502092119 1 0.781173826721915 0.275217090255256 -0.56031430747497 1 0.767569143016544 0.245228938397777 -0.592079718117568 2 0.705350533724834 0.284776528356604 -0.649130485313024 1 0.698323718739137 0.331421575903856 -0.634379596922805 1 0.735512406150071 0.323096668829809 -0.595534174526893 1 0.720913355144481 0.304132417052285 -0.622741592491566 2 0.764642356831494 0.326297282464904 -0.555785088024382 1 0.788164410292396 0.304001112776594 -0.53515700867065 2 0.718788860769211 0.371333926575432 -0.587799411313206 1 0.742202565590749 0.349046467112879 -0.572168148242759 2 0.238338047696048 -0.0880476031635814 0.966569372702898 1 0.204667904201292 -0.116213532980428 0.971319647384259 1 0.232388224282872 -0.116396567546991 0.965341229893552 2 0.197794961713537 -0.0736496455302562 0.976877994043158 1 0.223891619042859 -0.0617857107341803 0.972358781160085 2 0.182931494291024 -0.0982972224049366 0.97793737815402 2 0.320620047986075 -0.182610759855133 0.92947141896386 1 0.349802006030496 -0.219379534286827 0.910830580174488 1 0.354456538994872 -0.179508822281081 0.917711155528827 2 0.278233965455019 -0.223635059879187 0.934070156297353 1 0.284681922913666 -0.185094026513059 0.940584478623478 2 0.315928250430844 -0.261116225037872 0.912125819286283 1 0.34694581149331 -0.253483435049566 0.903050511305522 2 0.271660284123375 -0.2660907374491 0.924781445122104 2 0.34563853022583 0.222729178824106 0.911567917443928 1 0.301465543274186 0.196274817126412 0.933031108192133 1 0.345215356494454 0.172969145630146 0.922331438702563 2 0.312945624151798 0.272609186985221 0.909864177803837 1 0.346383538029406 0.257177189982819 0.902263108781148 2 0.26768899853975 0.256161124295855 0.928854007132011 1 0.263081932016843 0.217174298000817 0.940040933616676 2 0.271626171391324 0.296593822455877 0.915546546522359 2 0.499831388627273 0.0640990044958643 0.863774202105665 1 0.496316693753501 0.12237119908684 0.859490673933028 1 0.466407212251938 0.0922022812633313 0.87967747855139 2 0.544458175759779 0.0671154728577435 0.836138432928819 1 0.523434539120681 0.043136321816435 0.851093170998353 2 0.539957488952548 0.124682894367282 0.832447279175795 1 0.51705166638458 0.14619119826905 0.843488564944337 2 0.567511643541121 0.0993964043208354 0.817326832985535 2 0.141066240679418 0.211323649493698 -0.966569369860793 1 0.0972713331661087 0.21431978527344 -0.971319656713 1 0.119589938432098 0.230761344629023 -0.965341242245564 2 0.116729584851476 0.175844826903148 -0.976877992567593 1 0.144815572782437 0.181585889946813 -0.972358780547524 2 0.090217286604607 0.187048491348979 -0.977937392609764 2 0.152051274327682 0.336190546207444 -0.929471425691348 1 0.154047593008271 0.383090358909192 -0.910830571161841 1 0.181248690336789 0.353569941202029 -0.917711154710975 2 0.0936472406736541 0.344466732278277 -0.934070130677418 1 0.121517451853053 0.317076106706714 -0.940584469340027 2 0.102111063026189 0.396945243623477 -0.912125814309283 1 0.131691224434914 0.409002210060213 -0.903050504984819 2 0.0633745305991815 0.374950474984473 -0.924781137186419 2 0.410543848968935 0.0229694035032864 -0.911567904760451 1 0.359257910281381 0.0184070472823774 -0.933031084283913 1 0.380953444243893 0.0629773166367091 -0.922331410436283 2 0.413413330915029 -0.0366010467547941 -0.909864184953833 1 0.431394706809456 -0.00446176438281032 -0.902263099567081 2 0.367130920535323 -0.0498958848672351 -0.928854551219547 1 0.340488538025875 -0.0210626513847323 -0.940041196407539 2 0.394080713824732 -0.0802932485367039 -0.915547670236969 2 0.442048794914701 0.241936746203207 -0.863774228302882 1 0.473456860649633 0.192727250085896 -0.859490693171135 1 0.431526641380366 0.199554168240289 -0.879677528736524 2 0.479925434622293 0.265726887043014 -0.836138432149708 1 0.448822546209496 0.272769267601854 -0.85109320881464 2 0.510121316971776 0.216508601908252 -0.832447288406538 1 0.504232731855507 0.185644216956494 -0.843488588957888 2 0.517550136057488 0.253161334412048 -0.817326808069438 2 0.149699721723262 0.748169246738694 0.645478900543615 1 0.128344388045686 0.775606285922157 0.617110984710626 1 0.122417446257653 0.758777261374979 0.639309697784327 2 0.172025185807864 0.769794139492419 0.613729879920933 1 0.178499490073699 0.751094948215474 0.635155625159603 2 0.150558463283064 0.78483778350672 0.600715079408671 2 0.0361955778561874 0.711283237824909 0.702027825191961 1 -0.00796495273353951 0.694087515597092 0.719936789310112 1 0.0320730421112694 0.685615975677459 0.727311129902607 2 5.84835779196451e-05 0.746977232833045 0.664785771210901 1 0.0399904740152871 0.737439954228077 0.674254773793245 2 -0.0432326606783889 0.722848915101461 0.689656181075469 1 -0.0420010734804971 0.699035455504446 0.713981128862379 2 -0.0465857982865199 0.755850816151837 0.652903756548252 2 0.412119997489001 0.559182635005133 0.719355356652158 1 0.398899532673499 0.604458408900202 0.689509107613566 1 0.369099726842558 0.583903119682381 0.722893089643427 2 0.459263645005308 0.557297906876462 0.691831473058418 1 0.440556180104207 0.54084958654915 0.716642184384483 2 0.454533700491652 0.597198820877876 0.660931659074975 1 0.424150688774354 0.620432450682914 0.659693033692903 2 0.482293653008577 0.574101784628915 0.661729530249564 2 0.230632262225954 0.502391290402949 0.833342886410099 1 0.285191074088858 0.482092299842273 0.828419412742288 1 0.266125236281359 0.521310529647429 0.81072717767906 2 0.22027706769809 0.45937705000687 0.860539442880569 1 0.204294892230956 0.488293237410635 0.848555013829036 2 0.273837510865939 0.439855948735304 0.855344359753342 1 0.300395671387666 0.452190699124997 0.839925041726313 2 0.242003966636862 0.423296002951695 0.873062464846794 2 -0.665292439770527 0.37357341260939 0.645474910186337 1 -0.697986298951131 0.361740667114661 0.617107510565648 1 -0.683811989897922 0.350903526890533 0.639306999627139 2 -0.678962683110784 0.401495471572316 0.613718991571745 1 -0.659179478426687 0.401885409794977 0.635137056462164 2 -0.699903504208284 0.385724193585547 0.600706941686882 2 -0.665286176584826 0.2542282621967 0.702024863624837 1 -0.662578174223631 0.206913748791752 0.719935255828192 1 -0.642149633730294 0.24237864026857 0.727307417277734 2 -0.710399880724572 0.230886232221694 0.6647847802001 1 -0.688989978280291 0.26591829955837 0.674252788645512 2 -0.700830414320309 0.18225806520283 0.689655725443704 1 -0.677801906165922 0.176071182093087 0.713980160351485 2 -0.733253089867006 0.189266315339049 0.65290328846041 2 -0.403468447936827 0.568594131676014 0.716900329326599 1 -0.450622788530318 0.570083357979436 0.686946610512091 1 -0.440729233786961 0.534089687482184 0.721314053228161 2 -0.384706467063106 0.616672921036794 0.686890986113811 1 -0.37615905414367 0.591394941731215 0.713413582779775 2 -0.424593931175369 0.62522757967436 0.654870872438406 1 -0.457314119659234 0.600768427009541 0.655740001614181 2 -0.389703430309466 0.649929106723604 0.652454623910711 2 -0.406418903125854 0.374366587654433 0.833497896233887 1 -0.370199784487658 0.420096008042199 0.828553139657922 1 -0.413458740129512 0.41428182051615 0.810734351122873 2 -0.368520736615712 0.350527394005694 0.861041428325968 1 -0.401061514136224 0.344585808994103 0.848890086057315 2 -0.333530092778711 0.395948506943623 0.8555998907761 1 -0.337041843829692 0.425255377501061 0.84008752889285 2 -0.327703659077881 0.360302232426404 0.873365934435341 2 -0.560876815360933 -0.517290242671835 0.645474905393306 1 -0.559726155559592 -0.552040571987996 0.617107521721651 1 -0.545039053148433 -0.541908741910062 0.639307026841459 2 -0.591656009886924 -0.521662950560281 0.613719494648556 1 -0.585913536397227 -0.50272729505564 0.63513730541321 2 -0.583127743622343 -0.546452642995465 0.600707217793829 2 -0.447369947443138 -0.554164000113048 0.702024840275584 1 -0.401534403098664 -0.566209436254717 0.719935252875348 1 -0.428950656301599 -0.535821499826703 0.727307393094856 2 -0.439111400845834 -0.60428223655549 0.664784731410707 1 -0.46581267213613 -0.573094932850637 0.674252718742491 2 -0.389905902962261 -0.610208114209553 0.689655721067258 1 -0.376905762053811 -0.590218631627046 0.713980392369919 2 -0.406590572410684 -0.638878347482258 0.65290326708582 2 -0.6654438539323 -0.208015736487673 0.716900351167197 1 -0.681431589287083 -0.252402101846566 0.686946603289694 1 -0.644142348812554 -0.254115638411321 0.721314052532115 2 -0.705372012025347 -0.175314627831888 0.686890981342294 1 -0.678689680629656 -0.174997182955779 0.713413598404143 2 -0.725833557127182 -0.210606386979471 0.654870850714437 1 -0.712682369316945 -0.249283695619034 0.655739969655938 2 -0.738544386308507 -0.169790462553978 0.652454610761222 2 -0.481634689843225 -0.270842302140115 0.833497913214005 1 -0.513933310780866 -0.222264423092325 0.828553167285231 1 -0.521771643555331 -0.265202870773574 0.810734393720884 2 -0.447250524055174 -0.24216553006449 0.861041428885433 1 -0.451655630557633 -0.274949702517062 0.848890099329164 2 -0.479635791506124 -0.194851624953934 0.855599873637477 1 -0.508593575700705 -0.189135077870253 0.840087532234198 2 -0.443933284624985 -0.200325647450132 0.873366203927777 2 0.318651549045635 -0.693276289361 0.645475905251596 1 0.35205622162108 -0.702919628229965 0.617109009736883 1 0.346958341464347 -0.685819400087275 0.639310321750032 2 0.313299101478902 -0.723900621910407 0.61372001442927 1 0.297064917266241 -0.71258792734749 0.635137828234564 2 0.339510632756613 -0.723449863098289 0.600708228861614 2 0.38877651162706 -0.59666874984346 0.7020793567366 1 0.414361713739958 -0.556724946306576 0.72006393334843 1 0.376998745853435 -0.573448984970796 0.727398206029623 2 0.438999835016883 -0.604302260899504 0.664840440343145 1 0.401090145989458 -0.620077195411453 0.674289998542605 2 0.459816035140607 -0.559323514616348 0.68973419271967 1 0.444816603143925 -0.540697059177262 0.714121662243262 2 0.48194579659412 -0.584068755326478 0.652960694121889 2 -0.00779954359853624 -0.697154278634843 0.716900844599974 1 0.0294735299832615 -0.726075394934412 0.686947026824214 1 0.042624900219921 -0.691139420550131 0.721316064400854 2 -0.0512377794532118 -0.725023637698439 0.6868914940419 1 -0.0432948734536737 -0.699549069871178 0.713414095564214 2 -0.0239964335760983 -0.755389218087631 0.654870859666323 1 0.01685132006258 -0.754833353505338 0.655740163019443 2 -0.066742350695722 -0.7548655363093 0.652455154713249 2 0.108716817606639 -0.541727674864277 0.833521161836023 1 0.0525533723030925 -0.557450428318802 0.82856266610181 1 0.0909651742775753 -0.578169164491899 0.810748698544211 2 0.0920561706451218 -0.500165712248419 0.861062607044856 1 0.121860260740908 -0.514472510093707 0.848924358309186 2 0.0370741454045322 -0.516360600107698 0.855608561624311 1 0.0226990414414453 -0.542139277317535 0.840093071255484 2 0.0532920592642968 -0.484091379451939 0.873378782272239 2 0.757632616108949 0.0871744674963998 0.645918925507278 1 0.777154528348148 0.115230445108471 0.617749930129844 1 0.75902870871687 0.114798668574635 0.640428889285678 2 0.785475308113019 0.0726884576226868 0.613653400653212 1 0.769906693675662 0.0604360148597228 0.634820643032899 2 0.792975842334647 0.0974175005394286 0.60098637561543 2 0.684337909420299 0.173565127057179 0.708219947660097 1 0.653457598153796 0.211740737619121 0.726785329295642 1 0.654378913958372 0.165978182429239 0.737679020503553 2 0.709342554005724 0.219037323250886 0.669933818723507 1 0.711771065363128 0.179036577322964 0.679228070261214 2 0.673641974385229 0.254374536330826 0.693937504078089 1 0.649805701766843 0.246687743334166 0.719071599185257 2 0.705055194050667 0.261732804234442 0.659009378738916 2 0.665353202219893 -0.225118785417108 0.71180992781171 1 0.704364027635809 -0.200276953736344 0.680969764695149 1 0.679014768085826 -0.179771309633299 0.711699371594905 2 0.675924318362398 -0.274189639802623 0.684115548589869 1 0.655259399244515 -0.25858609257558 0.709884895808977 2 0.713151369248391 -0.257809408513974 0.651894006549871 1 0.726062024564966 -0.21986382561356 0.651544900197042 2 0.698742391729039 -0.297734001482081 0.650424580019886 2 -0.149698217741621 0.748168735726629 -0.645479893841619 1 -0.128339392384223 0.77560581865863 -0.617113016100614 1 -0.122414177312717 0.758774822367854 -0.639313507636674 2 -0.172022187999643 0.769794162579386 -0.613731403254208 1 -0.178497734634553 0.751094953318321 -0.63515663666905 2 -0.150549948060367 0.784836983923405 -0.600719059299391 2 -0.0361808379920692 0.711230167237627 -0.70208286226393 1 0.00799487135809232 0.693954414784483 -0.720066454937992 1 -0.03205873653625 0.685521652752029 -0.727401950939029 2 -3.72592186452217e-05 0.746926478706806 -0.664843430335266 1 -0.0399786137408723 0.737405899065176 -0.674293008708379 2 0.0432393106590468 0.722773205925368 -0.689737168912399 1 0.042052912070867 0.698888161399657 -0.714123635439044 2 0.0465979498467914 0.75579703134546 -0.652966613477921 2 -0.412139494477104 0.559216102684511 -0.719318790783685 1 -0.398908152988785 0.604475603026491 -0.689489799866658 1 -0.369106407492367 0.583924377148966 -0.722873965012549 2 -0.459297497242238 0.557312803496039 -0.691796439779487 1 -0.440597474827199 0.540863645781648 -0.716606168813924 2 -0.454545602317759 0.597219685994487 -0.660904474646331 1 -0.424156959266351 0.620447495580965 -0.659675018549878 2 -0.482317870760876 0.57412151091025 -0.661694743363509 2 -0.230307732013694 0.502163461685734 -0.833567859329647 1 -0.284884842851693 0.481910485103795 -0.828629182764264 1 -0.265929729085707 0.521187590810274 -0.810868197879809 2 -0.219427360073277 0.458766790237879 -0.861076017386067 1 -0.203713957223212 0.487839113006367 -0.848950109378445 2 -0.273373360623844 0.439606276852739 -0.855617274562944 1 -0.300093021289198 0.452023883617063 -0.840119366719581 2 -0.241339334859113 0.423011402344629 -0.873379075076384 2 -0.757933096421509 0.0880518110480773 -0.645444338227042 1 -0.777238188074954 0.116219033928814 -0.617454244780266 1 -0.759492804615927 0.116403954909238 -0.639575578390058 2 -0.785278811717854 0.0736575898651315 -0.613798858438175 1 -0.769558955846523 0.0618009297479369 -0.635126978947648 2 -0.792875526877962 0.0983031979484644 -0.600976031072204 2 -0.687888288474173 0.182665962883787 -0.702497933569076 1 -0.658065803248026 0.219491635029521 -0.720328090106726 1 -0.662193658841101 0.179590979414789 -0.727531763707595 2 -0.710953348946175 0.223696467647946 -0.666647603912981 1 -0.713921449695341 0.185136669712848 -0.675309679326849 2 -0.674415493330143 0.261205556032094 -0.690580178362062 1 -0.652346930221517 0.253609447284213 -0.714318323591989 2 -0.70556566065281 0.266169682205169 -0.65662422176205 2 -0.659205603951537 -0.219165314134509 -0.719315756484115 1 -0.698161485797031 -0.192599865135319 -0.689485129499485 1 -0.669408813399341 -0.170611848275107 -0.722867090917204 2 -0.671967068716748 -0.264601768231989 -0.691794877521538 1 -0.650544723209241 -0.251899986388014 -0.71660432241439 2 -0.708452389742014 -0.24775052394533 -0.660902430967154 1 -0.721153357636703 -0.211674214836785 -0.659671827977673 2 -0.695066474939029 -0.2813002189685 -0.661693667793264 2 -0.548794590769556 -0.0638350754120396 -0.833543462130723 1 -0.546376539784884 -0.122012742822448 -0.828619257060503 1 -0.577880107387087 -0.0918549834534398 -0.810851372688336 2 -0.504159762274492 -0.0668755579812238 -0.86105712724859 1 -0.526971609909579 -0.0429369268774796 -0.848917100084829 2 -0.502590267123614 -0.1241262708051 -0.85560700193393 1 -0.522648155907161 -0.145711700634212 -0.84011253068616 2 -0.476918270161841 -0.0987634691140088 -0.873366878984463 2 -0.317956677946767 -0.693627220775838 -0.645444329180876 1 -0.350710839156965 -0.703283465811787 -0.617454238112922 1 -0.345403189657877 -0.686349444939294 -0.639575560759925 2 -0.312716955710555 -0.724082979272666 -0.61379885449298 1 -0.296582977200877 -0.712796216112302 -0.635126956762905 2 -0.33850370639225 -0.723691911553235 -0.600976011073032 2 -0.386295191727665 -0.597774146984954 -0.702497949267477 1 -0.412102988636559 -0.558031546596383 -0.72032809316243 1 -0.375430454588805 -0.574287081525134 -0.727531518980701 2 -0.432444676755592 -0.60703129277811 -0.666647630144349 1 -0.396689535771469 -0.621769633892532 -0.675309721635195 2 -0.456827570591782 -0.56069060020968 -0.69058019435709 1 -0.442783707275821 -0.542049329180175 -0.714318356051983 2 -0.471174235093925 -0.588782250165441 -0.656624253206546 2 0.00473322264581834 -0.694667959714401 -0.719315773810835 1 -0.0325701332311461 -0.72350752515985 -0.68948511916435 1 -0.0445969637380043 -0.689367489443899 -0.72286708653256 2 0.0440019429162446 -0.720845406214839 -0.691794905318318 1 0.0385417971383032 -0.696546453384834 -0.716604355020852 2 0.0167009719898974 -0.75033792273127 -0.660902415787292 1 -0.021534335003405 -0.751268377963707 -0.659671803887519 2 0.0527449495524466 -0.747974224565599 -0.661693682107185 2 -0.108876167891799 -0.541660573424923 -0.833543475473278 1 -0.0527988348249591 -0.557338886366642 -0.828619228680582 1 -0.0912156670453308 -0.577981235149605 -0.810851352900641 2 -0.0921914347442998 -0.500150332862429 -0.861057104489592 1 -0.122007884240079 -0.514448108508822 -0.848917084686023 2 -0.0372577746546139 -0.516348421227076 -0.855606984419156 1 -0.0229271952594859 -0.542094955436854 -0.84011248986453 2 -0.0534459416610673 -0.484096193788528 -0.873366852808912 2 0.561424765653559 -0.516736796343075 -0.64544432209755 1 0.560486740181746 -0.550871938740582 -0.617454226268942 1 0.546021903503256 -0.540591107261295 -0.639575546050798 2 0.592008748244783 -0.521165148503728 -0.613799356609594 1 0.58626031960037 -0.502332649162207 -0.635127465738584 2 0.583668350856998 -0.545569076951549 -0.600976262457362 2 0.449144439185126 -0.552110190723484 -0.702498447382812 1 0.403372509508292 -0.564374150757066 -0.720328604107981 1 0.430164605254047 -0.534519638961784 -0.727532282242375 2 0.443687860295369 -0.59886186579905 -0.666647587381015 1 0.468753925004122 -0.569411048966847 -0.675309951039096 2 0.392080839515493 -0.607731092459042 -0.690580187341652 1 0.378692055830744 -0.58861449098834 -0.714318598902554 2 0.414364206993544 -0.630056776429794 -0.656624223529277 2 0.662095246249358 -0.210146550106158 -0.719353382284971 1 0.678014611932664 -0.254543369553569 -0.689505480036225 1 0.641827266398993 -0.255424686696339 -0.722888862934051 2 0.699126278285864 -0.180914911123117 -0.691827880419791 1 0.674323288593173 -0.178602635974339 -0.716639853800954 2 0.718754372869204 -0.215977631032486 -0.660926663732548 1 0.707831161892311 -0.252628716261058 -0.659688631992487 2 0.727637408637761 -0.180978076487839 -0.661722295771779 2 0.481884668741356 -0.270879757769765 -0.833342723179435 1 0.514091741794939 -0.222387545831987 -0.82841951998194 1 0.521725757920671 -0.265315926785599 -0.810725180256199 2 0.448215395091436 -0.242173031433268 -0.860541682176619 1 0.452282854794849 -0.274962403950593 -0.848556477726604 2 0.480077419008536 -0.194894599713586 -0.855345336565514 1 0.508815850438524 -0.189261123554869 -0.839925328135785 2 0.444585984161813 -0.200211265659449 -0.873064645270743 2 0.664176676499313 0.374798915389227 -0.645919892595056 1 0.696460466899567 0.363573823367168 -0.617753422115912 1 0.681542726787178 0.35326998120907 -0.640431080409876 2 0.678186960359853 0.402883016548196 -0.613655911104139 1 0.658390369895583 0.403645204063567 -0.634821859881391 2 0.698788568960345 0.387282194124892 -0.600993000460142 2 0.655658720669718 0.261826227512215 -0.708221429921102 1 0.653114653201762 0.212790213767441 -0.726786781585355 1 0.626962213088892 0.250354610430709 -0.737679723586302 2 0.702612184741653 0.239732620889026 -0.669940170290805 1 0.681067072941024 0.273522749108867 -0.679231693094355 2 0.694502490871788 0.190162661878036 -0.693940514623899 1 0.670701396477371 0.182370933365691 -0.719073297936109 2 0.724236263009613 0.202669156568527 -0.659019739468109 2 0.405960932644079 0.573209793926382 -0.711808946189364 1 0.45212349195331 0.57604249654147 -0.680968780444109 1 0.443667949126449 0.544552964935211 -0.711698896484263 2 0.385671255548289 0.619123455377332 -0.684113001237961 1 0.378123678820459 0.594352935755187 -0.709883388268286 2 0.425417940674201 0.627754100081498 -0.651889631403565 1 0.458165793396717 0.604643227902922 -0.651542487957517 2 0.390296255257065 0.651586742532389 -0.650416569759011 2 0.157315437625131 0.200299057930655 0.966407381963286 1 0.173559871997049 0.158865919107323 0.971344727875297 1 0.182169530348949 0.185947739745627 0.965246482771004 2 0.130803828815131 0.165528299014567 0.976889988458247 1 0.127122738769048 0.194001217420153 0.972423870986643 2 0.149770084161183 0.143583447202583 0.977983245622698 2 -0.109704046456295 0.392031005703151 0.913414276982391 1 -0.0998429502657697 0.34178181338514 0.934437784038624 1 -0.0683631894368114 0.372080837306868 0.925624113794399 2 -0.165680406266805 0.379609672579696 0.910222679436139 1 -0.140773677103504 0.405170926207828 0.903428598035374 2 -0.163837067374963 0.331167590854649 0.929246373754407 1 -0.129519088236094 0.313578407105131 0.940694872802864 2 -0.200227984727444 0.348408404455801 0.915671891677069 2 -0.142207282694855 0.211245709062686 0.966419172874213 1 -0.0985010410211996 0.21348376768191 0.971382799933127 1 -0.121796737062689 0.229755153974685 0.965313798883845 2 -0.117242182295283 0.175263186300284 0.976911087530829 1 -0.145376225470638 0.180658064484033 0.972433524884933 2 -0.0909057897437011 0.186310794981779 0.978014276819573 2 -0.406744635663597 0.0168075562442191 0.913414784979405 1 -0.355900657845687 0.0106565504255254 0.934440933601887 1 -0.374998527376079 0.0499544477510614 0.92562321655327 2 -0.412226923588679 -0.0402664906236817 0.910224239227409 1 -0.428842276295396 -0.00867999357802458 0.90342909098499 2 -0.365582877476572 -0.0534835766983397 0.929248368262441 1 -0.338243514040735 -0.0262822928465467 0.940698801195076 2 -0.393227147804944 -0.0827649651744896 0.915673471758857 2 -0.244797775920523 -0.0699832023098724 0.966432265565648 1 -0.233377694077374 -0.0277328814740384 0.971406045549173 1 -0.256091802753348 -0.0448503998400898 0.96532850133719 2 -0.20274864851557 -0.0573997746112897 0.976942908230999 1 -0.216626690154757 -0.0824735779386269 0.972455436599512 2 -0.205111626931487 -0.0289356116395084 0.978049297524065 2 -0.141482236685467 -0.381515552948425 0.913499516410425 1 -0.120046005736745 -0.33516815944455 0.934457266048157 1 -0.163279678091668 -0.341146656278005 0.925666731271035 2 -0.0890318820827251 -0.404464601064641 0.91024238040728 1 -0.124136075846322 -0.410456959052301 0.903482790614954 2 -0.0620572069538284 -0.36418820247836 0.929262241439189 1 -0.0794770186099059 -0.329804930588265 0.940704898580294 2 -0.0427855282780724 -0.399536296335431 0.91568237933845 2 -0.00895970934781311 -0.25456628214878 0.966398920942888 1 -0.0455416483922173 -0.230692387221123 0.971373373497391 1 -0.0363585387543887 -0.257515576914147 0.965305668872356 2 -0.00774737383826354 -0.210909564465075 0.976868003421051 1 0.0117039479996111 -0.23179592183994 0.972383871912871 2 -0.0355646577618466 -0.204290585557858 0.978000375091819 2 0.245003071926722 -0.0695780521834936 -0.966407372974658 1 0.23379094569047 -0.0265097528976424 -0.971344736987911 1 0.256674866390913 -0.0433587287870541 -0.965246484232188 2 0.203116265075171 -0.0570314762348354 -0.976889965718982 1 0.216873581025189 -0.0822306308434555 -0.972423874054357 2 0.205561776955165 -0.0281293279249566 -0.977983237298018 2 0.14154917254934 -0.381705231180301 -0.913408568509604 1 0.120049642386854 -0.335226555982332 -0.934435078707383 1 0.16330663275193 -0.34125023304529 -0.925622694955123 2 0.0889549746458771 -0.404555041792941 -0.910210214543158 1 0.124095398441208 -0.410618910197956 -0.903414284893688 2 0.0620349095082761 -0.364249802920351 -0.929240641378544 1 0.0794809271037669 -0.329841321976747 -0.940691893598853 2 0.0427000863292194 -0.399595311517074 -0.915661727917553 2 0.00911714683266508 -0.254488812869076 -0.966419169199255 1 0.0457886160997745 -0.230611216388002 -0.971382776105896 1 0.0365027099237187 -0.257468966254225 -0.965313478398441 2 0.0081638172904857 -0.210704026360722 -0.976911067977582 1 -0.0114264808546318 -0.231604553174944 -0.972433514613524 2 0.0359626169978861 -0.204162528630072 -0.978014269848722 2 -0.319284035210035 -0.252573638666077 -0.913408040520646 1 -0.281719368661619 -0.217757898431956 -0.934437705492802 1 -0.274092140416685 -0.260761674501698 -0.925620954212421 2 -0.357265435920707 -0.209614055996788 -0.91021070037636 1 -0.352175090757308 -0.244909590554192 -0.903413949176225 2 -0.32724942445437 -0.171554162712072 -0.929242103340541 1 -0.289130067496839 -0.177508451908166 -0.940695543683274 2 -0.366840752257931 -0.164089541801565 -0.915662447651907 2 -0.239181528493804 -0.0872689448371637 -0.966432251256264 1 -0.205110872422536 -0.114735008712641 -0.97140598965909 1 -0.233550321225947 -0.11423525927348 -0.965328171408393 2 -0.197766511429978 -0.0727325270358779 -0.976942891940468 1 -0.223731334568726 -0.0606043754879466 -0.972455700257199 2 -0.182948992670732 -0.0971486693966991 -0.978049246717475 2 -0.338875718430991 0.225609973994999 -0.913407452332916 1 -0.294148012053668 0.200658264709882 -0.934436253629729 1 -0.332693001357321 0.180108546570083 -0.925620590235429 2 -0.309761644703737 0.275000284617479 -0.910209972718889 1 -0.341753826651184 0.259254414392422 -0.903413350860484 2 -0.264290965390323 0.258218617966836 -0.929240101695689 1 -0.258161383186885 0.220147506883644 -0.940691856487766 2 -0.2694398196182 0.298162023001949 -0.915661817455304 2 -0.156878097048804 0.200683602582761 -0.966398919125382 1 -0.172439811456424 0.159869927421513 -0.971373352283245 1 -0.180776560400369 0.186970523783807 -0.965304969334607 2 -0.130236527167028 0.166077260586573 -0.976868028302889 1 -0.126776947497736 0.194407444774136 -0.97238389111234 2 -0.148850302878216 0.144373295532538 -0.97800041215609 2 0.43501802260612 0.693296997919822 0.573503431655471 1 0.394784193286953 0.703049131629712 0.590533873114961 1 0.416903838587248 0.685997533303606 0.595855187333291 2 0.409064695632859 0.723733530633983 0.554718701393286 1 0.435443820351417 0.712441884161428 0.549765786068474 2 0.385718769037465 0.723451606829026 0.572133595871275 2 0.645358185594599 0.694760045422263 0.317525632737043 1 0.602078679645474 0.72351637290403 0.337550212147925 1 0.626525584413896 0.689411509869194 0.36322342649332 2 0.638278142649757 0.720940171742062 0.270148429887059 1 0.657983208029166 0.696687286578609 0.286126531263399 2 0.598533101565971 0.750368244058045 0.280684716392067 1 0.580365896338901 0.75126712708055 0.314338256875783 2 0.615313798376103 0.74803323808477 0.248838915736745 2 0.696787151355509 0.541797331727356 0.470094320682537 1 0.717347024983979 0.557591983517887 0.417765192731496 1 0.684343812774003 0.578130283818153 0.44418624007964 2 0.728887682237284 0.500269559698792 0.467461560057965 1 0.704717502144628 0.514536392597362 0.488700996274707 2 0.748428097608046 0.516757186952542 0.415795432131816 1 0.740872576600359 0.542581932736854 0.396100447907008 2 0.757233712185783 0.484404984471301 0.438095127614712 2 0.488118976368809 0.816545230428098 0.306272365206907 1 0.48625233998274 0.800731708267214 0.348211769737666 1 0.503479452575573 0.799978995721152 0.325556356142312 2 0.453934700736537 0.825852464696102 0.332790959861656 1 0.462008078404896 0.832262574915012 0.305475436597983 2 0.46115262455057 0.811866304333839 0.357366975049392 2 0.334749586071809 0.941449609113942 0.0402086852112668 1 0.329511180858179 0.939248021291286 0.0956543113208881 1 0.370258890084368 0.926039888512378 0.0714949209172262 2 0.28292799810266 0.958460700754275 0.0379181156755605 1 0.310665879270874 0.950444833553021 0.0180081308038519 2 0.270303194977179 0.958886594781705 0.0868954617113229 1 0.293613642578638 0.948929045505894 0.115584600446948 2 0.248477412673996 0.966866839051294 0.0592712415139353 2 0.530116824743165 0.847902575493662 -0.00913141427802938 1 0.486570626644881 0.872775520166517 -0.0391843224133849 1 0.492869495827799 0.869993323011056 0.00735675346394005 2 0.550319458242773 0.833159266887529 -0.0553437535691346 1 0.55679886677981 0.830508581433988 -0.0208293159016777 2 0.506919142656366 0.857925364418893 -0.0840486074224685 1 0.479696880211368 0.874421814590205 -0.0738781321623409 2 0.538654625391329 0.836875915683387 -0.0972859625728931 2 0.235880918983948 0.947499858125302 0.21310672132269 1 0.276863914602502 0.933601598490133 0.224943660990645 1 0.263041387083847 0.943126742106442 0.201908437769422 2 0.24473956777012 0.934916627155329 0.254704203163554 1 0.221562052241978 0.94485790119336 0.239963541657822 2 0.273012897562981 0.927841522433461 0.253130012978747 2 -0.0904000657539859 0.958408382972858 0.270707694255841 1 -0.042134793606667 0.953543211590674 0.298151190157117 1 -0.0455242886589719 0.966811305826993 0.250911314046853 2 -0.115666858053998 0.941712257334182 0.316121290847586 1 -0.121332164758307 0.951531132443741 0.282931979567935 2 -0.0765438430751406 0.934634236574556 0.347386781762928 1 -0.0398461455477913 0.940273296006742 0.338131782331193 2 -0.111237109231748 0.928266158611257 0.355011717620355 2 -0.0392618865140634 0.997562155781278 0.0580923981043157 1 -0.0884305906763545 0.99208892354958 0.0892383232259666 1 -0.0437954684881221 0.993540459286864 0.10403356591999 2 -0.0694076198776158 0.997509153198658 0.0150567842691892 1 -0.0355017643731709 0.999173238675093 0.0244108024403698 2 -0.117292522127425 0.992035675168208 0.0466431101995658 1 -0.122380160955086 0.989380708591071 0.0795616062991505 2 -0.112118164162288 0.993659937172657 0.00669569079298073 2 0.026731799802814 0.905137145507438 0.42286930603998 1 0.0557579804942578 0.917968747667539 0.391260425821538 1 0.0277227536307324 0.91757229412231 0.395899122700186 2 0.0702277977109465 0.900110191211625 0.428608087586255 1 0.0461360209983076 0.89455682569096 0.443921494735231 2 0.0809777405200017 0.911019556923183 0.403711300663121 2 -0.223936191881916 0.784091779996414 0.578880016365575 1 -0.212361867993947 0.750901670325723 0.625358147207766 1 -0.183535177676985 0.778281294424011 0.600381688058647 2 -0.272711828182113 0.76628286993066 0.581820232786163 1 -0.252834751975704 0.787557103436125 0.562173982546449 2 -0.260846112878952 0.733740722855033 0.62742148484548 1 -0.232663363770695 0.728728738551536 0.644210834456937 2 -0.295063898641018 0.73796540849701 0.606899194350297 2 -0.524645197241836 0.628763790866346 0.572900640107737 1 -0.546693663639195 0.59356601110715 0.589640979388123 1 -0.523243246484377 0.610010129592686 0.594615367129356 2 -0.56224984689645 0.613116288816076 0.553883347337859 1 -0.543597716688537 0.634776925808496 0.548602748272574 2 -0.569085090062805 0.590945642593604 0.571334933230855 2 -0.465547919346691 0.827269299116712 0.314445963413683 1 -0.508277438437784 0.79421886518931 0.332842736080316 1 -0.472756564923291 0.80621187836119 0.355460562369046 2 -0.491109640847383 0.828765695086231 0.268450177769388 1 -0.462287938638186 0.839972557849634 0.28439023323753 2 -0.531339440017849 0.800058768507834 0.278637134898298 1 -0.53920212167521 0.782618226672602 0.311076650143199 2 -0.523147933047311 0.815522370712955 0.247584909868612 2 -0.625473542931569 0.717001715089229 0.305761485119671 1 -0.612061524899601 0.709792841397029 0.347018906997675 1 -0.606067497541547 0.725893434700512 0.324335024727107 2 -0.645296934463016 0.687084483029158 0.332151561688871 1 -0.648620209972448 0.696882311796266 0.305050193240522 2 -0.630234082801323 0.689385601294422 0.356417951877213 2 -0.791851458359875 0.609385119274628 0.0402769978837063 1 -0.791421859244996 0.603665625685616 0.0956772229529324 1 -0.766252408593866 0.638352495735492 0.0715321260697814 2 -0.824048798030853 0.565363249763466 0.0379766739244896 1 -0.807814660575458 0.589313940906917 0.0181113037314489 2 -0.828394651701273 0.553430219227313 0.0869225293806621 1 -0.811732619370869 0.572505174440749 0.115599831976749 2 -0.842714971776392 0.535163383219158 0.059307854965374 2 -0.642586049992271 0.766189586024535 -0.00907536410014157 1 -0.679665873571049 0.732496920611082 -0.0390788822716385 1 -0.675082946214077 0.737611866635278 0.00741950123994012 2 -0.622330025511739 0.780842612834964 -0.0553036893189451 1 -0.617798013345264 0.786191122803585 -0.02079073784989 2 -0.659375714569565 0.747163377814381 -0.0839087979856797 1 -0.683404482300651 0.72643821893466 -0.0736861100843859 2 -0.6296324113221 0.770763958662486 -0.097293004460472 2 -0.828234464018557 0.51713025790964 0.213104706636108 1 -0.802351742852968 0.551815027857083 0.22493867480823 1 -0.815680835573121 0.541612724619495 0.201906675097948 2 -0.8135307130796 0.521667548817113 0.254697676561009 1 -0.830147083822455 0.502696010884585 0.239959998428939 2 -0.798065329730658 0.546373090194823 0.253118188543244 2 -0.939435355648748 0.210188929885244 0.270707687770073 1 -0.919893693777055 0.254588485937526 0.298151185958714 1 -0.933559672321259 0.255465264570332 0.250911309700735 2 -0.931364009346384 0.180999711009644 0.316121267857371 1 -0.942453096345943 0.178645708400069 0.282931960940167 2 -0.912543034295796 0.216020264232077 0.347386776447923 1 -0.906566180854075 0.252664311748956 0.338131773362362 2 -0.91720745109271 0.181057226120454 0.355011692987749 2 -0.960868276690977 0.270930349813761 0.0580905961567392 1 -0.970858552671114 0.22247255461171 0.0892373306659003 1 -0.958445279785075 0.265373009898536 0.104032665854917 2 -0.970134372057861 0.242241596110089 0.015052829257476 1 -0.961237659066336 0.275007429873415 0.0244066241800171 2 -0.979726960648971 0.19500720320742 0.0466407085507392 1 -0.978774319686391 0.189346780441726 0.079560341104905 2 -0.979672195905092 0.200430994661853 0.00668986880474936 2 -0.85257648006476 0.305126275420636 0.422868811274262 1 -0.855810921846349 0.336697232759004 0.391259431100659 1 -0.864096933189136 0.309911339241338 0.395898639805563 2 -0.834355671818732 0.344940075990055 0.428605578593307 1 -0.836518257758529 0.320311241826933 0.443920000006354 2 -0.841409793679726 0.358534929272324 0.403707548405832 2 -0.814915521542114 0.0293219428566495 0.57887951288597 1 -0.779772720203766 0.0300733969258064 0.625358105684079 1 -0.79690470091106 0.0659499078961979 0.600381404254802 2 -0.813050480606628 -0.0225700271144205 0.581820228421095 1 -0.827141570522384 0.00290835399091098 0.562173735086629 2 -0.778434334029945 -0.0213408570836787 0.627421458882271 1 -0.764958821150725 0.00391351978779418 0.644210786273953 2 -0.793026210108349 -0.0525785454386437 0.606899158416871 2 -0.7601139795902 -0.304668615626148 0.572900617901603 1 -0.733452333193002 -0.336514477232792 0.589640973675494 1 -0.741844904939376 -0.309130269228437 0.594615332500126 2 -0.756853112662447 -0.345267947332587 0.553883371574549 1 -0.7716897685785 -0.320835280114706 0.548602757196227 2 -0.737879970748263 -0.358619865077157 0.571334961241901 2 -0.930642248075254 -0.187122600106023 0.314445973722752 1 -0.912413362884879 -0.237973650836086 0.332842748201691 1 -0.912843013555961 -0.200485339735419 0.355460579619301 2 -0.939964005642908 -0.210970517409892 0.26845018105367 1 -0.94171617446592 -0.180096489215336 0.284390237407392 2 -0.92509401608518 -0.258102605228232 0.278637125577729 1 -0.910936672445584 -0.270969510972757 0.311076650107886 2 -0.937269277691302 -0.24553314590659 0.247584904166674 2 -0.875191250640272 -0.373295184657657 0.305761482387946 1 -0.864190809675868 -0.362766764602056 0.347018917696973 1 -0.877650868607362 -0.352090932661831 0.324335027800179 2 -0.852863987552929 -0.401393147483693 0.332151565885293 1 -0.863209051547118 -0.401526168041639 0.305050191100899 2 -0.850397939158903 -0.38635631099462 0.356417972491478 2 -0.824255041963252 -0.564785023824519 0.0402770036136047 1 -0.818682471855148 -0.566143911977866 0.0956772183023713 1 -0.843893897105497 -0.531487540989224 0.0715321281357021 2 -0.792337148991556 -0.609010019660001 0.0379766799080495 1 -0.810099317086728 -0.586169304130555 0.0181113153213874 2 -0.782330914405735 -0.616830726067326 0.0869225297659466 1 -0.795323371019855 -0.59508989538432 0.115599822230034 2 -0.769383713920107 -0.636094914410853 0.0593078598418809 2 -0.927259255691333 -0.374369932584426 -0.00907536774347297 1 -0.906673622451017 -0.420046139730164 -0.0390788809758074 1 -0.910122224596616 -0.414107169034948 0.00741949254324374 2 -0.934935569055063 -0.350577505101469 -0.0553036898736489 1 -0.93862205603923 -0.344614414722322 -0.0207907439953319 2 -0.914352147354407 -0.396217221201813 -0.0839087906661383 1 -0.902066760536313 -0.425474195898273 -0.0736860999761803 2 -0.927606811267918 -0.360636927860322 -0.0972929943083461 2 -0.747759136846299 -0.62789593660032 0.213104715681447 1 -0.77274767335633 -0.592561641532344 0.224938672740169 1 -0.76716350798056 -0.608391243215776 0.201906677375896 2 -0.747530632601196 -0.612509599565071 0.25469768258373 1 -0.734622074920277 -0.634175382430647 0.239960016671812 2 -0.76624769514816 -0.590166523206455 0.253118195444448 2 -0.490202922077878 -0.828504477906585 0.270707691975615 1 -0.526390713087908 -0.79619901331519 0.298151185991918 1 -0.531447648223687 -0.80892522858469 0.250911315251701 2 -0.459948088460816 -0.829848476930362 0.316121277632361 1 -0.461136109569623 -0.84112214005841 0.282931970544934 2 -0.487438719420685 -0.801126374421324 0.347386784203442 1 -0.520442569200479 -0.784118261599423 0.338131782803655 2 -0.45562846605493 -0.816366667995225 0.355011705712815 2 -0.554594608415107 -0.830118231714408 0.0580906991598463 1 -0.511595563133774 -0.854593623307992 0.0892373791985288 1 -0.548560448418552 -0.829531113155162 0.104032718445364 2 -0.530173586021814 -0.847795778751723 0.0150528777191847 1 -0.558586413200576 -0.829209554096482 0.0244066738997235 2 -0.48821483485169 -0.871515199784101 0.0466407550738697 1 -0.482537329808473 -0.872358371108372 0.0795603607273876 2 -0.493356485976128 -0.869786773414031 0.00668988921390391 2 -0.55365266354554 -0.716559394670468 0.422868809024776 1 -0.584677603223772 -0.709879416441525 0.391259426160619 1 -0.561763709087516 -0.726037129292671 0.395898633364302 2 -0.58588752185949 -0.68692713051626 0.428605571798651 1 -0.563132347357109 -0.696594506749327 0.443919992454663 2 -0.600996737031654 -0.68943475192012 0.403707534068901 2 -0.279709342934015 -0.765969565758605 0.578880011144819 1 -0.269564499895982 -0.732314707482803 0.625358101573497 1 -0.308979168908775 -0.73752185171524 0.600381664005933 2 -0.229781120136239 -0.780231815134799 0.581820261420681 1 -0.258366646742593 -0.785759823829343 0.562173997558083 2 -0.220252946564019 -0.74692988177374 0.627421444423057 1 -0.24010701864588 -0.726309618759338 0.644210763484522 2 -0.195053369868194 -0.770460824048431 0.606899469367677 2 0.0548688181308799 -0.817058871012007 0.57290060170975 1 0.0933948982103103 -0.801543411490536 0.589641500580155 1 0.0647575367489856 -0.801062691356365 0.594615595393892 2 0.0944891150081434 -0.826504083119597 0.553883376132166 1 0.0666673204092863 -0.833063898744464 0.548602743446377 2 0.113050319715373 -0.812585360922485 0.571335251949411 2 -0.109620236184403 -0.942917107403994 0.314445956132323 1 -0.0556249018838565 -0.941294581649563 0.33284275754787 1 -0.0914110035994753 -0.930118218601705 0.355460560563804 2 -0.0898200717463723 -0.959152601009302 0.268450179386635 1 -0.119724333089568 -0.951277974383393 0.284390231603183 2 -0.0404000178376341 -0.95957503678694 0.278637150245083 1 -0.0237878144117005 -0.950086699990044 0.311076683771489 2 -0.0561163547466766 -0.967270137739094 0.247584913959426 2 0.08457597934012 -0.947710789782141 0.305761489981603 1 0.077962368703872 -0.933995131263471 0.347018922124235 1 0.0636493575549144 -0.943497728566872 0.324335040765048 2 0.118198050235732 -0.935159054750818 0.33215155860755 1 0.115127640656283 -0.945038951437852 0.305050187718512 2 0.104659181673197 -0.928167072410881 0.356417960232341 2 0.282433471647263 -0.958441464697329 0.0402770038969206 1 0.285448151760017 -0.953561361644423 0.0956772223070213 1 0.244697081231311 -0.966829436385166 0.071532132578915 2 0.334357336145018 -0.94175180310367 0.0379766770439271 1 0.307145688161385 -0.951586524386139 0.0181113138597848 2 0.344887343220492 -0.93465239764052 0.0869225259610953 1 0.320195509699853 -0.940290659481368 0.115599827965824 2 0.36720960996133 -0.928291451449859 0.0593078490661283 2 0.0695080329879988 -0.997562807196067 -0.00907536452575298 1 0.119310218655567 -0.992099550290716 -0.039078879299796 1 0.112596194774636 -0.993543889651598 0.00741950137348055 2 0.0445078003006302 -0.99751127206241 -0.0553036913443505 1 0.0376976079591841 -0.999174522427021 -0.0207907387849521 2 0.0942745903278268 -0.992038862781312 -0.0839087943107872 1 0.125896194769831 -0.98939565449688 -0.0736861023345788 2 0.0563397966817927 -0.993649608876367 -0.0972930032948871 2 0.366094198967004 -0.905191011367439 0.213104707293132 1 0.324767442816592 -0.918038242835162 0.224938683366921 1 0.341547701280215 -0.91761907240553 0.201906685001271 2 0.351531165837513 -0.900218908121097 0.254697668963822 1 0.376125591493126 -0.894637373753542 0.239959989000681 2 0.324498205231051 -0.911116010701876 0.253118189225872 2 0.636473194203538 -0.722232319214164 0.270707676661034 1 0.594566385611507 -0.746666227802297 0.298151190903607 1 0.605107031910699 -0.755408301430737 0.25091131069929 2 0.647100549925055 -0.693873278987822 0.31612177524714 1 0.657455480176329 -0.698487006052635 0.282932209640765 2 0.611289556713304 -0.711143351528361 0.347387791802982 1 0.58491523159977 -0.737276090598173 0.33813229450636 2 0.635613851174647 -0.685598786283667 0.355013219970525 2 0.618109885038958 -0.783971075549131 0.0580905959444453 1 0.654674958762382 -0.750639868088715 0.0892373235031786 1 0.619416258504363 -0.778051085788778 0.104032657829796 2 0.642468937693888 -0.766207674047241 0.0150528306337784 1 0.616012363990425 -0.787486669033618 0.024406625750121 2 0.677993413166625 -0.733632431241903 0.0466407052498857 1 0.680549626097203 -0.728493533059437 0.0795603292003809 2 0.67476087566847 -0.737988460586539 0.00668987184449117 2 0.510400421925704 -0.747983836286354 0.422868810450743 1 0.494460184913784 -0.775426120937372 0.391259416928741 1 0.516907953215935 -0.758626724501281 0.395898631690927 2 0.472257215005279 -0.769483865415332 0.428605566747855 1 0.488483475968193 -0.750829785204965 0.443920756857461 2 0.469973274175225 -0.784628655270264 0.403707519787131 2 0.642106340531689 -0.502650123993846 0.578869258139853 1 0.613266003073643 -0.482521862562207 0.625379265149453 1 0.605995657620715 -0.521675962137347 0.600405909281516 2 0.671121679976212 -0.459586224492647 0.581766294825656 1 0.667511945806704 -0.488499584072182 0.5621437815641 2 0.64258018351959 -0.440084676819442 0.627286165459136 1 0.616829785959582 -0.45252303866391 0.644148259979787 2 0.672734082627477 -0.42354855311418 0.606641878516464 2 0.794231167551444 -0.200581182993501 0.57251736771608 1 0.791720041133285 -0.159778706625819 0.58865234574498 1 0.782582386802245 -0.186877937406242 0.593374288978648 2 0.815478266006918 -0.165876085532801 0.553439971392606 1 0.813037743106128 -0.194237038051814 0.548304304351533 2 0.808159934924198 -0.144277390861119 0.570567389882626 2 0.86289305682602 -0.395635063521315 0.314443459274575 1 0.878034769452712 -0.343786473174423 0.332836164483257 1 0.856347062267319 -0.374371510160453 0.355449298116746 2 0.884452114657958 -0.381820128263637 0.268448154350373 1 0.867722225093247 -0.407827122009156 0.284388701370817 2 0.900125272641039 -0.334949467673681 0.278635123969095 1 0.896234697124349 -0.316221691322289 0.311072344030671 2 0.902587385592268 -0.352273854564016 0.247583639340942 2 0.927461812184634 -0.212423869469811 0.305760462593537 1 0.912373972841557 -0.214479431199481 0.347015416068904 1 0.916988183821417 -0.231026670965979 0.324332499954764 2 0.92591467571042 -0.176571195846294 0.332148035480268 1 0.934361969842663 -0.18254263202979 0.30504814584323 2 0.915082163339331 -0.187291600677 0.356409837969654 2 0.998809173217632 -0.0275639610111375 0.0402784027020771 1 0.995099483684333 -0.0231892200937805 0.0956785279891222 1 0.995125501733356 -0.0660460284700433 0.0715328647229851 2 0.99898139822937 0.0269761648947273 0.0379801760527674 1 0.999925949654554 -0.00194293956388213 0.0181132321271797 2 0.995482955992618 0.039185038236617 0.0869288391579484 1 0.993215308037873 0.0139588919990574 0.115603490506812 2 0.996331193826223 0.0623816205979255 0.0593174171260206 2 0.970218373682861 -0.242157610295819 -0.00907536659614604 1 0.980412321834535 -0.19310495850076 -0.0390788854083553 1 0.97971125579622 -0.199936909926372 0.00741952606344572 2 0.962443469951612 -0.265918084209505 -0.0553036922680395 1 0.961920908322736 -0.272909231112605 -0.0207907432059819 2 0.97261758006238 -0.216896266791711 -0.0839088006838263 1 0.979875368434163 -0.186005875912023 -0.0736861178432164 2 0.962427077373017 -0.253472034644654 -0.0972930023759382 2 0.974016522328782 0.0684560269205827 0.213109723543937 1 0.973464114923075 0.0251811645335979 0.224942189985461 1 0.97825115991692 0.0412706396501743 0.201909961531272 2 0.964785748635071 0.0561399558435 0.254710715112847 1 0.967074255739858 0.0812579457083441 0.239986956285642 2 0.966796846246912 0.0270615227096913 0.25312497253067 2 0.881564917232384 0.383982758964601 0.274655739104303 1 0.891832683566872 0.336542388465442 0.302198155675612 1 0.904235461084108 0.343258459969261 0.253614979596033 2 0.854780806110285 0.405889438115327 0.323566872325892 1 0.864257967760915 0.412662614251978 0.288039387028218 2 0.860082229146709 0.365256853595386 0.356209399344796 1 0.878762043423827 0.330792051460029 0.344096644321296 2 0.838844329351999 0.400511159163483 0.368638500364834 2 0.936557306323623 0.345710314150334 0.0582224254401967 1 0.91609612793897 0.390902545487363 0.0893989786525036 1 0.931275830707648 0.348868735828011 0.104323088030081 2 0.92720675908107 0.374337905476534 0.0151013921369534 1 0.93927544352844 0.342586722973857 0.0244909697768088 2 0.907156229418725 0.418286317641546 0.0466181997196921 1 0.903033416917489 0.422368131867949 0.0795135505301658 2 0.910328117680015 0.413803487631538 0.00666978165984957 2 0.868612469379363 0.254560156291052 0.423701413519184 1 0.889805760847588 0.230598206564073 0.392351981945211 1 0.880347632545944 0.25760262075668 0.39760983746535 2 0.877488683318152 0.210859750853204 0.429388069770247 1 0.864684715792638 0.231749268129594 0.444993377563321 2 0.891143505336918 0.204201036967213 0.404553460879527 2 -0.435016520193881 0.693301493001219 -0.573498921307794 1 -0.394782714395353 0.703053169083794 -0.590529901987972 1 -0.416903093746779 0.68600229540093 -0.595849939109104 2 -0.409058766261354 0.723744150701413 -0.554709289571337 1 -0.435434149451261 0.712462653526141 -0.549746653818536 2 -0.385714825427009 0.723458708360439 -0.572127418698976 2 -0.644977909556137 0.697095317342559 -0.313204695117426 1 -0.601612423676159 0.725908982869937 -0.33326915385643 1 -0.626295494233375 0.691106979273387 -0.3604369125981 2 -0.638119206062143 0.724620928308311 -0.260423426905541 1 -0.657934662814383 0.699383954010026 -0.279612762648475 2 -0.596910494956484 0.755170868562693 -0.271023442050207 1 -0.579298958543153 0.754676321837008 -0.308098520541491 2 -0.613967323941649 0.754582642053526 -0.231543526434916 2 -0.696860177993595 0.541865145229102 -0.469908107464872 1 -0.717519247595595 0.557649013898848 -0.417399802533848 1 -0.68443246714911 0.578316929854559 -0.443812757262983 2 -0.728952485318273 0.500272432784659 -0.467358310006824 1 -0.704760331676553 0.514586320336542 -0.488587520530686 2 -0.748641876011539 0.516555772563359 -0.415659763989873 1 -0.741171443109041 0.542377804008667 -0.395824253718536 2 -0.757300325504336 0.48423624090914 -0.438161191399729 2 -0.487917419093446 0.817007816960906 -0.305364303193524 1 -0.485717667948126 0.801421419431493 -0.347381249607869 1 -0.502978637351253 0.80097531916759 -0.323906853904958 2 -0.453192090092159 0.826391762390446 -0.33244399878306 1 -0.460879802982204 0.833002631096647 -0.305128501609123 2 -0.460532950219166 0.812430441079701 -0.356883729089967 2 -0.324680545779656 0.94481377164761 -0.0442544342481074 1 -0.317590880660981 0.942984978744602 -0.0993619305425444 1 -0.355206457390667 0.931451760686775 -0.0782394645273427 2 -0.270172520205305 0.962093760020025 -0.0379768403322153 1 -0.30064983978575 0.953612070510105 -0.0199382011167666 2 -0.256471652857697 0.962510189674402 -0.0883751445803261 1 -0.281743418253572 0.952211809720827 -0.118010730681172 2 -0.228648959604012 0.971775045732294 -0.0575120796490485 2 -0.234386880744557 0.947842305887374 -0.213241286977605 1 -0.274367551885895 0.93416061583093 -0.22567592076459 1 -0.259545796815091 0.943943527903625 -0.202632399037694 2 -0.243448323745056 0.935013465424745 -0.255541407186772 1 -0.2202771287162 0.944852320130013 -0.241102355020181 2 -0.271155289270574 0.928160697304385 -0.253930506232859 2 0.0902856216542936 0.956964171132466 -0.275778551513052 1 0.0420924825804909 0.95112313433689 -0.305789189680181 1 0.0456320654326238 0.963381648836374 -0.263896462426903 2 0.115196414031355 0.940713699743132 -0.319209169239876 1 0.120678233279376 0.950584483702982 -0.286300456919419 2 0.0763975566600194 0.933417716585015 -0.350641181291651 1 0.03983604950985 0.938421516935098 -0.343186549723696 2 0.110913251401025 0.927454374138829 -0.357191046845575 2 -0.0260291092564546 0.905171881700638 -0.422828303067709 1 -0.0552572934452759 0.917477889717673 -0.392462744519513 1 -0.0272416544018152 0.917033782641436 -0.397163987880556 2 -0.069767726221639 0.899964772923078 -0.428964913479788 1 -0.045630154712335 0.894556050596959 -0.443953718251915 2 -0.0805780551042013 0.910631638059268 -0.404644576303674 2 0.224015823187418 0.784084560783738 -0.578857749076856 1 0.212522738685576 0.750841513163793 -0.625374882269175 1 0.183623106620017 0.778242438142357 -0.600404377505389 2 0.27281336733565 0.766302867531807 -0.581746590892287 1 0.252889296866647 0.787579853164335 -0.562116638638162 2 0.261183708988836 0.733742582520393 -0.627277736224898 1 0.233039769094489 0.728666196843263 -0.644144127766199 2 0.295303095655182 0.738092834057155 -0.606625231915243 2 -0.793796410145454 -0.199485127929166 -0.57349840239241 1 -0.790638239702137 -0.15821188061402 -0.590527867372124 1 -0.781257585923704 -0.184516373223869 -0.59584838106955 2 -0.81472746166555 -0.165392786129087 -0.554708266996154 1 -0.812148388403505 -0.193961585914497 -0.549746091649582 2 -0.807242545312857 -0.143284949402365 -0.572125044616495 2 -0.862285839018266 -0.397996477813516 -0.31320468751044 1 -0.876288672474655 -0.347849174940534 -0.333269151882356 1 -0.850817436913397 -0.382078800279969 -0.360436647909829 2 -0.886344972634036 -0.382967230233848 -0.260423429674928 1 -0.868466537463777 -0.409611490125771 -0.279612760774691 2 -0.902665349362466 -0.334335371594129 -0.271023439503138 1 -0.896752896120525 -0.317738534439333 -0.308098513077947 2 -0.907376969784246 -0.350738906641718 -0.231543528743302 2 -0.730685992088709 -0.495307536317926 -0.469908088804174 1 -0.752081206636262 -0.510078230688618 -0.417399809615126 1 -0.761513136027433 -0.472224171024813 -0.443812485492351 2 -0.701045671946922 -0.538682115951252 -0.467358324194351 1 -0.707183325959451 -0.511250710787079 -0.488587518490096 2 -0.722616920798896 -0.552376363465096 -0.415659784504281 1 -0.744866565729387 -0.537292066544723 -0.395824274921337 2 -0.694554487675896 -0.57059828281174 -0.438161216686989 2 -0.927796055013325 -0.211567573500114 -0.30536431187436 1 -0.912292284290597 -0.214292369522711 -0.347381253019658 1 -0.917202118072898 -0.230846363326453 -0.323906874727838 2 -0.925989432513827 -0.175642242967916 -0.332443994284074 1 -0.934652624479851 -0.180910724833133 -0.30512851380238 2 -0.914979698593328 -0.186938619809104 -0.356883979788091 2 -0.998902142857587 -0.0168255053316839 -0.0442552832806882 1 -0.994972420498982 -0.0106480651410322 -0.0993627209539959 1 -0.995627694122148 -0.0499868387764307 -0.0782398737816011 2 -0.998492807859424 0.0403551022741992 -0.0379790607128527 1 -0.999844314117496 0.00874811487821423 -0.0199394213733967 2 -0.994655427831753 0.053513910634144 -0.0883789433256689 1 -0.992670696034032 0.0262962647287234 -0.118013120920066 2 -0.994868896485213 0.0828387254729988 -0.0575178138945045 2 -0.973880552023647 0.0699834560904671 -0.213245308139484 1 -0.973223075788005 0.0277315233213359 -0.225680444252218 1 -0.977947666001147 0.0448515491677615 -0.202635453326033 2 -0.964475906110662 0.0573983763367414 -0.255558450212611 1 -0.966669500170689 0.0824746657274534 -0.241135770946211 2 -0.966522140130675 0.0289307997024681 -0.253941296898199 2 -0.880314952963032 0.381820340440157 -0.281616154204947 1 -0.889488501255264 0.335296624400789 -0.310391962367176 1 -0.900956158444204 0.341338155592654 -0.267697488450559 2 -0.853940198089249 0.40468170893634 -0.327227887723103 1 -0.863582564027021 0.410761467261004 -0.292684319676704 2 -0.858907813820769 0.36432554742929 -0.359940497882434 1 -0.876935717248301 0.329899342690427 -0.349517948250249 2 -0.838129969063736 0.39969887592374 -0.371096851674515 2 -0.868380215106126 0.254569293639571 -0.424171980889898 1 -0.889190296785596 0.230699421165708 -0.393672794039836 1 -0.879656726057851 0.257528519122295 -0.399167745388852 2 -0.877201038823324 0.210912602019264 -0.429940607963232 1 -0.864490599872129 0.231799987841026 -0.445333689920181 2 -0.890654775358344 0.20429491420794 -0.405564997933314 2 -0.0555749351747339 -0.816589553144712 -0.573498400520904 1 -0.093851943695469 -0.800831663680619 -0.590527837429314 1 -0.0659360935400627 -0.800038460860635 -0.595848344018334 2 -0.0944664962458506 -0.825961447292389 -0.554708295543863 1 -0.066498966459242 -0.832336915508951 -0.54974613387111 2 -0.113179249476006 -0.812010812481119 -0.572125050644419 2 0.112055869046152 -0.943070587837181 -0.313204694775036 1 0.0600361237547085 -0.94089165720676 -0.333269158950779 1 0.100461368157051 -0.927244309068973 -0.360436654888401 2 0.0903275085490394 -0.961307743457967 -0.260423424381056 1 0.121192717893297 -0.952537818288908 -0.279612765010291 2 0.0390326289746048 -0.961801311447337 -0.271023443076737 1 0.0250753123417841 -0.951049404461524 -0.30809852923694 2 0.0531774762110098 -0.971351049052461 -0.231543518005975 2 0.245270862636384 -0.847982250997092 -0.469908094111122 1 0.252706730984072 -0.872894974270975 -0.41739981213928 1 0.213791059392468 -0.870167353237941 -0.443812480147927 2 0.295681791527834 -0.833196261677297 -0.467358320828312 1 0.267696650792015 -0.830556710054215 -0.488587527877958 2 0.302039668383719 -0.857943246656762 -0.415659777354732 1 0.28081842438715 -0.874442806154526 -0.395824280614167 2 0.328041767362855 -0.836885172685578 -0.43816119572988 2 -0.0854919872757692 -0.947764110307198 -0.305364297630593 1 -0.0781098705713613 -0.933861866275469 -0.347381257927196 1 -0.0638831653682182 -0.943646507361804 -0.323906856912655 2 -0.119100738741274 -0.934944728440671 -0.332443995771341 1 -0.116766905428407 -0.944811753834134 -0.30512849490052 2 -0.104955117503743 -0.927964934564683 -0.356883991445626 2 -0.292675724334732 -0.955212374163377 -0.0442552835142689 1 -0.297336436992328 -0.949566085376951 -0.0993627263634264 1 -0.260125625414737 -0.962345598418532 -0.0782398809321441 2 -0.346931273299645 -0.937153263526533 -0.0379790623087527 1 -0.317288973450647 -0.948205631653768 -0.0199394178383894 2 -0.358259947058249 -0.929437185432936 -0.0883789491369804 1 -0.331761198437579 -0.935960157510845 -0.118013134038996 2 -0.386215678015461 -0.920578085181986 -0.0575178185432725 2 -0.367503830790798 -0.904589745683684 -0.21324531078893 1 -0.327116617450274 -0.917020706563139 -0.225680437964229 1 -0.344858680351234 -0.916223586676545 -0.202635443048074 2 -0.352628510854533 -0.899534209712904 -0.255558458437501 1 -0.377155433926784 -0.893871297808669 -0.241135787569043 2 -0.326186597018692 -0.910277017809984 -0.253941305260065 2 -0.635165624474211 -0.719240297129128 -0.281616171005022 1 -0.593753695763482 -0.742341613876872 -0.310391983972547 1 -0.603043205745293 -0.751381176173606 -0.267697519303359 2 -0.648757459972914 -0.687091338411958 -0.327227870000281 1 -0.657519449845521 -0.694383251611734 -0.292684325639317 2 -0.611911682663078 -0.704286492385762 -0.359940490992989 1 -0.584741227900529 -0.73207093895708 -0.34951796793353 2 -0.639132611878601 -0.673594774355072 -0.3710968245797 2 -0.510454176059087 -0.747212472856023 -0.424171986716096 1 -0.494183413778347 -0.774380134126347 -0.393672796191907 1 -0.516753133447198 -0.75702276615954 -0.399167762102539 2 -0.471660267747985 -0.769092103137885 -0.429940594264224 1 -0.487597250360236 -0.750549167923856 -0.445333693713831 2 -0.469523678376265 -0.783932172859034 -0.405564984180536 2 0.759448811078782 -0.305194465411371 -0.573499392599886 1 0.732633611436922 -0.336728227786137 -0.590529372296887 1 0.740504940712535 -0.309933103805153 -0.595851426984947 2 0.756343562836741 -0.345078421876792 -0.554708785652122 1 0.771049419145043 -0.320450027570722 -0.549746853353256 2 0.737293350751626 -0.358564324393838 -0.572126064716263 2 0.931540006242218 -0.184853332450526 -0.313205700286118 1 0.913393138242111 -0.233653522697993 -0.333270160801515 1 0.912905545875178 -0.19098943538871 -0.360438440847774 2 0.942170654900216 -0.211153634694047 -0.260423940155978 1 0.943367595414848 -0.179089179298857 -0.279613275595598 2 0.926789347259837 -0.260090592264933 -0.271024451039435 1 0.912250468840218 -0.270042042008424 -0.308099286345174 2 0.940242835204837 -0.249588905118949 -0.231544041063207 2 0.88226677890582 -0.0287733445257911 -0.469917648094502 1 0.908260293731309 -0.0293986157386112 -0.417404885219254 1 0.893640308731032 -0.06556803159574 -0.443818836988425 2 0.883780391058576 0.023744795354806 -0.467371667005727 1 0.872619820821337 -0.00205788360102597 -0.488604119347608 2 0.909283210633879 0.0221444773684044 -0.415669295428305 1 0.918419393544608 -0.00313958750412276 -0.395829861430009 2 0.897284811839704 0.0533910343017363 -0.438181330024377 2 0.874958979865596 -0.374183246393166 -0.305364302543921 1 0.864017975359464 -0.362866328655356 -0.34738125939458 1 0.877720100168293 -0.352359332526304 -0.323906861640368 2 0.852381207127123 -0.402185682684768 -0.332444002045179 1 0.862486667893961 -0.403015100497414 -0.30512850669196 2 0.850114103709422 -0.386575287276321 -0.356883994800729 2 0.818018731351805 -0.57352834691297 -0.0442552839922873 1 0.811208576049968 -0.57621611232496 -0.0993627247688006 1 0.834861368987045 -0.544775362327698 -0.0782398770134549 2 0.784077642228981 -0.619547447290391 -0.0379790594994938 1 0.803749226215165 -0.594771244931463 -0.0199394180084351 2 0.773238532133439 -0.627937482415182 -0.0883789469248613 1 0.787630943006673 -0.604751295039993 -0.118013131834915 2 0.756174439044978 -0.651787091525917 -0.0575178151632875 2 0.746750638103385 -0.629050368290579 -0.213245305145043 1 0.77105356825832 -0.594481616380729 -0.225680436276288 1 0.764813034783559 -0.611108753504385 -0.202635437665604 2 0.746539568700835 -0.613341258895915 -0.255558462419076 1 0.733574727381196 -0.634917684369955 -0.24113578058911 2 0.764927875437134 -0.59151330400215 -0.253941304986913 2 0.487761405499341 -0.826335724144145 -0.281616167116769 1 0.522528918287385 -0.79408883920929 -0.310391963751116 1 0.528255332956228 -0.805717289690558 -0.267697502251367 2 0.452986228596909 -0.829328134791848 -0.327227898242843 1 0.45721348222077 -0.839914530627599 -0.292684338650783 2 0.480725873594873 -0.799598906836829 -0.359940490634658 1 0.515546027139064 -0.782344041100352 -0.349517944425604 2 0.443124373109749 -0.816003642658414 -0.371096860047652 2 0.552902178021523 -0.716372507113174 -0.424171991681991 1 0.583767724079703 -0.709293043725354 -0.393672786753599 1 0.560285575620299 -0.725394553017411 -0.399167751272166 2 0.58569881886451 -0.686238053762757 -0.429940597483134 1 0.563138769139024 -0.695665252588685 -0.445333699684694 2 0.600472826292655 -0.688791892920508 -0.40556498259813 2 0.52465100346225 0.629110477951097 -0.572514922815177 1 0.546602771943799 0.594624634177458 -0.588649879131216 1 0.523280532956766 0.61117772558384 -0.593372660987033 2 0.562250818460634 0.613518647671735 -0.553430072381255 1 0.543619373154159 0.635026420379378 -0.548284204748865 2 0.569019730870184 0.591744512259101 -0.570561458390989 2 0.469894828341962 0.826457541009187 -0.310185424259686 1 0.511250405079164 0.794153217132695 -0.328481711083253 1 0.475577743004271 0.805816580989926 -0.352677612562901 2 0.495232380262757 0.829406566774006 -0.258627757630836 1 0.466168051687632 0.840039550969226 -0.277820130741937 2 0.536901706387914 0.799647787264883 -0.26891220307932 1 0.543140344985161 0.782388535714476 -0.304763141944359 2 0.530085756342941 0.816050908709626 -0.230226872953598 2 0.62658827899016 0.716364093486605 -0.304997315546615 1 0.613043803887873 0.709305612209901 -0.346302179430451 1 0.607513488708903 0.725406241105993 -0.322748717635252 2 0.646296168547139 0.68621101955439 -0.332014763094659 1 0.650065612824447 0.695614942833534 -0.304849662031098 2 0.631068281095546 0.688812299570594 -0.356058532064933 2 0.798201630097267 0.600788702019049 -0.0444598972091841 1 0.798656837888674 0.593477865656478 -0.0994427142973882 1 0.776071999493271 0.625672263759943 -0.0783777973056776 2 0.831434975512567 0.554366342818261 -0.0381202408082288 1 0.813946177830118 0.580731674152118 -0.020165151904563 2 0.836109485298457 0.54139641890688 -0.0884550072867506 1 0.81851656074652 0.562231908671042 -0.11806583438498 2 0.85349679063986 0.517840394714704 -0.0576087950618791 2 0.829020587273488 0.51581645101984 -0.213243794033172 1 0.803653176269079 0.549613957065995 -0.22567743777125 1 0.81753540438593 0.538542345476573 -0.202637896569592 2 0.814016694937687 0.520470293896412 -0.255551931670224 1 0.830529891947216 0.501472167675537 -0.241131988172845 2 0.798940442498489 0.544703612031233 -0.253930194599935 2 0.936616930032833 0.208540744823781 -0.281619207268213 1 0.916692018288264 0.251572314988661 -0.310395468216558 1 0.929521237806935 0.253424379066151 -0.267699281993454 2 0.928714308557607 0.174547394461924 -0.327235885610902 1 0.940090752236461 0.17529289587213 -0.292688632156144 2 0.909008768439129 0.210121246446206 -0.35995317471952 1 0.903361026759428 0.248564705583994 -0.349525552793112 2 0.912987503345906 0.169297484518944 -0.371116379420569 2 0.85216397224019 0.3044772091279 -0.424173066527003 1 0.854969035060966 0.336021238913787 -0.393671817904937 1 0.863026315210892 0.308710346773097 -0.399168857875934 2 0.833630382027718 0.345001689548415 -0.42994071885602 1 0.835612203479074 0.320646642382121 -0.445349034035602 2 0.840629615842734 0.358255237228075 -0.405561074401228 2 QuadrilateralsQ2 1980 124 485 483 484 1983 1984 1985 1986 1987 0 485 125 665 483 1988 1989 1990 1984 1991 0 484 483 673 123 1985 1992 1993 1994 1995 0 483 665 33 673 1990 1996 1997 1992 1998 0 127 488 486 487 1999 2000 2001 2002 2003 0 488 128 681 486 2004 2005 2006 2000 2007 0 487 486 689 126 2001 2008 2009 2010 2011 0 486 681 36 689 2006 2012 2013 2008 2014 0 130 491 489 490 2015 2016 2017 2018 2019 0 491 131 697 489 2020 2021 2022 2016 2023 0 490 489 705 129 2017 2024 2025 2026 2027 0 489 697 39 705 2022 2028 2029 2024 2030 0 133 494 492 493 2031 2032 2033 2034 2035 0 494 134 713 492 2036 2037 2038 2032 2039 0 493 492 721 132 2033 2040 2041 2042 2043 0 492 713 42 721 2038 2044 2045 2040 2046 0 136 497 495 496 2047 2048 2049 2050 2051 0 497 137 729 495 2052 2053 2054 2048 2055 0 496 495 737 135 2049 2056 2057 2058 2059 0 495 729 45 737 2054 2060 2061 2056 2062 0 139 500 498 499 2063 2064 2065 2066 2067 0 500 140 745 498 2068 2069 2070 2064 2071 0 499 498 753 138 2065 2072 2073 2074 2075 0 498 745 48 753 2070 2076 2077 2072 2078 0 142 503 501 502 2079 2080 2081 2082 2083 0 503 143 761 501 2084 2085 2086 2080 2087 0 502 501 771 141 2081 2088 2089 2090 2091 0 501 761 51 771 2086 2092 2093 2088 2094 0 145 506 504 505 2095 2096 2097 2098 2099 0 506 146 781 504 2100 2101 2102 2096 2103 0 505 504 789 144 2097 2104 2105 2106 2107 0 504 781 53 789 2102 2108 2109 2104 2110 0 148 509 507 508 2111 2112 2113 2114 2115 0 509 149 797 507 2116 2117 2118 2112 2119 0 508 507 805 147 2113 2120 2121 2122 2123 0 507 797 56 805 2118 2124 2125 2120 2126 0 151 512 510 511 2127 2128 2129 2130 2131 0 512 152 813 510 2132 2133 2134 2128 2135 0 511 510 821 150 2129 2136 2137 2138 2139 0 510 813 59 821 2134 2140 2141 2136 2142 0 154 515 513 514 2143 2144 2145 2146 2147 0 515 155 829 513 2148 2149 2150 2144 2151 0 514 513 837 153 2145 2152 2153 2154 2155 0 513 829 62 837 2150 2156 2157 2152 2158 0 157 518 516 517 2159 2160 2161 2162 2163 0 518 158 845 516 2164 2165 2166 2160 2167 0 517 516 855 156 2161 2168 2169 2170 2171 0 516 845 65 855 2166 2172 2173 2168 2174 0 160 521 519 520 2175 2176 2177 2178 2179 0 521 161 867 519 2180 2181 2182 2176 2183 0 520 519 878 159 2177 2184 2185 2186 2187 0 519 867 35 878 2182 2188 2189 2184 2190 0 163 524 522 523 2191 2192 2193 2194 2195 0 524 164 891 522 2196 2197 2198 2192 2199 0 523 522 902 162 2193 2200 2201 2202 2203 0 522 891 67 902 2198 2204 2205 2200 2206 0 166 527 525 526 2207 2208 2209 2210 2211 0 527 167 915 525 2212 2213 2214 2208 2215 0 526 525 926 165 2209 2216 2217 2218 2219 0 525 915 68 926 2214 2220 2221 2216 2222 0 169 530 528 529 2223 2224 2225 2226 2227 0 530 170 940 528 2228 2229 2230 2224 2231 0 529 528 952 168 2225 2232 2233 2234 2235 0 528 940 69 952 2230 2236 2237 2232 2238 0 172 533 531 532 2239 2240 2241 2242 2243 0 533 173 967 531 2244 2245 2246 2240 2247 0 532 531 978 171 2241 2248 2249 2250 2251 0 531 967 38 978 2246 2252 2253 2248 2254 0 175 536 534 535 2255 2256 2257 2258 2259 0 536 176 991 534 2260 2261 2262 2256 2263 0 535 534 1002 174 2257 2264 2265 2266 2267 0 534 991 70 1002 2262 2268 2269 2264 2270 0 178 539 537 538 2271 2272 2273 2274 2275 0 539 179 1015 537 2276 2277 2278 2272 2279 0 538 537 1026 177 2273 2280 2281 2282 2283 0 537 1015 71 1026 2278 2284 2285 2280 2286 0 181 542 540 541 2287 2288 2289 2290 2291 0 542 182 1040 540 2292 2293 2294 2288 2295 0 541 540 1052 180 2289 2296 2297 2298 2299 0 540 1040 72 1052 2294 2300 2301 2296 2302 0 184 545 543 544 2303 2304 2305 2306 2307 0 545 185 1067 543 2308 2309 2310 2304 2311 0 544 543 1076 183 2305 2312 2313 2314 2315 0 543 1067 41 1076 2310 2316 2317 2312 2318 0 187 548 546 547 2319 2320 2321 2322 2323 0 548 188 1087 546 2324 2325 2326 2320 2327 0 547 546 1096 186 2321 2328 2329 2330 2331 0 546 1087 74 1096 2326 2332 2333 2328 2334 0 190 551 549 550 2335 2336 2337 2338 2339 0 551 191 1107 549 2340 2341 2342 2336 2343 0 550 549 1116 189 2337 2344 2345 2346 2347 0 549 1107 76 1116 2342 2348 2349 2344 2350 0 193 554 552 553 2351 2352 2353 2354 2355 0 554 194 1128 552 2356 2357 2358 2352 2359 0 553 552 1138 192 2353 2360 2361 2362 2363 0 552 1128 78 1138 2358 2364 2365 2360 2366 0 196 557 555 556 2367 2368 2369 2370 2371 0 557 197 1151 555 2372 2373 2374 2368 2375 0 556 555 1162 195 2369 2376 2377 2378 2379 0 555 1151 44 1162 2374 2380 2381 2376 2382 0 199 560 558 559 2383 2384 2385 2386 2387 0 560 200 1175 558 2388 2389 2390 2384 2391 0 559 558 1184 198 2385 2392 2393 2394 2395 0 558 1175 80 1184 2390 2396 2397 2392 2398 0 202 563 561 562 2399 2400 2401 2402 2403 0 563 203 1195 561 2404 2405 2406 2400 2407 0 562 561 1204 201 2401 2408 2409 2410 2411 0 561 1195 82 1204 2406 2412 2413 2408 2414 0 205 566 564 565 2415 2416 2417 2418 2419 0 566 206 1216 564 2420 2421 2422 2416 2423 0 565 564 1226 204 2417 2424 2425 2426 2427 0 564 1216 84 1226 2422 2428 2429 2424 2430 0 208 569 567 568 2431 2432 2433 2434 2435 0 569 209 1239 567 2436 2437 2438 2432 2439 0 568 567 1250 207 2433 2440 2441 2442 2443 0 567 1239 47 1250 2438 2444 2445 2440 2446 0 211 572 570 571 2447 2448 2449 2450 2451 0 572 212 1263 570 2452 2453 2454 2448 2455 0 571 570 1272 210 2449 2456 2457 2458 2459 0 570 1263 86 1272 2454 2460 2461 2456 2462 0 214 575 573 574 2463 2464 2465 2466 2467 0 575 215 1283 573 2468 2469 2470 2464 2471 0 574 573 1292 213 2465 2472 2473 2474 2475 0 573 1283 88 1292 2470 2476 2477 2472 2478 0 217 578 576 577 2479 2480 2481 2482 2483 0 578 218 1304 576 2484 2485 2486 2480 2487 0 577 576 1314 216 2481 2488 2489 2490 2491 0 576 1304 90 1314 2486 2492 2493 2488 2494 0 220 581 579 580 2495 2496 2497 2498 2499 0 581 221 1327 579 2500 2501 2502 2496 2503 0 580 579 1338 219 2497 2504 2505 2506 2507 0 579 1327 50 1338 2502 2508 2509 2504 2510 0 223 584 582 583 2511 2512 2513 2514 2515 0 584 224 1351 582 2516 2517 2518 2512 2519 0 583 582 1360 222 2513 2520 2521 2522 2523 0 582 1351 92 1360 2518 2524 2525 2520 2526 0 226 587 585 586 2527 2528 2529 2530 2531 0 587 227 1371 585 2532 2533 2534 2528 2535 0 586 585 1380 225 2529 2536 2537 2538 2539 0 585 1371 94 1380 2534 2540 2541 2536 2542 0 229 590 588 589 2543 2544 2545 2546 2547 0 590 230 1392 588 2548 2549 2550 2544 2551 0 589 588 1402 228 2545 2552 2553 2554 2555 0 588 1392 96 1402 2550 2556 2557 2552 2558 0 232 593 591 592 2559 2560 2561 2562 2563 0 593 233 1415 591 2564 2565 2566 2560 2567 0 592 591 1426 231 2561 2568 2569 2570 2571 0 591 1415 52 1426 2566 2572 2573 2568 2574 0 235 596 594 595 2575 2576 2577 2578 2579 0 596 236 1439 594 2580 2581 2582 2576 2583 0 595 594 1448 234 2577 2584 2585 2586 2587 0 594 1439 98 1448 2582 2588 2589 2584 2590 0 238 599 597 598 2591 2592 2593 2594 2595 0 599 239 1459 597 2596 2597 2598 2592 2599 0 598 597 1468 237 2593 2600 2601 2602 2603 0 597 1459 100 1468 2598 2604 2605 2600 2606 0 241 602 600 601 2607 2608 2609 2610 2611 0 602 242 1480 600 2612 2613 2614 2608 2615 0 601 600 1492 240 2609 2616 2617 2618 2619 0 600 1480 102 1492 2614 2620 2621 2616 2622 0 244 605 603 604 2623 2624 2625 2626 2627 0 605 245 1507 603 2628 2629 2630 2624 2631 0 604 603 1516 243 2625 2632 2633 2634 2635 0 603 1507 55 1516 2630 2636 2637 2632 2638 0 247 608 606 607 2639 2640 2641 2642 2643 0 608 248 1527 606 2644 2645 2646 2640 2647 0 607 606 1538 246 2641 2648 2649 2650 2651 0 606 1527 104 1538 2646 2652 2653 2648 2654 0 250 611 609 610 2655 2656 2657 2658 2659 0 611 251 1551 609 2660 2661 2662 2656 2663 0 610 609 1562 249 2657 2664 2665 2666 2667 0 609 1551 105 1562 2662 2668 2669 2664 2670 0 253 614 612 613 2671 2672 2673 2674 2675 0 614 254 1576 612 2676 2677 2678 2672 2679 0 613 612 1586 252 2673 2680 2681 2682 2683 0 612 1576 106 1586 2678 2684 2685 2680 2686 0 256 617 615 616 2687 2688 2689 2690 2691 0 617 257 1599 615 2692 2693 2694 2688 2695 0 616 615 1608 255 2689 2696 2697 2698 2699 0 615 1599 58 1608 2694 2700 2701 2696 2702 0 259 620 618 619 2703 2704 2705 2706 2707 0 620 260 1619 618 2708 2709 2710 2704 2711 0 619 618 1630 258 2705 2712 2713 2714 2715 0 618 1619 109 1630 2710 2716 2717 2712 2718 0 262 623 621 622 2719 2720 2721 2722 2723 0 623 263 1643 621 2724 2725 2726 2720 2727 0 622 621 1654 261 2721 2728 2729 2730 2731 0 621 1643 110 1654 2726 2732 2733 2728 2734 0 265 626 624 625 2735 2736 2737 2738 2739 0 626 266 1668 624 2740 2741 2742 2736 2743 0 625 624 1680 264 2737 2744 2745 2746 2747 0 624 1668 111 1680 2742 2748 2749 2744 2750 0 268 629 627 628 2751 2752 2753 2754 2755 0 629 269 1695 627 2756 2757 2758 2752 2759 0 628 627 1704 267 2753 2760 2761 2762 2763 0 627 1695 61 1704 2758 2764 2765 2760 2766 0 271 632 630 631 2767 2768 2769 2770 2771 0 632 272 1715 630 2772 2773 2774 2768 2775 0 631 630 1726 270 2769 2776 2777 2778 2779 0 630 1715 113 1726 2774 2780 2781 2776 2782 0 274 635 633 634 2783 2784 2785 2786 2787 0 635 275 1739 633 2788 2789 2790 2784 2791 0 634 633 1750 273 2785 2792 2793 2794 2795 0 633 1739 114 1750 2790 2796 2797 2792 2798 0 277 638 636 637 2799 2800 2801 2802 2803 0 638 278 1764 636 2804 2805 2806 2800 2807 0 637 636 1776 276 2801 2808 2809 2810 2811 0 636 1764 115 1776 2806 2812 2813 2808 2814 0 280 641 639 640 2815 2816 2817 2818 2819 0 641 281 1791 639 2820 2821 2822 2816 2823 0 640 639 1800 279 2817 2824 2825 2826 2827 0 639 1791 64 1800 2822 2828 2829 2824 2830 0 283 644 642 643 2831 2832 2833 2834 2835 0 644 284 1811 642 2836 2837 2838 2832 2839 0 643 642 1822 282 2833 2840 2841 2842 2843 0 642 1811 117 1822 2838 2844 2845 2840 2846 0 286 647 645 646 2847 2848 2849 2850 2851 0 647 287 1835 645 2852 2853 2854 2848 2855 0 646 645 1846 285 2849 2856 2857 2858 2859 0 645 1835 118 1846 2854 2860 2861 2856 2862 0 289 650 648 649 2863 2864 2865 2866 2867 0 650 290 1860 648 2868 2869 2870 2864 2871 0 649 648 1872 288 2865 2872 2873 2874 2875 0 648 1860 119 1872 2870 2876 2877 2872 2878 0 292 653 651 652 2879 2880 2881 2882 2883 0 653 293 1887 651 2884 2885 2886 2880 2887 0 652 651 1898 291 2881 2888 2889 2890 2891 0 651 1887 66 1898 2886 2892 2893 2888 2894 0 295 656 654 655 2895 2896 2897 2898 2899 0 656 296 1911 654 2900 2901 2902 2896 2903 0 655 654 1922 294 2897 2904 2905 2906 2907 0 654 1911 120 1922 2902 2908 2909 2904 2910 0 298 659 657 658 2911 2912 2913 2914 2915 0 659 299 1935 657 2916 2917 2918 2912 2919 0 658 657 1946 297 2913 2920 2921 2922 2923 0 657 1935 121 1946 2918 2924 2925 2920 2926 0 301 662 660 661 2927 2928 2929 2930 2931 0 662 302 1960 660 2932 2933 2934 2928 2935 0 661 660 1972 300 2929 2936 2937 2938 2939 0 660 1960 122 1972 2934 2940 2941 2936 2942 0 125 667 663 664 2943 2944 2945 2946 2947 0 667 304 864 663 2948 2949 2950 2944 2951 0 664 663 936 303 2945 2952 2953 2954 2955 0 663 864 21 936 2950 2956 2957 2952 2958 0 123 672 669 670 2959 2960 2961 2962 2963 0 672 306 956 669 2964 2965 2966 2960 2967 0 670 669 773 305 2961 2968 2969 2970 2971 0 669 956 5 773 2966 2972 2973 2968 2974 0 124 677 674 675 2975 2976 2977 2978 2979 0 677 308 766 674 2980 2981 2982 2976 2983 0 675 674 872 307 2977 2984 2985 2986 2987 0 674 766 1 872 2982 2988 2989 2984 2990 0 128 683 679 680 2991 2992 2993 2994 2995 0 683 310 964 679 2996 2997 2998 2992 2999 0 680 679 1036 309 2993 3000 3001 3002 3003 0 679 964 22 1036 2998 3004 3005 3000 3006 0 126 688 685 686 3007 3008 3009 3010 3011 0 688 312 1056 685 3012 3013 3014 3008 3015 0 686 685 857 311 3009 3016 3017 3018 3019 0 685 1056 6 857 3014 3020 3021 3016 3022 0 127 693 690 691 3023 3024 3025 3026 3027 0 693 314 850 690 3028 3029 3030 3024 3031 0 691 690 972 313 3025 3032 3033 3034 3035 0 690 850 10 972 3030 3036 3037 3032 3038 0 131 699 695 696 3039 3040 3041 3042 3043 0 699 316 1064 695 3044 3045 3046 3040 3047 0 696 695 1124 315 3041 3048 3049 3050 3051 0 695 1064 23 1124 3046 3052 3053 3048 3054 0 129 704 701 702 3055 3056 3057 3058 3059 0 704 318 1141 701 3060 3061 3062 3056 3063 0 702 701 881 317 3057 3064 3065 3066 3067 0 701 1141 2 881 3062 3068 3069 3064 3070 0 130 709 706 707 3071 3072 3073 3074 3075 0 709 320 873 706 3076 3077 3078 3072 3079 0 707 706 1072 319 3073 3080 3081 3082 3083 0 706 873 1 1072 3078 3084 3085 3080 3086 0 134 715 711 712 3087 3088 3089 3090 3091 0 715 322 1148 711 3092 3093 3094 3088 3095 0 712 711 1212 321 3089 3096 3097 3098 3099 0 711 1148 24 1212 3094 3100 3101 3096 3102 0 132 720 717 718 3103 3104 3105 3106 3107 0 720 324 1229 717 3108 3109 3110 3104 3111 0 718 717 905 323 3105 3112 3113 3114 3115 0 717 1229 3 905 3110 3116 3117 3112 3118 0 133 725 722 723 3119 3120 3121 3122 3123 0 725 326 897 722 3124 3125 3126 3120 3127 0 723 722 1156 325 3121 3128 3129 3130 3131 0 722 897 2 1156 3126 3132 3133 3128 3134 0 137 731 727 728 3135 3136 3137 3138 3139 0 731 328 1236 727 3140 3141 3142 3136 3143 0 728 727 1300 327 3137 3144 3145 3146 3147 0 727 1236 25 1300 3142 3148 3149 3144 3150 0 135 736 733 734 3151 3152 3153 3154 3155 0 736 330 1317 733 3156 3157 3158 3152 3159 0 734 733 929 329 3153 3160 3161 3162 3163 0 733 1317 4 929 3158 3164 3165 3160 3166 0 136 741 738 739 3167 3168 3169 3170 3171 0 741 332 921 738 3172 3173 3174 3168 3175 0 739 738 1244 331 3169 3176 3177 3178 3179 0 738 921 3 1244 3174 3180 3181 3176 3182 0 140 747 743 744 3183 3184 3185 3186 3187 0 747 334 1324 743 3188 3189 3190 3184 3191 0 744 743 1388 333 3185 3192 3193 3194 3195 0 743 1324 26 1388 3190 3196 3197 3192 3198 0 138 752 749 750 3199 3200 3201 3202 3203 0 752 336 1405 749 3204 3205 3206 3200 3207 0 750 749 955 335 3201 3208 3209 3210 3211 0 749 1405 5 955 3206 3212 3213 3208 3214 0 139 757 754 755 3215 3216 3217 3218 3219 0 757 338 947 754 3220 3221 3222 3216 3223 0 755 754 1332 337 3217 3224 3225 3226 3227 0 754 947 4 1332 3222 3228 3229 3224 3230 0 143 763 759 760 3231 3232 3233 3234 3235 0 763 340 1412 759 3236 3237 3238 3232 3239 0 760 759 1476 339 3233 3240 3241 3242 3243 0 759 1412 27 1476 3238 3244 3245 3240 3246 0 141 770 765 767 3247 3248 3249 3250 3251 0 770 341 1496 765 3252 3253 3254 3248 3255 0 767 765 766 308 3249 3256 2981 3257 3258 0 765 1496 1 766 3254 3259 2988 3256 3260 0 142 776 772 774 3261 3262 3263 3264 3265 0 776 305 773 772 3266 2969 3267 3262 3268 0 774 772 1420 342 3263 3269 3270 3271 3272 0 772 773 5 1420 3267 2973 3273 3269 3274 0 146 783 779 780 3275 3276 3277 3278 3279 0 783 344 1504 779 3280 3281 3282 3276 3283 0 780 779 1572 343 3277 3284 3285 3286 3287 0 779 1504 28 1572 3282 3288 3289 3284 3290 0 144 788 785 786 3291 3292 3293 3294 3295 0 788 346 1589 785 3296 3297 3298 3292 3299 0 786 785 1055 345 3293 3300 3301 3302 3303 0 785 1589 6 1055 3298 3304 3305 3300 3306 0 145 793 790 791 3307 3308 3309 3310 3311 0 793 348 1047 790 3312 3313 3314 3308 3315 0 791 790 1512 347 3309 3316 3317 3318 3319 0 790 1047 7 1512 3314 3320 3321 3316 3322 0 149 799 795 796 3323 3324 3325 3326 3327 0 799 350 1596 795 3328 3329 3330 3324 3331 0 796 795 1664 349 3325 3332 3333 3334 3335 0 795 1596 29 1664 3330 3336 3337 3332 3338 0 147 804 801 802 3339 3340 3341 3342 3343 0 804 352 1684 801 3344 3345 3346 3340 3347 0 802 801 1029 351 3341 3348 3349 3350 3351 0 801 1684 7 1029 3346 3352 3353 3348 3354 0 148 809 806 807 3355 3356 3357 3358 3359 0 809 354 1021 806 3360 3361 3362 3356 3363 0 807 806 1604 353 3357 3364 3365 3366 3367 0 806 1021 8 1604 3362 3368 3369 3364 3370 0 152 815 811 812 3371 3372 3373 3374 3375 0 815 356 1692 811 3376 3377 3378 3372 3379 0 812 811 1760 355 3373 3380 3381 3382 3383 0 811 1692 30 1760 3378 3384 3385 3380 3386 0 150 820 817 818 3387 3388 3389 3390 3391 0 820 358 1780 817 3392 3393 3394 3388 3395 0 818 817 1005 357 3389 3396 3397 3398 3399 0 817 1780 8 1005 3394 3400 3401 3396 3402 0 151 825 822 823 3403 3404 3405 3406 3407 0 825 360 997 822 3408 3409 3410 3404 3411 0 823 822 1700 359 3405 3412 3413 3414 3415 0 822 997 9 1700 3410 3416 3417 3412 3418 0 155 831 827 828 3419 3420 3421 3422 3423 0 831 362 1788 827 3424 3425 3426 3420 3427 0 828 827 1856 361 3421 3428 3429 3430 3431 0 827 1788 31 1856 3426 3432 3433 3428 3434 0 153 836 833 834 3435 3436 3437 3438 3439 0 836 364 1876 833 3440 3441 3442 3436 3443 0 834 833 981 363 3437 3444 3445 3446 3447 0 833 1876 9 981 3442 3448 3449 3444 3450 0 154 841 838 839 3451 3452 3453 3454 3455 0 841 366 973 838 3456 3457 3458 3452 3459 0 839 838 1796 365 3453 3460 3461 3462 3463 0 838 973 10 1796 3458 3464 3465 3460 3466 0 158 847 843 844 3467 3468 3469 3470 3471 0 847 368 1884 843 3472 3473 3474 3468 3475 0 844 843 1956 367 3469 3476 3477 3478 3479 0 843 1884 32 1956 3474 3480 3481 3476 3482 0 156 854 849 851 3483 3484 3485 3486 3487 0 854 369 1976 849 3488 3489 3490 3484 3491 0 851 849 850 314 3485 3492 3029 3493 3494 0 849 1976 10 850 3490 3495 3036 3492 3496 0 157 860 856 858 3497 3498 3499 3500 3501 0 860 311 857 856 3502 3017 3503 3498 3504 0 858 856 1892 370 3499 3505 3506 3507 3508 0 856 857 6 1892 3503 3021 3509 3505 3510 0 161 869 863 865 3511 3512 3513 3514 3515 0 869 371 888 863 3516 3517 3518 3512 3519 0 865 863 864 304 3513 3520 2949 3521 3522 0 863 888 21 864 3518 3523 2956 3520 3524 0 159 877 871 874 3525 3526 3527 3528 3529 0 877 307 872 871 3530 2985 3531 3526 3532 0 874 871 873 320 3527 3533 3077 3534 3535 0 871 872 1 873 3531 2989 3084 3533 3536 0 160 884 880 882 3537 3538 3539 3540 3541 0 884 317 881 880 3542 3065 3543 3538 3544 0 882 880 896 372 3539 3545 3546 3547 3548 0 880 881 2 896 3543 3069 3549 3545 3550 0 164 893 887 889 3551 3552 3553 3554 3555 0 893 373 912 887 3556 3557 3558 3552 3559 0 889 887 888 371 3553 3560 3517 3561 3562 0 887 912 21 888 3558 3563 3523 3560 3564 0 162 901 895 898 3565 3566 3567 3568 3569 0 901 372 896 895 3570 3546 3571 3566 3572 0 898 895 897 326 3567 3573 3125 3574 3575 0 895 896 2 897 3571 3549 3132 3573 3576 0 163 908 904 906 3577 3578 3579 3580 3581 0 908 323 905 904 3582 3113 3583 3578 3584 0 906 904 920 374 3579 3585 3586 3587 3588 0 904 905 3 920 3583 3117 3589 3585 3590 0 167 917 911 913 3591 3592 3593 3594 3595 0 917 375 937 911 3596 3597 3598 3592 3599 0 913 911 912 373 3593 3600 3557 3601 3602 0 911 937 21 912 3598 3603 3563 3600 3604 0 165 925 919 922 3605 3606 3607 3608 3609 0 925 374 920 919 3610 3586 3611 3606 3612 0 922 919 921 332 3607 3613 3173 3614 3615 0 919 920 3 921 3611 3589 3180 3613 3616 0 166 932 928 930 3617 3618 3619 3620 3621 0 932 329 929 928 3622 3161 3623 3618 3624 0 930 928 946 376 3619 3625 3626 3627 3628 0 928 929 4 946 3623 3165 3629 3625 3630 0 170 942 935 938 3631 3632 3633 3634 3635 0 942 303 936 935 3636 2953 3637 3632 3638 0 938 935 937 375 3633 3639 3597 3640 3641 0 935 936 21 937 3637 2957 3603 3639 3642 0 168 951 945 948 3643 3644 3645 3646 3647 0 951 376 946 945 3648 3626 3649 3644 3650 0 948 945 947 338 3645 3651 3221 3652 3653 0 945 946 4 947 3649 3629 3228 3651 3654 0 169 960 954 957 3655 3656 3657 3658 3659 0 960 335 955 954 3660 3209 3661 3656 3662 0 957 954 956 306 3657 3663 2965 3664 3665 0 954 955 5 956 3661 3213 2972 3663 3666 0 173 969 963 965 3667 3668 3669 3670 3671 0 969 377 988 963 3672 3673 3674 3668 3675 0 965 963 964 310 3669 3676 2997 3677 3678 0 963 988 22 964 3674 3679 3004 3676 3680 0 171 977 971 974 3681 3682 3683 3684 3685 0 977 313 972 971 3686 3033 3687 3682 3688 0 974 971 973 366 3683 3689 3457 3690 3691 0 971 972 10 973 3687 3037 3464 3689 3692 0 172 984 980 982 3693 3694 3695 3696 3697 0 984 363 981 980 3698 3445 3699 3694 3700 0 982 980 996 378 3695 3701 3702 3703 3704 0 980 981 9 996 3699 3449 3705 3701 3706 0 176 993 987 989 3707 3708 3709 3710 3711 0 993 379 1012 987 3712 3713 3714 3708 3715 0 989 987 988 377 3709 3716 3673 3717 3718 0 987 1012 22 988 3714 3719 3679 3716 3720 0 174 1001 995 998 3721 3722 3723 3724 3725 0 1001 378 996 995 3726 3702 3727 3722 3728 0 998 995 997 360 3723 3729 3409 3730 3731 0 995 996 9 997 3727 3705 3416 3729 3732 0 175 1008 1004 1006 3733 3734 3735 3736 3737 0 1008 357 1005 1004 3738 3397 3739 3734 3740 0 1006 1004 1020 380 3735 3741 3742 3743 3744 0 1004 1005 8 1020 3739 3401 3745 3741 3746 0 179 1017 1011 1013 3747 3748 3749 3750 3751 0 1017 381 1037 1011 3752 3753 3754 3748 3755 0 1013 1011 1012 379 3749 3756 3713 3757 3758 0 1011 1037 22 1012 3754 3759 3719 3756 3760 0 177 1025 1019 1022 3761 3762 3763 3764 3765 0 1025 380 1020 1019 3766 3742 3767 3762 3768 0 1022 1019 1021 354 3763 3769 3361 3770 3771 0 1019 1020 8 1021 3767 3745 3368 3769 3772 0 178 1032 1028 1030 3773 3774 3775 3776 3777 0 1032 351 1029 1028 3778 3349 3779 3774 3780 0 1030 1028 1046 382 3775 3781 3782 3783 3784 0 1028 1029 7 1046 3779 3353 3785 3781 3786 0 182 1042 1035 1038 3787 3788 3789 3790 3791 0 1042 309 1036 1035 3792 3001 3793 3788 3794 0 1038 1035 1037 381 3789 3795 3753 3796 3797 0 1035 1036 22 1037 3793 3005 3759 3795 3798 0 180 1051 1045 1048 3799 3800 3801 3802 3803 0 1051 382 1046 1045 3804 3782 3805 3800 3806 0 1048 1045 1047 348 3801 3807 3313 3808 3809 0 1045 1046 7 1047 3805 3785 3320 3807 3810 0 181 1060 1054 1057 3811 3812 3813 3814 3815 0 1060 345 1055 1054 3816 3301 3817 3812 3818 0 1057 1054 1056 312 3813 3819 3013 3820 3821 0 1054 1055 6 1056 3817 3305 3020 3819 3822 0 185 1069 1063 1065 3823 3824 3825 3826 3827 0 1069 383 1084 1063 3828 3829 3830 3824 3831 0 1065 1063 1064 316 3825 3832 3045 3833 3834 0 1063 1084 23 1064 3830 3835 3052 3832 3836 0 183 1075 1071 1073 3837 3838 3839 3840 3841 0 1075 319 1072 1071 3842 3081 3843 3838 3844 0 1073 1071 1495 384 3839 3845 3846 3847 3848 0 1071 1072 1 1495 3843 3085 3849 3845 3850 0 184 1081 1078 1079 3851 3852 3853 3854 3855 0 1081 386 1487 1078 3856 3857 3858 3852 3859 0 1079 1078 1092 385 3853 3860 3861 3862 3863 0 1078 1487 11 1092 3858 3864 3865 3860 3866 0 188 1089 1083 1085 3867 3868 3869 3870 3871 0 1089 387 1104 1083 3872 3873 3874 3868 3875 0 1085 1083 1084 383 3869 3876 3829 3877 3878 0 1083 1104 23 1084 3874 3879 3835 3876 3880 0 186 1095 1091 1093 3881 3882 3883 3884 3885 0 1095 385 1092 1091 3886 3861 3887 3882 3888 0 1093 1091 1925 388 3883 3889 3890 3891 3892 0 1091 1092 11 1925 3887 3865 3893 3889 3894 0 187 1101 1098 1099 3895 3896 3897 3898 3899 0 1101 390 1917 1098 3900 3901 3902 3896 3903 0 1099 1098 1112 389 3897 3904 3905 3906 3907 0 1098 1917 12 1112 3902 3908 3909 3904 3910 0 191 1109 1103 1105 3911 3912 3913 3914 3915 0 1109 391 1125 1103 3916 3917 3918 3912 3919 0 1105 1103 1104 387 3913 3920 3873 3921 3922 0 1103 1125 23 1104 3918 3923 3879 3920 3924 0 189 1115 1111 1113 3925 3926 3927 3928 3929 0 1115 389 1112 1111 3930 3905 3931 3926 3932 0 1113 1111 1565 392 3927 3933 3934 3935 3936 0 1111 1112 12 1565 3931 3909 3937 3933 3938 0 190 1121 1118 1119 3939 3940 3941 3942 3943 0 1121 394 1557 1118 3944 3945 3946 3940 3947 0 1119 1118 1134 393 3941 3948 3949 3950 3951 0 1118 1557 13 1134 3946 3952 3953 3948 3954 0 194 1130 1123 1126 3955 3956 3957 3958 3959 0 1130 315 1124 1123 3960 3049 3961 3956 3962 0 1126 1123 1125 391 3957 3963 3917 3964 3965 0 1123 1124 23 1125 3961 3053 3923 3963 3966 0 192 1137 1133 1135 3967 3968 3969 3970 3971 0 1137 393 1134 1133 3972 3949 3973 3968 3974 0 1135 1133 1165 395 3969 3975 3976 3977 3978 0 1133 1134 13 1165 3973 3953 3979 3975 3980 0 193 1145 1140 1142 3981 3982 3983 3984 3985 0 1145 396 1157 1140 3986 3987 3988 3982 3989 0 1142 1140 1141 318 3983 3990 3061 3991 3992 0 1140 1157 2 1141 3988 3993 3068 3990 3994 0 197 1153 1147 1149 3995 3996 3997 3998 3999 0 1153 397 1172 1147 4000 4001 4002 3996 4003 0 1149 1147 1148 322 3997 4004 3093 4005 4006 0 1147 1172 24 1148 4002 4007 3100 4004 4008 0 195 1161 1155 1158 4009 4010 4011 4012 4013 0 1161 325 1156 1155 4014 3129 4015 4010 4016 0 1158 1155 1157 396 4011 4017 3987 4018 4019 0 1155 1156 2 1157 4015 3133 3993 4017 4020 0 196 1168 1164 1166 4021 4022 4023 4024 4025 0 1168 395 1165 1164 4026 3976 4027 4022 4028 0 1166 1164 1180 398 4023 4029 4030 4031 4032 0 1164 1165 13 1180 4027 3979 4033 4029 4034 0 200 1177 1171 1173 4035 4036 4037 4038 4039 0 1177 399 1192 1171 4040 4041 4042 4036 4043 0 1173 1171 1172 397 4037 4044 4001 4045 4046 0 1171 1192 24 1172 4042 4047 4007 4044 4048 0 198 1183 1179 1181 4049 4050 4051 4052 4053 0 1183 398 1180 1179 4054 4030 4055 4050 4056 0 1181 1179 1541 400 4051 4057 4058 4059 4060 0 1179 1180 13 1541 4055 4033 4061 4057 4062 0 199 1189 1186 1187 4063 4064 4065 4066 4067 0 1189 402 1533 1186 4068 4069 4070 4064 4071 0 1187 1186 1200 401 4065 4072 4073 4074 4075 0 1186 1533 14 1200 4070 4076 4077 4072 4078 0 203 1197 1191 1193 4079 4080 4081 4082 4083 0 1197 403 1213 1191 4084 4085 4086 4080 4087 0 1193 1191 1192 399 4081 4088 4041 4089 4090 0 1191 1213 24 1192 4086 4091 4047 4088 4092 0 201 1203 1199 1201 4093 4094 4095 4096 4097 0 1203 401 1200 1199 4098 4073 4099 4094 4100 0 1201 1199 1657 404 4095 4101 4102 4103 4104 0 1199 1200 14 1657 4099 4077 4105 4101 4106 0 202 1209 1206 1207 4107 4108 4109 4110 4111 0 1209 406 1649 1206 4112 4113 4114 4108 4115 0 1207 1206 1222 405 4109 4116 4117 4118 4119 0 1206 1649 15 1222 4114 4120 4121 4116 4122 0 206 1218 1211 1214 4123 4124 4125 4126 4127 0 1218 321 1212 1211 4128 3097 4129 4124 4130 0 1214 1211 1213 403 4125 4131 4085 4132 4133 0 1211 1212 24 1213 4129 3101 4091 4131 4134 0 204 1225 1221 1223 4135 4136 4137 4138 4139 0 1225 405 1222 1221 4140 4117 4141 4136 4142 0 1223 1221 1253 407 4137 4143 4144 4145 4146 0 1221 1222 15 1253 4141 4121 4147 4143 4148 0 205 1233 1228 1230 4149 4150 4151 4152 4153 0 1233 408 1245 1228 4154 4155 4156 4150 4157 0 1230 1228 1229 324 4151 4158 3109 4159 4160 0 1228 1245 3 1229 4156 4161 3116 4158 4162 0 209 1241 1235 1237 4163 4164 4165 4166 4167 0 1241 409 1260 1235 4168 4169 4170 4164 4171 0 1237 1235 1236 328 4165 4172 3141 4173 4174 0 1235 1260 25 1236 4170 4175 3148 4172 4176 0 207 1249 1243 1246 4177 4178 4179 4180 4181 0 1249 331 1244 1243 4182 3177 4183 4178 4184 0 1246 1243 1245 408 4179 4185 4155 4186 4187 0 1243 1244 3 1245 4183 3181 4161 4185 4188 0 208 1256 1252 1254 4189 4190 4191 4192 4193 0 1256 407 1253 1252 4194 4144 4195 4190 4196 0 1254 1252 1268 410 4191 4197 4198 4199 4200 0 1252 1253 15 1268 4195 4147 4201 4197 4202 0 212 1265 1259 1261 4203 4204 4205 4206 4207 0 1265 411 1280 1259 4208 4209 4210 4204 4211 0 1261 1259 1260 409 4205 4212 4169 4213 4214 0 1259 1280 25 1260 4210 4215 4175 4212 4216 0 210 1271 1267 1269 4217 4218 4219 4220 4221 0 1271 410 1268 1267 4222 4198 4223 4218 4224 0 1269 1267 1633 412 4219 4225 4226 4227 4228 0 1267 1268 15 1633 4223 4201 4229 4225 4230 0 211 1277 1274 1275 4231 4232 4233 4234 4235 0 1277 414 1625 1274 4236 4237 4238 4232 4239 0 1275 1274 1288 413 4233 4240 4241 4242 4243 0 1274 1625 16 1288 4238 4244 4245 4240 4246 0 215 1285 1279 1281 4247 4248 4249 4250 4251 0 1285 415 1301 1279 4252 4253 4254 4248 4255 0 1281 1279 1280 411 4249 4256 4209 4257 4258 0 1279 1301 25 1280 4254 4259 4215 4256 4260 0 213 1291 1287 1289 4261 4262 4263 4264 4265 0 1291 413 1288 1287 4266 4241 4267 4262 4268 0 1289 1287 1753 416 4263 4269 4270 4271 4272 0 1287 1288 16 1753 4267 4245 4273 4269 4274 0 214 1297 1294 1295 4275 4276 4277 4278 4279 0 1297 418 1745 1294 4280 4281 4282 4276 4283 0 1295 1294 1310 417 4277 4284 4285 4286 4287 0 1294 1745 17 1310 4282 4288 4289 4284 4290 0 218 1306 1299 1302 4291 4292 4293 4294 4295 0 1306 327 1300 1299 4296 3145 4297 4292 4298 0 1302 1299 1301 415 4293 4299 4253 4300 4301 0 1299 1300 25 1301 4297 3149 4259 4299 4302 0 216 1313 1309 1311 4303 4304 4305 4306 4307 0 1313 417 1310 1309 4308 4285 4309 4304 4310 0 1311 1309 1341 419 4305 4311 4312 4313 4314 0 1309 1310 17 1341 4309 4289 4315 4311 4316 0 217 1321 1316 1318 4317 4318 4319 4320 4321 0 1321 420 1333 1316 4322 4323 4324 4318 4325 0 1318 1316 1317 330 4319 4326 3157 4327 4328 0 1316 1333 4 1317 4324 4329 3164 4326 4330 0 221 1329 1323 1325 4331 4332 4333 4334 4335 0 1329 421 1348 1323 4336 4337 4338 4332 4339 0 1325 1323 1324 334 4333 4340 3189 4341 4342 0 1323 1348 26 1324 4338 4343 3196 4340 4344 0 219 1337 1331 1334 4345 4346 4347 4348 4349 0 1337 337 1332 1331 4350 3225 4351 4346 4352 0 1334 1331 1333 420 4347 4353 4323 4354 4355 0 1331 1332 4 1333 4351 3229 4329 4353 4356 0 220 1344 1340 1342 4357 4358 4359 4360 4361 0 1344 419 1341 1340 4362 4312 4363 4358 4364 0 1342 1340 1356 422 4359 4365 4366 4367 4368 0 1340 1341 17 1356 4363 4315 4369 4365 4370 0 224 1353 1347 1349 4371 4372 4373 4374 4375 0 1353 423 1368 1347 4376 4377 4378 4372 4379 0 1349 1347 1348 421 4373 4380 4337 4381 4382 0 1347 1368 26 1348 4378 4383 4343 4380 4384 0 222 1359 1355 1357 4385 4386 4387 4388 4389 0 1359 422 1356 1355 4390 4366 4391 4386 4392 0 1357 1355 1729 424 4387 4393 4394 4395 4396 0 1355 1356 17 1729 4391 4369 4397 4393 4398 0 223 1365 1362 1363 4399 4400 4401 4402 4403 0 1365 426 1721 1362 4404 4405 4406 4400 4407 0 1363 1362 1376 425 4401 4408 4409 4410 4411 0 1362 1721 18 1376 4406 4412 4413 4408 4414 0 227 1373 1367 1369 4415 4416 4417 4418 4419 0 1373 427 1389 1367 4420 4421 4422 4416 4423 0 1369 1367 1368 423 4417 4424 4377 4425 4426 0 1367 1389 26 1368 4422 4427 4383 4424 4428 0 225 1379 1375 1377 4429 4430 4431 4432 4433 0 1379 425 1376 1375 4434 4409 4435 4430 4436 0 1377 1375 1849 428 4431 4437 4438 4439 4440 0 1375 1376 18 1849 4435 4413 4441 4437 4442 0 226 1385 1382 1383 4443 4444 4445 4446 4447 0 1385 430 1841 1382 4448 4449 4450 4444 4451 0 1383 1382 1398 429 4445 4452 4453 4454 4455 0 1382 1841 19 1398 4450 4456 4457 4452 4458 0 230 1394 1387 1390 4459 4460 4461 4462 4463 0 1394 333 1388 1387 4464 3193 4465 4460 4466 0 1390 1387 1389 427 4461 4467 4421 4468 4469 0 1387 1388 26 1389 4465 3197 4427 4467 4470 0 228 1401 1397 1399 4471 4472 4473 4474 4475 0 1401 429 1398 1397 4476 4453 4477 4472 4478 0 1399 1397 1429 431 4473 4479 4480 4481 4482 0 1397 1398 19 1429 4477 4457 4483 4479 4484 0 229 1409 1404 1406 4485 4486 4487 4488 4489 0 1409 432 1421 1404 4490 4491 4492 4486 4493 0 1406 1404 1405 336 4487 4494 3205 4495 4496 0 1404 1421 5 1405 4492 4497 3212 4494 4498 0 233 1417 1411 1413 4499 4500 4501 4502 4503 0 1417 433 1436 1411 4504 4505 4506 4500 4507 0 1413 1411 1412 340 4501 4508 3237 4509 4510 0 1411 1436 27 1412 4506 4511 3244 4508 4512 0 231 1425 1419 1422 4513 4514 4515 4516 4517 0 1425 342 1420 1419 4518 3270 4519 4514 4520 0 1422 1419 1421 432 4515 4521 4491 4522 4523 0 1419 1420 5 1421 4519 3273 4497 4521 4524 0 232 1432 1428 1430 4525 4526 4527 4528 4529 0 1432 431 1429 1428 4530 4480 4531 4526 4532 0 1430 1428 1444 434 4527 4533 4534 4535 4536 0 1428 1429 19 1444 4531 4483 4537 4533 4538 0 236 1441 1435 1437 4539 4540 4541 4542 4543 0 1441 435 1456 1435 4544 4545 4546 4540 4547 0 1437 1435 1436 433 4541 4548 4505 4549 4550 0 1435 1456 27 1436 4546 4551 4511 4548 4552 0 234 1447 1443 1445 4553 4554 4555 4556 4557 0 1447 434 1444 1443 4558 4534 4559 4554 4560 0 1445 1443 1825 436 4555 4561 4562 4563 4564 0 1443 1444 19 1825 4559 4537 4565 4561 4566 0 235 1453 1450 1451 4567 4568 4569 4570 4571 0 1453 438 1817 1450 4572 4573 4574 4568 4575 0 1451 1450 1464 437 4569 4576 4577 4578 4579 0 1450 1817 20 1464 4574 4580 4581 4576 4582 0 239 1461 1455 1457 4583 4584 4585 4586 4587 0 1461 439 1477 1455 4588 4589 4590 4584 4591 0 1457 1455 1456 435 4585 4592 4545 4593 4594 0 1455 1477 27 1456 4590 4595 4551 4592 4596 0 237 1467 1463 1465 4597 4598 4599 4600 4601 0 1467 437 1464 1463 4602 4577 4603 4598 4604 0 1465 1463 1949 440 4599 4605 4606 4607 4608 0 1463 1464 20 1949 4603 4581 4609 4605 4610 0 238 1473 1470 1471 4611 4612 4613 4614 4615 0 1473 442 1941 1470 4616 4617 4618 4612 4619 0 1471 1470 1486 441 4613 4620 4621 4622 4623 0 1470 1941 11 1486 4618 4624 4625 4620 4626 0 242 1482 1475 1478 4627 4628 4629 4630 4631 0 1482 339 1476 1475 4632 3241 4633 4628 4634 0 1478 1475 1477 439 4629 4635 4589 4636 4637 0 1475 1476 27 1477 4633 3245 4595 4635 4638 0 240 1491 1485 1488 4639 4640 4641 4642 4643 0 1491 441 1486 1485 4644 4621 4645 4640 4646 0 1488 1485 1487 386 4641 4647 3857 4648 4649 0 1485 1486 11 1487 4645 4625 3864 4647 4650 0 241 1500 1494 1497 4651 4652 4653 4654 4655 0 1500 384 1495 1494 4656 3846 4657 4652 4658 0 1497 1494 1496 341 4653 4659 3253 4660 4661 0 1494 1495 1 1496 4657 3849 3259 4659 4662 0 245 1509 1503 1505 4663 4664 4665 4666 4667 0 1509 443 1524 1503 4668 4669 4670 4664 4671 0 1505 1503 1504 344 4665 4672 3281 4673 4674 0 1503 1524 28 1504 4670 4675 3288 4672 4676 0 243 1515 1511 1513 4677 4678 4679 4680 4681 0 1515 347 1512 1511 4682 3317 4683 4678 4684 0 1513 1511 1683 444 4679 4685 4686 4687 4688 0 1511 1512 7 1683 4683 3321 4689 4685 4690 0 244 1521 1518 1519 4691 4692 4693 4694 4695 0 1521 446 1675 1518 4696 4697 4698 4692 4699 0 1519 1518 1532 445 4693 4700 4701 4702 4703 0 1518 1675 14 1532 4698 4704 4705 4700 4706 0 248 1529 1523 1525 4707 4708 4709 4710 4711 0 1529 447 1548 1523 4712 4713 4714 4708 4715 0 1525 1523 1524 443 4709 4716 4669 4717 4718 0 1523 1548 28 1524 4714 4719 4675 4716 4720 0 246 1537 1531 1534 4721 4722 4723 4724 4725 0 1537 445 1532 1531 4726 4701 4727 4722 4728 0 1534 1531 1533 402 4723 4729 4069 4730 4731 0 1531 1532 14 1533 4727 4705 4076 4729 4732 0 247 1544 1540 1542 4733 4734 4735 4736 4737 0 1544 400 1541 1540 4738 4058 4739 4734 4740 0 1542 1540 1556 448 4735 4741 4742 4743 4744 0 1540 1541 13 1556 4739 4061 4745 4741 4746 0 251 1553 1547 1549 4747 4748 4749 4750 4751 0 1553 449 1573 1547 4752 4753 4754 4748 4755 0 1549 1547 1548 447 4749 4756 4713 4757 4758 0 1547 1573 28 1548 4754 4759 4719 4756 4760 0 249 1561 1555 1558 4761 4762 4763 4764 4765 0 1561 448 1556 1555 4766 4742 4767 4762 4768 0 1558 1555 1557 394 4763 4769 3945 4770 4771 0 1555 1556 13 1557 4767 4745 3952 4769 4772 0 250 1568 1564 1566 4773 4774 4775 4776 4777 0 1568 392 1565 1564 4778 3934 4779 4774 4780 0 1566 1564 1582 450 4775 4781 4782 4783 4784 0 1564 1565 12 1582 4779 3937 4785 4781 4786 0 254 1578 1571 1574 4787 4788 4789 4790 4791 0 1578 343 1572 1571 4792 3285 4793 4788 4794 0 1574 1571 1573 449 4789 4795 4753 4796 4797 0 1571 1572 28 1573 4793 3289 4759 4795 4798 0 252 1585 1581 1583 4799 4800 4801 4802 4803 0 1585 450 1582 1581 4804 4782 4805 4800 4806 0 1583 1581 1901 451 4801 4807 4808 4809 4810 0 1581 1582 12 1901 4805 4785 4811 4807 4812 0 253 1593 1588 1590 4813 4814 4815 4816 4817 0 1593 452 1893 1588 4818 4819 4820 4814 4821 0 1590 1588 1589 346 4815 4822 3297 4823 4824 0 1588 1893 6 1589 4820 4825 3304 4822 4826 0 257 1601 1595 1597 4827 4828 4829 4830 4831 0 1601 453 1616 1595 4832 4833 4834 4828 4835 0 1597 1595 1596 350 4829 4836 3329 4837 4838 0 1595 1616 29 1596 4834 4839 3336 4836 4840 0 255 1607 1603 1605 4841 4842 4843 4844 4845 0 1607 353 1604 1603 4846 3365 4847 4842 4848 0 1605 1603 1779 454 4843 4849 4850 4851 4852 0 1603 1604 8 1779 4847 3369 4853 4849 4854 0 256 1613 1610 1611 4855 4856 4857 4858 4859 0 1613 456 1771 1610 4860 4861 4862 4856 4863 0 1611 1610 1624 455 4857 4864 4865 4866 4867 0 1610 1771 16 1624 4862 4868 4869 4864 4870 0 260 1621 1615 1617 4871 4872 4873 4874 4875 0 1621 457 1640 1615 4876 4877 4878 4872 4879 0 1617 1615 1616 453 4873 4880 4833 4881 4882 0 1615 1640 29 1616 4878 4883 4839 4880 4884 0 258 1629 1623 1626 4885 4886 4887 4888 4889 0 1629 455 1624 1623 4890 4865 4891 4886 4892 0 1626 1623 1625 414 4887 4893 4237 4894 4895 0 1623 1624 16 1625 4891 4869 4244 4893 4896 0 259 1636 1632 1634 4897 4898 4899 4900 4901 0 1636 412 1633 1632 4902 4226 4903 4898 4904 0 1634 1632 1648 458 4899 4905 4906 4907 4908 0 1632 1633 15 1648 4903 4229 4909 4905 4910 0 263 1645 1639 1641 4911 4912 4913 4914 4915 0 1645 459 1665 1639 4916 4917 4918 4912 4919 0 1641 1639 1640 457 4913 4920 4877 4921 4922 0 1639 1665 29 1640 4918 4923 4883 4920 4924 0 261 1653 1647 1650 4925 4926 4927 4928 4929 0 1653 458 1648 1647 4930 4906 4931 4926 4932 0 1650 1647 1649 406 4927 4933 4113 4934 4935 0 1647 1648 15 1649 4931 4909 4120 4933 4936 0 262 1660 1656 1658 4937 4938 4939 4940 4941 0 1660 404 1657 1656 4942 4102 4943 4938 4944 0 1658 1656 1674 460 4939 4945 4946 4947 4948 0 1656 1657 14 1674 4943 4105 4949 4945 4950 0 266 1670 1663 1666 4951 4952 4953 4954 4955 0 1670 349 1664 1663 4956 3333 4957 4952 4958 0 1666 1663 1665 459 4953 4959 4917 4960 4961 0 1663 1664 29 1665 4957 3337 4923 4959 4962 0 264 1679 1673 1676 4963 4964 4965 4966 4967 0 1679 460 1674 1673 4968 4946 4969 4964 4970 0 1676 1673 1675 446 4965 4971 4697 4972 4973 0 1673 1674 14 1675 4969 4949 4704 4971 4974 0 265 1688 1682 1685 4975 4976 4977 4978 4979 0 1688 444 1683 1682 4980 4686 4981 4976 4982 0 1685 1682 1684 352 4977 4983 3345 4984 4985 0 1682 1683 7 1684 4981 4689 3352 4983 4986 0 269 1697 1691 1693 4987 4988 4989 4990 4991 0 1697 461 1712 1691 4992 4993 4994 4988 4995 0 1693 1691 1692 356 4989 4996 3377 4997 4998 0 1691 1712 30 1692 4994 4999 3384 4996 5000 0 267 1703 1699 1701 5001 5002 5003 5004 5005 0 1703 359 1700 1699 5006 3413 5007 5002 5008 0 1701 1699 1875 462 5003 5009 5010 5011 5012 0 1699 1700 9 1875 5007 3417 5013 5009 5014 0 268 1709 1706 1707 5015 5016 5017 5018 5019 0 1709 464 1867 1706 5020 5021 5022 5016 5023 0 1707 1706 1720 463 5017 5024 5025 5026 5027 0 1706 1867 18 1720 5022 5028 5029 5024 5030 0 272 1717 1711 1713 5031 5032 5033 5034 5035 0 1717 465 1736 1711 5036 5037 5038 5032 5039 0 1713 1711 1712 461 5033 5040 4993 5041 5042 0 1711 1736 30 1712 5038 5043 4999 5040 5044 0 270 1725 1719 1722 5045 5046 5047 5048 5049 0 1725 463 1720 1719 5050 5025 5051 5046 5052 0 1722 1719 1721 426 5047 5053 4405 5054 5055 0 1719 1720 18 1721 5051 5029 4412 5053 5056 0 271 1732 1728 1730 5057 5058 5059 5060 5061 0 1732 424 1729 1728 5062 4394 5063 5058 5064 0 1730 1728 1744 466 5059 5065 5066 5067 5068 0 1728 1729 17 1744 5063 4397 5069 5065 5070 0 275 1741 1735 1737 5071 5072 5073 5074 5075 0 1741 467 1761 1735 5076 5077 5078 5072 5079 0 1737 1735 1736 465 5073 5080 5037 5081 5082 0 1735 1761 30 1736 5078 5083 5043 5080 5084 0 273 1749 1743 1746 5085 5086 5087 5088 5089 0 1749 466 1744 1743 5090 5066 5091 5086 5092 0 1746 1743 1745 418 5087 5093 4281 5094 5095 0 1743 1744 17 1745 5091 5069 4288 5093 5096 0 274 1756 1752 1754 5097 5098 5099 5100 5101 0 1756 416 1753 1752 5102 4270 5103 5098 5104 0 1754 1752 1770 468 5099 5105 5106 5107 5108 0 1752 1753 16 1770 5103 4273 5109 5105 5110 0 278 1766 1759 1762 5111 5112 5113 5114 5115 0 1766 355 1760 1759 5116 3381 5117 5112 5118 0 1762 1759 1761 467 5113 5119 5077 5120 5121 0 1759 1760 30 1761 5117 3385 5083 5119 5122 0 276 1775 1769 1772 5123 5124 5125 5126 5127 0 1775 468 1770 1769 5128 5106 5129 5124 5130 0 1772 1769 1771 456 5125 5131 4861 5132 5133 0 1769 1770 16 1771 5129 5109 4868 5131 5134 0 277 1784 1778 1781 5135 5136 5137 5138 5139 0 1784 454 1779 1778 5140 4850 5141 5136 5142 0 1781 1778 1780 358 5137 5143 3393 5144 5145 0 1778 1779 8 1780 5141 4853 3400 5143 5146 0 281 1793 1787 1789 5147 5148 5149 5150 5151 0 1793 469 1808 1787 5152 5153 5154 5148 5155 0 1789 1787 1788 362 5149 5156 3425 5157 5158 0 1787 1808 31 1788 5154 5159 3432 5156 5160 0 279 1799 1795 1797 5161 5162 5163 5164 5165 0 1799 365 1796 1795 5166 3461 5167 5162 5168 0 1797 1795 1975 470 5163 5169 5170 5171 5172 0 1795 1796 10 1975 5167 3465 5173 5169 5174 0 280 1805 1802 1803 5175 5176 5177 5178 5179 0 1805 472 1967 1802 5180 5181 5182 5176 5183 0 1803 1802 1816 471 5177 5184 5185 5186 5187 0 1802 1967 20 1816 5182 5188 5189 5184 5190 0 284 1813 1807 1809 5191 5192 5193 5194 5195 0 1813 473 1832 1807 5196 5197 5198 5192 5199 0 1809 1807 1808 469 5193 5200 5153 5201 5202 0 1807 1832 31 1808 5198 5203 5159 5200 5204 0 282 1821 1815 1818 5205 5206 5207 5208 5209 0 1821 471 1816 1815 5210 5185 5211 5206 5212 0 1818 1815 1817 438 5207 5213 4573 5214 5215 0 1815 1816 20 1817 5211 5189 4580 5213 5216 0 283 1828 1824 1826 5217 5218 5219 5220 5221 0 1828 436 1825 1824 5222 4562 5223 5218 5224 0 1826 1824 1840 474 5219 5225 5226 5227 5228 0 1824 1825 19 1840 5223 4565 5229 5225 5230 0 287 1837 1831 1833 5231 5232 5233 5234 5235 0 1837 475 1857 1831 5236 5237 5238 5232 5239 0 1833 1831 1832 473 5233 5240 5197 5241 5242 0 1831 1857 31 1832 5238 5243 5203 5240 5244 0 285 1845 1839 1842 5245 5246 5247 5248 5249 0 1845 474 1840 1839 5250 5226 5251 5246 5252 0 1842 1839 1841 430 5247 5253 4449 5254 5255 0 1839 1840 19 1841 5251 5229 4456 5253 5256 0 286 1852 1848 1850 5257 5258 5259 5260 5261 0 1852 428 1849 1848 5262 4438 5263 5258 5264 0 1850 1848 1866 476 5259 5265 5266 5267 5268 0 1848 1849 18 1866 5263 4441 5269 5265 5270 0 290 1862 1855 1858 5271 5272 5273 5274 5275 0 1862 361 1856 1855 5276 3429 5277 5272 5278 0 1858 1855 1857 475 5273 5279 5237 5280 5281 0 1855 1856 31 1857 5277 3433 5243 5279 5282 0 288 1871 1865 1868 5283 5284 5285 5286 5287 0 1871 476 1866 1865 5288 5266 5289 5284 5290 0 1868 1865 1867 464 5285 5291 5021 5292 5293 0 1865 1866 18 1867 5289 5269 5028 5291 5294 0 289 1880 1874 1877 5295 5296 5297 5298 5299 0 1880 462 1875 1874 5300 5010 5301 5296 5302 0 1877 1874 1876 364 5297 5303 3441 5304 5305 0 1874 1875 9 1876 5301 5013 3448 5303 5306 0 293 1889 1883 1885 5307 5308 5309 5310 5311 0 1889 477 1908 1883 5312 5313 5314 5308 5315 0 1885 1883 1884 368 5309 5316 3473 5317 5318 0 1883 1908 32 1884 5314 5319 3480 5316 5320 0 291 1897 1891 1894 5321 5322 5323 5324 5325 0 1897 370 1892 1891 5326 3506 5327 5322 5328 0 1894 1891 1893 452 5323 5329 4819 5330 5331 0 1891 1892 6 1893 5327 3509 4825 5329 5332 0 292 1904 1900 1902 5333 5334 5335 5336 5337 0 1904 451 1901 1900 5338 4808 5339 5334 5340 0 1902 1900 1916 478 5335 5341 5342 5343 5344 0 1900 1901 12 1916 5339 4811 5345 5341 5346 0 296 1913 1907 1909 5347 5348 5349 5350 5351 0 1913 479 1932 1907 5352 5353 5354 5348 5355 0 1909 1907 1908 477 5349 5356 5313 5357 5358 0 1907 1932 32 1908 5354 5359 5319 5356 5360 0 294 1921 1915 1918 5361 5362 5363 5364 5365 0 1921 478 1916 1915 5366 5342 5367 5362 5368 0 1918 1915 1917 390 5363 5369 3901 5370 5371 0 1915 1916 12 1917 5367 5345 3908 5369 5372 0 295 1928 1924 1926 5373 5374 5375 5376 5377 0 1928 388 1925 1924 5378 3890 5379 5374 5380 0 1926 1924 1940 480 5375 5381 5382 5383 5384 0 1924 1925 11 1940 5379 3893 5385 5381 5386 0 299 1937 1931 1933 5387 5388 5389 5390 5391 0 1937 481 1957 1931 5392 5393 5394 5388 5395 0 1933 1931 1932 479 5389 5396 5353 5397 5398 0 1931 1957 32 1932 5394 5399 5359 5396 5400 0 297 1945 1939 1942 5401 5402 5403 5404 5405 0 1945 480 1940 1939 5406 5382 5407 5402 5408 0 1942 1939 1941 442 5403 5409 4617 5410 5411 0 1939 1940 11 1941 5407 5385 4624 5409 5412 0 298 1952 1948 1950 5413 5414 5415 5416 5417 0 1952 440 1949 1948 5418 4606 5419 5414 5420 0 1950 1948 1966 482 5415 5421 5422 5423 5424 0 1948 1949 20 1966 5419 4609 5425 5421 5426 0 302 1962 1955 1958 5427 5428 5429 5430 5431 0 1962 367 1956 1955 5432 3477 5433 5428 5434 0 1958 1955 1957 481 5429 5435 5393 5436 5437 0 1955 1956 32 1957 5433 3481 5399 5435 5438 0 300 1971 1965 1968 5439 5440 5441 5442 5443 0 1971 482 1966 1965 5444 5422 5445 5440 5446 0 1968 1965 1967 472 5441 5447 5181 5448 5449 0 1965 1966 20 1967 5445 5425 5188 5447 5450 0 301 1980 1974 1977 5451 5452 5453 5454 5455 0 1980 470 1975 1974 5456 5170 5457 5452 5458 0 1977 1974 1976 369 5453 5459 3489 5460 5461 0 1974 1975 10 1976 5457 5173 3495 5459 5462 0 124 484 671 678 1986 5463 5464 5465 5466 0 484 123 670 671 1994 2962 5467 5463 5468 0 678 671 778 34 5464 5469 5470 5471 5472 0 671 670 305 778 5467 2970 5473 5469 5474 0 124 676 668 485 5475 5476 5477 1983 5478 0 676 35 866 668 5479 5480 5481 5476 5482 0 485 668 667 125 5477 5483 2943 1988 5484 0 668 866 304 667 5481 5485 2948 5483 5486 0 127 487 687 694 2002 5487 5488 5489 5490 0 487 126 686 687 2010 3010 5491 5487 5492 0 694 687 862 37 5488 5493 5494 5495 5496 0 687 686 311 862 5491 3018 5497 5493 5498 0 127 692 684 488 5499 5500 5501 1999 5502 0 692 38 966 684 5503 5504 5505 5500 5506 0 488 684 683 128 5501 5507 2991 2004 5508 0 684 966 310 683 5505 5509 2996 5507 5510 0 130 490 703 710 2018 5511 5512 5513 5514 0 490 129 702 703 2026 3058 5515 5511 5516 0 710 703 886 40 5512 5517 5518 5519 5520 0 703 702 317 886 5515 3066 5521 5517 5522 0 130 708 700 491 5523 5524 5525 2015 5526 0 708 41 1066 700 5527 5528 5529 5524 5530 0 491 700 699 131 5525 5531 3039 2020 5532 0 700 1066 316 699 5529 5533 3044 5531 5534 0 133 493 719 726 2034 5535 5536 5537 5538 0 493 132 718 719 2042 3106 5539 5535 5540 0 726 719 910 43 5536 5541 5542 5543 5544 0 719 718 323 910 5539 3114 5545 5541 5546 0 133 724 716 494 5547 5548 5549 2031 5550 0 724 44 1150 716 5551 5552 5553 5548 5554 0 494 716 715 134 5549 5555 3087 2036 5556 0 716 1150 322 715 5553 5557 3092 5555 5558 0 136 496 735 742 2050 5559 5560 5561 5562 0 496 135 734 735 2058 3154 5563 5559 5564 0 742 735 934 46 5560 5565 5566 5567 5568 0 735 734 329 934 5563 3162 5569 5565 5570 0 136 740 732 497 5571 5572 5573 2047 5574 0 740 47 1238 732 5575 5576 5577 5572 5578 0 497 732 731 137 5573 5579 3135 2052 5580 0 732 1238 328 731 5577 5581 3140 5579 5582 0 139 499 751 758 2066 5583 5584 5585 5586 0 499 138 750 751 2074 3202 5587 5583 5588 0 758 751 962 49 5584 5589 5590 5591 5592 0 751 750 335 962 5587 3210 5593 5589 5594 0 139 756 748 500 5595 5596 5597 2063 5598 0 756 50 1326 748 5599 5600 5601 5596 5602 0 500 748 747 140 5597 5603 3183 2068 5604 0 748 1326 334 747 5601 5605 3188 5603 5606 0 141 769 777 502 5607 5608 5609 2090 5610 0 769 34 778 777 5611 5470 5612 5608 5613 0 502 777 776 142 5609 5614 3261 2082 5615 0 777 778 305 776 5612 5473 3266 5614 5616 0 142 775 764 503 5617 5618 5619 2079 5620 0 775 52 1414 764 5621 5622 5623 5618 5624 0 503 764 763 143 5619 5625 3231 2084 5626 0 764 1414 340 763 5623 5627 3236 5625 5628 0 145 505 787 794 2098 5629 5630 5631 5632 0 505 144 786 787 2106 3294 5633 5629 5634 0 794 787 1062 54 5630 5635 5636 5637 5638 0 787 786 345 1062 5633 3302 5639 5635 5640 0 145 792 784 506 5641 5642 5643 2095 5644 0 792 55 1506 784 5645 5646 5647 5642 5648 0 506 784 783 146 5643 5649 3275 2100 5650 0 784 1506 344 783 5647 5651 3280 5649 5652 0 148 508 803 810 2114 5653 5654 5655 5656 0 508 147 802 803 2122 3342 5657 5653 5658 0 810 803 1034 57 5654 5659 5660 5661 5662 0 803 802 351 1034 5657 3350 5663 5659 5664 0 148 808 800 509 5665 5666 5667 2111 5668 0 808 58 1598 800 5669 5670 5671 5666 5672 0 509 800 799 149 5667 5673 3323 2116 5674 0 800 1598 350 799 5671 5675 3328 5673 5676 0 151 511 819 826 2130 5677 5678 5679 5680 0 511 150 818 819 2138 3390 5681 5677 5682 0 826 819 1010 60 5678 5683 5684 5685 5686 0 819 818 357 1010 5681 3398 5687 5683 5688 0 151 824 816 512 5689 5690 5691 2127 5692 0 824 61 1694 816 5693 5694 5695 5690 5696 0 512 816 815 152 5691 5697 3371 2132 5698 0 816 1694 356 815 5695 5699 3376 5697 5700 0 154 514 835 842 2146 5701 5702 5703 5704 0 514 153 834 835 2154 3438 5705 5701 5706 0 842 835 986 63 5702 5707 5708 5709 5710 0 835 834 363 986 5705 3446 5711 5707 5712 0 154 840 832 515 5713 5714 5715 2143 5716 0 840 64 1790 832 5717 5718 5719 5714 5720 0 515 832 831 155 5715 5721 3419 2148 5722 0 832 1790 362 831 5719 5723 3424 5721 5724 0 156 853 861 517 5725 5726 5727 2170 5728 0 853 37 862 861 5729 5494 5730 5726 5731 0 517 861 860 157 5727 5732 3497 2162 5733 0 861 862 311 860 5730 5497 3502 5732 5734 0 157 859 848 518 5735 5736 5737 2159 5738 0 859 66 1886 848 5739 5740 5741 5736 5742 0 518 848 847 158 5737 5743 3467 2164 5744 0 848 1886 368 847 5741 5745 3472 5743 5746 0 159 876 885 520 5747 5748 5749 2186 5750 0 876 40 886 885 5751 5518 5752 5748 5753 0 520 885 884 160 5749 5754 3537 2178 5755 0 885 886 317 884 5752 5521 3542 5754 5756 0 160 883 870 521 5757 5758 5759 2175 5760 0 883 67 890 870 5761 5762 5763 5758 5764 0 521 870 869 161 5759 5765 3511 2180 5766 0 870 890 371 869 5763 5767 3516 5765 5768 0 162 900 909 523 5769 5770 5771 2202 5772 0 900 43 910 909 5773 5542 5774 5770 5775 0 523 909 908 163 5771 5776 3577 2194 5777 0 909 910 323 908 5774 5545 3582 5776 5778 0 163 907 894 524 5779 5780 5781 2191 5782 0 907 68 914 894 5783 5784 5785 5780 5786 0 524 894 893 164 5781 5787 3551 2196 5788 0 894 914 373 893 5785 5789 3556 5787 5790 0 165 924 933 526 5791 5792 5793 2218 5794 0 924 46 934 933 5795 5566 5796 5792 5797 0 526 933 932 166 5793 5798 3617 2210 5799 0 933 934 329 932 5796 5569 3622 5798 5800 0 166 931 918 527 5801 5802 5803 2207 5804 0 931 69 939 918 5805 5806 5807 5802 5808 0 527 918 917 167 5803 5809 3591 2212 5810 0 918 939 375 917 5807 5811 3596 5809 5812 0 168 950 961 529 5813 5814 5815 2234 5816 0 950 49 962 961 5817 5590 5818 5814 5819 0 529 961 960 169 5815 5820 3655 2226 5821 0 961 962 335 960 5818 5593 3660 5820 5822 0 169 959 943 530 5823 5824 5825 2223 5826 0 959 33 944 943 5827 5828 5829 5824 5830 0 530 943 942 170 5825 5831 3631 2228 5832 0 943 944 303 942 5829 5833 3636 5831 5834 0 171 976 985 532 5835 5836 5837 2250 5838 0 976 63 986 985 5839 5708 5840 5836 5841 0 532 985 984 172 5837 5842 3693 2242 5843 0 985 986 363 984 5840 5711 3698 5842 5844 0 172 983 970 533 5845 5846 5847 2239 5848 0 983 70 990 970 5849 5850 5851 5846 5852 0 533 970 969 173 5847 5853 3667 2244 5854 0 970 990 377 969 5851 5855 3672 5853 5856 0 174 1000 1009 535 5857 5858 5859 2266 5860 0 1000 60 1010 1009 5861 5684 5862 5858 5863 0 535 1009 1008 175 5859 5864 3733 2258 5865 0 1009 1010 357 1008 5862 5687 3738 5864 5866 0 175 1007 994 536 5867 5868 5869 2255 5870 0 1007 71 1014 994 5871 5872 5873 5868 5874 0 536 994 993 176 5869 5875 3707 2260 5876 0 994 1014 379 993 5873 5877 3712 5875 5878 0 177 1024 1033 538 5879 5880 5881 2282 5882 0 1024 57 1034 1033 5883 5660 5884 5880 5885 0 538 1033 1032 178 5881 5886 3773 2274 5887 0 1033 1034 351 1032 5884 5663 3778 5886 5888 0 178 1031 1018 539 5889 5890 5891 2271 5892 0 1031 72 1039 1018 5893 5894 5895 5890 5896 0 539 1018 1017 179 5891 5897 3747 2276 5898 0 1018 1039 381 1017 5895 5899 3752 5897 5900 0 180 1050 1061 541 5901 5902 5903 2298 5904 0 1050 54 1062 1061 5905 5636 5906 5902 5907 0 541 1061 1060 181 5903 5908 3811 2290 5909 0 1061 1062 345 1060 5906 5639 3816 5908 5910 0 181 1059 1043 542 5911 5912 5913 2287 5914 0 1059 36 1044 1043 5915 5916 5917 5912 5918 0 542 1043 1042 182 5913 5919 3787 2292 5920 0 1043 1044 309 1042 5917 5921 3792 5919 5922 0 184 544 1074 1082 2306 5923 5924 5925 5926 0 544 183 1073 1074 2314 3840 5927 5923 5928 0 1082 1074 1502 73 5924 5929 5930 5931 5932 0 1074 1073 384 1502 5927 3847 5933 5929 5934 0 184 1080 1070 545 5935 5936 5937 2303 5938 0 1080 74 1086 1070 5939 5940 5941 5936 5942 0 545 1070 1069 185 5937 5943 3823 2308 5944 0 1070 1086 383 1069 5941 5945 3828 5943 5946 0 187 547 1094 1102 2322 5947 5948 5949 5950 0 547 186 1093 1094 2330 3884 5951 5947 5952 0 1102 1094 1930 75 5948 5953 5954 5955 5956 0 1094 1093 388 1930 5951 3891 5957 5953 5958 0 187 1100 1090 548 5959 5960 5961 2319 5962 0 1100 76 1106 1090 5963 5964 5965 5960 5966 0 548 1090 1089 188 5961 5967 3867 2324 5968 0 1090 1106 387 1089 5965 5969 3872 5967 5970 0 190 550 1114 1122 2338 5971 5972 5973 5974 0 550 189 1113 1114 2346 3928 5975 5971 5976 0 1122 1114 1570 77 5972 5977 5978 5979 5980 0 1114 1113 392 1570 5975 3935 5981 5977 5982 0 190 1120 1110 551 5983 5984 5985 2335 5986 0 1120 78 1127 1110 5987 5988 5989 5984 5990 0 551 1110 1109 191 5985 5991 3911 2340 5992 0 1110 1127 391 1109 5989 5993 3916 5991 5994 0 193 553 1136 1146 2354 5995 5996 5997 5998 0 553 192 1135 1136 2362 3970 5999 5995 6000 0 1146 1136 1170 79 5996 6001 6002 6003 6004 0 1136 1135 395 1170 5999 3977 6005 6001 6006 0 193 1144 1131 554 6007 6008 6009 2351 6010 0 1144 39 1132 1131 6011 6012 6013 6008 6014 0 554 1131 1130 194 6009 6015 3955 2356 6016 0 1131 1132 315 1130 6013 6017 3960 6015 6018 0 195 1160 1169 556 6019 6020 6021 2378 6022 0 1160 79 1170 1169 6023 6002 6024 6020 6025 0 556 1169 1168 196 6021 6026 4021 2370 6027 0 1169 1170 395 1168 6024 6005 4026 6026 6028 0 196 1167 1154 557 6029 6030 6031 2367 6032 0 1167 80 1174 1154 6033 6034 6035 6030 6036 0 557 1154 1153 197 6031 6037 3995 2372 6038 0 1154 1174 397 1153 6035 6039 4000 6037 6040 0 199 559 1182 1190 2386 6041 6042 6043 6044 0 559 198 1181 1182 2394 4052 6045 6041 6046 0 1190 1182 1546 81 6042 6047 6048 6049 6050 0 1182 1181 400 1546 6045 4059 6051 6047 6052 0 199 1188 1178 560 6053 6054 6055 2383 6056 0 1188 82 1194 1178 6057 6058 6059 6054 6060 0 560 1178 1177 200 6055 6061 4035 2388 6062 0 1178 1194 399 1177 6059 6063 4040 6061 6064 0 202 562 1202 1210 2402 6065 6066 6067 6068 0 562 201 1201 1202 2410 4096 6069 6065 6070 0 1210 1202 1662 83 6066 6071 6072 6073 6074 0 1202 1201 404 1662 6069 4103 6075 6071 6076 0 202 1208 1198 563 6077 6078 6079 2399 6080 0 1208 84 1215 1198 6081 6082 6083 6078 6084 0 563 1198 1197 203 6079 6085 4079 2404 6086 0 1198 1215 403 1197 6083 6087 4084 6085 6088 0 205 565 1224 1234 2418 6089 6090 6091 6092 0 565 204 1223 1224 2426 4138 6093 6089 6094 0 1234 1224 1258 85 6090 6095 6096 6097 6098 0 1224 1223 407 1258 6093 4145 6099 6095 6100 0 205 1232 1219 566 6101 6102 6103 2415 6104 0 1232 42 1220 1219 6105 6106 6107 6102 6108 0 566 1219 1218 206 6103 6109 4123 2420 6110 0 1219 1220 321 1218 6107 6111 4128 6109 6112 0 207 1248 1257 568 6113 6114 6115 2442 6116 0 1248 85 1258 1257 6117 6096 6118 6114 6119 0 568 1257 1256 208 6115 6120 4189 2434 6121 0 1257 1258 407 1256 6118 6099 4194 6120 6122 0 208 1255 1242 569 6123 6124 6125 2431 6126 0 1255 86 1262 1242 6127 6128 6129 6124 6130 0 569 1242 1241 209 6125 6131 4163 2436 6132 0 1242 1262 409 1241 6129 6133 4168 6131 6134 0 211 571 1270 1278 2450 6135 6136 6137 6138 0 571 210 1269 1270 2458 4220 6139 6135 6140 0 1278 1270 1638 87 6136 6141 6142 6143 6144 0 1270 1269 412 1638 6139 4227 6145 6141 6146 0 211 1276 1266 572 6147 6148 6149 2447 6150 0 1276 88 1282 1266 6151 6152 6153 6148 6154 0 572 1266 1265 212 6149 6155 4203 2452 6156 0 1266 1282 411 1265 6153 6157 4208 6155 6158 0 214 574 1290 1298 2466 6159 6160 6161 6162 0 574 213 1289 1290 2474 4264 6163 6159 6164 0 1298 1290 1758 89 6160 6165 6166 6167 6168 0 1290 1289 416 1758 6163 4271 6169 6165 6170 0 214 1296 1286 575 6171 6172 6173 2463 6174 0 1296 90 1303 1286 6175 6176 6177 6172 6178 0 575 1286 1285 215 6173 6179 4247 2468 6180 0 1286 1303 415 1285 6177 6181 4252 6179 6182 0 217 577 1312 1322 2482 6183 6184 6185 6186 0 577 216 1311 1312 2490 4306 6187 6183 6188 0 1322 1312 1346 91 6184 6189 6190 6191 6192 0 1312 1311 419 1346 6187 4313 6193 6189 6194 0 217 1320 1307 578 6195 6196 6197 2479 6198 0 1320 45 1308 1307 6199 6200 6201 6196 6202 0 578 1307 1306 218 6197 6203 4291 2484 6204 0 1307 1308 327 1306 6201 6205 4296 6203 6206 0 219 1336 1345 580 6207 6208 6209 2506 6210 0 1336 91 1346 1345 6211 6190 6212 6208 6213 0 580 1345 1344 220 6209 6214 4357 2498 6215 0 1345 1346 419 1344 6212 6193 4362 6214 6216 0 220 1343 1330 581 6217 6218 6219 2495 6220 0 1343 92 1350 1330 6221 6222 6223 6218 6224 0 581 1330 1329 221 6219 6225 4331 2500 6226 0 1330 1350 421 1329 6223 6227 4336 6225 6228 0 223 583 1358 1366 2514 6229 6230 6231 6232 0 583 222 1357 1358 2522 4388 6233 6229 6234 0 1366 1358 1734 93 6230 6235 6236 6237 6238 0 1358 1357 424 1734 6233 4395 6239 6235 6240 0 223 1364 1354 584 6241 6242 6243 2511 6244 0 1364 94 1370 1354 6245 6246 6247 6242 6248 0 584 1354 1353 224 6243 6249 4371 2516 6250 0 1354 1370 423 1353 6247 6251 4376 6249 6252 0 226 586 1378 1386 2530 6253 6254 6255 6256 0 586 225 1377 1378 2538 4432 6257 6253 6258 0 1386 1378 1854 95 6254 6259 6260 6261 6262 0 1378 1377 428 1854 6257 4439 6263 6259 6264 0 226 1384 1374 587 6265 6266 6267 2527 6268 0 1384 96 1391 1374 6269 6270 6271 6266 6272 0 587 1374 1373 227 6267 6273 4415 2532 6274 0 1374 1391 427 1373 6271 6275 4420 6273 6276 0 229 589 1400 1410 2546 6277 6278 6279 6280 0 589 228 1399 1400 2554 4474 6281 6277 6282 0 1410 1400 1434 97 6278 6283 6284 6285 6286 0 1400 1399 431 1434 6281 4481 6287 6283 6288 0 229 1408 1395 590 6289 6290 6291 2543 6292 0 1408 48 1396 1395 6293 6294 6295 6290 6296 0 590 1395 1394 230 6291 6297 4459 2548 6298 0 1395 1396 333 1394 6295 6299 4464 6297 6300 0 231 1424 1433 592 6301 6302 6303 2570 6304 0 1424 97 1434 1433 6305 6284 6306 6302 6307 0 592 1433 1432 232 6303 6308 4525 2562 6309 0 1433 1434 431 1432 6306 6287 4530 6308 6310 0 232 1431 1418 593 6311 6312 6313 2559 6314 0 1431 98 1438 1418 6315 6316 6317 6312 6318 0 593 1418 1417 233 6313 6319 4499 2564 6320 0 1418 1438 433 1417 6317 6321 4504 6319 6322 0 235 595 1446 1454 2578 6323 6324 6325 6326 0 595 234 1445 1446 2586 4556 6327 6323 6328 0 1454 1446 1830 99 6324 6329 6330 6331 6332 0 1446 1445 436 1830 6327 4563 6333 6329 6334 0 235 1452 1442 596 6335 6336 6337 2575 6338 0 1452 100 1458 1442 6339 6340 6341 6336 6342 0 596 1442 1441 236 6337 6343 4539 2580 6344 0 1442 1458 435 1441 6341 6345 4544 6343 6346 0 238 598 1466 1474 2594 6347 6348 6349 6350 0 598 237 1465 1466 2602 4600 6351 6347 6352 0 1474 1466 1954 101 6348 6353 6354 6355 6356 0 1466 1465 440 1954 6351 4607 6357 6353 6358 0 238 1472 1462 599 6359 6360 6361 2591 6362 0 1472 102 1479 1462 6363 6364 6365 6360 6366 0 599 1462 1461 239 6361 6367 4583 2596 6368 0 1462 1479 439 1461 6365 6369 4588 6367 6370 0 240 1490 1501 601 6371 6372 6373 2618 6374 0 1490 73 1502 1501 6375 5930 6376 6372 6377 0 601 1501 1500 241 6373 6378 4651 2610 6379 0 1501 1502 384 1500 6376 5933 4656 6378 6380 0 241 1499 1483 602 6381 6382 6383 2607 6384 0 1499 51 1484 1483 6385 6386 6387 6382 6388 0 602 1483 1482 242 6383 6389 4627 2612 6390 0 1483 1484 339 1482 6387 6391 4632 6389 6392 0 244 604 1514 1522 2626 6393 6394 6395 6396 0 604 243 1513 1514 2634 4680 6397 6393 6398 0 1522 1514 1690 103 6394 6399 6400 6401 6402 0 1514 1513 444 1690 6397 4687 6403 6399 6404 0 244 1520 1510 605 6405 6406 6407 2623 6408 0 1520 104 1526 1510 6409 6410 6411 6406 6412 0 605 1510 1509 245 6407 6413 4663 2628 6414 0 1510 1526 443 1509 6411 6415 4668 6413 6416 0 246 1536 1545 607 6417 6418 6419 2650 6420 0 1536 81 1546 1545 6421 6048 6422 6418 6423 0 607 1545 1544 247 6419 6424 4733 2642 6425 0 1545 1546 400 1544 6422 6051 4738 6424 6426 0 247 1543 1530 608 6427 6428 6429 2639 6430 0 1543 105 1550 1530 6431 6432 6433 6428 6434 0 608 1530 1529 248 6429 6435 4707 2644 6436 0 1530 1550 447 1529 6433 6437 4712 6435 6438 0 249 1560 1569 610 6439 6440 6441 2666 6442 0 1560 77 1570 1569 6443 5978 6444 6440 6445 0 610 1569 1568 250 6441 6446 4773 2658 6447 0 1569 1570 392 1568 6444 5981 4778 6446 6448 0 250 1567 1554 611 6449 6450 6451 2655 6452 0 1567 106 1575 1554 6453 6454 6455 6450 6456 0 611 1554 1553 251 6451 6457 4747 2660 6458 0 1554 1575 449 1553 6455 6459 4752 6457 6460 0 253 613 1584 1594 2674 6461 6462 6463 6464 0 613 252 1583 1584 2682 4802 6465 6461 6466 0 1594 1584 1906 107 6462 6467 6468 6469 6470 0 1584 1583 451 1906 6465 4809 6471 6467 6472 0 253 1592 1579 614 6473 6474 6475 2671 6476 0 1592 53 1580 1579 6477 6478 6479 6474 6480 0 614 1579 1578 254 6475 6481 4787 2676 6482 0 1579 1580 343 1578 6479 6483 4792 6481 6484 0 256 616 1606 1614 2690 6485 6486 6487 6488 0 616 255 1605 1606 2698 4844 6489 6485 6490 0 1614 1606 1786 108 6486 6491 6492 6493 6494 0 1606 1605 454 1786 6489 4851 6495 6491 6496 0 256 1612 1602 617 6497 6498 6499 2687 6500 0 1612 109 1618 1602 6501 6502 6503 6498 6504 0 617 1602 1601 257 6499 6505 4827 2692 6506 0 1602 1618 453 1601 6503 6507 4832 6505 6508 0 258 1628 1637 619 6509 6510 6511 2714 6512 0 1628 87 1638 1637 6513 6142 6514 6510 6515 0 619 1637 1636 259 6511 6516 4897 2706 6517 0 1637 1638 412 1636 6514 6145 4902 6516 6518 0 259 1635 1622 620 6519 6520 6521 2703 6522 0 1635 110 1642 1622 6523 6524 6525 6520 6526 0 620 1622 1621 260 6521 6527 4871 2708 6528 0 1622 1642 457 1621 6525 6529 4876 6527 6530 0 261 1652 1661 622 6531 6532 6533 2730 6534 0 1652 83 1662 1661 6535 6072 6536 6532 6537 0 622 1661 1660 262 6533 6538 4937 2722 6539 0 1661 1662 404 1660 6536 6075 4942 6538 6540 0 262 1659 1646 623 6541 6542 6543 2719 6544 0 1659 111 1667 1646 6545 6546 6547 6542 6548 0 623 1646 1645 263 6543 6549 4911 2724 6550 0 1646 1667 459 1645 6547 6551 4916 6549 6552 0 264 1678 1689 625 6553 6554 6555 2746 6556 0 1678 103 1690 1689 6557 6400 6558 6554 6559 0 625 1689 1688 265 6555 6560 4975 2738 6561 0 1689 1690 444 1688 6558 6403 4980 6560 6562 0 265 1687 1671 626 6563 6564 6565 2735 6566 0 1687 56 1672 1671 6567 6568 6569 6564 6570 0 626 1671 1670 266 6565 6571 4951 2740 6572 0 1671 1672 349 1670 6569 6573 4956 6571 6574 0 268 628 1702 1710 2754 6575 6576 6577 6578 0 628 267 1701 1702 2762 5004 6579 6575 6580 0 1710 1702 1882 112 6576 6581 6582 6583 6584 0 1702 1701 462 1882 6579 5011 6585 6581 6586 0 268 1708 1698 629 6587 6588 6589 2751 6590 0 1708 113 1714 1698 6591 6592 6593 6588 6594 0 629 1698 1697 269 6589 6595 4987 2756 6596 0 1698 1714 461 1697 6593 6597 4992 6595 6598 0 270 1724 1733 631 6599 6600 6601 2778 6602 0 1724 93 1734 1733 6603 6236 6604 6600 6605 0 631 1733 1732 271 6601 6606 5057 2770 6607 0 1733 1734 424 1732 6604 6239 5062 6606 6608 0 271 1731 1718 632 6609 6610 6611 2767 6612 0 1731 114 1738 1718 6613 6614 6615 6610 6616 0 632 1718 1717 272 6611 6617 5031 2772 6618 0 1718 1738 465 1717 6615 6619 5036 6617 6620 0 273 1748 1757 634 6621 6622 6623 2794 6624 0 1748 89 1758 1757 6625 6166 6626 6622 6627 0 634 1757 1756 274 6623 6628 5097 2786 6629 0 1757 1758 416 1756 6626 6169 5102 6628 6630 0 274 1755 1742 635 6631 6632 6633 2783 6634 0 1755 115 1763 1742 6635 6636 6637 6632 6638 0 635 1742 1741 275 6633 6639 5071 2788 6640 0 1742 1763 467 1741 6637 6641 5076 6639 6642 0 276 1774 1785 637 6643 6644 6645 2810 6646 0 1774 108 1786 1785 6647 6492 6648 6644 6649 0 637 1785 1784 277 6645 6650 5135 2802 6651 0 1785 1786 454 1784 6648 6495 5140 6650 6652 0 277 1783 1767 638 6653 6654 6655 2799 6656 0 1783 59 1768 1767 6657 6658 6659 6654 6660 0 638 1767 1766 278 6655 6661 5111 2804 6662 0 1767 1768 355 1766 6659 6663 5116 6661 6664 0 280 640 1798 1806 2818 6665 6666 6667 6668 0 640 279 1797 1798 2826 5164 6669 6665 6670 0 1806 1798 1982 116 6666 6671 6672 6673 6674 0 1798 1797 470 1982 6669 5171 6675 6671 6676 0 280 1804 1794 641 6677 6678 6679 2815 6680 0 1804 117 1810 1794 6681 6682 6683 6678 6684 0 641 1794 1793 281 6679 6685 5147 2820 6686 0 1794 1810 469 1793 6683 6687 5152 6685 6688 0 282 1820 1829 643 6689 6690 6691 2842 6692 0 1820 99 1830 1829 6693 6330 6694 6690 6695 0 643 1829 1828 283 6691 6696 5217 2834 6697 0 1829 1830 436 1828 6694 6333 5222 6696 6698 0 283 1827 1814 644 6699 6700 6701 2831 6702 0 1827 118 1834 1814 6703 6704 6705 6700 6706 0 644 1814 1813 284 6701 6707 5191 2836 6708 0 1814 1834 473 1813 6705 6709 5196 6707 6710 0 285 1844 1853 646 6711 6712 6713 2858 6714 0 1844 95 1854 1853 6715 6260 6716 6712 6717 0 646 1853 1852 286 6713 6718 5257 2850 6719 0 1853 1854 428 1852 6716 6263 5262 6718 6720 0 286 1851 1838 647 6721 6722 6723 2847 6724 0 1851 119 1859 1838 6725 6726 6727 6722 6728 0 647 1838 1837 287 6723 6729 5231 2852 6730 0 1838 1859 475 1837 6727 6731 5236 6729 6732 0 288 1870 1881 649 6733 6734 6735 2874 6736 0 1870 112 1882 1881 6737 6582 6738 6734 6739 0 649 1881 1880 289 6735 6740 5295 2866 6741 0 1881 1882 462 1880 6738 6585 5300 6740 6742 0 289 1879 1863 650 6743 6744 6745 2863 6746 0 1879 62 1864 1863 6747 6748 6749 6744 6750 0 650 1863 1862 290 6745 6751 5271 2868 6752 0 1863 1864 361 1862 6749 6753 5276 6751 6754 0 291 1896 1905 652 6755 6756 6757 2890 6758 0 1896 107 1906 1905 6759 6468 6760 6756 6761 0 652 1905 1904 292 6757 6762 5333 2882 6763 0 1905 1906 451 1904 6760 6471 5338 6762 6764 0 292 1903 1890 653 6765 6766 6767 2879 6768 0 1903 120 1910 1890 6769 6770 6771 6766 6772 0 653 1890 1889 293 6767 6773 5307 2884 6774 0 1890 1910 477 1889 6771 6775 5312 6773 6776 0 294 1920 1929 655 6777 6778 6779 2906 6780 0 1920 75 1930 1929 6781 5954 6782 6778 6783 0 655 1929 1928 295 6779 6784 5373 2898 6785 0 1929 1930 388 1928 6782 5957 5378 6784 6786 0 295 1927 1914 656 6787 6788 6789 2895 6790 0 1927 121 1934 1914 6791 6792 6793 6788 6794 0 656 1914 1913 296 6789 6795 5347 2900 6796 0 1914 1934 479 1913 6793 6797 5352 6795 6798 0 297 1944 1953 658 6799 6800 6801 2922 6802 0 1944 101 1954 1953 6803 6354 6804 6800 6805 0 658 1953 1952 298 6801 6806 5413 2914 6807 0 1953 1954 440 1952 6804 6357 5418 6806 6808 0 298 1951 1938 659 6809 6810 6811 2911 6812 0 1951 122 1959 1938 6813 6814 6815 6810 6816 0 659 1938 1937 299 6811 6817 5387 2916 6818 0 1938 1959 481 1937 6815 6819 5392 6817 6820 0 300 1970 1981 661 6821 6822 6823 2938 6824 0 1970 116 1982 1981 6825 6672 6826 6822 6827 0 661 1981 1980 301 6823 6828 5451 2930 6829 0 1981 1982 470 1980 6826 6675 5456 6828 6830 0 301 1979 1963 662 6831 6832 6833 2927 6834 0 1979 65 1964 1963 6835 6836 6837 6832 6838 0 662 1963 1962 302 6833 6839 5427 2932 6840 0 1963 1964 367 1962 6837 6841 5432 6839 6842 0 33 665 666 944 1996 6843 6844 5828 6845 0 665 125 664 666 1989 2946 6846 6843 6847 0 944 666 664 303 6844 6846 2954 5833 6848 0 123 673 958 672 1993 6849 6850 2959 6851 0 673 33 959 958 1997 5827 6852 6849 6853 0 672 958 957 306 6850 6854 3664 2964 6855 0 958 959 169 957 6852 5823 3658 6854 6856 0 124 675 879 676 2978 6857 6858 5475 6859 0 675 307 877 879 2986 3530 6860 6857 6861 0 676 879 878 35 6858 6862 2189 5479 6863 0 879 877 159 878 6860 3525 2185 6862 6864 0 124 678 768 677 5465 6865 6866 2975 6867 0 678 34 769 768 5471 5611 6868 6865 6869 0 677 768 767 308 6866 6870 3257 2980 6871 0 768 769 141 767 6868 5607 3250 6870 6872 0 36 681 682 1044 2012 6873 6874 5916 6875 0 681 128 680 682 2005 2994 6876 6873 6877 0 1044 682 680 309 6874 6876 3002 5921 6878 0 126 689 1058 688 2009 6879 6880 3007 6881 0 689 36 1059 1058 2013 5915 6882 6879 6883 0 688 1058 1057 312 6880 6884 3820 3012 6885 0 1058 1059 181 1057 6882 5911 3814 6884 6886 0 127 691 979 692 3026 6887 6888 5499 6889 0 691 313 977 979 3034 3686 6890 6887 6891 0 692 979 978 38 6888 6892 2253 5503 6893 0 979 977 171 978 6890 3681 2249 6892 6894 0 127 694 852 693 5489 6895 6896 3023 6897 0 694 37 853 852 5495 5729 6898 6895 6899 0 693 852 851 314 6896 6900 3493 3028 6901 0 852 853 156 851 6898 5725 3486 6900 6902 0 39 697 698 1132 2028 6903 6904 6012 6905 0 697 131 696 698 2021 3042 6906 6903 6907 0 1132 698 696 315 6904 6906 3050 6017 6908 0 129 705 1143 704 2025 6909 6910 3055 6911 0 705 39 1144 1143 2029 6011 6912 6909 6913 0 704 1143 1142 318 6910 6914 3991 3060 6915 0 1143 1144 193 1142 6912 6007 3984 6914 6916 0 130 707 1077 708 3074 6917 6918 5523 6919 0 707 319 1075 1077 3082 3842 6920 6917 6921 0 708 1077 1076 41 6918 6922 2317 5527 6923 0 1077 1075 183 1076 6920 3837 2313 6922 6924 0 130 710 875 709 5513 6925 6926 3071 6927 0 710 40 876 875 5519 5751 6928 6925 6929 0 709 875 874 320 6926 6930 3534 3076 6931 0 875 876 159 874 6928 5747 3528 6930 6932 0 42 713 714 1220 2044 6933 6934 6106 6935 0 713 134 712 714 2037 3090 6936 6933 6937 0 1220 714 712 321 6934 6936 3098 6111 6938 0 132 721 1231 720 2041 6939 6940 3103 6941 0 721 42 1232 1231 2045 6105 6942 6939 6943 0 720 1231 1230 324 6940 6944 4159 3108 6945 0 1231 1232 205 1230 6942 6101 4152 6944 6946 0 133 723 1163 724 3122 6947 6948 5547 6949 0 723 325 1161 1163 3130 4014 6950 6947 6951 0 724 1163 1162 44 6948 6952 2381 5551 6953 0 1163 1161 195 1162 6950 4009 2377 6952 6954 0 133 726 899 725 5537 6955 6956 3119 6957 0 726 43 900 899 5543 5773 6958 6955 6959 0 725 899 898 326 6956 6960 3574 3124 6961 0 899 900 162 898 6958 5769 3568 6960 6962 0 45 729 730 1308 2060 6963 6964 6200 6965 0 729 137 728 730 2053 3138 6966 6963 6967 0 1308 730 728 327 6964 6966 3146 6205 6968 0 135 737 1319 736 2057 6969 6970 3151 6971 0 737 45 1320 1319 2061 6199 6972 6969 6973 0 736 1319 1318 330 6970 6974 4327 3156 6975 0 1319 1320 217 1318 6972 6195 4320 6974 6976 0 136 739 1251 740 3170 6977 6978 5571 6979 0 739 331 1249 1251 3178 4182 6980 6977 6981 0 740 1251 1250 47 6978 6982 2445 5575 6983 0 1251 1249 207 1250 6980 4177 2441 6982 6984 0 136 742 923 741 5561 6985 6986 3167 6987 0 742 46 924 923 5567 5795 6988 6985 6989 0 741 923 922 332 6986 6990 3614 3172 6991 0 923 924 165 922 6988 5791 3608 6990 6992 0 48 745 746 1396 2076 6993 6994 6294 6995 0 745 140 744 746 2069 3186 6996 6993 6997 0 1396 746 744 333 6994 6996 3194 6299 6998 0 138 753 1407 752 2073 6999 7000 3199 7001 0 753 48 1408 1407 2077 6293 7002 6999 7003 0 752 1407 1406 336 7000 7004 4495 3204 7005 0 1407 1408 229 1406 7002 6289 4488 7004 7006 0 139 755 1339 756 3218 7007 7008 5595 7009 0 755 337 1337 1339 3226 4350 7010 7007 7011 0 756 1339 1338 50 7008 7012 2509 5599 7013 0 1339 1337 219 1338 7010 4345 2505 7012 7014 0 139 758 949 757 5585 7015 7016 3215 7017 0 758 49 950 949 5591 5817 7018 7015 7019 0 757 949 948 338 7016 7020 3652 3220 7021 0 949 950 168 948 7018 5813 3646 7020 7022 0 51 761 762 1484 2092 7023 7024 6386 7025 0 761 143 760 762 2085 3234 7026 7023 7027 0 1484 762 760 339 7024 7026 3242 6391 7028 0 141 771 1498 770 2089 7029 7030 3247 7031 0 771 51 1499 1498 2093 6385 7032 7029 7033 0 770 1498 1497 341 7030 7034 4660 3252 7035 0 1498 1499 241 1497 7032 6381 4654 7034 7036 0 142 774 1427 775 3264 7037 7038 5617 7039 0 774 342 1425 1427 3271 4518 7040 7037 7041 0 775 1427 1426 52 7038 7042 2573 5621 7043 0 1427 1425 231 1426 7040 4513 2569 7042 7044 0 53 781 782 1580 2108 7045 7046 6478 7047 0 781 146 780 782 2101 3278 7048 7045 7049 0 1580 782 780 343 7046 7048 3286 6483 7050 0 144 789 1591 788 2105 7051 7052 3291 7053 0 789 53 1592 1591 2109 6477 7054 7051 7055 0 788 1591 1590 346 7052 7056 4823 3296 7057 0 1591 1592 253 1590 7054 6473 4816 7056 7058 0 145 791 1517 792 3310 7059 7060 5641 7061 0 791 347 1515 1517 3318 4682 7062 7059 7063 0 792 1517 1516 55 7060 7064 2637 5645 7065 0 1517 1515 243 1516 7062 4677 2633 7064 7066 0 145 794 1049 793 5631 7067 7068 3307 7069 0 794 54 1050 1049 5637 5905 7070 7067 7071 0 793 1049 1048 348 7068 7072 3808 3312 7073 0 1049 1050 180 1048 7070 5901 3802 7072 7074 0 56 797 798 1672 2124 7075 7076 6568 7077 0 797 149 796 798 2117 3326 7078 7075 7079 0 1672 798 796 349 7076 7078 3334 6573 7080 0 147 805 1686 804 2121 7081 7082 3339 7083 0 805 56 1687 1686 2125 6567 7084 7081 7085 0 804 1686 1685 352 7082 7086 4984 3344 7087 0 1686 1687 265 1685 7084 6563 4978 7086 7088 0 148 807 1609 808 3358 7089 7090 5665 7091 0 807 353 1607 1609 3366 4846 7092 7089 7093 0 808 1609 1608 58 7090 7094 2701 5669 7095 0 1609 1607 255 1608 7092 4841 2697 7094 7096 0 148 810 1023 809 5655 7097 7098 3355 7099 0 810 57 1024 1023 5661 5883 7100 7097 7101 0 809 1023 1022 354 7098 7102 3770 3360 7103 0 1023 1024 177 1022 7100 5879 3764 7102 7104 0 59 813 814 1768 2140 7105 7106 6658 7107 0 813 152 812 814 2133 3374 7108 7105 7109 0 1768 814 812 355 7106 7108 3382 6663 7110 0 150 821 1782 820 2137 7111 7112 3387 7113 0 821 59 1783 1782 2141 6657 7114 7111 7115 0 820 1782 1781 358 7112 7116 5144 3392 7117 0 1782 1783 277 1781 7114 6653 5138 7116 7118 0 151 823 1705 824 3406 7119 7120 5689 7121 0 823 359 1703 1705 3414 5006 7122 7119 7123 0 824 1705 1704 61 7120 7124 2765 5693 7125 0 1705 1703 267 1704 7122 5001 2761 7124 7126 0 151 826 999 825 5679 7127 7128 3403 7129 0 826 60 1000 999 5685 5861 7130 7127 7131 0 825 999 998 360 7128 7132 3730 3408 7133 0 999 1000 174 998 7130 5857 3724 7132 7134 0 62 829 830 1864 2156 7135 7136 6748 7137 0 829 155 828 830 2149 3422 7138 7135 7139 0 1864 830 828 361 7136 7138 3430 6753 7140 0 153 837 1878 836 2153 7141 7142 3435 7143 0 837 62 1879 1878 2157 6747 7144 7141 7145 0 836 1878 1877 364 7142 7146 5304 3440 7147 0 1878 1879 289 1877 7144 6743 5298 7146 7148 0 154 839 1801 840 3454 7149 7150 5713 7151 0 839 365 1799 1801 3462 5166 7152 7149 7153 0 840 1801 1800 64 7150 7154 2829 5717 7155 0 1801 1799 279 1800 7152 5161 2825 7154 7156 0 154 842 975 841 5703 7157 7158 3451 7159 0 842 63 976 975 5709 5839 7160 7157 7161 0 841 975 974 366 7158 7162 3690 3456 7163 0 975 976 171 974 7160 5835 3684 7162 7164 0 65 845 846 1964 2172 7165 7166 6836 7167 0 845 158 844 846 2165 3470 7168 7165 7169 0 1964 846 844 367 7166 7168 3478 6841 7170 0 156 855 1978 854 2169 7171 7172 3483 7173 0 855 65 1979 1978 2173 6835 7174 7171 7175 0 854 1978 1977 369 7172 7176 5460 3488 7177 0 1978 1979 301 1977 7174 6831 5454 7176 7178 0 157 858 1899 859 3500 7179 7180 5735 7181 0 858 370 1897 1899 3507 5326 7182 7179 7183 0 859 1899 1898 66 7180 7184 2893 5739 7185 0 1899 1897 291 1898 7182 5321 2889 7184 7186 0 35 867 868 866 2188 7187 7188 5480 7189 0 867 161 865 868 2181 3514 7190 7187 7191 0 866 868 865 304 7188 7190 3521 5485 7192 0 160 882 903 883 3540 7193 7194 5757 7195 0 882 372 901 903 3547 3570 7196 7193 7197 0 883 903 902 67 7194 7198 2205 5761 7199 0 903 901 162 902 7196 3565 2201 7198 7200 0 67 891 892 890 2204 7201 7202 5762 7203 0 891 164 889 892 2197 3554 7204 7201 7205 0 890 892 889 371 7202 7204 3561 5767 7206 0 163 906 927 907 3580 7207 7208 5779 7209 0 906 374 925 927 3587 3610 7210 7207 7211 0 907 927 926 68 7208 7212 2221 5783 7213 0 927 925 165 926 7210 3605 2217 7212 7214 0 68 915 916 914 2220 7215 7216 5784 7217 0 915 167 913 916 2213 3594 7218 7215 7219 0 914 916 913 373 7216 7218 3601 5789 7220 0 166 930 953 931 3620 7221 7222 5801 7223 0 930 376 951 953 3627 3648 7224 7221 7225 0 931 953 952 69 7222 7226 2237 5805 7227 0 953 951 168 952 7224 3643 2233 7226 7228 0 69 940 941 939 2236 7229 7230 5806 7231 0 940 170 938 941 2229 3634 7232 7229 7233 0 939 941 938 375 7230 7232 3640 5811 7234 0 38 967 968 966 2252 7235 7236 5504 7237 0 967 173 965 968 2245 3670 7238 7235 7239 0 966 968 965 310 7236 7238 3677 5509 7240 0 172 982 1003 983 3696 7241 7242 5845 7243 0 982 378 1001 1003 3703 3726 7244 7241 7245 0 983 1003 1002 70 7242 7246 2269 5849 7247 0 1003 1001 174 1002 7244 3721 2265 7246 7248 0 70 991 992 990 2268 7249 7250 5850 7251 0 991 176 989 992 2261 3710 7252 7249 7253 0 990 992 989 377 7250 7252 3717 5855 7254 0 175 1006 1027 1007 3736 7255 7256 5867 7257 0 1006 380 1025 1027 3743 3766 7258 7255 7259 0 1007 1027 1026 71 7256 7260 2285 5871 7261 0 1027 1025 177 1026 7258 3761 2281 7260 7262 0 71 1015 1016 1014 2284 7263 7264 5872 7265 0 1015 179 1013 1016 2277 3750 7266 7263 7267 0 1014 1016 1013 379 7264 7266 3757 5877 7268 0 178 1030 1053 1031 3776 7269 7270 5889 7271 0 1030 382 1051 1053 3783 3804 7272 7269 7273 0 1031 1053 1052 72 7270 7274 2301 5893 7275 0 1053 1051 180 1052 7272 3799 2297 7274 7276 0 72 1040 1041 1039 2300 7277 7278 5894 7279 0 1040 182 1038 1041 2293 3790 7280 7277 7281 0 1039 1041 1038 381 7278 7280 3796 5899 7282 0 41 1067 1068 1066 2316 7283 7284 5528 7285 0 1067 185 1065 1068 2309 3826 7286 7283 7287 0 1066 1068 1065 316 7284 7286 3833 5533 7288 0 184 1079 1097 1080 3854 7289 7290 5935 7291 0 1079 385 1095 1097 3862 3886 7292 7289 7293 0 1080 1097 1096 74 7290 7294 2333 5939 7295 0 1097 1095 186 1096 7292 3881 2329 7294 7296 0 184 1082 1489 1081 5925 7297 7298 3851 7299 0 1082 73 1490 1489 5931 6375 7300 7297 7301 0 1081 1489 1488 386 7298 7302 4648 3856 7303 0 1489 1490 240 1488 7300 6371 4642 7302 7304 0 74 1087 1088 1086 2332 7305 7306 5940 7307 0 1087 188 1085 1088 2325 3870 7308 7305 7309 0 1086 1088 1085 383 7306 7308 3877 5945 7310 0 187 1099 1117 1100 3898 7311 7312 5959 7313 0 1099 389 1115 1117 3906 3930 7314 7311 7315 0 1100 1117 1116 76 7312 7316 2349 5963 7317 0 1117 1115 189 1116 7314 3925 2345 7316 7318 0 187 1102 1919 1101 5949 7319 7320 3895 7321 0 1102 75 1920 1919 5955 6781 7322 7319 7323 0 1101 1919 1918 390 7320 7324 5370 3900 7325 0 1919 1920 294 1918 7322 6777 5364 7324 7326 0 76 1107 1108 1106 2348 7327 7328 5964 7329 0 1107 191 1105 1108 2341 3914 7330 7327 7331 0 1106 1108 1105 387 7328 7330 3921 5969 7332 0 190 1119 1139 1120 3942 7333 7334 5983 7335 0 1119 393 1137 1139 3950 3972 7336 7333 7337 0 1120 1139 1138 78 7334 7338 2365 5987 7339 0 1139 1137 192 1138 7336 3967 2361 7338 7340 0 190 1122 1559 1121 5973 7341 7342 3939 7343 0 1122 77 1560 1559 5979 6443 7344 7341 7345 0 1121 1559 1558 394 7342 7346 4770 3944 7347 0 1559 1560 249 1558 7344 6439 4764 7346 7348 0 78 1128 1129 1127 2364 7349 7350 5988 7351 0 1128 194 1126 1129 2357 3958 7352 7349 7353 0 1127 1129 1126 391 7350 7352 3964 5993 7354 0 193 1146 1159 1145 5997 7355 7356 3981 7357 0 1146 79 1160 1159 6003 6023 7358 7355 7359 0 1145 1159 1158 396 7356 7360 4018 3986 7361 0 1159 1160 195 1158 7358 6019 4012 7360 7362 0 44 1151 1152 1150 2380 7363 7364 5552 7365 0 1151 197 1149 1152 2373 3998 7366 7363 7367 0 1150 1152 1149 322 7364 7366 4005 5557 7368 0 196 1166 1185 1167 4024 7369 7370 6029 7371 0 1166 398 1183 1185 4031 4054 7372 7369 7373 0 1167 1185 1184 80 7370 7374 2397 6033 7375 0 1185 1183 198 1184 7372 4049 2393 7374 7376 0 80 1175 1176 1174 2396 7377 7378 6034 7379 0 1175 200 1173 1176 2389 4038 7380 7377 7381 0 1174 1176 1173 397 7378 7380 4045 6039 7382 0 199 1187 1205 1188 4066 7383 7384 6053 7385 0 1187 401 1203 1205 4074 4098 7386 7383 7387 0 1188 1205 1204 82 7384 7388 2413 6057 7389 0 1205 1203 201 1204 7386 4093 2409 7388 7390 0 199 1190 1535 1189 6043 7391 7392 4063 7393 0 1190 81 1536 1535 6049 6421 7394 7391 7395 0 1189 1535 1534 402 7392 7396 4730 4068 7397 0 1535 1536 246 1534 7394 6417 4724 7396 7398 0 82 1195 1196 1194 2412 7399 7400 6058 7401 0 1195 203 1193 1196 2405 4082 7402 7399 7403 0 1194 1196 1193 399 7400 7402 4089 6063 7404 0 202 1207 1227 1208 4110 7405 7406 6077 7407 0 1207 405 1225 1227 4118 4140 7408 7405 7409 0 1208 1227 1226 84 7406 7410 2429 6081 7411 0 1227 1225 204 1226 7408 4135 2425 7410 7412 0 202 1210 1651 1209 6067 7413 7414 4107 7415 0 1210 83 1652 1651 6073 6535 7416 7413 7417 0 1209 1651 1650 406 7414 7418 4934 4112 7419 0 1651 1652 261 1650 7416 6531 4928 7418 7420 0 84 1216 1217 1215 2428 7421 7422 6082 7423 0 1216 206 1214 1217 2421 4126 7424 7421 7425 0 1215 1217 1214 403 7422 7424 4132 6087 7426 0 205 1234 1247 1233 6091 7427 7428 4149 7429 0 1234 85 1248 1247 6097 6117 7430 7427 7431 0 1233 1247 1246 408 7428 7432 4186 4154 7433 0 1247 1248 207 1246 7430 6113 4180 7432 7434 0 47 1239 1240 1238 2444 7435 7436 5576 7437 0 1239 209 1237 1240 2437 4166 7438 7435 7439 0 1238 1240 1237 328 7436 7438 4173 5581 7440 0 208 1254 1273 1255 4192 7441 7442 6123 7443 0 1254 410 1271 1273 4199 4222 7444 7441 7445 0 1255 1273 1272 86 7442 7446 2461 6127 7447 0 1273 1271 210 1272 7444 4217 2457 7446 7448 0 86 1263 1264 1262 2460 7449 7450 6128 7451 0 1263 212 1261 1264 2453 4206 7452 7449 7453 0 1262 1264 1261 409 7450 7452 4213 6133 7454 0 211 1275 1293 1276 4234 7455 7456 6147 7457 0 1275 413 1291 1293 4242 4266 7458 7455 7459 0 1276 1293 1292 88 7456 7460 2477 6151 7461 0 1293 1291 213 1292 7458 4261 2473 7460 7462 0 211 1278 1627 1277 6137 7463 7464 4231 7465 0 1278 87 1628 1627 6143 6513 7466 7463 7467 0 1277 1627 1626 414 7464 7468 4894 4236 7469 0 1627 1628 258 1626 7466 6509 4888 7468 7470 0 88 1283 1284 1282 2476 7471 7472 6152 7473 0 1283 215 1281 1284 2469 4250 7474 7471 7475 0 1282 1284 1281 411 7472 7474 4257 6157 7476 0 214 1295 1315 1296 4278 7477 7478 6171 7479 0 1295 417 1313 1315 4286 4308 7480 7477 7481 0 1296 1315 1314 90 7478 7482 2493 6175 7483 0 1315 1313 216 1314 7480 4303 2489 7482 7484 0 214 1298 1747 1297 6161 7485 7486 4275 7487 0 1298 89 1748 1747 6167 6625 7488 7485 7489 0 1297 1747 1746 418 7486 7490 5094 4280 7491 0 1747 1748 273 1746 7488 6621 5088 7490 7492 0 90 1304 1305 1303 2492 7493 7494 6176 7495 0 1304 218 1302 1305 2485 4294 7496 7493 7497 0 1303 1305 1302 415 7494 7496 4300 6181 7498 0 217 1322 1335 1321 6185 7499 7500 4317 7501 0 1322 91 1336 1335 6191 6211 7502 7499 7503 0 1321 1335 1334 420 7500 7504 4354 4322 7505 0 1335 1336 219 1334 7502 6207 4348 7504 7506 0 50 1327 1328 1326 2508 7507 7508 5600 7509 0 1327 221 1325 1328 2501 4334 7510 7507 7511 0 1326 1328 1325 334 7508 7510 4341 5605 7512 0 220 1342 1361 1343 4360 7513 7514 6217 7515 0 1342 422 1359 1361 4367 4390 7516 7513 7517 0 1343 1361 1360 92 7514 7518 2525 6221 7519 0 1361 1359 222 1360 7516 4385 2521 7518 7520 0 92 1351 1352 1350 2524 7521 7522 6222 7523 0 1351 224 1349 1352 2517 4374 7524 7521 7525 0 1350 1352 1349 421 7522 7524 4381 6227 7526 0 223 1363 1381 1364 4402 7527 7528 6241 7529 0 1363 425 1379 1381 4410 4434 7530 7527 7531 0 1364 1381 1380 94 7528 7532 2541 6245 7533 0 1381 1379 225 1380 7530 4429 2537 7532 7534 0 223 1366 1723 1365 6231 7535 7536 4399 7537 0 1366 93 1724 1723 6237 6603 7538 7535 7539 0 1365 1723 1722 426 7536 7540 5054 4404 7541 0 1723 1724 270 1722 7538 6599 5048 7540 7542 0 94 1371 1372 1370 2540 7543 7544 6246 7545 0 1371 227 1369 1372 2533 4418 7546 7543 7547 0 1370 1372 1369 423 7544 7546 4425 6251 7548 0 226 1383 1403 1384 4446 7549 7550 6265 7551 0 1383 429 1401 1403 4454 4476 7552 7549 7553 0 1384 1403 1402 96 7550 7554 2557 6269 7555 0 1403 1401 228 1402 7552 4471 2553 7554 7556 0 226 1386 1843 1385 6255 7557 7558 4443 7559 0 1386 95 1844 1843 6261 6715 7560 7557 7561 0 1385 1843 1842 430 7558 7562 5254 4448 7563 0 1843 1844 285 1842 7560 6711 5248 7562 7564 0 96 1392 1393 1391 2556 7565 7566 6270 7567 0 1392 230 1390 1393 2549 4462 7568 7565 7569 0 1391 1393 1390 427 7566 7568 4468 6275 7570 0 229 1410 1423 1409 6279 7571 7572 4485 7573 0 1410 97 1424 1423 6285 6305 7574 7571 7575 0 1409 1423 1422 432 7572 7576 4522 4490 7577 0 1423 1424 231 1422 7574 6301 4516 7576 7578 0 52 1415 1416 1414 2572 7579 7580 5622 7581 0 1415 233 1413 1416 2565 4502 7582 7579 7583 0 1414 1416 1413 340 7580 7582 4509 5627 7584 0 232 1430 1449 1431 4528 7585 7586 6311 7587 0 1430 434 1447 1449 4535 4558 7588 7585 7589 0 1431 1449 1448 98 7586 7590 2589 6315 7591 0 1449 1447 234 1448 7588 4553 2585 7590 7592 0 98 1439 1440 1438 2588 7593 7594 6316 7595 0 1439 236 1437 1440 2581 4542 7596 7593 7597 0 1438 1440 1437 433 7594 7596 4549 6321 7598 0 235 1451 1469 1452 4570 7599 7600 6335 7601 0 1451 437 1467 1469 4578 4602 7602 7599 7603 0 1452 1469 1468 100 7600 7604 2605 6339 7605 0 1469 1467 237 1468 7602 4597 2601 7604 7606 0 235 1454 1819 1453 6325 7607 7608 4567 7609 0 1454 99 1820 1819 6331 6693 7610 7607 7611 0 1453 1819 1818 438 7608 7612 5214 4572 7613 0 1819 1820 282 1818 7610 6689 5208 7612 7614 0 100 1459 1460 1458 2604 7615 7616 6340 7617 0 1459 239 1457 1460 2597 4586 7618 7615 7619 0 1458 1460 1457 435 7616 7618 4593 6345 7620 0 238 1471 1493 1472 4614 7621 7622 6359 7623 0 1471 441 1491 1493 4622 4644 7624 7621 7625 0 1472 1493 1492 102 7622 7626 2621 6363 7627 0 1493 1491 240 1492 7624 4639 2617 7626 7628 0 238 1474 1943 1473 6349 7629 7630 4611 7631 0 1474 101 1944 1943 6355 6803 7632 7629 7633 0 1473 1943 1942 442 7630 7634 5410 4616 7635 0 1943 1944 297 1942 7632 6799 5404 7634 7636 0 102 1480 1481 1479 2620 7637 7638 6364 7639 0 1480 242 1478 1481 2613 4630 7640 7637 7641 0 1479 1481 1478 439 7638 7640 4636 6369 7642 0 55 1507 1508 1506 2636 7643 7644 5646 7645 0 1507 245 1505 1508 2629 4666 7646 7643 7647 0 1506 1508 1505 344 7644 7646 4673 5651 7648 0 244 1519 1539 1520 4694 7649 7650 6405 7651 0 1519 445 1537 1539 4702 4726 7652 7649 7653 0 1520 1539 1538 104 7650 7654 2653 6409 7655 0 1539 1537 246 1538 7652 4721 2649 7654 7656 0 244 1522 1677 1521 6395 7657 7658 4691 7659 0 1522 103 1678 1677 6401 6557 7660 7657 7661 0 1521 1677 1676 446 7658 7662 4972 4696 7663 0 1677 1678 264 1676 7660 6553 4966 7662 7664 0 104 1527 1528 1526 2652 7665 7666 6410 7667 0 1527 248 1525 1528 2645 4710 7668 7665 7669 0 1526 1528 1525 443 7666 7668 4717 6415 7670 0 247 1542 1563 1543 4736 7671 7672 6427 7673 0 1542 448 1561 1563 4743 4766 7674 7671 7675 0 1543 1563 1562 105 7672 7676 2669 6431 7677 0 1563 1561 249 1562 7674 4761 2665 7676 7678 0 105 1551 1552 1550 2668 7679 7680 6432 7681 0 1551 251 1549 1552 2661 4750 7682 7679 7683 0 1550 1552 1549 447 7680 7682 4757 6437 7684 0 250 1566 1587 1567 4776 7685 7686 6449 7687 0 1566 450 1585 1587 4783 4804 7688 7685 7689 0 1567 1587 1586 106 7686 7690 2685 6453 7691 0 1587 1585 252 1586 7688 4799 2681 7690 7692 0 106 1576 1577 1575 2684 7693 7694 6454 7695 0 1576 254 1574 1577 2677 4790 7696 7693 7697 0 1575 1577 1574 449 7694 7696 4796 6459 7698 0 253 1594 1895 1593 6463 7699 7700 4813 7701 0 1594 107 1896 1895 6469 6759 7702 7699 7703 0 1593 1895 1894 452 7700 7704 5330 4818 7705 0 1895 1896 291 1894 7702 6755 5324 7704 7706 0 58 1599 1600 1598 2700 7707 7708 5670 7709 0 1599 257 1597 1600 2693 4830 7710 7707 7711 0 1598 1600 1597 350 7708 7710 4837 5675 7712 0 256 1611 1631 1612 4858 7713 7714 6497 7715 0 1611 455 1629 1631 4866 4890 7716 7713 7717 0 1612 1631 1630 109 7714 7718 2717 6501 7719 0 1631 1629 258 1630 7716 4885 2713 7718 7720 0 256 1614 1773 1613 6487 7721 7722 4855 7723 0 1614 108 1774 1773 6493 6647 7724 7721 7725 0 1613 1773 1772 456 7722 7726 5132 4860 7727 0 1773 1774 276 1772 7724 6643 5126 7726 7728 0 109 1619 1620 1618 2716 7729 7730 6502 7731 0 1619 260 1617 1620 2709 4874 7732 7729 7733 0 1618 1620 1617 453 7730 7732 4881 6507 7734 0 259 1634 1655 1635 4900 7735 7736 6519 7737 0 1634 458 1653 1655 4907 4930 7738 7735 7739 0 1635 1655 1654 110 7736 7740 2733 6523 7741 0 1655 1653 261 1654 7738 4925 2729 7740 7742 0 110 1643 1644 1642 2732 7743 7744 6524 7745 0 1643 263 1641 1644 2725 4914 7746 7743 7747 0 1642 1644 1641 457 7744 7746 4921 6529 7748 0 262 1658 1681 1659 4940 7749 7750 6541 7751 0 1658 460 1679 1681 4947 4968 7752 7749 7753 0 1659 1681 1680 111 7750 7754 2749 6545 7755 0 1681 1679 264 1680 7752 4963 2745 7754 7756 0 111 1668 1669 1667 2748 7757 7758 6546 7759 0 1668 266 1666 1669 2741 4954 7760 7757 7761 0 1667 1669 1666 459 7758 7760 4960 6551 7762 0 61 1695 1696 1694 2764 7763 7764 5694 7765 0 1695 269 1693 1696 2757 4990 7766 7763 7767 0 1694 1696 1693 356 7764 7766 4997 5699 7768 0 268 1707 1727 1708 5018 7769 7770 6587 7771 0 1707 463 1725 1727 5026 5050 7772 7769 7773 0 1708 1727 1726 113 7770 7774 2781 6591 7775 0 1727 1725 270 1726 7772 5045 2777 7774 7776 0 268 1710 1869 1709 6577 7777 7778 5015 7779 0 1710 112 1870 1869 6583 6737 7780 7777 7781 0 1709 1869 1868 464 7778 7782 5292 5020 7783 0 1869 1870 288 1868 7780 6733 5286 7782 7784 0 113 1715 1716 1714 2780 7785 7786 6592 7787 0 1715 272 1713 1716 2773 5034 7788 7785 7789 0 1714 1716 1713 461 7786 7788 5041 6597 7790 0 271 1730 1751 1731 5060 7791 7792 6609 7793 0 1730 466 1749 1751 5067 5090 7794 7791 7795 0 1731 1751 1750 114 7792 7796 2797 6613 7797 0 1751 1749 273 1750 7794 5085 2793 7796 7798 0 114 1739 1740 1738 2796 7799 7800 6614 7801 0 1739 275 1737 1740 2789 5074 7802 7799 7803 0 1738 1740 1737 465 7800 7802 5081 6619 7804 0 274 1754 1777 1755 5100 7805 7806 6631 7807 0 1754 468 1775 1777 5107 5128 7808 7805 7809 0 1755 1777 1776 115 7806 7810 2813 6635 7811 0 1777 1775 276 1776 7808 5123 2809 7810 7812 0 115 1764 1765 1763 2812 7813 7814 6636 7815 0 1764 278 1762 1765 2805 5114 7816 7813 7817 0 1763 1765 1762 467 7814 7816 5120 6641 7818 0 64 1791 1792 1790 2828 7819 7820 5718 7821 0 1791 281 1789 1792 2821 5150 7822 7819 7823 0 1790 1792 1789 362 7820 7822 5157 5723 7824 0 280 1803 1823 1804 5178 7825 7826 6677 7827 0 1803 471 1821 1823 5186 5210 7828 7825 7829 0 1804 1823 1822 117 7826 7830 2845 6681 7831 0 1823 1821 282 1822 7828 5205 2841 7830 7832 0 280 1806 1969 1805 6667 7833 7834 5175 7835 0 1806 116 1970 1969 6673 6825 7836 7833 7837 0 1805 1969 1968 472 7834 7838 5448 5180 7839 0 1969 1970 300 1968 7836 6821 5442 7838 7840 0 117 1811 1812 1810 2844 7841 7842 6682 7843 0 1811 284 1809 1812 2837 5194 7844 7841 7845 0 1810 1812 1809 469 7842 7844 5201 6687 7846 0 283 1826 1847 1827 5220 7847 7848 6699 7849 0 1826 474 1845 1847 5227 5250 7850 7847 7851 0 1827 1847 1846 118 7848 7852 2861 6703 7853 0 1847 1845 285 1846 7850 5245 2857 7852 7854 0 118 1835 1836 1834 2860 7855 7856 6704 7857 0 1835 287 1833 1836 2853 5234 7858 7855 7859 0 1834 1836 1833 473 7856 7858 5241 6709 7860 0 286 1850 1873 1851 5260 7861 7862 6721 7863 0 1850 476 1871 1873 5267 5288 7864 7861 7865 0 1851 1873 1872 119 7862 7866 2877 6725 7867 0 1873 1871 288 1872 7864 5283 2873 7866 7868 0 119 1860 1861 1859 2876 7869 7870 6726 7871 0 1860 290 1858 1861 2869 5274 7872 7869 7873 0 1859 1861 1858 475 7870 7872 5280 6731 7874 0 66 1887 1888 1886 2892 7875 7876 5740 7877 0 1887 293 1885 1888 2885 5310 7878 7875 7879 0 1886 1888 1885 368 7876 7878 5317 5745 7880 0 292 1902 1923 1903 5336 7881 7882 6765 7883 0 1902 478 1921 1923 5343 5366 7884 7881 7885 0 1903 1923 1922 120 7882 7886 2909 6769 7887 0 1923 1921 294 1922 7884 5361 2905 7886 7888 0 120 1911 1912 1910 2908 7889 7890 6770 7891 0 1911 296 1909 1912 2901 5350 7892 7889 7893 0 1910 1912 1909 477 7890 7892 5357 6775 7894 0 295 1926 1947 1927 5376 7895 7896 6787 7897 0 1926 480 1945 1947 5383 5406 7898 7895 7899 0 1927 1947 1946 121 7896 7900 2925 6791 7901 0 1947 1945 297 1946 7898 5401 2921 7900 7902 0 121 1935 1936 1934 2924 7903 7904 6792 7905 0 1935 299 1933 1936 2917 5390 7906 7903 7907 0 1934 1936 1933 479 7904 7906 5397 6797 7908 0 298 1950 1973 1951 5416 7909 7910 6809 7911 0 1950 482 1971 1973 5423 5444 7912 7909 7913 0 1951 1973 1972 122 7910 7914 2941 6813 7915 0 1973 1971 300 1972 7912 5439 2937 7914 7916 0 122 1960 1961 1959 2940 7917 7918 6814 7919 0 1960 302 1958 1961 2933 5430 7920 7917 7921 0 1959 1961 1958 481 7918 7920 5436 6819 7922 0 QuadrilateralsQ2Ordering 9 0 0 2 0 2 2 0 2 1 0 2 1 1 2 0 1 1 1 End libMeshb-7.80/sample_meshes/quad_q2.meshb000066400000000000000000011141401456732543400204150ustar00rootroot00000000000000bmmy?&'d?*pf?rOWw,ǿ9Zv?BѪt?=#d|Na?BѪt?09ȿ5kYİØt?P? /ֿj{?c#?nb~nh?j{]߿kC?RE*kiƢd߿%s,ֿRE*kJY8?W'g(xRE*kʼnv?4=*pf/KRb?7?m5?AnC<;ۤ?ϤM=ѿ5?*t^cܿ!CV1 >ܿB[Υѿf6뿛 >ܿ'?L࿛ >ܿ;$?+? "R.ܿ8n?;J"ÿɍ"k?D?r?IB=?~!<8? ?͋?9`W? ƈDe?ɍ"kMX?&5؀?IB=v?c͋P?(&o?N?q= ףp?IbI?KK1?Jvl?q ?A C? HwD? o?;.ۿZ ?,B4?+=)߿LLb?y!?[7qCDR o??Noۿ[ ӿ,B4? !p$PR] ҿy!?d?ɮˡE?7 C?&|{24?dn?s۾Gy!?՝?ǃ-v?q?]6:8?̰Qɿ{?Д~P0_^?'-\VaſG'?\4 34ڿ:3P?t{Ic@j.q"?W[q>Hr>?4#ظ]迾.ɿG1HLP÷׿H¾DWԲHĿRDU࿒>?4#x ƻ#G1-R?W@KWx?5>ӿ3g}1N:7?@a+ҿ3l:?LuT5?/- 'i??XƆnv?ٯ;yٱ)Xl:?ikD0?fR@ҿzi/G4{>?H?Cm~ҿ R)v4?Bc I?m~ҿu+.!w(пd:tz¿d"<^b,˿Z(?u+.?h ?x'۲?y7RH?K\Ǹ?Mu?1(hr?W'g(?,+MJAWGI?h;J?i?YBtxk?0{dƧ N_,?{mmпdb_ѭ?@?!1Pt&m?E =r?k￷h\W%1?RHڍz0H?iƢ?яtxk?‡?ٲ|]N_,? h"?v߿%Y?,?jUZѿWm?=z?B|`ӿh\W*4?bmVc?0' ?4 f?&ǝ?ƥdk?eÚʢ0?ƄK?JY8?Yb[>?n;n@L!?T~OSԿETѿu{m?|b*߳?iVy׿T?v=?4濾࿸n;fh<zG3C6? ?p!ۿd 1?x'-\V?Lo.2Կqn?Kd?Oc*Ϳ"dT??HPĿSC9ѮB?GӿSt$D$]?!T2]gC&]kL>Lۿtpx˿?74eԿT:E-Ϳ< ڿ37߈YRb׿K?a?kyqοLZ8'_Ϳ<2TT?p-e _?}n}?"dT9w?LT?"lxz,?6[ ?]¡xx?AF?h;?G ? *~s?3p?z}֤?[Ӟs9̗?#&?ϟ6Ӂ濳|\?Lw&+?K@k?[ Ac?҇.R+Lk?EVȪ?/A~6rݔ?Bp-??/E>?֥F?eډ??tA}˜?e2P鿃L2r?f? /)꿫%?? /=bBWT?Do~T~Oƿi:;%?Uthc翫%EVȪ?ˑ-|wBp-?mXSYv濚eI֥F?'kC4ڿ3ތ?tA}˜?uؿo^濴f?_|Ὺ忍?5磌MjhIط?#0ܻ0*i:;%?1aM٨? 0s6^?NJ)}C]#&?$_ Į?ӜȄLw&+?\?|˙m[ Ac?|y?z9EVȪ?5s{?֐҇Bp-?t["?eS֥F?EEN?D|,{؜?oŏ?l衶+]gC?Ժ j?6` j?ފĄ?W׿.5#?QGH?Yb+hؿBv$?Pmp?x&1̿&^?^Gt?enݳտ#&?#?= ףp=Ŀ'+?CTf?aÿsbc?}R?NCT?V#˪?\='o?+d?IC3?FA?`H?ēG?Ab{n?m6Vb?Y?!Z+g?|\?^??\&?7{5?3>?#GG,By俬G|?.<ܿ3g}ݿ Ƿw ?(&2sk]hSۂ?q&"ĿǁWۿHz?o(!ܺ:ۿaX5s?yCnѿqÿ5"?eʦ.z#IQ(IS?>$ʿHSȕzƿw*g?CVzNzпnHJz?FA?҇.ٿ2#?$A?Md 5s,am?ʉv߿'9x濝Y.տ#GG,-AGٿC<ܿ[n+̿(&2s bk_B</Oտq&"Ŀhv[&pno(! pUjOv3ÿyCnѿ+ᅦm2d?I̦ %H?H6WsDʿ2W!3?7j{пh9Cm鿣>6?mV}bۿ2˞6gIC3?ysV{X]N꿍ҥI*?w$$6߿? |#GG,/?$]3fC<ܿ~x%g(&2s;3f;?_|xᅨq&"ĿZmǿ̰Qo(!#)ahÿqrgyCnѿnK3ݿ7wpI̦pΈ`⿬q6\H6WsDʿ(ڿҧU뿬7j{пv_.'HmV}bۿ9'0ȚA"ysV{Xl޿6sHjdw$$6߿=ug?;Tގ¿h,)#.R?ᔹ¿;P<ܿwř?ӿ??4s!S>U?/[<ѿq&"Ŀ2?w~޿o(!j?V{ ܿyCnѿBt?I̦+`p?pwnPH6WsDʿɊj?0DK忬7j{п}[T?]pmV}bۿ$$6?T~ysV{X 翇?Jo w$$6߿0 Ƿ?2Mc{?((E+Wv;?/^|Q?;QiۿCͩd?h.K?mē]#?(@?+5{Ŀyߢ%?>?y÷mQf?%Ί?zflѿ߆?XB(? ?ۂ7t?*@8 m?Fdrjg?u?JGWfO7P?a4?i_5o?[ʿeZPVjܛ0?hwH1@?jIG6W?'?}w+Kt?qN`:?G?l_@/9?z)??a4? h"l??!ȱbA ?ip[[?6+1?_LJ?ǻ#cy?uR_v?]mO?Wt5?r/翕Tt)? 5?b!*.?ne?PMIa忯;3p?*WY[?\mտx[?76;R}g?ӿ-x>?:U?&R?o*k-B;'⿰Tka? U3Yٿ 5?IpտWUڿne?;s տ Y9⿨ip[[?0S80C¿76;R}g?A%cyÿ:U?5?tF^3c?'??w 5?g?C׼ܿmRX?I-?ҨI࿎~31]?}t76;R}g?m2OSpT7SW?(,?uBY?F|'f?ŋ!?bg ع(/?J= B?9\=?H`w?YF?jMѿmT?>Vÿ6T?`C|S:ֿ>z}?'9-W|V>(8'0?a1ZR^Hӱ?n?~31]Sgܿz̔? cZB`q8+)?}V%]3f+Nf̲'9ལƄ!sePmp?oK3 k* =C8fٓ?#EdX0ԛQUѿPny Ƿw`Ùǿz0)>Qv0bֿE&}VijĿ^a̲'9*lӿ6ϷܿoK31{vݿTX#EdX4 ;?QcB̥Pny*-ď?_zsѐz0)>+C3O.?H+ }V?.ٿ92go?W<ڿ0&du? 8@#EdX|b:?=)¿DJyp#e?ȷw ÿWt5J(?36t?P?ȱ T=?bod?je/Uka9?J?^?w}O9&?l?k T OCBUfJo?Gq?am¿( 5 ?`a?$' bƿ ӹ&ʹg?ϟ6Ӂ?ݿ Bp`a?yW⦫ିWt5ſR?}%"1ܿia?1'h'?ht3ſGqL3?MJA4ܿu9% &ar JGW麿ϟ6Ӂйؿ, &(ѿu9% &af,N¿ΤMչ?RB׿_?u9% &avi?mV?w*2:?$?:M ?c%YI?FHACÿUĿ#N'r?+?%:ҿƉv?%s|?oHͿ]?X?7-:俁>'IW?&L1A??0`ۿYw?vkF?YOT9)9'?^6S!?pxADj޿E??Wm?̔?-SxClp濃߆y?N(y<$>?H`? Y]?Nݦ&|Va3?[?熦t`?r z+?QZ.IW%s|?0q;"]?X?= ~oӟHٿ&L1A?UrQ¿vkF?L4iSu^6S!?Uo4(ȿ?s[잼⿚-Sxx[Y<_E ݿN(y7-:YG8-xWH`?h=|(K8UNݦۿw( 뿕[?,ܿΩdb쿯r z+?,d ҿ^k뿉%s|?~jtͿJ zy濋X?h'?\ '&L1A?kÿljvkF?镲?A ;^6S!?9#J{lɪᅭ?臭?SYvQt-SxP293?fOs ̄N(y&S?H`?ZI+?_Nݦt%?۠[忕[?V~?濯r z+?(G`?#*T7.Uik|?$?vLۿd:tzލ?hY?%ſvN@?سg?=B͐*ܿvkF?-\n?a)r^6S!?9~4b?2 nۿ?MDu?٭L{e.@2xhx?dÿN(y!?öE 2?P3?qQ?e6\?k=]?QZ? ܺ:?>V[?k i?7yۖ?є~Pܿ@g? nk Kٿ6$#g㿃k?Df?IӠhNE׿NGҿsg&55 ,ҿm\pԿ-ͭVcX? Xܿ!Y *~ؿK7A忛&ܫ忚n/iѿZHs?ʠDٿ;V)=Kٿil?Q`?+qo~?8k¿Tzп.5#?RZJY08M{v׿x]?d5 ,ҿ^?J?X?U?3KT *~ؿb*?zi뿚n/iѿCus=?'*T?'֩=ٿ =b?˻?:6UпG,?xz,C?;u+ҿ%A ?ADjŴ?Ԋ%a?S\U]?elf?wGjؿިo?-R?|@3iѿ?CD{&s|4?3&c`?dsU?&s|4n?no?YOD?Ȗ2?Wy2: v?6?bN&?iSul?p^}uRz?{5Z?׻?οbd?u6?T^-wԿti?c_?b0п&5؀?'?DҿF0}ÿu6?CoԿqW"Ϳ Xr_?cB%U˿㪲ɿ R)v4?qGRì?4bfԿz6?sо?`80ؿ?̔_?^)ʥ?.Hѿ>x?,'?N6ÿ*w75yj?m77MͿ/J_>%?ɿcg^؋Ȭ{L4Կu6Hm便?N0ؿ#LQ._"T2?ѿ)?̔Կiw6I{dٿ`#LQ._)ϼvҿ%A? F6\T¿l??w6B:<du?/J_:qޤI,|}?>xK?v4?s?W}W?ORB0?Ye?/?4*p ?qW"?,`p͝?%!q?Jvl?J y?Vh?^-wf?>v()?y?$}?/r.?b!)?#gaO;??XƆn?x?,\?uV 1?[X ?.Ȗ2?8欿vR~R?T?L{)߿ `5!?\M 4?^VL?(?*3㿁#?OrMd?@,9$)[$F?r75|?):+)T?#gaO;?-'y3?,\?=z}Kwِ?.Ȗ2?`<~#k "?T?ɐ+=)?.&?I]?V?Oo+5l/̿q5?%P6}¿X8IǴ?\꿩 п\M 4??ܵŦB׿(?hjhwH1ֿOrMd? a@mTYܿr75|?_)^#gaO;?"rlHV翥,\?7N6(.Ȗ2?A_޿[z4ՓT?62;ٿ0Z .&?`~޿jIG濣V?Wx:"ߥԥq5?E)!XU/?&MX8IǴ?K3Ǟ=\M 4?[԰?<\)(?8z%4?|x ←OrMd?l#fF?B5v r75|?>@?ۼqR#gaO;?¿3?ض(A뿥,\?(ϼ?gED.Ȗ2?:8?w|o\?}"O?Fu:㿚]V$&? o?忇M?|??JRҿKi?&|?ؿV|C?I/j?lҿ5\?9{gUI?膦ο(?\߇?DԷпOrMd?^-?AĿr75|?ʆ5E?uR_?ݑ?o+6+?.?Ӹ7a? ̊?W^??;TSu8?#0709?&P?<;?wۅ:?B"LQ.?$pt?J?!>@?ƒf=?o ^?,J z2QC0?F ^ׯlY.]jJ?!Ky ߿LLb.2?Am˿vT?'߿72ۿXU?kȿÿ[a/0?D-ͭĿ䤋93Lm?_(QGٳ25 v|?iO9Ϳ>P?*SAQ?CԳ ݿS*g?P5?F(߿Ԭ? uX?DI=jҿ,J .ED1PW\׿F ^ׯ?I꿙; ӿ!Ky ߿Y0GQgsbcͿAm˿y7ο'߿G ¿kȿuݑ1(ȯ?Жs)ĿLL+z? 3mJA ºq{mm?ͿʧǶ 8%??2:=޿Vn2迳En1?g$A鿔K^I?ß<#?pq,J CB?ȔAhF ^ׯ֫#?p!Ky ߿1ENBx|{נ/Am˿~/ϔ PR'߿ĿNkȿܿWMa%쿑Жs)Ŀ5Ea࿜N 3mJ:̗`߿EnͿQg!fᔹ?2:=޿jJ>v) 㿀g(ϼ% &Bß<JZ ?ȚA"̿d=KbB?Cl¿ط}9?aο|` ߿Hjdr?I}Y׿Am˿ (G`?/ؿ'߿QKs+?^-ݿkȿE&W?GQ濑Жs)Ŀ6?S% 3mJT~O?6!Ϳx!?YdPmp"?x`C?[n﫿u"T3k?ӀA?tOpVg)YN?([Z?O0&?kP? d,?'_?EB[?T÷?jdW?[ H`?۽'GͿ$ ?̳V|C?g %¿0\?g|_\?fCC?C}?4*p˿bٽ???oDIH¿ K??Shi?pH?Mp]1?kg{t?3?O?P?l?$z?]z?%?Qy9? ~bɑ?c[?Q?LK1?A ;?[ ?;TSu8?d?wGoq_?rCQ?$̉?c w?PC?'rJ@?B?F6?64D?B\9{g4?ɐ?稣jd?LQ??&*Q? ?-\?a?j ?; >?;r30r志? ?wQi>"?n@?>4asK!q?ӜH?/=?ro~D?=E7㿗c${?@-?ῢ D?_ ?)r84I,)w?c[?.Ȗ`"?N6? ࿢}!?7P|?QfL2r俳?Pn?Eׅ?hhsM~2Ƈ?*-9?}ԛQԿSͬ?J4?SYvQؿZM?x?\޿:wf?1?5l׿>"D?N?R =N֭ܿ7?@7n1??CX:߿ ?#qpd7i࿤M+@?6M0k!࿽ӜH?u["A⿰Rbro~D?t3N]m{ۿ@-?uݑ1UGt׿_ ?`5տO`c[?%ؿ:r30ݿN6?C*qܿuؿ7P|?5Fjؿ 8Eׅ?Vf\޿2g@*-9?wݗ3ÿJ4? TƿO俇q&ʿx?]U˿Wҿ1?C?{ΉL˿N?YLQ޿ NDӿ@7n1??@I?,~SX  ?,=)?hyܝ翤M+@??5wԲH? 0?^cޚ濈c]F?Iط?oH@-?ʇjj?YR>_ ?'0mP?X޿=U?0K;5?XA+d ?Ҩ6p?=U+Sc$?Oo+?ǀῌQ?t?Dׅ㿧>s?`,)4?bI5xc-t%U念l/?4}v?.%?ӏ<ˉ?dCԷ!?O唀?\sG˵t??Ent?+ۖa?dpu?Do?;i?Se?EX?RNUZJPz?I ?9`W|w?81$'7?^?UeA?oB@?|A ?8Mp]?j?)q?~7?a'֩?#1?&?V/'?SQG?FGR?Á,`?^?}"O?O\W ?:}k?9?q?ù?{Gz̿ɐc?Q?Aǘοӻx?n?pUjv?Fu:ʿm?^D1?psĿ؟N?O=? $>wD+g?1'hç?'&n-?t?˖Q=1Xq*?AB/пw-?ڧ16eȿF\?=@>?ÿ^'ei?OH<.ED1ÿkg{t?'XQSPҿ3ı.n?Ex]zԿeS?Ku/3o\uxc?7p?=U'ས4ڪ$?>F<͌{w7?c=\G )?;^? eI)v? |2#@ٿTB?rOWw,6*5{ٿ+P4?6稣jd׿ɐc?mߣOԿX+? U [Yeʿ; ?ǝ?߉Y/rB d?D@9 Iط?YvQ@&VZV?XGkȽq)?{-1͏OG|C5%Y pC׼hK6Z&q⿌QQ?C3 a*?ӀAҧL…[.?r[v׿$!hUK:?_M࿂ Uܸ?.0ݿӀAҧC*q?I`sؿND~?n!~ῠ.'Hl?|b*߳3cZ? FÿF6FCƣTB?z"0ʿ1FG?#+ ҿ+2: |,}z?i4˿~NZE?4ӿ$>+1JZq?}?q?dpu4J?]6:8?[K< bk_?Ut?&R?o*2?+hZbe4??Z?Y??=^H?Vdt@?;]k?r?dVA?V?"D?: U?gп?I??$wDf?H_?ʇjj?{.S?[֛?Qr?+?ZB>Y?_D1uW?t 34?BW?(?YZ?![=?K>v()?ˀ,'?f ?C8?Sul?l?h?No?+Yή"7 ?b?¯'y?X5s;?֡?9r?fG?C?0DN_ϻ?fh<?BK?h>?IHm?.?g@5bȠɴ??;ޜU)?+p?0/>:u# ^H?@єq:ֿL7A`?Xlap׿S?Peo)?Đֿ̰?Xᖏ?뉮 ?ڿ~jt?c?K̳V|ӿJVo?e`TR'?;S.ӿܠ[;?S c A?{?m̿gv?{Ic?;̿ <.9?a?@ؿsE?*U-?đۿ`obHN?eF ^?Ѐz3j޿#0?09?@Ex3YI?' E?^?1C?;]k+?{ʄ_Vd?r$8gп,}?%H_uBY?WÿnIa5 ?ynU̿ 3*3?ht4;[֛DJy??-JO!WYel?Ҏv7BWps? Ŀt?g&5?z9 ?q]PͿD(bsgbѿDeݿOP+?kͿfv(hr1Ggſ+MFa]ſ @tɿ2uWv[/)?N0߿Mx$^ip[[?$ӡn߿/עhr"(۴?KqUr߉YY 2&࿬]i-kْUoB! ĭmtOq޿s?qۿJ)?#ǔ?ޒֿaM?B 3m׿FzQ__Lֿ+p{ֿ*Yl@ؿRɋL޿XL/ LK fwak;|1AGZ2Y9x&4ǿ?E@Jl5`iɿƧϠ2dw п9Ȑ2,_7h˿qxTެ\ȿKHZ,?^aZ![=ϿA‹Ŀ uX?ӣ̿V+~ÿ7P|z? L M~ahV?\`Ő?t=?LA!O"y?67',?j2YֿF;n?dyW=`ڿr?/עhSWٿ?gYnIҿ_sa?4J%= !п`"?^H0=)?-?b?#*T?Dk? ES?x?ad7?h(?RT?r&"`??7¢"N?0:9?y0H?Y?+?.R(?^ؚ?i!?B?׾^s? ;F? Ov?M?80Qd-? ?-\n0?4~$?n3x?kծ i ?p ?cxg?֌ ra?=]ݱ? #ݯ?#G:?Ap?so5?lV^??_\6:?8aB?`"ĕ?I?6>W[?{-1?k&ls?.v?;f?fո?!A 3?l? ?`?~ƅ!?yP?w?w!?mQfL?Tގp?O],σ?jk IJCR?՗?p?8q?M?aobHN&?~?RZ?D=eYJ?H"?o?3?Q9??'?af?&\R?ET?G?<,?dF? F?l# ?Nj?qqTn?cw?Uik|&?+ٱ?ù?+,?oD?J%<ן?6^?hn?Oyt#,*?YM]?jGq?)J=bc?7~T?09~k'J?Z֗?E2K`tݥ?ُ?N?~7ݲ?I,)w?|E? I'?J?л?BO}?zh?4S0?lXSYĿm?3?cԵ>U?'3Kd(y?Kp?=w6|Ef?k~?D+g?BLe3?*?P,?%s,? ;Bd?Χ?uZA?b0̕? ۟?v?W}W?_s?uxq?\?E$]3?UZ?OIV?es!??c?9f?:?CB?|HSR?j0 ?cw?sj?f?@?%>?.W?6?4ׂ??&M?{b*?KqUw?L6l˿^?W@>?Yʿz6>W?|?o!aK˿j!?sJ@L…?VRʿ6XO?0?U-(ÿ5?0?\OKGWn??jܴj&kT?5_%?(yuÿZh4 4?:`?"C*q?-[닄6?F5?.R( ?wx[p/?L!u;?'p?~?:pG?ם<ǿAA)Z?PT6?-1ʿu ?~7ݲ?L 俈@j?6o?k*. ?F{?]jJ⿂9zަ?1 O!?4ڪ$6nf?+ۇj?"aK&࿻@j?$@X?9j?s֧?CVzN?$?WVk?n!?[DA,Ԛ'?U?'.ҿy?A]P?lwNҿ@ ?x@?(˿UG?i?#bJ$ѿ#]??}ϿQcBL?yQ? ?8:Vӿ̕A?V?P9&ֿn-a? b?<ۿu"T3?Ɋ?{Lڿ?9+&?\J׿?Z?Nϻ?ݳҿ /?ƧϠ?ۿQm??ᖏ$?_x%s?:8ֿ? F?zjUտn?]T?tiѿFtϺ?ti?£濾c?ʠD?#&ݖ忙t&m? ?z6i?{jU?%㿓5!?ALjh?uRz;.?ˏP[VDׅv28J^?UU?ǁW꿇w }?r??(GA׾^? .л? f m9? ?)WxcK?cԵ>U?EƟl _>Y1?Kp?r6,R?D+g?] y?*?ip[[x^%?6sHjd?$(~ 8??l@?~?=\r)8~4?S*?PCd3%?bV?%J U ?t{Ic?{h+mQf?CB?I`s]1#=?&2s?>VҊo(|?\?'WD!T?4ׂ?j3NCT}>ʈ ?oc#w?|,G@?W@>?zm9?|?!>@)?sJ@L…?RQ쿐`&q?0?wj.7M»?0?l!A M*??wKrcՑ?5_%?i>ἲ?:`?Wt俎R<ķ?g s6?qJ[\濭\?.R( ?b `:۠?X5s;?Kó?oFWG?N`:[1O7?PT6?ùuKkx?x'۲?kzPeE ڿ6o?3*|y0ݿF{?Bl'׿1 O!?k'JB"3.ֿ+ۇj?5$迨UJѿ$@X?¾D ,)տCVzN?%"1Sulֿn!?}w+KtBv$ӿU?o(|-ďֱA]P?+x~QBx@? ^*,sY?i?;OE1-EMO?Ma鿈Gfm?yQ?VΆ|꿲NgV?]j~4IbI b?SA* #ʿɊ?ξ =濄+PO˿9+&?\qW/X^^Nϻ?;5 uKٖJW?ƧϠ?(70:9Cÿ?hPS"п_x%s?I[7ne F?8a觓]T?2'$Ûx(ti?Z8np޿ʠD?/4i%)r#ݿ ?ʇj[X7ۿ{jU?~0`U,ֿALjh?nmyXD<׿Cr2q ?iȥ*9'>ؿ:3P?D1x߿p?ߦ?꿷{O;?j K[\3ÿ&?diyNXQB?ܡa1)Ϳ(y?YKi-Y&ӿ$?bbqmX|^ɿCULp?&zw^ҿa?{_=M̿1l?"rl=9 { -* [$F]u?e%?Ln@kUͰQo&?XG~tݿmg؟ W7n1?7׿#\?ut\PN.9?):O唀Ǹ?|&}#g]&|?C 8@5e\ ?ߡ(ЧgUIdcw?Za/迃+d㿂5?jj忄Kǜgl忔DƟ?0L{ܷZ'.Oyt#,*?UX ~1[俙(H5 E쉮 ?8‡wIQˏP[ 俉QF这UU?迩'俖r??~7ݲC;8؛ .л?:=ƂtF ?N#Edܿ`HcԵ>U?L1=B߿[#qpKp?XۼeD+g?^EF6nf뿣*?>#t"d?vnڌ俊C㿛?Mjhxn~?qs*;4,F]kS*?_{fI {,}h忙bV?->x㿂o>;t{Ic?ūm ῴMCB?ُa⿍ ra濹&2s?X歺U⿈ \?+E|dp<4ׂ?YLl>H`Zoc#w?@9w׿YKiW@>?zqؿ9CqǛ||?cֿsJ@L…?аuտ}0?sۄ{eۿ|zl0?>޿2'?=~o߿]25_%?piҿ1uWv:`?I`sҿYjh-[닄6? 5׿ZF=S信.R( ?c"ڿ; ⿧X5s;?*Oݿ*QoFWG?>>tA}ҿt'PT6?ȑӿ迏~7ݲ?%"?{h6o?K\Ǹ? k*F{??flt1 O!?Os"?5&\R5Bfj?-z?'y3$@X?༓?4 CVzN?hʿ`V?0PӶ%W@Ƣd?ġ## 鿹Ɋ?{ >9+&?ᱟ˿v~Nϻ?uҿ $>ƧϠ?)Wx¿jdW??=x` _x%s?`ME*ʿo F?p^}<ɿH_]T? (zcѿ1ti?5s?L;ʠD?_@/ܹ0?uw g ?^N?Z-D{jU?]~q?vU0ALjh?f?j{ԗCr2q ?{?v^ :3P?,b?ΪVp? ?&pn;?F0}ÿI &?W\ʿ֪]RQB?flC HĔH(y?j]8J=u!V$?iLV CULp?zRa?1x=\r1l?+?*4 -* ]V$&?g e%?tۈ?ͰQo&?Pf?OwxΖ￀mg؟wIqD?sFZ*#\?eT ?? ?.9?;FzQ?HPsǸ?լ3?l;m&|?/1"Q?{G ?M?hXcw?D3U?&k?uYLl>.Kp?T:?+QrD+g?MT#?%翣*?wN@?&+6sHjd?3TT ?eU*鿛?$Ί?9ؗl~?K#fy?˚S*?x>?bX9这bV?=#?`)t{Ic?\-?{hCB?>??A?iQ|?5ӽNK?lXSY㿠2}ƅ?`?q9])ʥ?ԕr?E_ zR&5?&?Cwni5$?,?d)5_%?aM?z2Q޿)?D? ݿ-?2:?^?Y$9a?7 C?jٓÿ1?~ ?1 n¿~͑_?@̘5?̿,)W?-?F жuƿ3,%I??=ԶaɿLi?9'>?п'?qY?nֿyY?{?Zmӿʃ9?ˆ5E?6pڿqZ ?jׄ?Plڿ??@a+޿B_zsQ?úX?9DܜܿVJ?(]$?zƾdӿs?p??gѿ3y?$pt?οۉH? ? N]߿Nϻ?=? N} yῘBʠ?yvև?ʠDۿ.?pz?oHԿM 4s? t ?B?S[޿AF??NPݿ1?L4HS?Ϡ࿃Դi?bhur?fzLD? ?,8-_??&?fiÿ?@?p1=? yͿ]kSUh?$&[?I2̿Cr2q ?GTn.~?#dTɿM?ʦ?+j.7?]@?vd;?乾?suܿ&?6X8I?70Qd߿QB?RZ1 ?jeB?i''IֿCB׿*P?!ڿp>?ۿ]?tۈտ:`߿8c4?T[r׿^a߿ Ov3?Dҿv$p޿?q6տ*P׿bg?m:YѿHLP׿ƽ ?¼Ǚ&ʿ͎T_ʍ"k %?ulǿN /?Yοȵbmr ?aM"p$`Sc??㾿7߈Y4Lme?46WsDҿ2Pl?@?Jc?qnǿij?j?b+hZb?wD?IQ}ο? 2g?<_E?ʉvӿdJ5#?ܴ? 3`^$stA?A&9?Vfٿ= NP?0{O?c?޿>V?@T?%䃞ԿHSRE?dh?#bJ$ؿmϴ?'H?%L1Կ*2: ?G1?)70?hv[?-?2:?z0H4?հ@E.xp? +j?p]1#<Ypn?0Z H#IB?0{?Bn;2??4KԲ0}!噗;!8޿ Q7F ESiI1xÿ4(Zf鿍'8'¿whhs狽_4Sx캷̿Vf\Xrߔ/Q5Uƿ ({T?& /$ɿiݿ<\gV^?п+ڿ.ֿB=ЊDbԵv⿡0(hrӿZ{BGz.忑_? ٿbjKu"T2濨Qۿo[t2Ecl忏TE ӿ! b翫"пWL%@LYO0ͿgbaiܛO6߿RhԿ<:TSuۿ `-տRo& տ"׿`߿T[ٿLvkCݿ5'/2߿sBδE>'Iֿ1E4~zi/G4Le%ڿ-y<-Eÿtۈտt ؖg)ͿT[r׿;Nёiv̿Dҿ_": $ ɿq6տZ'æ6UtY"]ѿO@Hа¼Ǚ&ʿPnA ]ܿulǿR h9Dܜ߿Yο:8X?6ɏaM9#J3?Oڿ㾿p}a'֩ؿFY?'IL=-Կoy3Aapjٿ;̿F;nxPӿԶaϿb=쿙+`p׿ZxZ~ҿ6 Ocdh:;?L'ᅬUJMLbG? 7Cj ,UX_Ue?JJ0Afg;N gĿz}.Gȯb￞#Ͽ= fO7Pu?޿ ҌEY˷? \ڿIuT5A?ALjhܿ}w+^aQ?`"׿ v뿻~nض?xͫ:ۿhv[쿜:f?cZڿMqD1y|?)-Ӿ9鿚[!?հߓgCA迁??I|AΡ 鿨1?/Q(ԿDKOwDf.p?Hh˹οlļ ?!3ҿ'IֿwLݕ]0ȿ$]3fLe%ڿ|?q¿ Itۈտ>&̯&T[r׿'ʭW\Dҿ~תc~ q6տpZ̿ZQ"]ѿG7¢ο_¼Ǚ&ʿKU?2=Bulǿ` ?iXYο`d?O\W aMk, P?<￘㾿;]?;ŪAFY S}?W&R?oy3AfM,ݺ?8;̿Tc?PnԶaϿY?{ZxZ~ҿh#M)Ϳ;~￲h:;?$aN"ʿ9@0GMLbG?IQ,пnf,UX_EׅOѿ';uxqÿ);/u.G}PoU#ᅪ= E{aכbb4[VB?3܀#׿IfͶ뿀ZֿXyVҿ=1Xqʦ\ֿȶ 8KֿUq7qmѿ(rӿ3ouĵ^(̙̿ }ؿ$쿱Tȿb('Uֿ6!1ȱ Ϳ3Mg'ۿ:LԿO?߿{鿁ɍӿ-bؿYKiyѩ+?U.TӿRAEUjMSt?jUZٿ>"DM?zFwݿ6z ?Qާ@뿚ǣ?HȰ786uy0!׿6ڋhܲ Q:hqs*ٿCO}:YİØ=tZԿD$]3ma@6pl> cy@ٔ+ǿGp#e<~Ky $yXC%翑aodϿ~31]⿬j迤)J=ӿ2YS (S|l;m⿲ ܁:^NlyZy8-ԟ"ٿ*鿊޿ߋ/Կ! l鿎;ūm׿ps \ڿ ~{ܿd@zALjhܿZӼ߿AG`"׿:Yj`axͫ:ۿ$}ZE߿UK:l远cZڿ/ިڿ4()10&ۿ>-忂հߓ1׿oꐛaI|mOT6,i/Q(Կu):מY俶Hh˹ο JʽÀ%W!3ҿKH/H0EHؿwf\C࿘ݓZܿzؘב## ?o*Ral߿uӍX9n1?74eտ?Q0㿼X"/Clpٿbo㿬L F%uԿaoCV޿G5\|mYg|_ڿR+Lk޿ܠ[;Qݿ \(N#Ed߿BῇyU ۿmyؘ.5B"ĕwFܿ@9K[_~$A1|DLc[K;%nIaῇR{mr-a$޿nnLOXbԕ?Dڿ!8޿΢w*?]5.ݿ ESԴi?6S!׿4(&?R ֿk&lsǵb?`ҿlf\&3V?>Z1 տ7~TX"/?ro~Dֿiݿť*mq?xxρҿ+ڿ::ZՒ?.R(_'ei?ZڊBi6`~?KJ^c@vY;?$hfi2 9? ȳ˷¿/1"D?'E'K˿VZ &^y?Fu:˿KJ?3頲RhԿ4?¿8H-տ%?nIϿ'׿e?xs]Z{cٿ~?@3)!XU/߿狽_?,޿E>'Iֿ?AGZ꿑aodϿ;]?H迤)J=ӿ ~{?D!T|l;m(?W^NlMDu~?k K-ԟy 5?X7㿊޿I?e~῎; D ?!i \ڿDׅ?֌ raALjhܿ%s?8`"׿ur?ANxͫ:ۿ-wf\?>U濜cZڿNA~6r]?P)|8c?w係հߓk6?hUMI|ӂ}?BL/Q(ԿyT?H0[w쿶Hh˹ο]ݱ&?Xt5=?'WӺ j?uRz?IK[\3?t k?mRXܿLQԙ?30&?-Rڿ8C?FCƣT?%9`W; ? cZB?ʃ9NC?"Q* ?qZ `?TO? nk L…<?b L?^_QIh˹W?y? myؘ?eik?ĖM ګ?!ɬ?4LkLj?gHū,?^DM~?ť*?%CԿ..?0??Ȳ`ӿQm??>Կ~7?E+?BwIQ׿q6?ڿ}V?fᔹ?@v߿Ԃ}i?;?wDg޿3J?o ?FZ*oGֿ×?Cl?uڿ">?x]`?bdUտ{b?GP ?#EdX׿%1 ?LN?ҿ`?*l?7Կ!u`?gR?njѿX4 ?1%?E&ʿsCS??eǿ1DN_?Ƌ!rz?-熦οM?;?e##'h'?YLl>?KDׅ?u|O?\{UF? -?,AWCK?"?eM.̿ɏk8?*F?d[dϿ) ?/ע?d_ҿ$ \E? ?6E?.T?~(FL?1ҋ*?L/1?W?7%)ԕ2 ?ps?*[it3?nRX?Оq M>UW?ƠB?Nbk ?2?K'?#10?Œr9>?NG7ֿ&S#?%VF#? (GֿN?K\Ǹb?-`ѿ^b,S?'rJ@?DgE(̿#fy?J +?Tȿ kc?t?@ǘͿD[?ܙ s?}Կ5e#? _?TPōӿ'>?DN_׬?X?fF??S c ?L$>?s-ZU?6(H~8H?7ne?y@ٔ+ǿ"9U?ܴ?yHV?MKF?aodϿz?~T?O=ӿW@?FW?ť*mBK?A 3m?!{z$d .?0?r3܀ϟ;k]?yq?I޿7h>?9n?~T~ K(?)H4?nyڿf(uԿIfͶ?7?dshc? /A?/-9?X\wN?9lļ?s`?%%s?R?R Oh+~NA?DOʤ6?t&mnhȾ?]P??74e ?E:MIȱ?;0?OExE?KUb^MI?)O$(?N?Ʒ!=$?cUm^? ^{?b 7}f?" E?{'?ChfRb?r_cʺ?at?-?:;N?>>yw?Us?x{?M1}ݨ۪`?b,?R73/0\k?1?~{0?;AJ?][Cй?y2?GG_?,1F?0]=/D? ?CZ w?;/J?C5ѽmk?ųO)?fa¿A?a?Y33ջ:r(g?Fr*??ms?n9{m?a ΟG?Um^zn}$1?@Yy?A91Yg?\B?⬶RbQX?X1?ղUVn?}L!@?HlW?a$?ḙ`F9?Re{?QgkD? !9Ƣ?<҇Ô'?[ q?BWd?LTu??A{U)?,(a? h,Dw{6?Q<[l? v(8F.'? L?o*c e.u?HO ?=תA4S?a?bnw(gv?g\"?<]v\?ED?E ??cy?p? ܉??T]?[r?t[?pK?hp畋?a؈Uw?DK?x?rwUK?n?G&j???Vn?n`?Y?_Nt?:}?܋jC?Y#.? :ծ?jcr?2jO?x?eܳa?db?And?Bl-ؽ?B6L?E8h?0˽? ̸?t&?Op?@*??C?q$F ?Ibp=?Y?u @%?rѓZ?ޟ#dkK?s#?|M'$Ќ??U?i-L6࿭ 1?̆uq?)3oȖ?xͼ?p+㿤J!?YO?9gppܟg?? 5,j?v?bQ\DJ?4?D<5?,Z?|㿋D?RYx?m@>_bi?zAd?ٓE+cB?M79N?b/*h忯,ξ?=@]&?[n7R忕}:??? s^ظ+V?8?YJx˻⿽lܐֿakZ?'6 E rۿ*[#?{u࿠P']ۿN˩ ? R+OfֿW\uq?ގ9#nt-7ٿ켊?:AD'Ԙ(ۿ>?Eed⿼K1޿C?QΈ,o޿^?PoxN⿱@6ݿ/?ÔN~Jzp߿ؼ?(ݿvm$࿕x?aPݿ)ڷܿ/d?"߿12޿(q;N?E=S࿟{]G&??4v߿I7ҁND3?sPB8_4r8?+F2?ۂLM忆N@Z??!wdsV%)?6ΓB?udw5?e?fAR8q?=_#.?OFç俢uԬʊ?&IJ2?Ɣ΅?Fjן?>k: ?IJl?RF;Un?w?~P ?忠|?\*c~?v͵? wmĄ|x?.?I8[;d?I˫?i?l㿻 ? }=?3ha忩@v&?V2?)ROf?o?ϸ俔D?ro,3?(лB?:'PI?kv?5I}?+3?_0/??2ʝ?RC[˪|˿ "?Te?0V?x/h?KeaNf"f`?ક?U?'EH?W?0!咰?Gr?g5u?Ց`ㄛ?H?V,1?-0*ն?H ?67q?ƒB/? n?P=?z(L? "?"?,\X8)ʿv ó?Z(͇_Ŀ ?0$+ Ra̿Sc]?-&ryT[˿'!BH?]`ϜncfͿZ\Cx?ܭLI߀Qǿ(&j?>GPYÿ?n hx?z2?]&?G()?Y _?g8??Tf?.??H1\r?{?Fjj?a%>?k+0(?_Q?޵H:e?ᒵnӿf|?i?ӞϿUF?&i?ѿMӌRF??y^}տ BG?.?8s]ҿݢ²? ;U?oJƂ@̿^/?lη?L!1ƿ+Qc?EX U?QvɿJl?%o€??;˿zN?XM%?t}˿8I?qɽ?/еͿk@?dXҘi?/rlĀӿQdv,?Q)?1lп?:xv-?~M¿jsw?*5?f.ZXĿwO:?1e??5 ǿ7@.o\?&Ze?&z̿KwN` !пhXV?=F-NпH<ƿNvi?R+ӿ Q,ȿ?-ёѿ*Oѿ*!?#oѿg;"̿7ِ?XƤgʿbtſmp?f{ͿO'%l?"tѿEĀ?j},ϿL K¿,O5?M.laԿ1GR?Ӿ"׿ h/p+i? Ȁ-׿ӧ ɿ)?8oտ|3Y_Ŀz?UWtѿX-??BʲzԿaX+}v??ՂJӿ>aCt4We?V?r5̚ҿ{Q?/?%~ ӿ!#i?iO}m?Tg>ֿ"?#tg?.:ֿMad? V%X?sԿ ?;Ζ?;ϿN?As?(пȂ?ֻrJlE?QLb Bӿk}{?xFH/?L >ѿqS?$`?;ܱտڝ?Fɣ"m?v#2ٿui?*?f?ަٿd)??VOn׿]?mwʛ,ہ$/ҿlj-?Jo/qڣ?}ԿuN'?? ar-Կ$Xe?P?4 п\=X~"K?q#pƿ}j[?JMfȿ=Ljsk&?)8vѿxOWn98?L ̿!-~NܮQ?).s_ ſ7k -?@%=u|^VHx?N3ЬJJ?#m&?s^<weqeNſ]1Fҿ 8YQ1ӿ#:iU`)᩶DO/"ֿh<7?GϿʨa\mc#ҿU|sUƀPlwѿYҭqZ7%տ8eрd ؿ=gBĊ ie ڿ"諿4#|)LY׿9XiH T(3Qп/ ԗ=^ҿ!S?E7%ҿ uڹ[bed^9 o?.bCzPFR\?x!i9.H7NO?3 ax)韱E?O+`ʗ0opٵqaܳ?^/{h.;^?:ުCD6r}?'ÿW?+OgVμ!|w?tj4ǿ xM P?SffH@Ϳ|ׅ?쀒iY-Bƿ-k'?aoT);wDNǿuqt ?s ?/ȿOa?uG*uIua̿ڞ]u?Q ?UJypǿ*?VMe8mD?u8)K?{.F?C|:?28ud?U',?iI?w2?vm0?Q[?{ ?X?i !?⏆ ?!ab?@ ?aΦ???T.J?ť?j?g k?Yg%?*(?a=޿%eR?r?#s[Rty??|(P?׮忖5n%?2?(vƛd?$?e.'忀2b1??nP&rw?ir)A?ŞaS?rꅥf?m??I8?s`?B6 ? #d f?>:? 4*?'z?Qp4?GY7?^ʧ⿓dZw??{⿛ ?TgC?Fs?Y/y0i? k24I?og:7)t?d{?%wF*?U(F?އbD?NZM22?Ejbҷp?mYf?&=J쿐T)?Gu?LJl(PP?!㵮?n IX&6?eE$E?lM뿳?qQg?=V4?,ެ?4z1e?-?G4W -5?U~z?7gV@Xgʀj?:f?2*k/ ?mL ?S0b*'?r?iM k9?{-Q? gX$?Ix?:A|yI?~Q?s jF\?39? I+鿖[C?.^?U(꿋xԒ?14Š?2!뿛tfQ_?E|a?K}꿾?zP?s#7?|?44z-Hl?:Q?'@S꿜S\?dKH]?MW$zK ?`<˚?~Lv`?8?:!-?k(?ld/!i$?+?gcKvz?3Nj?դ:9cE:H?zd?eo[O?M/V?Ǽm쿆anvK?u(?='C) ?g?Zs_%r>˿5l?][:1.οh'?fO#Wlj5 Vǿ4?Y |4ΦzwĿJgS?h,I6RɿW?1Lzyҿ"L?_︝%1ɾUҿ J^?1ȵ*4ڥ^п%Y?UA鿷v&ݥѿ ix?X?X?B n˿eH]7?88Ŀp?WݐJdF %?! }鿦ړ.ƿxT|?xUߏҿ+Ya+?}P翜7qϿ r#>?Bb3綄Ͽoo?]H쿭ܿ|(P??&ٿY2?A#XO4ֿQPȻ$? "C!vD`ٿA?J,a-ٿc͔:A?A;|klܿf?lqR!߮ٿ,8??"C+"Tg׿י6 ?)*@ݞPٿDa9?^ALտW&z?;Q"T~{ѿΗ?^is{%n4ӿ_G?0莶TWԿN"C?aX~쿊?տ/;I?<5vlӿ@E{?2CCxYnտʏ(F?l ђLY追IS22?_nF,濛?f?' ~y濇B@u?w" Okx ӵ? >俻z'翗]D?Pur9T!>MQg?mKyt俾6?8Az,{$v_Hv-?0L\r]"hE~z?xxut翴>Z忉@uf?k/K ~W ?xCo{jG ?3YEF p)Ax?dYT p?]迦Q?W翼> 9?PvDsۿ1o@z濺;:f?N@޿#&V?6@ $ܿehKe迖na?_PٿwŗP?B(yۿAXx#v|?orX&16 VQ?NOF$. i7]?I׮2 ˚?rmSLD29?!u޿d{迨Pt(? <ܿ%լ鿗g+?_c쎴Tڿ^ay;!Nj?уܿa T4fd?/Z:HF1ԏS?Dn\6p[G v(?찙uJ׋i,迓gg?ܷ(k?ϣE &$*v0O?i[?ҀRG\i(P?GS?-` !○722?.?& lVs$?cŔmG?0~?1<*t?j￉JA? ?ŪNvħf?7Ԩ?{w·s8?"I ?ĥӚ6 ?_.5? N:?iT?DMz?o*25ږ;uE)+?\ Je?Ʊ_￵쑧?ĉ?~fKS B?Ra:?d,їxYCI?b6?)cuY{?!A5?R(F?uU ?g4UT22?M@@?3"ӷ@f?jW?|N5u?g.q(?oW_H꿟E浮?N0?t5||D?~6%?DnQg?[]?I}l~Ѭ?Y>Z?%ӐV@'-?dXo? ܷ쿌ɴ~z?Ă?a Uڕf?Z.?Q \ 92: ?ڒH?yX݇?~ ?&b+a쿸 D?1KX?&ޚpS?V|m?  JQ?Ʊ߈?1o"zG:??=#5uL?._J?}%7<4?P?S$#јja?"+?)j_1_.Q?Us??Q 俯:,?}?d`yv濯VsQ?#?¹|_h翚^]?i ?#B4dК?$~Թ?@D`å?ݵޥ?Z1Y.u(??qNNۢؿaJ+?g+(?MJdzwӃfj?=׻j?p 6MGt?e`>?ekշL0^?-h'_?iMs?=Jz(?Z;V? 2Ieg?{m?~Zտsx?B?qiҿQ ?Uゼ?տ mX3?Tl?PozLؿ(8R?"?T`-տlx? ;?;y[пgT?Kut?*dx̿̃V]??M~бп!? g?m>zп*|G?=@?ͫ,NOҿ&~?\ђ ?ԿM(̗?B}{?j5׿N:D"?Vj=?E`տe28w?exv?-pP^˿dH9e?O u#?Oο?Uy?l Rп$e?.EL?qP.*Ŀ(P?L߉6?F$pCLɿF2?;{40l?QпJŻ$?X`?OSN^˿P?L?ܞ7ʿ ?sA?Ŋ??=wEÿJb?w+ܬ$?_ȿc6?H?U a,Ϳ6 ?&n?gy|ոȿ.ڔ?Rb"?x;Qeѿ+y?Vj?ѧLԿ8O?֋?=Tӿ?S?kw`ҿ @?w?G=rϿI?kr!7?#Upҿn{? ?-@#:п”ݛ$F?2,O?,u>'?5??^N?؍?]xZ ?6Jz>?>?Qo?6"?E.?،[+º?].?t@Q??,n_?ZE@?wz?M \k?z?a7?Ac?PI?ȠxŒ?;V?{?1?=H|? ?vs\?J{)(?@?? ?)F%{?BZm???5?S?P{??ven?K.<[?_?k;?s씷&? Q?'?7O?OV)?{jƀ?>HB6/??"PT?{ ?vJ?.91?0 h?i7Z~?T4`6p??Z&-?^?VS?I?eMX?>=6F? X?o?I0fKϿ+l3~?}:ƿ?։Q Xг?u5?g/MC܄n.?SvMQu!.Ym?Xݿb?o~ߝ?ꌾܿ1yc?Z:?Vd޿K79b?F?Y!˾ 9ۿ/\@?s7F̃4?/@ٿhE?XwW?pܿCHiO{?;?6 ۿpJ?.x}xN?J(вٿy.-4?@?,9Rؿ{[?÷?y2zڿQS{^ֿƒݹݿ4 A ҿW en^߿D?(Sտ# `xLPnEQпO5*ly;鿏Iv̿ Hcj.6Rпlm .*"7 W8:&пR,0wiѿTA~&LI濖lf ӿ/s,}u@qkLֿWڝ!SgOرϛ Կ26F迣ʿ#80Rw8 |Ϳ+'i @h=DϿK{ *ςuF+\L qe~@i˭ o¿)A5[be{ǿmXE;ʿ$uҦͿ~]1ſREᅨgKǿ^i,jٻ=^n ~0ǿ?ÿ=MFiR¿x NͿ+(8zǿ;ѿ=Bw'%̿KϿ6a#zǿ\6Nο'*<6R=ѿcPͿxx(`<UԿRSɿro9Xu3ҿ/¿w$/O ѿ7 Rǿj+d{+-fϿ:hn5ӿp\JAu]ҿ?kVҿP/Zh"nп EOп(?!?S_ ̿#g?Ƽץ?23z;ɿ⿯?|̽-¿=|>LcJ[?x2Ŀpvo|?#ǿm:?=2aϿNeǙa?!R̿9p?`[?<ƿ.aQgK?k$$/"˿AYAv=T?7X)]?ƲaKgD￱i! ?+`V*/{)e^$,*`?IXUkҶ?nDƿ2Ţᅯ跛,?Gk6vwO Fuv5ޛ?׭g5+ĿȆ<运I??7P6Q|J]0ߥ]2^ٿ$c Kxᵺ1ZؿD)s(rnڿK?@!ɿw@ݿ[_7?3ͿFDpO?|-^ǿ}h-m>)X?{¿@V-Ӏ߿Py?r19ȿ `BA?T-ѿPC|*t8%F?ҿ:[|jX?ZA п >j.t(?п{ߑ]42?Af˿m/p˭8'? !ǿw,MkD\?Ÿĕ¿GYN+2}Fl?vFǿ8gl?s ҿj8{~Տ?пvvj|>WW?[ пF*3? !ݿ o¿)g??T~6ڿX(ÿB^?a愉ܿ)tNͿ?TVٿs6ѿD߬&?vm׿@Ͽ˜ ,?_Se(ڿbfNοSq">?`tտQͿ?ٕeҿ0{ɿi"?Կ{(¿Zq?*8տ#Tǿ\J?6Rտxn5ӿ~?ǸtӿmXҿT?+{|տH!PпA?r@iY ̿wh ?k濞g9;ɿ.+@?b@,-¿T8Ӕ?ig62ĿD )?s?̏X)#ǿ?҅&:r_2aϿL[ ?&11j俞6 ̿ N0?Gjuƿ:ңV?#l_f1/"˿:'?P88q5T,Xz@?k忭 TƲA1U7?(rR}`5+Jg?+ :a FeV@?c俖-ƿ҃g?)ә;ɾ4vwM v?R16俫5+Ŀݝ<)R?w7}忢O 7PNiGٶ?ۂĮjd[1_?A >b߿8,6?Ȏٷg;G?GL\ 1*:bȆ?j`Q 忐+;oc7H?{gf濜 (vݿo&?2#8.翢m"-ܿRU?[Yi;޿c)M?y %|D`ۿ)?_-ڿr$A? l1D.kQ޿h? \rP2Zؿw+?&یA4nڿ&I?syA?Eqܿfl$R?h?XB=zGM]?] @??m3>;m?dqC?nj /M޿ I?q(?\߿?)?q};?߿E (?:L?5X]]n ?`|?sr[6V'?bҍ?RZZo¿ӕ[??"gTɿ ^m?Q`^ ?4 yſp{W? /H?%^ ٻ5U?_?ÿR?;??}QͿyLs?/_r?6%ѿ%$?&"?Z[fϿ %?5,?ίöοmp_D?eH"'|?v7Ϳn7 ?<?}IɿVa5?2O1?3UN ¿.eA?Ȩo?0ǿ,=??WK?93!ӿKF^?&Š?ѿͩcE?9V?QfnпcM$?A}Pg?N ̿L N?` ?;ɿ؈?|)܈?(S-¿1J?8HE?FUR7Ŀx4?m??Vn#ǿܳ(L?nl?A [*aϿ-h?yU?̿7VԎ?4 v?ƿx:.i?~?h*AH+"˿Sz??)4X5^?mɞl?FpXQ? "6? 2TbLpd?ꩪ?:̘jX0r,? ?1[ƿV[?4?jKxO0?īDs?4Z+Ŀ4Q?V1[tW?UBTk/?'u?.22Iꆍ*?⣝JT?NـA߿)?|ٴ?efPoٜF?5$]? ZzQLr?L?H}psz?_r X?}vݿc?yʪ?FܿcN(x?mP?$޿~>? Z:6`?7U ۿR?86 ?_/ڿe[M?;R?*xS޿I?t 6o*?oy,!(ݿ ?c?ɃXkٿ0n?ۧH`?%Xؿ@Z?0֯b?Sڿ䶭!o?~=ad? @?M"@?Ct":>?$á*ڐ?oh6?ͫC?x?9jd'/LtE?Av?;%տ~?$Mh?dӿz?h?Lҿh5??\_1?_˛?˚;L?(03`Aq??NS??I?n;:?sWap ?yT 0>?/P?6D?Ck?{8+?ͱr?3ut?iĵ?lO{?TGN#^?P? ,rtHx.|S??֟P^R[?^ҿ?sFWƖf(y?J?:LNח n?9ܾ?A0dG?? sQV}? b.TL\Lg6?>^AS?/_+ `?|T/?'ˋ3N?YC?e- 6?fD4:PֆiZ6߁?b9?AͿh5?5 l?Iwׅ?He(#C?VKPm?S ?l?@W?%:?cX;Nz?ߗ5 ?x?w44?0dH?96d?#5H?yI??O@8K?j? כh?a]E?RCEQ?2M?qJ?Gc?!)?T{?㪟Z?iwD?e2?G|xL?r DN?^Mb?5I_sKc?~;F?z#?\??z΂U?R ?tNX?J6'?0va?0^,?qN??=?eGQ'?l>pa?w?+?T ?# Ɂ^^T?Л0z? O+)Fb?c:s?YRh?õ?R?r6U?|?K5N6H?>9?UY٤V_?Og?933?sv>?PA"Yi8?^?jQ%ڭ|&?6{X|B'?ٝvZN#zB?Cq?Ӊ2Ś ӑ?@N?}r`?lC&?j{ U?sz}ⅿ|@C?+M7?:ÿ-?J?bw7gر%&5?ur?sM#)";?co\??L1E?)W7z@?ib*?tN?VU?S#v?=|/?-?N$0?][?p#!_?ox:j%?c|jA?ԧe?5nK?N#?4̱?kVZ?~E~*?N> ??4N ?/?H/?8?u9oL?n ?3 ^?)H?1/?5A0?!2e#?"m?L?rMc?9c">?~% s?5)9翅ob-Ie??ETXCdM?yyE`?үaw:v?> ?.dByO? -z?pznR? Bh?+fψw?]K?3P]$ؔ?0^+?o62VI?Dd?B_siW?5TET?Tq?avſ߯?#E[?{gU/u?=XqU?;H2ῂD)?"=?oOFX?x?Pt*xӝ?r9q?EҵAuM8}?2^o\?cBڿ޽?$)?Uֿ6} D?_[7P?Uֿ[y=^?gG?d{ۿ R?Mb?KdHؿJm0i?K_m?`[kտ;;?Z?!^ҿ:] ?-V?ybZhҿcf?^ ?jH8]ԿhUUO?fx?,ӿj?v\?b.)Կů'_?&?Sk'm}׿Yac? F!¤?,Q)տJ*?YT6?̿ J?N|1?f*4ο}K]?r_?W~`ѿS,?0Ta:_?(ctvܿJ?1c6Wт!W`ݿQy3?8lzk|k'];޿ ؄YL?9M=KMeܿ_mn?1,1$c|JD?&"Q)PE_J|!N? bd㿋OɽJ῭x,?f|NmNzOlޔ?A"0!Yeq߿X ?hk\?X..<ʌ? 06濅1nI`?;̸u<ڿ/V1i ?Iֿ&c&<z?ֿHOgc߿h6h?Uڿ Q$޿K?!tǠؿ[F ?VP{A׿eB9j9e?k:Կy/Ŝ⿫i>?&&ӿ[/h?2ȐտgDPA'?E%QNӿdƈKq? kSnӿ4QݿvC[? 4׿|cܿC^tzU?j9|!9տu@ `޿`;=?%Sο" ԟ5 ?_IlͿZT$῿s?SѿD={D>p\?IIQ-|<ݒп$)?DЬQ `'P(ǿhP?v޵`㿠跨ƿ?x^s;¦8_?-Poİjp4:_?G?m [?Q1?Xўk违{3??&uHomS?˪Qq?.Õ)f翟A?~90?Ǣ|~"迦n7q!d?ya?vtq/1]?U=2??5꿅Sr f?kf1?-es 鿚 {YL?{? %y.W*in?T]?aaҥK,3JD?ߠ?IC {H"N?{rf?Rvvp4-?crc;?[0!d?$d%?BJMd ? ?UIYm޼?㿾-?N" *B`?F0WW?|r ?&4?79.+~. Jv|?Ojӻ?>d߿$j:k?E݄?ӳ;,ῃ8?ȩ ?*-Ho?ex?N;QI?h3?TA#!޿qi?J`5?¨ݿzb(?%B?'A߿;`)?(@8?4x"~eܿwQ?d/?J<ۿ8+?zcK?n޿mW?ŪOM?: ݿcs(l?5|!w?Ueٿ=ǟ?DB??hؿ^p?Vx?#4|7ۿuXa? ?Oj ՠ= /)?@ezsqgQ6KTLU?߈$/qj w :?f:_~z?0E׈?i ?8SOZ[s?Xy\?}&Z?YD-tē,W?7Gbɹz ?ןfArjV{? Y.㳿vM!俓zKi??%;4s~&!?JZvy2+ä?L#S俖tb6?ab`#7 ?lI(bÿ}OjŠ`?̓f3Z]"2㧇m:_?K?o7Xn?*?r \0@}?`e_?x>? `Ukӡ?X2w?8?4lQ?ibz? bx?'[?ѰE?AIJy7?(?~zW5''b??Ygi?y.?vZ/?(?ZˊRq??w:?عބR? ~'?6$?08?ɖ&?CY6?Ն%Y?Йa]?F- ?J*@,xC?ֽ?!ƿk1Z?fU?ê^˿u_lf??wx}PWĿUgJ?ixi?[.mpſ>?k([o?Y'7tD@?Qޘo?jXͿƎpr?FqN ?] Uǿo ?2vj?r$пSL?0M? 'ҿٿq ?F?DϿ'?eik?I?^3п^@|?;?4Yտ,M?&AlL?rPѿ2 #_?agc5п?o?7фkCѿcQm?0֞̿M?viʿ3 ?IH'ο(eH?{2d*KpΰHԿW2O?(fAtQKտgOr? 0ghkNEҿ$_Q?Պ MS5Jӿg? iRE3zͿP?N$ӖDzj ƿdkL?^,mNƿ>gIc?tR\aɿF?'h68q?P?T M?q*?,yN&GC?]Iy4?2aWPCӿ0C@?;/*k ֿ: ?,И0ٿD)U.?7%mտc碒?)@% AֿtJ?`OhԿРyX?T^)46[.ji׿+m?+TUPg*,QٿO''? CM׿Ž?8| 7ꈇۿ]}?RY`ݿS4e?jm}Yqڿ~nM??T+Er wJmMۿ-/?>*Fwܿm?M~R@<vX޿!?@=s|2~ܿ!ƳϪ?wT]>6v;*l@$ !6d21&ZM鿬OvE?V@@E$迹P*?K4oo4t!M~?ܯdg:9Xse(gl%hT^3~VKMD#Udld}I jb{꿆Hǟ? *Dh4NyzL/?|'np&P)eg鿫ֈ?|iϯe4wg |j?&蒥G$(y9޿Wԅuz,WOX?ΠҖ޿|X%=U?naB%.NV俆nNZ?" 2$X~?HX yty+Y,?dpgl`iM1?/yBMr㿄<.?\]zn$Phs?\*R㿕?n.jy.T⿭?^䴊Ѧ͡ HX{"rk?u?"sDde ?xpۭ2 zY< ?8ꅻ4pV(mQ?v4TaiUW8?JË:ݞ91Yg,*?(x%S}‘࿁\?1(/ozPK?rkU'&9bI.ҥK* 8⿷y.DȿIhɘ/G$˿]T`+s俓RH¿LC.%j $I[㿌DſJMLLӸAX}dſ:.[#lm࿺˿9;LQ_L Aοrºk1VΉʿ9f%d⿪,Kѿ;<Q7'nfҿdlhA?T/ο ĹC㿉/M0п3nB>^myӿ7*?r῝K8տQ#`|D8KQҿg]D(Ϳ翯~'6/_E~Ϳ94NdIѹѿoͬF@Uѿ!ff/o[j.пy,0"迿4drkǿ4<`. #Q^ǿҦ,u3꿅h[*gHͿ?t]NM+Ãʿ. cF  EҿYYK)D]v5 տ62]:追.w&P Կ!}ఉnϯ3ӿb-迾!~}J#ϿY꿔Kt޿@ӿ.}qY[NJٖ޿ѿJY܁d L0aWML׿F)-ۙ {uٿ,2?' yֿ\߿pgԿE~_5/%Ӗ.qG ׿tظؼzGgۿcMB- ~ݿtu߿)ۿ[=ݿnѦ?6ۿ\fz*߿"I{~ ٿ4"2pܿ߆'߭geUտ[VqȈۿ ԅPPӿD׀޿<;TWֿRIݿhR:8?޿;uQ)ڿESo~*ܿצؿ&)X8ۿe%_Uۿ'mU2UgH}ŲJpjA*Tnq?#8i4ȱåɘ֋?{F~xϠ5c鬿8P.%K"༚X!fFda'f&bp.[=*֨?YEyhLIl t?=YUs?wu?ǧo[82y?y{!俵Ŏ }?Fn6ބ`lrt?͛X{忒3  ?cY[I>&Y? bcN?LF?FË`%8?C㿰}h|D?a0^5㿷]qhbc?@x{ܿ^38zW?;"_ݿ øI}?`La-AN?ab2߿G&LqCdzt?,ON޿Fdp5+?L|ڿJK'u? ]ۿh&=F?ñ9޿QM~~ =?f~ldܿ% !1?(a!+DWm\?O˼q&Pj4g?*#EÃЯ BKP?ZeLv$,2/?eu|A1p߿1޿Nl$?*+\;֖޿m6??40࿟RaҷdG?[܄࿹T -?ǭ$@yr?'Ee߿GtpgS>.X?p/!޿~/K?xp࿟%{k;cY?O)p3"eK]%\?DK5RJb?jQj#ۖѦ.O?Ƚ⿙<"=MN?),N࿱9kǭWk?VݿQk]xڪW?Aܿx(TߑRa9?{zxc޿A3P82?~coSe ?y,v=)ڠ\?(\$xqU:?ӂ) п$s1* O?Y4ǿ.6KBeı?qyƿ‚:Z U? (=\п ?n`%k]"?f9˿fs)"p.?&MFyǿUZ9me? & ?% k`[?ÿ8Z.lӳ?[;%Ktع-?kTݾ#.mO?6}Dƿk֐&W?,ÿ ;ʠ!>4w?떼TҨz8oM=?%"#xXkMR?d_ߵ>ӧ[ υ3L?O  ?ģ?ғeo?˛!?>2oaG?pP\W?a֡Aں?;#?RT^$ǹ? \.?DZ[ʏ"Mu?P3 ?c4'?j"?" b7(A?ˠai?nF6*JW-s_?{B ;?e8-`h\?3괪?AB2S8?w8?bPO[zj?m=H?уo"gg?bϷ1?RzY=^?s$s2?:p޿8?wg*h?ҟP޿ΐ}B?S8!?H1j_`J?`?S79{I[?B?,&U։;?)-ޯ}?ȡ?c?7|Kπnr?$ok?"o ?-P?~y?pPG?E3ߠC#?^ ?޹'u;nL?ΤB?&AIO|?#?5lvd ?G\UM?vRqN`W?pi 6?s}'t;?8r?Kb&b!Q?]'?Sa] 3?ik8?Cr?UZ?B:Zi/j?o?O[lfo?S1k!&b?Jase$׽? aM?Eѯ_Ii?^?"A@P2{?aG >?7=vr5z]D?ʼnA?iy d"?!甶?)ɡa][?HEa?7j tn? 23?Tx&x??etZ>?y# r?U:wƿ-.W)?lLw?U2ny%d?T?#(8oɼ?mg?`94}?S_h@?UjNNX?4{?!RG??֒$; QS? d?YCKЦ??Y2J=οFH\?ĤGz?4keD˿EqJ?4+%b,?nXyпi?ze?I*0Rҿ8Ǘ?J?=(Ͽ^:h?cB?bU8Mſsܼ?Z1?Wnrȿ_ ?ߪ?lLsǿk;s?{?sٿϿKw ~?:D?mqQkӿ m|?O%6?<ѿn?8c B!?wQʿCM1?Ʋ#[?<ٿ<5cӇ?8B?~wݿWվ?x ^?֙ddl?߹gf^̧f?Vs?m)O߿U緭`sK?WNxܿGfs?J?f7V޿7?)$)?ῪG P?z&jx?_)Zῶ.w ?b>v?\ĿAAB̝w-zC?p%Y0Ǽч ?3?n¿@!mֱʁ6{?ȿʼn,JR G?gYҥÿ,y7ō+i{_r?DHXG,Ŀv?J$Z J?j>2P̢&y@o?WG:ԴoNTi l?, QxҢ?-{ƿ98E֞9A<{?4c,?4aF߿[M6/?$숰%ܿo <Ŀ J?+ynݿ׵ )7p^]B?JQܿ0zr2?@@@]x#@>?2p3޿`ɞᢿ ?&E࿅@Z)D?fRއÿI'6?Ǧ࿊YP"[GCA!?[x/zr#Tj [?LпDmyտ?7N пٿP?dxɿwt>=ڿ_?(dʿ84+,ֿjFDIG?tjͿUtؿ섞?ӿϋOٿ7?"gϿJ>ݿn $?ݤѿKۿ-'?l?l׺ȿYW,ݿ Ԣ4?'Zÿ$ĝyݿ}}?c[ĿBڿ6}?)'ҷMƿ k,:ܿe )?7Wƿ<-#x? ou!)˿7- 0{?zf]?lWɿ,mSB?ID?ᴵ¿dM6ʐ?W$.|ؖ?7^Ŀmᩕ?k? }ʿh3G??lg?ƿQGq?Q?uܿu?&F?.g u#?kp?'킸$n?6ݤLo?G&`DU?'#7 ?'ǧ:4ZT"V-?e[sxGw;z?ʝ6K@a\9?SKyM֡+BN?3dσX+?u<4ĿTXIr>&c ?}EEBB ?IPLS,|RF-O?a=u-_}&?xWfE (Q?[eDvOfSeY?ەÿ":W5aS?P4 T_?7Mpf?L^w[zտtbbtՃ?6ٿ{…۟?(1Oڿw^L|>3e?%. .ֿzXG%6L?䋢ؿK}W|A+8?.6uQٿN%أHų?)2%ݿ2R$`+?*Qʦۿ$(Ll)p?$ݿ"?&NQ?D<ݿn-/mܨ[?`ILڿ^QtU?V>ܿ"j+)aQ?=U+s]F"? afϭĥ 69#CHɿ'!O6TC뱿LQ¿pԑٙr | "SĿM`EE>]U]?'{ʿr~G9SzcXƿ? rl='L쾿 *:qUd)w'Ч仿`Gyk ƭv/ڪ)Ya`@춿&oYx0gzfpQv@}˹?Qƿ4{?έ`t¿z8%գ[y?4PCߍZcZ\fFWE"Po7ޗ?2.hۿl?ݿO6},|Nw{ǣ?sUb ࿥R cލ$7ݿi%IGB꺟?/kA6ݿaBjC?}g@ܿ$;uN'8 w?KZB=߿SJI?f8U]ݿekK?B|ތXUڿJ^"׿jfؿjz$Կ%ٿJrYal0R[ؿLhԿ?m%Ƿmٿt/?[}Iҿ1 :$.ֿ;EAbѿd\a׿yÐrӿm))ݿ1տmR+s==[ڿ'Vֿ3vf6˿D]F?N=|C3]ĿeL5Ǖ? R /'Ŀ @{pH=^ʿCϯW]?G,ǿ&):Vyқ`r^QYſ!?i0vHpXJE~-?>\JvX^/?|?>f-ocDZ4J?| ln1O4ɟ[47 ĿHW {eOEOmmQSrji ?=w_xبڥJUhUnB[2W+ٿW\Ŀ-hl F7ڿNo_˿8,8;w8ݿ+l@ȿFz֮ܿnHd2In~Y?ۿIIƿ]۟B謪ؿdSο pEqۿA%ڿ]6?i|2 ܿ`oq? qM_8&ڿYR`?" ^{)׿ƒ^a??MGm@.ڿXАKy?w8탳h+ ߿0z?_y'Nz޿|S{?l-$E#޿v?1@{al#Ʉۿٯ?}k%{@ٿ% ?j=)׿g?hp8ozٿ2=9?.H))p@&ݿV=M#?0\+s >Pݿt*? *K;w!bS7P?URBM 3(5?iLɐ9@S"ho(?klԩ mﶸ +?lt*Gx8܊4wP9Nb?}8Fq>?2~UM?9u?~jb?pt??LM(n@=ǯH.?_>oCz? U {'@FAD?ةq4@.$ر?CoGѿ邦ߞ?4ˠpmNտ+I\?*R,KԿwM?(ͨJ+'q п։S׻?cJ]7ӿ?ZzBDn&ֿvd?6rr4Kؿ>,??+ km׿")7?1~Ik٥<ؿTSt?$HE'ԿMr_C?6W%ֿƗ ?%* ^dڿ4z?*OK2?OR/|:??~~کf?tW?J-2bVgQ-?Ɯuw=?V=b4?QjN?xz+J]C^% ?BztF^]?9n? P(LH ?V,,0s?ۋaodsGl?[?#H+o?7?0*I?v[|?? ?Ojb& ;[k>?>Ġ?QmCv}?{U.?s <? R`?Ǜ?َ| ?U f?.k?|R?i??fc?U@m"?i.]Hv?1^?f?3.86? ?Ҁ+?Cbb9?=y>?I 1?sI?㙍R@?\?S??k1x?߹l'?ՙ+?K(?H?@u(?67o?}??@\?w9/?r@e?ܢN?N??JW?o?!L[?6DL?h}4f?T[ ,?J#\0?2?EYOZ? -l?mL<?X9?h}Vо?|OQ2?HT?J6?o8Z??hG\?;ڣG?G̻??)??[]*K?3Hk?>Qm?\D?7!?҈#y?+)s?47?#?FW? ո?Ԋ-?<"?0I'u? pX?'L?/ u?tV i?NNU?=,?tp?O.I?پ?xvt?O??f?#=?m)}n7?m?35D?k@?d=E?(?zyW?< ? '}?ĠRm?E?;p?J+?V݅*?̻&n?bW-?5W"S?pOO*?k@?AH?W3?)0=>?<<7?hG6?%??6L?0Z,L?k!?V3PZ?XK%ʨ?´R}?WxYO?us??Ф,s?4 ZB?68L?Pڅx?aZ? ɖ?9uIg?\6,?%t( >?$?/e?!?l%p?_x?*?rG?yJ?`q;7?/x:? mV?d?va?/?R>H?&% ?IĤ?4ɬT?Drp?{< B?V㮆?h@?s?zHq?S(? ?:S(q7?mϾ?}E0@%??4.$?Bw!?,7?-?TҞnnl?uZ1?$#v?&]?k? {[?䯖~? ^~1?k?p?8? ?E^{?rZ?nz9?l{P?o! ?“1mU?bH??x?z?A[M?l'_?e?hҋ??~?vC?Ϸȥ?k ,z?ƶ5?I|z?H?ե|?`J-?aA??iw|?eQ{?߫?+{/F?#)"_?M?O?/#'?k8Ħ?)?fЊ? pZ?f/I7?5(2[?]^Ϡx7gg?4~7?dTq?6jw?v{wF?N-DaxP?To?dn!#Fq.i?A0M+?/:x!?vq?4|7>7hr??9Tﶿdx@?5Bh?$.h tm?Z9?yԦ( ?)u4cg?$npN!2Y/?Ë?}]Ŀvc?1=xd?B?)]ÿ??)Gy?WwпZKwv?E覟ɫ?&|п$?m Ow?Za̿>D}?[1'?w$R@b~?AlX{?@>?oZO?rn[d_?}? w)?xG&?Q'{?a ,;Ű?zB?6J?Om:ط?9 ?)xǒ?-ˡL?PC|?K?C`B?Vbޗ.?Ag@?~߁7?Fҗ?{r|?Y۰?hZ?~l?` +?}{?;U?1JQ4?Nmǿp*?ɏ=?KѸ ȿ6d,g?Œ?i~ڪvKkm?|j(f?cose?:h`ޠ?Li=?ԧ?xɿ_n?LVR?_[ſ+X?tshD?n..!~R#_?WӪV?>vA??c%?l5 Qc`We?tsL?=/῕z1|?T?KŸ:?;Q?Y7U"d?v0)$?=1[f?M?m俑)?>XJֆ?V5.vx? R ?WQjMS?K)?^\S⿉-B?-??l035?_nI?oڑ;dg=%?lS?RM xIJ2l_?N-m?vֿ)?nj?RBbԿ0&B?r~8G?ҿ]YNb?-?GԿM5t(ީ?k/?NZԿKu?g LA?!JֿOv?)|?ѹ2nBҿE@?-9p? 2IԿQ{c$Yڿʜ']?:jfk?˯otۿӎS4?Ģ2?4|ٿ?_:>??:ֿ11?4Tq?˶?Jտ >&??܉濰5=?6ێ?hVFat 1 ?"?PLњzx?:(i?Nm#zJK?J1u?ج.A^6?qA? 1 ?clL?~EugD?ry0?>9g翽4 ?n8? ,t2O?F?D?H!P>ّ?odC?ZUN;CV>c?ǚd?7WVdry!W~?zS?V|Ns翍@??~ ?0钇lZm?w5?2tjQj"?inĬ?ݿDz,?,R3;?گ7޿ɑ?J1?AWs࿦[˜?0.?c߿{&?@:?LsWݿ,.@?aPA?iz*ڿt?x}J<^?3v?*M/Wn'f?ʎU[?h=)ls#?@E~?ɜ57?]?`<}%$/T?Q18?ō! w4?E5:?q̆NQ鿐޾a?:/?h+mdA? ^?3?#}i?F+?!u8 ?Ɉ)z?a`߾IK?!Q?gť)鿅\?PGk??|y^.|Ew?&g^?]zБeY4?4K?qHVic}dz?ZW L/?syӎ"?^Zܷ뿟|qVa?/ʠ=N95>[ ?硻\u?|Х|N]N?Vz{aC4S꿎}0?%Tp7组)['?@uÿ[͎gu|?'v2=BqJo?7+?þ>09??z‡^?07?JA=*E]?P?՟!b]l?O3?:@#t{?,ļ?:H b"¢?L.C??ZԸ`O?/1? GS&M?^^ǀM?ڷ֧D oUR?o?vZo_dݾ? )?GTdyؐ?#:?l(Y?ڂqtGy?^zn8ᅴY4?37ɫ?U7￉f?58Ow?DbRl;?Wf'?[v$?y>?P;ϳ1C?a}?±_鿕/?B! {?R!:Nhs?@?5Ymd{Bh? ?Șo?K??&;?@>?Tf?c?{V5:L.?A/!?;+p`R?퉜?$b&ul?*% ?Yc*b ?Wq?`W u5)?lyq-?ۗ>u,Ǽ?\ |?fSF,]?ʃ?I_ V?G?&u^?.L?+$7?,?PΉ?6\VΝJ ?Fsc?2vjE"o,ֽ?-+bV?5`E+?¼V?7YF/܇ו?4)R2UH?Ǣ?$8uo3?:v?C IS8? "m7[ݥ??R? Ȭ<"8?SӉ?܀}翄j ?eEH?sBQ ?&9? ̲#'$c?cv?a{pƟ&h,?o0?$xJ؝? ?[TD[?.&Z?]^Ë>hO&?ՀI?>D6at˳ ?Յ?tؓD?Of?*l|&n?[dݠ?Xfmjr6??)[^?aR?yW?Vhå? ?Vk`$FտpV?:fʅWؿ:I?~P0I^+ƜؿL?F E tտzK?ʮZL鿦ߧֿ4C?'Ece׿~))$?\oG1ۿ {=?S<_bۿfIkĆ?0 <'+kٿQ ?"I迥="ۿy)?`ssoXؿ-?rUA=%ڿKsI?BI-ԭ`߿b?Iӣ"ݿYm?҄4F?xWӐdj?Я+@=8G?UnÅ%2?IAvf >#9d/?λƻV37귿5LA?oM;m$¿|?" 忾pOp?{0R+*_qݰ?;2[濶)sv6?{&~&ŖR0?ݮ2.;3ݜm ?`ՂU;z}ܞ?1ט-9Nn鮄˽?8x=c-yhz?'^s9x=?}+kf[Ŀ`"'? p(d:u ?*9 79`m?􍻔"&  Tk?jjsR4`U޿*atC?}P 57ڿnd?*^:1a ܿZ?]i:5U-ῢ?+n 迨 Ûj.55?ݱWZY ͿѥeĬ?G/IpŸƿ?93;?cnU1W~ȿ4?B=#Ͽs@.?]@m~e'˿:?A s1Aƿ6 A? 7;?LHÿO?NR Fj&?D8TZ|↑-¿IHܹ?ܢ3bʿR ?Ը+A*3ſTtn?r~}?夌f[W}M?8L￶c[+s?l&n)P{ܿY*o?ӛ뿋>߿ѣT(lƛb]c<뿰E߿G7^2(?\پ߿a R?[ Np5ۤ}ݿ>v:ڶ޿yd.Oh6DfڂGK?L! v뿔޿c}-@yo#Nq9EIȱ'SQs݆eGu|ΛHP]¢S9њv@*;$}?i꿾GZT῭GĿ{$"`%ڥF ;˂3$+g5)3L(Z^͏ҍv?6"P}U[?\p;L}S -?ۣXvy俕Ee ?N͛濛`Ս俢֝/8?ReůOe忭:?qxqeS+!u/?C>濃Ɂax^?5忠dP1wj#t?z%D@{F)z?I+y:J迂 k1;ҢQ?K*8A??<;…o> #:{b?Rau\ˢW?ٳ^*,Ѯ RGL/?ږͭftnHx&d؈xY0XʠLRW 翫 /q0f{\u?Pc5PuLaC-yoerj㿋-@牵pF#ŢV"㿳8hİIq,㿫@(!|=VBӶ4lnd춿-fFዛWí$;ؿl ֦ed㽵0^0F CUHߣ㿢Aÿ0\@P迪le^;=^'R῾<Էx)b7+?U@޿tJa邒?9?ݿ-;뿴O7?LTvk ?y;/ l?6 $қ#>1"?Fq/5{޿'Þļ?͍$9!ۿm:쿇 DF?Ģ;_ڿXCi/1?=ܿQ:h8FM?@۠ڿ32N쿵??98SڿsG/3 )?/$Ȍݿa0>YB?]ܿ@nGy?Dk^ֿ2q\-ɫ?8n?ֿop;tYOw?tk&ؿ"kX'??1)IB俾/>?G6NW2}?gn㿵 V2俔dN {?'WNn忍[@?p j|W?M` v~ ??L俵Kت ?p[=*⿬ϼc?N[(j0?佼㿬 Dc<ꉜ?ۿLR5%Z}俅|?* Z*#dk⿴4f? & ۿik%q-?&rٿIфCD|?׿b8(v? q¢ؿ{^ğM?01fٿ#(뿙?±?*ۿv ZHp҉?)ؿ::Dfc?Stٿ]ؽi7bV?(z)տJ$쿽 V?]e*vҿ C{rzו?W1KԿE*Y?LԿ,K ]?Sykӿ?a{θM?CNտS+ء?#Hտq)濛XX?4wҿYO,H?FԿo{uk9?z$׿`夀Cv?E2տʢ忖#?-DEпŖ濮,} ? m̿+(}r%&Z? %п+G ? Z_пZ5DCu?Wrҿ^ %f?ֿ̃2@܈[ޠ?#}Q~Կ%nyTd'?V}2ɿq$㿷>ϵR?@.]GNpϿӈS5h {?m~װ?0B䙂V?F?:5?un q]?6xr;ZAL?o?']$뿎)I?m͸?vֆˁP?:?]kb쿸t2)$?ӣhjQ?dИܱ?[~'?Ƞ "ӆ?7hC?O&Kp;3R ?y-?oj)? 0ـ? (KU꿣-?+ G?Jټ yI?Aq?Y ^?^?Գ뿾n?|TJl?(uվ4C9G?mSGſjk;>z8?yĿ2"oK[2/?@tڢp~b~mBMA?"Q4&#JnNM}?28IfW^i/p?R Yw~y忪f?e{ǿ>RE忉X@?ec"ʿpRK0?q8ɿS ?RuſȔ俆?~RĿfx˽?sxߩʿ)]Vu쿴dz?Wǿ2B?óBZ0hYWяS"'? 緜ſj3??aCv})Ͽl95"?@Uп@D$?O-ϿA{X ?($˿l~9 f?g*ǿ&Fob;}\k?98C"ÿaK\$&e2?Z7&ǿ+('?)PUпzF&fBJ˶?%a*#[п,ʨ?x4N?ee d2ӎ?7Rw?uj-l/?)ר?4N䥇~b?x?4~ œu?U?y/?%hvHÿ:RSO? 1ƿI9 ̄]&?&q֙ĿT?g?sYܹ?13?0+\ ?7l1PfRmn?~8пHv&`rM?%˿LkU?ω V?S55i*o?SIF?lZT8?t- [cf=?S:,J￱2(?;{b?դAZ "R?ܪ$?SX։{:a[H ?}#;jZǟ?ԉ {*KK?Df?8hP￯y-@F>J?-?KIȱnz?jde>O?xJ}撫P]Hٗ?aݷ1W?(leg?Ey$zߌGĿDy)O??S' G sdQ?lH73ͅV ?{[v?RDW?%u`djvU[?" g? =U(jy?쿷l֦Ig?:6}쿆0;cs/?(z!ÿDJj?@؋:zQ0=P04?Mʧ7+?ګJ? @U?JҎ?:jx7?׽`?0Oe?펆(?;& >?!2x? ; ļ?$T%?PU?bCk ?忚*1?SOdt?Kr3c,M?`?(?FjLJ-?TvJ?E7O׿ {?f?@LN G?an;h?vQ!xE迌o`?e?SJ$,B?T:?3(PuC ?.-?1这 Woe?ngO?C鿓 Y?cF{?,qcafω?}&ij?}d?M9@?I6F'䄆R?Cl? 6Qy-?bq=?z u俒 |?;?Nv㿫:I?72Â?9l7?>qkD?#JM??!b?ѣ.O&?m &9俌LDc?GASm?79cV?St?HT?Tn%2?'?>gCۿ=jU/?AiM?: ^ȿٿ:e ?XvW?_ֿ"J1?Ӯ?.3{<>ۿDp?urK?7޿KUqz?(t?վrVݿqޫ?6 |M??tٿ9~&?U?O-Sܿ8{i?s[k?DM5 t9K?uBL?zb] $?O(/Q?BP|nr ?%_?mh߿O_?[ْ?UgIzݿ n\k?ГR|2? PۿQY{2?rlJ?*ݿq>?-&?5HI῰j˶?ܖg?JBuv?HLXY?>D_?IA~J? e,1zu75?,A?T&罿>?6?pGÿ_4u?!E6?ſSRƽ P?C?"ǻF?߾P?9r]l]9?-`?Ca8 ?kR?o 4c`D?oVh?-혶lJO?J- W?e}uxĿ?Kd?sVe?$CʿE?&I?G;mX&?ؿ_?]5V B5?{9>m?K׿^>?k4?naۿ΂V/;?Eȼ-?FCڿ7?R]?rz׿%ȸ.?o?[mEVٿia:?dO?!Rڿ,]A? om? ݿr8?xf?jܿM?PƭS?,K޿ƭ&?>?"Uaݿ.5Eܹ?D|?Kbٿx6I ?854y?_sۿ]n?zL? &vwzM?^ܤ?,,࿹6hƯ?0Eۖ?dN!Ŀ;1.o?l0??7 "1&UV?il'I`8]?lcBԻui8(?cx?YFJR?Õw ?#ÿ0:\~o?ju뿿/b_W?KBKSTK?cpʧ?FޟiEh-@y?)dz~GȱUq?*d9^eN[?چ 8O]]?>4ca0??|k?"HGĿ?p_65?gA'F e2xa?Cv=',E32TRR?GȜ?F;}x?wpu?|T?ތ ]?u8S?5-n?,F?~3,\ͱ?05?Sy?u1W?g?S::?=i.z?Qw[?1?)z’?:ޓ?ُ?WV/`v?d@V? 2|_?<3~~?K`#?}d՗?P'BW?@΢?-,)z?pK?,?c{?$bV?RmѠ?$K??BeŹ??D?Sݭ?9:f?JLC?[ ^?n5?Dw?%W0?<2[?>$?ܠfi-^"?i?OGɠWsb? )?;Ljy?? Մ?4*~%C?>/JF%?OV?ԡ?dLB?Bk?7֠?S?iP'?EH?v&0?pY4?5$k9??B?HHM? n`?yA?x?n?q ? ~vb?XƯQ?{^ZJ? ~7A.9?eD^?@k#?vM~?Zj9\?F?'z3Q?c?%rw?Hk3mc? a?W?2W_h?|{?)eX?e?O ?T]?7="(?(Lꇽ?YaJ?fsd?Z?Q ?en°?X?Q,_O?.9{?]w?A?x /m;?w3)?y3?7[4?lw? W?e9QI?K} ?ų?dž8G?)i?I Ё? !e? TB}RF?f? ? m?Em?6fH?[>?fqfE?#-?l/u?u-]"?_?Fs1?H`dž? ?;#?6N_Z&?%wOH?(Ģ}?_Rۥ?8'U2?K+/a?vNQs?垲?u?]V ?MZ?L2H?x?%F[?,8?Ehm?T?ƃI?"<ܨ?6;?--ް7?q?ir.sT?d$ǥ?*'Q?FT_? ?l5?O?c% ?ϐ?̢???!|ݿJ?[l߿vۿcy(:v?$3޿'eٿ-k??seR$9ۿr p c?>Y>ޗ3uۿA8Jb? : ߿&y=ܿml-?4#d6ۿ[Zb9ٿc$D2?-Kڿ>ؿ]4 ?85.'ܿ uڿ=CI?[3Qܿ"Wֿ 5zH?4e,Sؿb? Y3.\׿+B?QKW,CԿJe?ڢGtۿ(maտ$ݣ8?Ѡ㉛ݿ,t;Ml@#?&X+R1"_[2?,k5Z L}f?7=aWڅX1˸0x2?r#T)r࿹)U? 3Kp\i{Kݿ/% ? M߿?bs k޿??d]!v9zῷ{p?gˌU թ? ϡ`%5.߹b?U7^YQy?_ڤ7q}0?^ԅ. 6sV϶+>? su忸=)?YڿAn='V9?^B癗ֿIEV9)?#%ԿΝit保vP,?IJؿX2)g??q@ ׿k0TsN[H)?JؿCϏt"f?j-Կq k-0?#u~ӿ7 0v8? տr=|&?S/xѿwpx(?Mп=`.-Gx%?Kg\ӿRv\=?>Vcҿ\}&$;?0!οk迿пKCR1?駻ֿS"ѿ7{?5t9 ҿmrDп;-?>JԿu' Ϳ{Ё?F.䔳ۿB S)?Ͽ}G._?HE[]ٿ.OݧɿdFA_V?^,s?ο% No?-=.֚? ȿ;3Y?t/&?*ÿcBYK??;([j]tDɿ};:^?È$?5ŭѿz?k r?xiIѿ䎺?+ ?V~ѿ5"K?U,?;.V ̿g7 ?Bָ?ÿp4ë?Jݱ?gHȿ_N?]?46Tп6o?3[?ܩFT+?Az?uJ]ſyDc?jf?U^26Ŀlt?}#?Ii/l˿?s$?Iu)?e_aZ̿|A"?=uxO?Cq^sȿchl?ט˿hR?<#k?J΍9п(!?29bK?gU1пa `?;hv?tUͿִ"??8d<.?!#_˿NI ?lQp?t:vǿHrq!p2{?3_>IS 1޾PW[_?St!sNd&&?i9Ȼ~ݿ[%D=B?iRlݿYϐ˷,?\g~ ߿9軏ӻ|?/Nmi&nƿiT.?̽]߿5ÿ?-ܹxſNC?)Lܿ \`S=? oŔڿʣL?GgOۿDMʿ|ԙ?!‰ݿEtO?r??׿j?b?kNԿmG?V,? ֿ4]ɰ?x4>?5M'ٿQ?v=H?ɍ8׿|hQ?# -?wNҿRqB??CѿckA5?Rx?:|cҿi&xU?*J?ӿef?`Xfc{?/P8ֿfE?W3??Ey;ٿ9'?kZ5?7ꑼֿK ?O?9AYϿ^;"P?|M?ƹ71;пzI.qI??"7 E*?LR??T? S7? 怟<;kJOpd׷?E"_i?͠@wu7yُ? ֱts?/+&^j31?% ?RD #"Z2?ݗu_?O!Zhlw*??6AQ?e?p}?Mli?DP^ipwBx?[;U~? !ɱv? ?CzɌ MX?e?plWŜ1?MqŚ??@0.̬ʿYl߿ybD|ĿE{޿2m@&bq¿aVdR^ʑ0꿨\hȿ#ZG/#jƿa ߿ \ ^p;VXǿ>f6ۿ'쿑AQroOڿLFIR쿸Нx>[C)ܿ{^xe¿FRܿfk@뿍.CM%k=l+W=,بi׭ܳG^Ϙi.+TN%^ME[ۿk/òֱ4,ݿE4忦) ԿP]+s"Mh&F/ԿWu5Zv}lLyB/׿{y`څU?BQ} ׿c>0TQ$志nERjտؿ#p\V>1ҿ>BU‡㿘IfԿhkM:yӿ!Duؿ$ZlKXO~ۿVb x!~ۿv=̐ &}ٿ]ڤڈ࿸r˲ؿ&0Ѕ.c ⿦Vֿ"b.M4ۮܿeڿL`鿷\߿MR뙗ֿg$ݿncԿSW,)eڿ>k&ؿ鿅j6ݿ;'׿s݄迭 ̰࿇JؿMby pK|${-ԿmbS鿗\࿇~ӿi<#d?Nbտ|)Xs}߿[f2xѿ̬CNݿIÉпBޅ؂-뿛Z]ۿ`k\ӿ_꿘tݿ-cҿaO鿱sF:/B?ο|+¦0ῗ!c˿M 鿇w\'῵/пT0aѼbѿ@G-Jae!CԿuە&t|KտhmEӇ85ÿ!~ӿݏ6c Fm,ӿEWm *Aѿ}Nz(dيԿOS;_cֿQ8׹sLԿ6Ugz-lZE%^ؿuRV8([gĿ^m׿?NŠd[F"ؿEFpH[S߻ٿ(^a+ۦ 9ٿ "(t׿L]>ȿn9go39ۿt+d:yɿQ ?Q7vۿ'tr=ÿ1}dV׿{/쿕 Rzٿl ſloڿzQ+pϿtOd뿒+m(D޿Pʿ>Й`ܿsͿP5Ӧ޿ÿ_0ҭ|Jދۿ,)ұe+ 3`~ݿ69gZS ?>Yǿq1olr 7¿>C6¥:VlվzmŘ?[%'?2vC9ֶ]]u^' BjhݺʐM>|￯fƿ}??^ *SFKF k?0P\m(LH~ ?_ſHNP kv?>΄`G!xb?3?.x4f_Ew^Yᅡ,S ?`Z'%.&D8!{C?DJPVW}혼?EJK?BPҿ@x$2pǼ?N)L"wsտlPYֱ?YIԿ~OūLJ?8|y4ѿ2OR/詫͍?cWӿK/1xu*;?xA?򻇀,ֿGwU?cH~7ٿ3tۣ-?Efؿ>+zW^?1׿ hbFݮH?uǧjֿ0ԯi'Ԟ?bȃ& ҿV̳Tp3?,[JԿs-{]*§?rͲۿlXer`?2& ٿ[tID?7b.<;eg?Iv՚?\_ְ a??z#h%?X@A?"\H[@S t$3|?9"?p+plᎡ?e r?,>?+U# f?Z` ?yfj~,:|?!,?a畹ᅱ`r?{=ָ?h t*?eݱ? fæ, 6?cZ_}]?L,/P?\A?R,)ڳi{?"VI%ſ@]쿽HY?qVĿH< Ǟ?IFnr˿Ni#xL0?)z̿-LP^_bT?ѿ#ȿ;D1]Q?˅AF&P~4]Ok?x:{ÿo+;=ܦ?Lq`iz>?#P`YA˿뿦?*YneпZ뿪?@?8~~п>A?f˺m$ο-+ ?R =J˿jz qa8 ?"Dǿ\#c'뿱NƧ?uIVݿvqgbոq ?A[߿Pg꿢D݈?➉’5}뿡h??6߿ڂX]n?ʔӕzc8 Jf`?֩ܿ&+Ӆ쿓%6ξ?#ڿ}CylDz?ZMۿU:li?-BݿJÈ?¡kؿy oKe%?1uԿ4aLr? ?!ֿRQ^[ R?Z_įڿ׸V0`w?z׿$d ?D0jӿϠU꿀~?!uѿ~hLX?&8?ҿjvoM鿆|?xpuӿ5pc ?w ׿ڧl?栗]տ.Z fyj&?+пkA|Q?- \俽 ]?tB2B^4uij?8?;%( \Np?:hc{忇b?v??N԰8PH俯?cVmnYS5ub 㿎r?LwJ?⅃ pCnf?/HQNkTA5Ad?*36W6< ?' ".\R;0#z?0U%!:vo2l߿' 4Li`)Wl%޿B)Ryb\18^dRsγ 뿮@ `̪-n뿉U ߿󺹿dxJf6ۿt:ÿOZ+ K[( Oڿ(c߅ſN/H")ܿ756'm|:Sܿ쫬!ƿ#Q뿪K1k]Qgܳ>Gÿ(tT|)ͿF!}8ۿ[frd[ʿ&~)N"ݿ ??r%P+kgա?F+e۞h5Z ?Lg3&Zڅg.?5Wd X.uTYW?zw 翄 p\}?9u%Q濴SI>VDQ?Ξk pkaݕ?5忿<!\X!?kqecΐ7?ȍR濗,ϫ"q?`(=~,ϛ?q濏Gۤ]]?Ishم. w64?fhX俄/*OH? e-쿻uڿiA?^\<] b$ֿNM?BԿiz?S6mk&)')ؿU?TA"'׿nk?/~zd|}Jؿ[?"쿒-ԿW$̯?`iS5j~ӿD_/u?BzA$տ"p!E?a,xѿxw?`;Ami^п=$p?i!'ln\ӿ,? g%cҿU>Ϗ>?2VοZNl?T;(KYc˿'97?RRпHȿNq,bѿ3s˿jg7VRP@ԿoƿEb տZ¿lM'~ӿ_V8mǿ);{_.ӿZпc &AѿMnTҿGZhp쿟يԿE"=Ͽo~쿿 ֿ߰?HMrEп%s<ڰsLԿ%ɿ5AixMؿ1:{9يhzIm׿%vCſ\l- ؿf]ҿ܃Nmٿ8nο}*_쿧»9ٿe6?CWTlnU9ȿ٩?0Ni 1nByɿE#?ΙY?~=ÿFn?rLᅭNį>?Fm]￝R| ſ?E?Mjr1pϿuX?;mY ʿ@{b?2?gB#gwsͿK,.q?j0 |ÿMaW?%8܇My&ұZNQl?T4IO￶:cEΆ?W0[5vǿ҈uſktoPDkȿdnUŘ?;ϿK;?Nw̿s(r$￐W^'Pʿ-9̓hLMʐ7:-UZoẬᅦ?v˿Ozgᅨ?[ƿ֭le ?"/cWNѿP4`;~?)=%yӿbﭼ`n0*?SaҿFI-Fw^Ts0ѿf@ ?m)ӿ|(VjC?a=Yп(2|;옼?rۿtXs4KҿzgWٿz[Kwsտ;ֿ 4$AvԿ|Zؿg<;쿧m}4ѿ7E ٿ MjWӿqۿ5fv꿾2n,ֿU ٿ2icI2k7ٿ]0[׿ڸDd-)2fؿ%ٕٿݶ](꿁.@ܨ׿ `Կ+쿨@yֿeIԿ쿁 & ҿEVԿZ_3[JԿ(>WǽԿ;>꿛ǃ Ͳۿa{ ĠԿ=) ٿb%vڿAfgX~a.yqqؿ", vBJ՚?V>3ڿwff`ޡF%?*(ݿX|\H[`쓧ڿ$uX"?O{տf!f7 r?UU#ֿ=Sfb ?Duֿb -d,?zIؿ4RNM/=ָ? ܿ) r쿚Pݱ?oڿetS}]?VFֿ Cu#+V?{ `D8`H%ſ.o:忓Yt?b6PĿ )e心_濭gr˿PH:z̿Qti俔 }tMȿBA¾iE;FemPڝTF%{ÿKQ3pl(qtj濉=-4_YA˿4zm ͈))Qneп`;J+Ck濱S9~п!tW快q m$ο΁Y迣zdu #=J˿L&r:俔JDǿ; Jܿ`y^$ÒJ"ٿlH$L=ڿkvPFݿOݿ--迼Fgݿ>ۿ_`MG)L[߿UFؿl ٨i+ֿPZ߿ .bڼ׿!ʪ eyJؿO.֩ܿ>mqܿ<^™ڿU]cڿ82ݝ܍ʛۿQEտOS&I,ݿ|>4qI忘׈俬ۆkؿ\V)`=`q`.-(uԿ%d5_ֿ9 N>mƯڿ8RM3üE㿮z׿uO忏e5eWMjӿձ+8µظI%Wuѿ|i!G+{Bl?ҿJܬNJJӿxIUƠ D rƧ׿8s`6gup⿢dտ0FW6:㿰пǚر῜vBVῑ]~/9R5LM2B[&NNw]]!2w%>mIeGs8}o3~:w(إlNnT1,@H#߿9`nYҺFuiVPܿ<~q3&\⿟ݿW;߅/7ߋ߿ "޿5t/HC޿E+࿽,3߿ܡ0߿軎".ZVa>w'TrۿQ&.Z?c*տf!n߿vz(yɿ6. ^@!?$pDƿ;\n=ÿUH"8?S~ο`4^?d`ʿ<$h ſI+̅?&ƿ"pϿh?}߾98ʿ?e]¿ᲝsͿH^?^:Q ÿm K?VѤƿh[(ұ{O Z?z; GÿO9qZV?xԎpǿ?_eO?YBqíݿ=jl\/?߿LŘ?ԓU=, ?3]tP^?.n,:k?idl s^'e?o{r߿ʐx?=ۿ!3? Sk?PșGa@ -?r ? C޿vM ?0?˅ΰ6?laBJ?NU⿓p?z P?֩G6⿗w^Clt?f)j ?+g'?: iWZC?Bb?.GFui'혼?rR.?(?Tj^Q"_ҿ!D?.`俅pwsտ x;6?a[GiԤԿ}%?RK0|@}4ѿ=>̔?+/Pk_WӿI7??bdj,ֿ")?&co7ٿ¥/ =?)9㿪%fؿRTڒ?!lu俌(ڨ׿V>?G8[!VeqֿB?<⿮C& ҿE!?աb[JԿ*f^n?霠N%"⿆Ͳۿ2k>?'Ӿ\tB ٿŀʛ?J (ab.yv?6?5_՚?Ɩs?g)[0O%?|ޕ?98\H[yO?Alɧ"?$:?.jg r??ten ?F(?*Ǿ ,?|zC?Y#}=ָ?2f7V?|<3vYOݱ? 8P?njfww}]?j?}c&kS?$Vت?g[%ſ[?@aj뿚ZĿ ?CL>dVqr˿u ?a65z̿ta? 꿬`*ȿf-?Ffw%FXxw?Pw쿓 &'{ÿ{L?} qn?Ղ/8쿛LYA˿cZDM?3뿢MAPneпX}?O.-ꖿ~пIH:? =P+m$ο֡~=?ݮ..7J&=J˿oG?QkCǿOZ?MZJÒJ87s;?Y͕$$2nk?EVƀ%RݿWBT?yu+hݿU:q??}俤 [߿Z4U?#$-,힉n@?;߿\p~?=8⿖b7뿿W z׿\D?8w`F4jӿ}?r_RO)uѿ er0?2 G}?ҿ/?#sV쿳ҟӿ6?2{t&II65׿֏Z2_?&xT)SXyiտn?jN0hп 0q!?8\c8;CI?eatD2BU ?orpd%OMr?LO$ eu ?JQ}志kN>?#_ OcnY5Sb o?3/l応#Cq?nz濋g܅>j]?u$(/HD /?Q>S-R5ڀ#3lnW?3Qwe(.Kܰ?7=㿲yVaH"?*T_?U޿QFv?dKp?HݿZ; &Q??4t#K<~W"z?ӕS}?[<-ͼ?b?k߿׬tŎ?Օc?OHx?{?&eC?`?ѰMQkݿ?:?&a?ZOYkhVj?vA?< E k*]?!?821_4?dTmM?1c*M/4PB?nϺ?R! >FD?"?E E?>t?s ״ڿ^i,ۑ:?0иl?Y?zX'п4Ư?</?w%lvҿ=΅?&]g?2:zҿ8?~^?;ٿ?)h|pk?F[=7ٿ$ܵ?I?cTwȿKu3k?6.?CVɿ?['?c)Kÿf˩?:m_?ڬ>A[as?zk>?LQxſMb5?XsBG?(E_Ͽ)?8$OQ?10F"ʿ6??gH6&Ϳ^E?c z?ÿ|7?>hI?OR Ļ ?HT?ܶd}?KJC?Xǿh?u W?B +yl?fO@?/fr?[?& ?$ ٯ?U?=}oD?=c\?oxH?B2?,e{?8s?,w+|f? tnv2aaÙE?\٨~>?`LNT ?0?]O?R8 ?D?~9? MK? ?-DZ>|?~zWҿT?XlHp^?JwwBsտt?w?1Կ];_?v %?73ѿg6{?F?!gVӿ}8:?_T}}?cֿHM.?BIc_?W|ٿVv!l?&??:Bfؿ# A ?Nd? >F׿h{?u}d?~Vnֿ:d?B?E ҿfz+?cY?CIԿ -?$w?ΥMۿz?}c?2?/\Ľٿzr?|r?&Jn)?ZAZ?ϵH(?r('E?~ 5? ??W?z\6?2Uj?7Ј?zeӃ?T?JZP& q?9:=݋?j1Ǻ?A? ? }i?j?XJBN?wd?C 73?Anp?Z[?k[ֺͱ?-R"?Aj? VG?!XI?cv?Uh6t?^NK?Tw?ſT?2ݿq .?\v?C8}ݿ%w?s?(߿YmO?!f{?Яcyk.?۲?Q)߿31?-D?|,\< ?H?? h ܿ j?7T?_ΰıڿP?]ȱ ?i\pۿ (?N׌?4OݿKyJ?,Ag?Flؿ(?RDo?^Կ" ?c$/?c⫱ֿ~0[}q?r;:?5㶥 ڿA?J`A?"{׿qh'?lQ '?WHLjӿ25?^1?[^,IX2?M?3y+%? „l?2چ.?[plb?;gP[G?[ב?wZZѤ?`S+EA7?\}?4vD-͢Q?{ V?e+sT4zȰ?+~j?sL.ec? z?U#  e]?Twm`?&o/Ķ?GJڂ?;?6h=?]@̃Mw3?-!?r?fͻ?}p?МM?ʍq?pɒ?!]A?+J`?%?P?0iM?M4?afU?b=?DqT?+`b?bn}h?'_kF?1v3Tє? iZ,]?ThͻD2?jF?8q&!%B?mhm?[753"?`Xz?9ՊA;,|?HIs?pHv.?ٛ(?Lކ7w]m5?Pݸ?Z|E (?|˜?m.tp$WP?M-?H%x+#ޗ `?B ?+̀#򭘵l?)ShQ?"t,g.?+ 65o?l:}?|;"+?5ǰp;t?]\ ?Q`E ?4'?aVc(?ϋW~΀f'?j9J?,YCSQ\?? ^]?3?Iz?sN ?#?m.G?rY"g?7OS R?_M?{9?RQ?gף@?pNO4?rH?>?fW5E+?3?t?,M?S?!P1?⼨ ࿜?v>?%;޿oo:2?6T6#?Ty,ݿc?z Q?݈[߿نh?}FUQ?~Zu4E?T'?5M%k_8?h:"?| %޿z?;Nh?Lw<ܿ0T`?3vZ5?\?ۿ/?^WPY?U@ݿ.Y+?VW?6޿Jq0? d+?z*࿁U~>?G[aݿ 4-4ֿ;`6#?UPZ=Hӿ: Q?9߿׆Y:ֿ@nQ?cXSqڿRA):ڿה? E2ܿ<~QۿOY"?{@ŤڿM$׿MSh?B3ڿ-M-տnZ5?x%ݿ hXݫӿY?ԛdGۿq8տh@gW??&6׿VXؿ+?(ؿA__ٿ 6}?P}R ,ӿg**?G忎sZտXGVp?0f'$ 6Oؿ2?$&9I俰c2?Gտ#m?cXz\gҿ ?Jĵ!w/H Կ=U?귉gSֿ -?h9濋 SԿJ^X?KD志/C}ٿ`4;?;cH俊IڿQy?ַn3׿;7?V$]ؿY?N1?0⿣.v??H2?# uҟe#?O|?pɰ2Q?V%F7?ZWxfGQ?Cgn?|JUY'\?< L?Pd '#?`ʨ?ؐ'3H6yY?8H?u߿\}56?o(d?;!? ` ?0O#?;Cv?=ݿO&?vF?V%ņ߿{e?|'˷?}*=2*?^ϫ?3]\?kep?;\?I<΁4?Ւ?,m濭(m?5?L迊)?ES?Ű%鿔Hb? u'?0K0迷sF-?Z`(u?w#)yu㿟Hx$ּmRޗ㿡7Md*ԫQ@Q?,JyÑ$T?9"J>H=V؛?fsmȭ[Q I|ś?q5[sb7"M~$ĭ`b?AOQ࿰1>A?:݌A῰~? z}ҍPmW&%]+x0!M'f@ӨՁCw@}=lǮE3+濎I~26qaPsDpƿ B" l"F⚙ſFnJ迷j'Mw23CZ `¿DՅ7Ѕws=w3o40sE|c 鿚cJPAfdj%>p6PoͿB& 1M>]& ȿ$Huῄw#" iJmR9;ǿau$TΫQYh*pѿ펲࿈*edz>1\ѿG "o_򀄯̿bH;TmKȬ Xȿu+v߿e'q5]iÿZ+7T|?\ȿsu Qhпݿ?`A-5пa~߿Qw}g]f9x0gỿ`fx翭OO w]1&ſ$AEuOi6q߆G{bd@ 迦8" ij ܫw4lz\}?+3 AdG迎O]D=6ƿÉn(U{X =J0!#kɿǐc4`Q\鿫RfɁÿϚNSg[?Opmٿjo>9T? yc4ֿ7#?%;ӿR|-?ɮֿIwQi2"r?_ڿ~Q3?a ۿc"@Y?޿q׿p]Iy9?͎~-տyj3`*?,ӿSq+:?9Žkտ*WăC6?pؿ3~x̴?+@ٿ`g} I?A5ӿG%0q8>?mc"տi)|wgB"?f`Pؿ5I]?o.տS.kAqID?Gcw}ҿT`76 $?HxԿyta ?7zֿI]yj3KK,?cԿXKP6B? +}ٿAJJ=VG?3 ڿ13ULZ?$C>~׿9pEri30 ?j*Wؿ _T?~?ՃjqF?]?"+cV{?JEh?x@/?uqH?.ۼF{a$$?,-?g/ڿR2?BH7P?0&Rؿ#̛?m뽁?g,ܿ.IZ?ů?QXտAo=?;B? )ҿ2;m?HtX4?[rп.wh?sVۇ??C3ӿ=`[?xP_?$|| ӿ-t5O?YAak?q Eeѿ'B#lin"?Q.'?&IZ̿ſ?@?Kaˈʿ3GYM?'?ſiHcƿY#?ñ8Tk"qGɿKӿN? N Dȿ8??ʘƱ?dGܿ:=x?J_?WN ܿs4.?/*?g9ٿ _?`X\H?_Kjۿ3d?Mm C?"#߿0@?c?[t-ݿ!?}G|V?-޿<]?b/)?QMu'DڿAQ?zr(?-EؿpQ?\Qv/?/Lܿi`L8?1#?28OѿD~??%sr˿&?e^? Xοj?^X4M?/,KBп:W]??D*ǿGi?uG?Q~¿~?K#V2?B'ſl ?-?i$rƿ ti?bd6?bBǿ| %???b˿b`g?LD}?#YtO.L? Gr]?fzkÿc &>?26"?-XDʿXu5xݣ?ΈSXѿZ.3*iOቮ?"ѿziT;˛}?(iMο>Y?;Flѿ0E,}?ZտHl ir?SK|ӿ' h?2տ0oOШ b9?KTӿ+F ?]<׿؇6|Pˣ?3ӿ F"8?п6xs!?; ˿(P&B T?Qfп㮠_T1Ǹ?4/ҿ䔜JSkѴTEY?)пso➽o? ̿|r=V?>п2JWmt5?D˰ǿ&}~?4cƿ٩Q?ࠥfEɿ37MӪ4Cgb? Ohȿv/?xSeαƌܿ/Kcxd|,¿ mܿ>.ҊD$7ÿ&~8#ٿή\%ʛdzjۿUAXGA$߿GO/9Nyoɿ.ݿsߕƀ]q[^ſI.޿KE>!~B̿ 8D Bڿ/(,9Po%ȿ'?ؿ&OοU"ܿϭz)8ͿI/),ѿZA\X'ʿ*˿w4!5ϗ¿1ֳ9ο ڬǿHuG)пAd_Iп}Fzqǿ씾^kHx)%Ϳ65¿A;nok=ǿ]}ſNdD˿0U0JN6f]ÿHxÿ@}hƇܿID꾲xBcxdә`T޿cDQI=.!+pۿTu!?Զ3S?ܿsx|x+$࿐̒瀖_0Om2߿HƮkY?fBI€3o?>QVݿ^"OL?]n9P $Pڿ8gd?hdVe߿ ϧ?Ĝǭ #9Կ!r@-?b;Bgyп-RH}?J5* BѿCI?mYC ӿ?m5?Z8(_Q>пjخB?BVkK@6.ʿ{'?l!TO˿ )Ⱦ?Z"kοk?uV?W:j˿^څ$/"?,A'EοVv?dk=Fkſ!Fl^?<N_ȿ+ĸ?D"?l#:ʿk?x¿V3?>p.N ὿y?T[$TĿvtN?e\v;ƿLD?e1} ?|wK.6¿z?PA b/݆̓?NAQI76밿 e͸/? ޑ{'o5./? m}W:/;?Ė݉?7j?L_?XR^5tٕY<5?&w+Y?RӨ+?4 G]E)y@?*{ ?Ki,G?fy?ɱ>h]?Ssl?dM}y?0Ec?}r}ދY? X^?tr%A2w>?22?`EZ?Bkϱ? u?{^?^ ?F?wA?ku ?rW?P6%?a7?k"?;7Y??T ?8ÚM?=]D? ?B\?q?&7.?s7?;?fX#?XOnG? >?`_Sd?(K&vs?&9h?Jf?t?s](?ؾ΅5?˪?ee?;A?A A ?U&ժ?j?tަ?(3@?c?f?7>F?c O"0?MyKI[?Gra ?)45?e?u8?WW?K3^?M,K]3?fA?XG ?Gr?4?g'?Gb?-L?BPq`?8'0?e?퐩?i?Daqr?>?]>?R?'Aw:?)nd2?[qxD?i p?2Y۷?D%΀?S:?ɝq?/h]kR??pc!?MEK?xi?Ђ0?R%?Z/2O?$?PZ?Xp?T&?CZW?w?%?;?XʜЃM?(ݚ8%?B1?5,?yuH:?(<]W=,?FrD?[ۣ`U$8 gY ?U؂B?&q2I?d1?CqT ?* ?U?;c1H?Į? J%#A`."?P?t?+o?@:F?;?K$V?x?L/?URY?`Z!-o?HnTibE9??A"`?jϹl? 0C ?J[$6?}e'=?33?eX?SGʱ0?Z?"jΑ?0\Kv?y?/R8?W(!?E?+?5Taſh!O(?1?R*dHʿ4?k#c?ȉ*&ÿD ?I-^?fɗĿ0ԶDΦ?sc?3 ʿw>P?K'Z?<ƿ*c+?ͪ6&H?]Jο?]#׌? ѿeP?OU ?!ͿDfY?@D2V?sA\4οy?WLgQ?_ѿCG0]?Q?SzFϿȗ?'?{@~Zܥ/?*o?:cA2?B,;m?}#i?oY.?0snw?)]M?T`)Є?WK?E? տU(X>?}e?7]#ZԿ1vPcs?կ:W??P;⿭C/~?uA?3Y5)?#?2`8|?050?o:&o`M?!a?C?x|xѷqH?Ҥ? be-l?B͌?X?%P,9?H+>M!?p ϝc?Db?ve{b?b! Z]?3_h(1_?E-<ܘ?˭KWWlG?DX?F~V$ ?Sy?sҥ?S'?мV _21d?P:ƭ?{6tjKN?l qԍ??̫㿤K?Uq#?[ZڳN3?h_Ml?O"x]ob?L?-{ĎC?Lk?My11N?ѳ"IG?=!~x5V迁jR??SY; ?yj|E?rցs7?1` P?KY3?z8u8g-jl?y̫dr?)fO&1_aH?b?# eRL?ZK?Wrarh?ƻ?E?zpnd?%NY%ۀ5^?)YUE갭_߁D@?ŗwuɉoC?V꿮U@n?`ua뿢#=r)l?Hk'F6(.{y?q쿉&@`f?*s%8uH{S̨?VkU9sLd5z?.é쿭|͒R˿(6e8S?&u$A/ѿ` ?DN6뿼¥ܥѿ%cڌ[?@¥a[ MϿ[|K ?NA쿓nP$ҿ&K?y# ^(տي16?]Z%Կb?00!C6kӿ62]0?lT9Կj?PR4KuӿHt? r7뿪S5k׿?X?C꿎o9Tֿ9M!?sjqonԿ9b??{ #wRw4տY,Z]?Y+c7 ڿkܘ?Uħah׿?4q!uпANy? VPEҿW >'?M{yѿ{>ƭ?? /bҿqԍ?K+E<տ|JZq#?iX0i:™-ӿĉMl?;-.";P̿r(L?yFWIϿ2Uk?N 0NnQ$߿`$IG?f{=wP࿮]; ?Bט[뿶 ޿xn7?q<~zJ߿9@ߘ3?GҫS\s>Q⿳odr?7Uܖ%R CN;b?^~pΖYkrRY3?J鿸z=ΊӠƻ?|oxH C?qP%?)W޿@0?Hc*'erp?qac8n|p?Z $ E~?;c%?="޲ 7鿮vCZ?v!X?Nm3rRǀ=?Usw{`B92 ~2?~"+u P=XDf㿅Z-q鿩Lgx1ĭ鿸6B?HDe㿿jFX ?ţȍSR%+W֢],IFbi.KIw‡2ί$?/Z3EF?$ ʘjXZvm0ܜx?$50_zR8?/-o?޽cZlv?q8"١Xy?6 ?z`+v+C9 j "r`?6m]F eD%G5?x|q0PrQ@Fy?!:4hܖ9yL濣=@ɑ?nW㿶{^IOf?tĿWRR뿜̨?I%*οd1 z?)UoJ?'S?gf \pnC8# ?v@nQD@OuOV~[?}$nWZK ?x:}%&l@_?wץ?Ff^P:?b?q >iޓ?*F V?5\0?,5?I:?!A?9~K쿱?%`:-M?r&s?X?ƴ07?fqRܹ2M!?zc[?t0lb?buA?c')Ë7Z]?}l?f "8ܘ?bS{?ɷד쟓?ퟡI4T ADy?u$k .g'?;FSE!hC+Poaƭ?NʢVlU>x"ԍ?]՛h?Z0))r#??6}_ E?oQᅵMl?(ު-۽['L?Vd찿0(k?ck?Hh?"eIG?g91?豜.: ?56?>sRg7?q%L?!1vI63?h$0?ۃ9B*dr?z D?RQXRb?ho$?*F  P?6%?:, ƻ?RjR(?,3#?E)?D[0?Ԫ?Epsz=> p?ۂw?MsRbp?M‡8?K۫뿼4;T~?cs?wBHgr%?9 -?apBZ?l+u?+QRإ5c&?b7%?{c뿖=?X;fp?3y꿒, ? 7?1y],%Ҫ6 ?rɭC\c <7P?)Z'-zҝ ?li%:?Bc*ml*9IF? le}?Q͏vyx?Ӓ@ ?F-o?CP?e;(e迢?h?(q#70 ?/^?:`3X:r`?1^?KgS/U5?í{z?~2?&G9TO?}4ɑ?[ ?K-鿌 =8?\BV?!P꿖Ҙ?02}?t D)Po? ?f?8vbN ? }?tMd^?cFl?ihZ[?Qb?N⿄DF?~?V,"]H?8F)+?]Lex1fό? :9]?̩BG࿺f4?UO7?v.:&L&V?4ӫ??ط}y_Q?#L?jJny?+"eT?"?} p?'dpfG>?!ut?!qf5Gi?}G{?cc,l 05?no?R yv|\I?k?=?$川T4?| ?32X==?x3?T6݄>*)?"T?a_`7,?S?M&Wڿ:ى ?ytr%?4Q޿o|G7n?,~PsH?i߿Cc??;!ݻ޿~˞y?di? ݿ"?nfi??u)ڿ?k?ࡪ߿]y?25&#?/ֿ7#cS?=+x?]gҿVS?0?;ѿ??&}0? r*ԿL ?%??(ӿ??a"?( Ͽ[PE?oz`?k ^ϿRHf?"!v?H[ѿ.?,U?JۤQͿH,?RV;?sM[ Ͽf7>?4?+=U]Sɿ5- X?rf? S W˿I(W ?lmae?A֘ҿlb?/?KsEҿM."Z]?P2bB?~'Ajʿ-'ޘ?џ?ghϿY?1޼?}gֿd$y?S]) ?KMZԿK'?x:6?%տϭƭ?9I2?V(տ˻ݯԍ?""Z,7?mC-ѿl r#?@pl?--ӿHMl?u*k?ؿXL?u$Ɯ?A ׿س{k?DC\?ׅQ_JG?qw? kId|: ?G72(?"@&g7?BMp?pXBk@3?"-?'DGmr?$Ih??ãb?QmB?v1A6Q4\*i?Ȏ{?;(1_@ͻ?r?3Gy?J/?O#'u,c0?`Y?>{`Tr?\9?q'y p?Pd*?&\N?;?_?5F?3?>)8?0p\?Gu?b?ȼ??5E!Qη? f?L.Ul?qjOJ?v?-∱?I7?W ?"?Rg"R<)5?6]?Sy$R7 g?B?8PQ?qZ? ? Gp ?!? G?Ȁ%TH?V*K?3e}|UÖ?*BN?&ry/?ugfj?4k?~^;{?enM$?GM ?l~?rK!T?ɺ{un? i?¼?U4? L5?3rYV?wo?/6?ZKG?pϞ2?. 1 p?";h? 2?#rV?R+?V?V#?&AB?)J O?}?ASl?EjnB?^x G?\7XvtE?>?5,X|?xۖ6-??zk?>*?v͠?2O?*~8?M BL?k?j??,Ub?͖?5>m?O@?Қ+'?QJ?`W?8P?8m'?.ח?x@@?8))?eT?Z?Y͸O?΃}>8K2?֘eTemv?k[ [x}5> ?:5޿V4 v?ʣ`a7mNO?SKK77YA黈(⿛s?Ay *>9^cJ?ʓhM] D忇W[w?[Fɏ忼e@?r"Kx2. lH?كO!U6L[w?eٱ|$ӥQ?}xocnr!qdSx?tAIڿWzڢU`_~?Ʊ]ٿ>Aiآ?J,i3ݿ8s~.i8,Qm?tfZۿ%@s?H|xֿFk6 K2N?Wkտ xCB΁?g*,7ٿَNῼ4P?k׿F8=߿P'?@b" ܿu*߿C(Ib?Đ޿SjݿN?ջbؿ/޿/?0i;ڿ=A)!a?@xdJ텥ῳWqj?JQN4?;?PAo [;A?Smޗ9Kտs ?wLϿ4SY{I?+R~&N5ړh1?%o 3PS.-{& ?㵰;G?>%F2Ԝ83 ?~2ZQg?vRN?HIXr]?*?hs:?wU?WoجFq ?rfV>*K^?4unq?:L?Ju2?wпyOcO |?AAPӿ54#?³ |{1ѿ#䝈J^?gZпfr^j? %?ZtտT3Ic?kG׿{&q]]. ?*?;Tտuo '?4鉌տ~ctX @f)?mw~h'ԿoH. >st?qѿuV`}t?-`FQؿ2X*eP ?z@ֿWC_?tƐ?۝Q<޿#!vG?R>L? N?w?׶D^%S?l?b"^4w?KR?a/qܿݚ? E +?Kܿʮ?;?\Uec޿ ?YlQ?1."4a?2f?AUyO64? y?1P??^?)ۿOgV B?W-?} ܿ@󉀩?ZN/?yqRGu-Cm??-xMiuPT?zTVxB? e?T9ֱc̆f?vk9EQ`Ę?e=%n7հ?߯Q] pDZ?A'˳5%3Y?ĸ z'tDf3s?Z  ɀ_ܒ?]7]M#Yz?qEHS@[ٿzePCXTܿЭL WJxCջۿ}6޿3;vڿJav$P*5ڿjŽ<7Y}hEؿ *IRݿMluM#r߿(bÀwFπ޿#KAʗbW޿N9O`4俶PLݿ廏|)36=3忥DܿA~cnq 0^׿TrGڿ8h.\mӿα]ٿ mL_ҿ&g3ݿT3d$ԿhXYۿhmdZu쿼[<ӿrkֿ(qϿȟ0zտ?`TU2?Ͽ,,7ٿ|_$j4߉ѿ_׿~c~Q@Ϳ~ܖ ܿJ'#ԄdϿ ޿R쿧tzZɿyf*bؿX^S: z˿j;ڿ ptXdԿPJż9lѿקQN%Lοn^wO9xҿaWl/l\=j~pԿ)ហ .5Y%п?~q-|#W[%ҿ尿$ڒeVTR6U$ɿL)hpMthT)rȿN{`~z*ʃA○@3_˿)<#?Ty}]*O@Piu܆OFn It|ſ8),tg}ﺿQގɿ9@:v}Op+DRÿUҺmcIOhV¿eǠy#?n~ȿYbaA￁D;V ,˿[0ye"^A4 ǿ.ٲ^~rQyο>W}O滿XIsgο14ġ/;?"l"п ]HϿ ~KeR!O?yl G zIy ?\aݘ=U }$?C<<sӖ￐sT?!-".q\ gN?2 )T?r17 ǵ^wjWm&}?[EJXk{=VΕRS?3V~@YN|0P%#V?^/br=ՍtUUf?UPiӿWnTƳ>!?9ѿHLf?"]HпЩd1?c7տ&0vz|쿄!qH?ɮ׿N;Z$?uտJQ?9$/[տŦPn?NU1V5.Կ`f3Pd?ѿ+86G?m_ؿ^:ɏ]}`'?fJֿvxx010?!oݿh 翩 w?[ώ"y?10@p1>dk?߿D.X×濤ѧ`%?p6+ٴ?\&0? ؏G gfs'/?^YF**,Q?F?}6t(`J=G?;v~Q3b忒= ?F=&<r&P?ټe] wnQjms?}6#fFmX?b}!,x}v C?N35 翅Y??ϔ"T违9b]?mQdBd'.X?b( ֹFYfms?L`ind?hRLCygm ?,,x}3dӗVt?eG) !~?36M;K}?pM#ؤ꿲e^}?4HJN| jS?eļ6둮޿d=8?DXk=a3#|?ڣЎ/a47Y kkC?D7jay *B@xdR?iG MnW?nM@s!r%̩?v"u )#K 1?H].鿨tOm`?n:B@ HVֱ|3bi3?CY/迍rcn#>?bJ:GGڿ֬4?L?ؼS_]|$]ٿW|{?ۀ7݁쿹U]3ݿmj&!o?fӱX0Yۿxw6?@ <ֿvϳNPiu MlտPBbjpvJ,7ٿrG­ɖqTR׿$zr]ֲI@B3 ܿ-,;쿸+!޿lz&8۩qG@bؿiݱF0FA!k;ڿ*&;V?s:E̤iJM3)L 4QNBTf￙"J -K >!mw?0F0SCtBRG^+qjg=Jj5צmmuڒmІ41R_8JᅡgpdVݠ"}K￾\~,H4jᅥiu??aͿ p-yĉSп8rxpXt|ſ!ɿ8ɿT~gj˿m>Rÿӿ D2I^¿c(ԿCi~ȿ+zcnѿ ]60@3 ,˿szҿ=O7 ǿBܮͿ /(7ο1Qȿn*7tigο(0+*ӿB+rэ+l"пNѿc_ϿU28Q߿\뿔5G a)wYf @s꿉EnY1ނ1]HebC('뿦-"Oo~xeL* i\TAډlnAT7 G3dXk#S*7#8~LJ&:.|$bO .:ɺY0迹g嫴~:ϮM 44п~,a=TdoiPiӿ{ {߿~jZ(9ѿ]:5S9#HпĻwῈ?Fw=տ7WI9 2)׿-f߿1Aտa࿞5gC4vտ=TݿWR3L5.Կ+PݿSTgnd꿾Rѿݿ7AV8m_ؿݿj PJֿJ(i⿞(oݿ\俐YΎv[Sw4 )Q1Ղ|$Dp߿:lPRED࿿7p62K(b9zh࿝G6^F忽T3ϣ࿷DF*F4XF?#fur|U5⿼-;i~=b(n=,X߿/ %fj~Fd'ܿ8޼忸 }|;7!޿`^忇iJ_Gu޿M'Ǫ>?g'%eU}?{ԈSLK5?BѢO~S3 a?O mU?ޏz}VLVf?US7/ln`?j?O1,ɿpLRڿہ :? Hѿ!zٳ]ٿs-?bE5ѿo7ݿb3tC?2Ϳ ͼ`ۿVa?]{ѿԔֿ&D&?8!տ^jտhڪ?ňԿl(,7ٿv#?GL9ӿ9׿3? ەԿ<% ܿDcM?{`4ӿM@ծ޿v>I? ". ׿1bؿ?O0/V<ֿ9DŽj;ڿ $k?#yҿHsz[J^uxy?s8տ7QNBH?|׿Řs'?1&qKտbu lYy?yBniӿN\1[W?qW׿aIqJpf(?ˣ**dտТڒb Q'?>0Zڿg3?hp&_:?ڿw [~,2O?;yMٿt ?2? !yf>TIt?0.MPt|ſ2?|2߿5eɿVz9?xY .6Rÿ [?⿕5¿WÕ@?g:[[~ȿiom?n|{TƑg ,˿zAX`?w/ ǿaYc?HO`࿦Иο} ?޿4gοB ?Dv\6⿋*d0l"пXq?fu}NXTBϿ*Bs?],sn翱TF DU??P<<<鿟iZ2M?%iD,M? *]jӄ,"-T)?#bG7 2?ҊD'7 _Dc?"iΗ330JXk{ ?23&P꿘D~:ֽ?]N0HDb .l3?[g9X嫴Og)?z/۲Ǡ4пΤ ?\L@ISPiӿ0 U?J(NL9ѿr7D?X"违Hп]B?rCq.)տ8&?I|]Z{׿iۈ?i?c=fFտɃMr?L&ľtQտ꡽&?InLyW5.Կ5P$?&{ G濭Sѿm?#濍ɶm_ؿ=v)(?aCG7D6WJֿ&ES벟?Lڀoݿs?NAE鿻[?L@d迶s1alM?#A'r߿0q?w?wtn#p6ƉIon?6V连1GG?:WI`{TF*=n?( qsQ;!?|hąn~ J ?#r= ͌?\俋lw?QF| }նJ?7忥 S =?V=n0d 6?~!ɿ⿾0:t?(c ⿷B-7?~Z6㿉hr8 /+\?ݣhf*$fg{?wjj]dB?R]?T^?*l{'mH?l>m(}xec?\OoE?< ޿DS?kd?wx>5H?mq:Q?zx.vܿH??A?~s/?)޶NؿXR?pr7?9[ڿ/Dr9?? P,p?wV?uWgfE?OEPHc?VTdd?uYg?đsA?t @Q??T?ϣ{N?A!?3F%qt2}?GnB`?撿'i?8jߧ? lIdS6?XNwe?ALĂGGC?0 ?0ܑ?Fi{? $ ?=D.U?`?h|ſD!=?g ?r"ɿ\?Hf?ÿDs5?zסwݠ?s¿Pq?BmFG?#8ȿTJ$?p,?]+˿xa\)?P?]BgE" ǿ?\U)?f&Ky ?οH#?|%9?^weοb垭?%0?6*"п#i?jn ?eϿq4./?|Z&?+K oǨ?U?-8J?par*QRH;?%qT9?1K.X?l6?<pL9FPQ?A?g s?&9v? Hw?w?w= ?jv‘8?STt?qN s7Q? Z_??X@G?/BV?83O*t܁?(*I_"?ю2?逋+H ? ?!Z*̽r{J?veXQ?ڲHB?{?uEm`)?Lj?O*٣TCK?x" ?aݼ_ǿ`:?y'c?9̿yA,%?Uzj?H6$%ƿ9v]?<Օ?)5̿?:M+:8?j~G;)ǿڞD?+8?\ пQu|"0?Dv4\4?kf9пz//?Kb?1qѿAϗ?8?c uc?$0{+?N"6K? K?F d?P&?i[#?8?C!JM?3mr?fz?la%+?|7Qu?7FV? !?֠d?J ,?ђU? ^?&Y?eBRb?1d?hE(L?!?M)U*z?x4?l[CKFjv?KZ%?%:ٿԷ?kbl?j'%K<6(3?H?] C?}l1 ?4 [$?s~)J?ޙDA\#?g?vy"0B?R -?y1,^R0P9?cF0?(ΗP9YF?kJ?`t+8?}_Lْ?$d~a?M1X H?h|)0]u?VU_~Z?Fr Vo,C?%ek􋩿Q.-o?8urnF#wP8?,*LAEYJ?[R?R #M?-^ZI?Z]L5!?֮/?b}Q&X*+? aX?_bWk3? : u?I6'<[R??ʍ?2~hi"?B0?4IMŏ?tU3?|ٌ'nǂH\)?^ӡ?^ç?n–m?1rF?.*_?"V?2Q@G?9u?e ?Q'?JZج?3@?=E?-ʽ1S?LE?r d?ƈ9?+M:?Ԕ?ww? O5?ƨ ?k?O$?'Z!F?o?;ʣN???*@?Ɠ&Z&?&7H%?'?|4?_2?=α _?gh,?(ԣ[?mB?/o?@?v^?[0mi?V$2?:|k?Cz?9 2?fnf?"?)oU&?TXbG2@?(\'?eč?L:&?]~"^?JĮ9?B?W){?i?MH?h: ?^Jsu?q?R\US&??X?-4u? 3u?IJ??.f}?Gr S?ŝeu.?Ϡ8?4]<J快FE?v?0$3vT&|?` ?Qc}fC?1k4F?7kه7>?:E? 4 \0?Kz? 3m;v;T?H?dń快m ?z?n/v?N9?mo?6Smٿ7R1?Ba?{ܿJPt>?]Guw?d`c4ܿ)AC?0S5? ؿzхȻ?(? lؿ0,?ZѸH?7,ۿFD?:³?CpDݿ6O~9?t?\ؿ}C 8?fA?Ynڿ7F??ZoZ׿a+]?P߁?ƥvڿm嗃? z*?Ucו׿fs o?:(?ٿm ?0y*?-XտCh8W?Ra?s(տ,Tb7?p=?7Կܞ<1?~?1a ZD࿶!?&FMXPΉEX?&psr}QWb4u?3Gv࿼?rͿ⿫AbW࿃gx S?N@|W8?+^ܿe#$>v?aZٿl@c⿚ʧ ?LptsۿG!s%go'F?*{fܿqGV㿏@ E?h8ݿC/Vepz?n`o7ؿh*ӆ$vߨ? |lX9ؿA /fh?eivڿq俍rd?jԾPKJxBʿ X?`ΞI忲7%['пGgqw?CjМ>=nCп?85?3eSh1pƿ; ?_kӷ'Nfƿ[5H?EkK:3l&ʿݶ?ݔAK 4ϿEc?:'<롱ſ}?r_N޿U+zUѿ:?SDE$rw)s̿՗?0!rZ࿷1vп4XA?{ܿ8Gο 2?'ܿƘѿ݊Б*?ԡQZ޿_ȿwa?&fFT5ȿ$??}&giܿ,TEɿi? ~wd?0Q/+?Ѝ?MQ~$ad[?:{j4?:ʆ;,}:u? ?1*'? ?ko2濑  S?^Ί?ŰS&G¬v9?3 ?[, ow?N?!հW ?Y ?Y#BF?3Ò?qV!u_F?rv?3i!Uxȓ?"F?>x4YΊnT ?qZI?ahZ޿r%\?zD>?xQ?z*^?1f,s?f>?gr`? @I?'rc?ܹd~?l&"?F?I?Ot ?\?j&x?ݔasP?3 `?rZ?׃G;?6?7a7?e2Ἡ?? R?)2NA?$T ? >?$B?ͳ'?ɣ=j ?< p?(?m1?၉̿k%?m&?GU8۬ɿƝ?-}?{* ǿ =?> ,?Rѿa|JF?D?пȐm`?i"?ʊп%P?rKm;?DJr$̿ǰt?\?tӿev5G? O)ÿz?MHsŧulme<7K?`c"V#"G?Au͉ҳƿ^'?)0 .Uƿ+H?4S#8EÿTsb?8-9dwKچe?M.zvw]&x_?@4?~\  jy?tF?^#وP[?uȺeFxؘAԘ?]Γ H]v#?$;F ?jS?5J]?\p#Nۧ?I]A}/?H=ӊT~`ڿR +? :רDtٿ)QG8W?JL;{p׿$,?z۔!brT!eݿ ?I2#OE2ܿGFN?v]eppFݿq{ul?Z $!&;c%ۿ̴?oLK޿D)4_?Ut,CHzͿ?y)ڀ$ˢ;ҿG?zY!C] ѿ3?Sܡ0a2̿Y$bo\?`JLʿ8?vk*~ѿ]"?~z7ay \4ӿF[I?B:5οj?o׎@迤@?-Zz~ߞ"ܟՇ?qg/\MuK̽?-4gw<!K9۲? =v:rB_?elR7<_Ge*?Q2;L.V(a?EzCIM?~ `0S?9}Gp,?–*;.Q^俌#;?>[ o濪?WY6C P ̿3zfVW濳/ȿfHC&kjSſu[*!`JAA<п/#(*C3!п;%0l?XKJϿ9&Kh4:$˿l6M =>4ҿ12,Xvr~;~WVc5{$:M:濉vR$@&)wCviզhL濃c(!!K3l?%Db*6/#qy?FحJAl6B?G &R X;c {I Db?Sg翄ؓ:,hN߻ HUv]cE"r0{7\ῒy pYhjՀ~T~2ۙHWE;ǍP;71[v࿊w)T*Swsg^ !aaP:zXῺ37D]%n޿0 !1?!z]?%0RD]/FNy?CƸL/"gwT?nb࿣5^>t?˫{=oR?i?GMub2;^QȾ?CῠzWc?-aZ* ڟч?# |Gsfae? \)G8R-Upv?e)8y L#v;?Lyr;GÚ}_?PE8(ǿ9t# n?l>sƿ⳶++ ?'˿Q$O&ZYm?ʗ+п9l~U+|@.?H?t#J*ǿjk<,,2?/@1 VѿI[Dps?>k11w̿,6ix7?)пuޟ? RοcHx3?:&ѿ_'$?eNȿI.^<-8H?C `9ȿƛ t?/(&ӅɿiWD% r@?s ?1`L vgI?qB$D?[Ӣ=L2?7?y6Ri~7#? ?=}V?!R?;?uP8Py\?ﺅA;?8=CU;S'??DGP?^K?.P ? 1¿ԑV R?pZ?Ŀ 1?t&b?CW*?uF",?qɿZRL?ғ#/M?6&3¿q ??=]7[5oS?a?Gq*.P4h?%?Ej*o?7n B?t+¿[?E],?\ET9?K?ڿs6?k:?yֿņӅ?Y;? 8׿a?wp?3aڿO8ϝ1Cp ?-&rۿx`Ɓ&# ?-Se׿ 3bg?ȥտ~о隿P_4?.2*ٿӭ0:s2M?(۔UϿv0Mk걿[?QͿ^+f!?"[fcп) @z?^WɿXՀc )C?\bl˿{d Z?Aʿ̹LuW .L?¿ 5jؿ}|Vc;?U d&esտ ?ԧ6YĿhXտ9?ʶ}~ٿ 頴 ?aǿGCDڿƽT?kTůN׿wr +?X#տ (A?d祿Lהٿ "EM?O wY`JпP n?$ԵBʿx毀B?#O=? }Ϳ ?r 5.1&ʿOqK?"B\?ϱC'?f_%Q'ЎA?6k\m?hE36fKLJ乶?@݊:3ѾBNt?03 8@*O?B=͜eK pH?j(mؿMQ4:Pǒ?xZtտdqS;?<7 տ|h|@Ŷ?{:ٿV+q MĿ?'ךGڿq V' ï?gO׿V#X?6տ%$ܥ?r6ٿZMG@ջ?jrIпzdZq?u=ͿnT{?*r_zпpl/1?j-{Yʿ BѡLf۾7Ϳ,w/i?uk!ʿȰK8+WN&oԿy**пX:{Jìҿ}˿)'¹ѿG=QпկQoֿ%ʿ:0r .Qd ֿ2YϿv^XꑧԿG+|ſy>}Y fҿјƿns-*lrQz׿ܠſYZUMKXο-4AW?T퍴Aʿ F_-_Ϳ2>h_jiPɿzP5^Cv:̿>3ne:j["-bjǿ5޸}-Lt#տ?e)C: .RҿWL+?*Jտҟ ?rc"ӿ+4˚?C*p /qKտo.ӟ?}>$пѿl*?SMD$ܔĿ?mn]ƿQ&v?e}.f#ǿ{n?`>?v,j B?4BBڱ:: W?߂oIn׆ ÿ.]z?5KPU?4a/}/? Tc#Z?K$D?z`?K?.p?U?5>?>l.?'8(?oA?O?:R?gj?Ɲ?7&?`fN?ߵ5Ʀ?4ky;?WR? Gց:D? '?{4l?qGa ?2 ?{x ??ՍHl?('?ۣJ?2?"CK?ԒO?̓.'?C?Y?e[?ݫ[a ?pJ5?\?gf?܇? kL?[gV?0zW}? ?7$?# 8?$?o ?jm?RB S?tN5?%?( ?Yw?bp!F?*JT{?\=^F?Eqd?g:?+\?_BlY?1B;?H}?i% ?`W=?Dv#!?h?u"?|?vI?h?(m?ӶS?׵!D ?%bm?@trL?B(T?3;?z?e1:L?: ?M|? !l?a>?Z ?׾;?,\?Q?8 |?WR?x~g?pj+}M?P~?Ƶ?Dj?/#?}eH j?bu3p?WťL? 2?P8>?@8"?r]?+C?`??6X?*?"?_݅}K( #?{?q,?gD2`H? 'ݿwx?$N?dQ C࿕V{=j?~EKM?D&TA޿Ff|?#ݿ?%!Wn߿p%??}I.?%Rr& ݿ| 0!?s3?sVг?u0?A$A῱a5 ?u ?^?4oܰ?\l%~?Ƚ?y cz?)ʎ5?#doMބ:? ?dIE俬`?7A?f+CmJ"L?C>?Ϊ* |dr?F=?BVȃ8?b/?*YSSK@:Q?oM~?Pl# 6bm?nCO?M8^ t?wq?qԌ!?ɤŋ?'5꿥aJ?- @?jp _Q?,cY?""tc - ?9b]?ݤe[?@?[]ݲI)% l-?I1踿@' n/T?G?%ݬBw?.]?Vij5T?s1?yޏq<$? {L?dȆ?T\?whM鿟9k{?C9t3?&bOx?5oVFS?5RoB-K?3=?A%Y?WO? *?#T;?~;Ze(?oΧ?s34Q??;?$M+?s?pYb'r,?M?ni?V?e ?`uEᅵM( y?eAض?uoV?8⡺?*=W ￸?O,Ԏ?zu6]ø?0 ?ZYZQ!?{J?bRC[0?lXH?Dxb뿾֌r? 5d ?+ᓜެ^?Ϻ?gV?1v )@]?@Fn?Q ?Sn/i?nL;|6?k S6?I{q꿊N tE?oQw^@֨Bg?mS?迚`ڕ*?f!z`xp?X_?j(x`ϬB:몿0ګȷk?sPrRt˰ӿ73U?qx翭tտ+JV?6g1H"Sӿ8ٻ?9Z$8ֿ֞i?zֽ߲Կ5^'?[t ֿt A`H?Jx@ #ǿ_?@}2Jӫuοn+KM?[36۾쀩ɿݿ?d/3 Y˿JI.?]@n"f ǿ=s3?^пڲs0?/d&Wѿΰ ?Y#[OmϿH0ܰ?쿂v|׿Λ?!|s拓7׿"Վ5?0?F쿂 @hֿVVV?=;jJYQlٿ2A?1h҇Кٿ߿D!sg L?@޿ZI\a[^?n]"'߿IK뿍3vf{?1hʅ PVH?έ⿊ U7$d ?̿7;\+8gV?00 N忬pFn? .⿷!J濷hf/i?Q];!xbX?1bѿCU҂过_/?Ku@ѿ@o翄Q?fPӿby&mǙS6?)wiͿ)迿v^E?jBпr;$鿹RT?N+?1̿~De#?OӻοCj=_?p|GBȿdDu ok?Gu?rle+W?,.?{9NH?Jp0?Jసr꿞$Ii??Iu_#3W'??꿨`H?rMdaKsd`,e|?fzǂO:KM?L&fIH]먦ݿ?ϬrM`!DI.?'@7pgs3?JOZ!ִ50?9+3[5L9g/-?jhH'8ܰ?3KyŦ?S8?W?sIygڎ5?SK?p&"1B?68:B?2і;bA?|Ky?S=Z8?q3ʺ?PRnmF?Sc?+@otI /? SD?lM~?bV;R?iBID! O?Of?h".ӭq?pcF?R1es;ܲŋ?\?%I@?)N~?o'TH?c\?E$F!/E0]?y$~HG˱?3EJ4O?r[G;)%( 6Ӽ?D7&3$ ?>?oyLk_J?|l?zOW^??mΖf{?"D3U?+Y{lWH?>T!0˿T?>o*2?UNUt˿WR%5?W?&.HͿ{?b?$ɋƿ`tA?G6K?~X]ǿ?]@cZH?+ǿBY5k?C>?n=]9'[^?.V?7꾗Tc~?o?<?X?A˿ {𔲖#[?` ǿINݲVC3?8пU1踿N$+?֌U?X-G?-7&?Xə?4?ic`M?`=*l!?/?\?քT`?m+.M?pE?[Rʹ?'Q[?4? ?|33? 5?k,?%G?d-?P ?s6W?ӫ4?+T?R:;?F]Z?;џ?[Q?ZS?{ti?ӿ?`͓~;ֿ.TfuK?5Կpeݿ$#q?˔1FտLݿ|XA"?QF߱9ӿ]1_yݿn?:.ֿXqԿC.A;?g|hSԿiy,?%o'tݳֿ1q>s?feѣJѿ_x?5vNq[[=ӿ-u?IjWjпmV+?%t3Ћҿx?cJڄ5}^DͿĦ?jo*9rdcο1cT?ܐ}K˿<ѿͤ?iܖ̿Heп꽳4? }ɿ!`P)Ͽ{4[?:XZпII{ 2̿B:V/? 3?oظ;?rsz? S¨vE??w;Q?RU%ԜǏ>?yt?#Qyi8f@?ɿARRZ"ϐL/rI@Ŀ?=j鿞YI;ǿ5/Ÿ0R6`S?꿣?+ſ72+,&ynȿc߁QE)W¿_6{.N]exؗ뿢v8xٿYs ԿHĊ ٓ/)Cֿl#HTտNM}9sؿ]d׿!\3Rؿ8dǪпyVz 7ڿ,ѿWq#/eտbGrXѿC-!3N#UԿlgӿȽKm; ]rֿ7Ϳ~Ra(|a߿b`޿ N l攏Rv鰭ڿP^迅8޿w{lgܿu@Un2lF< f{2ݿ(>ld\s*\?IE߿fKO2ῲT-+ڿ1!vh!1V/Uٿt;U9ڐzTWB⿻X ܿE{4ZK݉p˿>k7ӿz1/pm˿=~;ֿ=AYq_ͿyԿ"q{ƿ,Fտr^螬S'(ǿ9ӿ>G@8͚ǿi/ֿHo:dF䠨f￱ _΅haox'.Lߗ֘"Ca0$l?cq=ǀm?,jp7￞,f? !=;=U│:th?hٞ6lKô04?:r$*rk+o?>LK˿G$%e?{̿(UXKqA?.хbɿPkkQc?Kx[п(F H?i uοֿsF ?R@пC+Ȕo?~yҿᖰvju??vӿt$o{?t!ѿ dzS1JN?e=MԿKwwI?DWҿ-sT=,|Q?NC ׿H~*!?cF^ֿ꿆?xe ׿ N뿙ۯJ?7Ns<%ۿ^5?t쿽q?nw_1ٿ0%&nX{? ٿmV#/?*%ۿ0뿒~;?]Xܿq>쿰U&?4ٿbQt` j!}uQQZTDiG^la0᰿ Bp݋0.|FnɅ+)B4PPzZs1N?搒^-@ ԿF5?j`*HTտַ?NA۞Ad׿r%?dt Ǫпtg|?/!80{rP,ѿ }ر?Q=rXѿkǹW?W\!)n,ӿk:?Nᅱݷ7ͿY e?s"4Of޿CX,?kpڿH"d]?ԅ4iulgܿ(Rs?ڵ4&2ݿ "!?dN ^E߿d`s0T?FeEtw+ڿ 6?b1ٿ\=r·96Dٿv63/޿ g%ۿի4߿3HXܿ/ ޿Ɩ|Rٿ8җgM?+]NӿeZmM" q?~տڝP`j7?12ӿ7Ȑ]j3?!ֿj,|o?@Կe*9?*Ƿֿ-$RN;,?z?$Fǿ Կf$?:?(J[ͿX^LTտ6?>!pWrȿedl׿C&?˿K/,ɪп6M=0?#dƿLy/ѿc"B?/Sп]hvXѿ-'1?(j^HѿeӿUp$x?&w|Ͽ1<Ϳ7;?rvvCx!޿9:w?s|D¶ڿUc?y]ɰײgܿd*G??=P?_v7jݿ՛g?~ر`|R6JE߿3.?UV ?<8tcSڿ(ic?41i~gFUٿA?~sV? ) ܿ{?~I׿2ӿfj ?<39׿~;ֿxvH?i(ֿlԿy F?;iٿD"5Fտ}?ٿ,oT9ӿ8)~"4?gFؿE/ֿ6|U5-?>XZ꠨ k?\pyRoǏ0/?nQ)?& +UFaq+LP?n]8qj2^?*X俣{jE4?#"McZG6R2?vApU r:za?<.!EK˿[Fdx?۵Om̿e~/Yy?83㿼g@ɿW?}[пqy?@>QHÉοܣJz? N;n@п7{7? ֝Wq1ҿ?F萎?XP,i %PAvӿÁ_w?]!oX!ѿ,W?f(ۉIRHMԿKl[VB? bp꿺Wҿ[t6?NYrP C ׿aZ?C^P+^ֿGT&\?Oԫ꿛cc ׿媏_?]9 ? H%ۿ>l9? BSX1ٿ?=n6w%?1@?` y ׿ 5MbU?(?7l^ֿ17?4;?'^׿;`D?L:|?$ʦ%ۿ[?Y9_?pG1ٿa\? ?)ٿfZx?E6k?;$&ۿU?c~y?=<ܿp?_?^oٿ|}{!~$'*   -  0 !"#$%& '!()*+3&,-(./0123 45607189:; 56<=8>?@ABCDEF@G%AHIJK8%FLMHNOPQRS-TUVPW5QXYZ[-;5V\]X^_`abc=def`gEahijk=>EflmhnopqrsMtuvpwWqxyz{MAWv|}x~  cnc#n    {    {C    DE&FGH!     !+    4  +)4   $"#     $?"     #"H     "?JH     '%& ! " # 'S%$ % & ' &%\! ( ) * + %SL\& , - ( . *()/ 0 1 2 3 *h(4 5 6 0 7 )(r1 8 9 : ; (hNr6 < = 8 > -+,? @ A B C -+D E F @ G ,+A H I J K +,F L M H N 0./O P Q R S 0.T U V P W /.Q X Y Z [ .PV \ ] X ^ 312_ ` a b c 31d e f ` g 21a h i j k 1Rf l m h n 645o p q r s 64t u v p w 54q x y z { 4Tv | } x ~ 978 97 87 7/ <:; <: ;: :V ?=> ?= >=  =X  B@A B@ A@" @Z" ECD E/C DC: C/2: HFG HGF GFP FG\P KIJ K[I JId I[^d NLM NpL MLz Lp`z QOP    QO    PO  O4   TRS     TR     SR     Rb     WUV ! " # WU$ % & ' VU! ( ) * + Ud& , - ( . ZXY/ 0 1 2 3 ZX4 5 6 0 7 YX1 8 9 : ; Xf6 < = 8 > ][\? @ A B C ][D E F @ G \[A H I J K [7F L M H N `^_O P Q R S `^T U V P W _^Q X Y Z [ ^hV \ ] X ^ cab_ ` a b c cad e f ` g baa h i j k aif l m h n fdeo p q r s f(dt u v p w ed2q x y z { d(j2v | } x ~ igh i?g hgH g?:H ljk lSj kj^ jSm^ omn okm nmv mknv rpq r p qp po ust u s ts  s= xvw xv wv vq {yz {y zy yr ~|} ~| }| |s           @                  u      ! " # +$ % & ' 6! ( ) * + +v6& , - ( . !/ 0 1 2 3 "D4 5 6 0 7 P 1 8 9 : ; DwP6 < = 8 > $? @ A B C %_D E F @ G j#A H I J K _BjF L M H N 'O P Q R S (wT U V P W &Q X Y Z [ wxV \ ] X ^ *_ ` a b c +d e f ` g )a h i j k yf l m h n -o p q r s .t u v p w ,q x y z { zv | } x ~ } 0` / ` { 2 1  | 4 h3 h  6  5   ~ 8  Y7  Y  :R 9 R   <( d; (d  >u q= uq     @i    0?  i0        B|     A     |      ! " # D$ % & ' C! ( ) * + & , - ( . / 0 1 2 3 F4 5 6 0 7 E1 8 9 : ; 6 < = 8 > ? @ A B C HD E F @ G GA H I J K F L M H N O P Q R S J%T U V P W IQ X Y Z [ %V \ ] X ^ _ ` a b c Ld e f ` g Ka h i j k f l m h n o p q r s N,t u v p w lMq x y z { ,lv | } x ~  P} O }  R 4Q 4  T S   U 4   1 V     X   $W $  Z5 Y 5  \ [   ^<    ]     <   $!"   $`!    "!_     !     )&'     )b& ! "  # '&Da $ % & ' &D" ( ) $ * /+,+ , - . / /d+0 1 2 , 3 ,+c- 4 5 6 7 +2 8 9 4 : 412; < = > ? 4f1@ A B < C 21e= D E F G 1B H I D J 967K L M N O 9h6P Q R L S 76gM T U V W 6 R X Y T Z ?;<[ \ ] ^ _ ?j;` a b \ c <;@i] d e f g ;@b h i d j DABk l m n o DlTAp q r l s BAkm t u v w AT r x y t z IFG{ | } ~  InF | GFm} F  OKL Op\K LKo K\  VQS VqQ SQR: Q R \XZ \7YX ZXdr XYd e_a esx_ a_`0 _x` mgj m3hg jgi@  ghi tpr t=qp rpt pq }wy }uw ywxs wx  t F 5  <  C ) v  -    w  u   vLe l  !"#$%I&Y '"(x#)*+,'] -)./0123/4 506w17 895 7:;<=>?x@*A<BR=C DEA- CFGHIJKOL MHN2IO PQM ORSTUVWyXYZT[6U\ ]^Z_ \`abcde9f gbhnci jk g ilmnopqkru sntzouvwx sy yuz{|}~{|y}Y_zvhQ  yX eE |I } { |b! ( _ ~  5     }    ~\  $!$Y ! 8   -')-<')'(< '<( 3/13?0/ 1//0  967   96 76D 6 DA;=AP; !"#=;<$%&;P<"'$(GCE)*+,-GDC./*0EC+1234CD /516MJK789:;M}J<=>8?KJX9@ABCJ} X>DE@FUOQGHIJKUeOLMNHOQOPIP!QROePNS'PT[WYUVWXY[XWZA[V\YWW]^_`WX [Ea]ba^_cdefga^hijdk_^nelmno^ njpqlrjcfstuvwj;dcx ytzfceu{M|}cdey S{~qmoqnmmommn qytvytvtu> tu {}{}{|B {| E9 =   yy     q  qA  !"#$%! #&'()*+,-(.)/012-3/456789:;<6=D7>% ?@<A, >BCDEFGHIJDKHELE MNJOL LPQRSTUKVi WRXSY;Z[Wm AY\]^_`ab0c^d_efghc3iejklmnopqrlsmtIuvrwOtxyz{|}~fza{aiYYqw    GI M !!==)$&)5$&$%JU $5%\ 1+-1D+-+,Nu +D,| 9369Q43 635345 @<> @=<   ><L <=L  ICEIXCECDCXD OKM!"#$%OLK&'"(MK#)*+,KL'-).URS/0123UR45607SR`189:;R`6<=8>]WY?@ABC]mWDEF@GYWXAHIJWmXFKHLc_aMNOPQc`_R9SNTa_9OUVWX_`9S=YUZifg[\]^_i1f`ab\cgfv]defgf1vbhidjrknklmnorMlkpy qlrnkmmsEtuklmq} Ksvyuwwxyz{yvu|e}x~wuyuv}i|~|~|}P |} T  V  !!        S   !"#$ % &!'() %'*+,-./01,2U-3 451  36789:;<=>8?X9@ AB>C @DEFGHI[J KFLGMNOPK QMRSTUVWXYZT[U\]^_Z`a\bcdefg hijdkel=mn joClpqrstuv]wrxsyz{way|}~~   %    i % oi p  ^. .a*#&*W$# &#%#$% 1-/1.-/-m-. m9469e4645Z 4e5 A;=AP;=;<^ ;P< GCEGaDC% ECCD) MJKMJKJXJXUOQ   UhO  QOP OhP]WZ]XWZWYWXY d`b!"#$%da`&'"(b`p#)*+,`ap'-).mgi/0123mg45607igh18 9:gh6;8<uor=>?@AupoB*C>Droq?EFGopqC-EH|xzIJKLM|yxNOJPzxKQRSTxyO UQV WXYZ[]\ ]X^Y_5`a] ;_bcdefghRidjekYlmiU`kn opqrstNupv`qw xyuQ wz {|}~|d}1 8  gU S SY  KK5<*-c5 9        fA H  !"#j$a %&"'h $()*+,-m. /*0+1234 / 516   789:;  <=>8?  9@ABC >DE@FGHIJK(LMNHOIP!QR(NS'PTUVWXYZA[V\W]^_[E]`$ "abcde$! fgbh" 0cijkl !0gmin-')opqrs-A'tuvpw)'(qxMyz'A(v{Sx|5/2}~50/j~2/1a/01mh<8:<98V:8J89JY"F?BFi@?e B?Au?@Ai { OILOJILIKIJK!XRUXSRURTlq RS Tx %a[]at[][\p [t \ #icfirdc fcecde $plnpmlnl|lm |(ysuysusts t&{~|{~{}={| }D'2 5  +      ) ! "#  !$*%&'()*+&,'-./0+1-2.34567o8 94:5;<= 9 ;>,?@ABCD.E@FAG=HIE1DGJ-KLMNOP2QLRqMS TU Q5 SV|WXYZ{ [W\ "X]^_`1 [ a]b|cdef#bghidj}ek lb0im knopqr~ sot^%puvwx7^s yuz{|}~&|} 6  v(=v )* *< " +C* ,~ ~B  R .IZ /? HD  1O 2.o .Nt  *"  ^  "  1a 4 $T 2: &6Y&    / 7    4X #*B"#J *# 9#"_   ( !"#?$(:> %&'"( #) D* >^'+ ),3:R-./023Z> 1-2:3<.345632e1F 738809:;O<8=0=>?:@0/;A+ TB0d/?C0 ADCJbEFGHBCjn IEJJC?FKLMNCBkIv OKPH@QRS_TH@@UVWRX@?SY[ dZ@j?W[` Y\U]]^_z`U%^]avb^c]\_d re]^7\by df[Pghioj[B^PklmhnPOio tpP^pOmq orlustuvl(vuwxtyutuz {uv=tx z|sf }~sCzf~ fe fzse  +  C ~ D~ ~} ~u} .!I&Ew 1GOL!//4?LmkOrFSyX<4e7G{{ 9     _H  }   % 6&%%$%&Y$##$ 5!" 2: #$%& 12 '#(:2I$)*+,21'-).8.!/0128J>.34506!.-17 8.>-597:#FN ;<=>#EF ,?;@NFK<ABCDFE?3EAFLB$GHI JLLRBKLMHN$BAIO PBRAMQ OR&Zb" STUV&YZ* XWSXbZ"MTYZ[\ZY"W_]Y^`V'_`a b`NgVcde`f'VUagG$ hVgUeiLgj)pz2 klmn)op: okpzpOlqrstpoouqvxk*wxy/ zx'lk{|}x~*kjys4 kl;j}x,J Or,B u-? P-D /R /Z  Q 0O R0T 2b 2j ~S~3_ T3d 5r 5z *U16o *6t A 8 U8] b9 V9C H; ; |fWf< X  < k   p >  >    Y  ? Z !"?# $!%#&A * '()*A  +',* B[(-./0 B+1-2(B345 6(-7894:B5; <G9=;>8AD?@A B8[BAC.D@EDA@AF GAB@D1 FH?2EIJK L?\F2MNOJPE21KQ R2F1OSQTGNV UVWXGMN $YUZVN]V[\]^NMY+_[`TJHabc dT^ZJefgbhHJIci jJZIgkilJbj mnopJab Pqmrjb>_nstuvba>qWwsxh^Kyz{ |h`o^}~zK^]{? ^o]DMx Mwx zxaxwsN 0tsNsrk stMrpP aP Q bQ S S &c&T dT V" V* eW fW$ Y: I*Y+2 -0Z/ 3Z4 S\B \J HgO]? h    ] 7D  <  _Z Q  _ }R   `O i !"`#cT $!%h#&!b'()j *M"!+Z,(-b! ).b /!" ,].0c123_ 4j'56728c39d :'7;9<e0:r =>?@e/0z A=B:0rk>CDEF0/rAGCH8+fIJKo L85,+MNOJPf+*KQt R+,W*OSQThFN UVWXhEF YUZNFlV[\]^FEY_[`LBiabc dLmRBefgbhiBAci jBRAgkil\ekmno p\Wfeqrnskedot! uefdr&tvcVlwxy zcnjV{|}x~lVUy VjU} t}n tS~}n}|I }~|N{no {ononm/ nm4q gq o t r 8r W ]\ t t  ZpZ u qu { w ]\w _x rx z Yz { s{ } l\} _~ ;~ c     ,  t  3   u   %!"# $c&%%&"'%$#(a )%&$&f(*#+,- .#v*/01,2-3G 4*15L364=789* :4_>=;t<8==<9>" ?=><<w>@;.ABC D;wC.EFGBH.-CIo$ J.C-GKtIL NYMNO: PNpZYQRNSYX!OT2 UYZXRTV!WGWXY/ ZW>HG[\]X^GF"Y_4 `GHiF]a_b#hqcdeJ fhkrqgDhdiqp$ejB kqrphGjl$obmno? poxvbqrsntba%ouD vbvaswux&yz{Z |K}B~z'{R ~E'zO yzzy(T zy)j e*%b **_ z+ d ,z t-Kr P-o A.3t o8!} / { !2P J|o c3mo on#gomn |Y "_4  $ 5 !~" $#""!8 "#! {9 f&aTq %UTwaTS: TUS] 'l| l; w 'xw{wv> wxvw5 ?35  54)   534  k  (lkw kj@  kljs * A  *D ?$ !8 "2 #$%E: &#',$(M )&I (*+,/ -+.+/F,0 4 1. 02- 3485B 637G46J =8' 9:O ;-(' 7<9='&J:>T ?'(&<3>@b ABCKj VDAE/BF GDQ FHIJ_ K.LIMLJNd OLNP0tQRSr TQUtMRTz VWX Y0ZW[~PX\ ]~Z\^; _`aQ9; b_c;:2`d e;9:b dfgh i1jgkRhlD mj>ln3,opq% rosSpr t)uv w3-xuyUvz4 {x.z| }~V }4~  5 ,<N  5 , W S79 587=M76Z 786I  [ J7M EI  6\  8LE ] %$I %8M$`x  r'I( !'aGI& (IH: %IGH *) *9)b ;-.\-,.U. .,c6 54Y; 5;]4f@ 78N 97gV 8= =  :9/K :<59hP >=>Hl\=<>e^ H><if aEVDik E>WVm[DVUlp VW!UWG H~ QGm  .H @ U ) JIG{ J?MInj dAMN|MLNu NLo WVy WA}VqT -N Zk[  g Zrik  [kjB M kki#jI #cdbhcad bda0 mrs }rt sC  C{|z!"#{y| $!%z|ys"$ & '()v*'+D(,-*,.D/01 2/3u024$567x+@859E6:;8;:<E=>?2@=Aw>@8B&CDEVFCG6DF]HpIJKzwLIMFJNOLNPFQRS~TQUyRTVWXY|ZW[GX\]Z\^G_`ab_c{`bdefg~heiHfjkhjlHmnopmq}np r)+,* stu+), vsw*,)<tvx7I8yz/{7GI.|y}8IHJz~ 3IGH|) ~:9% :I+9("J?@> 4?=@ >@=%9K]L:GK[]BZL]\L- K][\U) NM=7NKC}M~<&~yLSTR, LSQT% JRTQQQ_s`f__qsn`srN= csqr9 baUcbM[+ah'Nhig< dhfi5 vgif|izymzOsy,~L }E ~}BP] Y P\ U Rm i QztRl e ,T} 'y s StssrFstr@T| u $5UZ: T /    F H M`g~V y V  nu  !  "#  X $ %   " $&['()W\[q*'+[Z(,-[\Z*m,.X /01 2/302 4#567!#859#"Z6: ;#!"8 :<=>?Y@=A>BC@BDZ EF G HEIFH%J*7))KLM*[87/CNKO)76LPQ786N?PR2/0. STU/-0 VSW.0-NTVX>Q?YZI[>OQ&\Y]?QP\Z^ M_QOP\! ^`\GHF abNcGEH daeFHEbdSfSeT2ghaiSce:RjgkTed^hl emecdjM lnVUWop/qV]]rosUpt4urtv^[\Z wxfy[Y\ Bzw{Z\YxzIk|g{h^}~ygy{f|}h{z`~ }{yzw j3io[j_43u;i32`3427`pqo ~pnq noqnta4  Tb  b  d- ) c%^!Xd, % $f= 9 e")f< 5 7L E :XAV^vh] qY SglXfh\  U fmim i il   e  %3113 32j } 5 312y  j()'| 6(&)u  ')&;:g9?:khgEg9gfgh#fc:?@> &?=@ >@=^+ K_L!"a#K]_$!%L_^m"& e'_]^$ &(NMW)*+Nl],)-M*. /,.0mSTR 12f3SQT 415RTQ24k6bwc$78w9buw+B:7;cwvn8< {=wuv:= <>nklj ?@|Akil 2B?Cjli@B9Dz{LEFGzShHEI{oFJ KHc JLo MNO  ZPMQNP`R= ST>U  ~VSWdTVCX YZ[\Y]qZ^ _\ ^` MabcpNMQdaeMLbfgMN LdMfhq ijk limjlnopqrosrpt ur tvr wxy zw{xz|}~}s~  s  @ V j%[  : BZ u U   7t H<,Bu  JQ"7#d+"57k#76v- /756}) v+,*, 0+),% r*,)y5:Q;A:OQ;QPw= EQO P9 wDEC< FD"BE5 CEBKB_`^L l_%]`E ^`]pq$nomnox] q&Y xwxv\ rw(uxU vxuw'ym )i yl +e *(/Dz} ,?y z| .u 6<X 6libMeshb-7.80/sources/000077500000000000000000000000001456732543400146755ustar00rootroot00000000000000libMeshb-7.80/sources/CMakeLists.txt000066400000000000000000000017271456732543400174440ustar00rootroot00000000000000 ########################## # BUILD THE STATIC LIBRARY ########################## if(CMAKE_Fortran_COMPILER) add_library(Meshb.7 libmeshb7.c ../utilities/libmeshb7_helpers.c libmeshb7_mod.f90) else() add_library(Meshb.7 libmeshb7.c ../utilities/libmeshb7_helpers.c) endif() install (FILES libmeshb7.h libmeshb7.ins ../utilities/libmeshb7_helpers.h DESTINATION include COMPONENT headers) target_include_directories( Meshb.7 PUBLIC $ $) install (TARGETS Meshb.7 EXPORT meshb-target DESTINATION lib COMPONENT libraries) install (EXPORT meshb-target NAMESPACE ${PROJECT_NAME}:: DESTINATION lib/cmake/${PROJECT_NAME}) install (TARGETS Meshb.7 EXPORT libMeshb-target DESTINATION lib COMPONENT libraries) install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/ DESTINATION include) install (EXPORT libMeshb-target DESTINATION lib/cmake/${PROJECT_NAME}) export (PACKAGE libMeshb) libMeshb-7.80/sources/libmeshb7.c000066400000000000000000003170131456732543400167220ustar00rootroot00000000000000 /*----------------------------------------------------------------------------*/ /* */ /* LIBMESHB V7.80 */ /* */ /*----------------------------------------------------------------------------*/ /* */ /* Description: handles .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: dec 09 1999 */ /* Last modification: feb 27 2024 */ /* */ /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ /* Headers' macros */ /*----------------------------------------------------------------------------*/ // Silent Visual Studio warnings on string functions #define _CRT_SECURE_NO_WARNINGS // Add a final underscore to Fortran procedure names #ifdef F77_NO_UNDER_SCORE #define APIF77(x) x #else #define APIF77(x) x ## _ #endif /*----------------------------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------------------------*/ #define _XOPEN_SOURCE 500 #include #include #include #include #include #include #include #include #include /* * [Bruno] include the headers with the prototypes for * open()/close()/write()/lseek() * and define the constants to be used to open() a file. * Under Windows, * 1) _O_BINARY should be set in the flags. * 2) 'mode' has a completely different meaning */ #if defined(__unix__) || defined(__linux__) || defined(__APPLE__) || defined(__EMSCRIPTEN__) #include #define OPEN_READ_FLAGS O_RDONLY #define OPEN_WRITE_FLAGS O_CREAT | O_WRONLY | O_TRUNC #define OPEN_READ_MODE 0666 #define OPEN_WRITE_MODE 0666 #elif defined(_WIN32) || defined(_WIN64) #define GMF_WINDOWS #include #include #include #include #include #define OPEN_READ_FLAGS O_RDONLY | _O_BINARY #define OPEN_WRITE_FLAGS O_CREAT | O_WRONLY | O_TRUNC | _O_BINARY #define OPEN_READ_MODE _S_IREAD #define OPEN_WRITE_MODE _S_IREAD | S_IWRITE #endif #if defined(_WIN64) #define MYFTELL(s) (int64_t)_ftelli64(s) #define MYFSEEK(s,o,w) _fseeki64(s,(__int64)o,w) #else #define MYFTELL(s) ftell(s) #define MYFSEEK(s,o,w) fseek(s,o,w) #endif #include #include // [Bruno] Using portable printf modifier from pstdint.h // (alternative: use "%zd" under Linux and "%Id" under Windows) #ifdef PRINTF_INT64_MODIFIER #define INT64_T_FMT "%" PRINTF_INT64_MODIFIER "d" #else # ifdef GMF_WINDOWS # define INT64_T_FMT "%Id" # else # include # define INT64_T_FMT "%" PRId64 # endif #endif // AIO: hardware or software mockup are both encapsulated into my_aio functions #ifdef WITH_GMF_AIO #include int my_aio_error (const struct aiocb *aiocbp){return(aio_error (aiocbp));} int my_aio_read ( struct aiocb *aiocbp){return(aio_read (aiocbp));} size_t my_aio_return( struct aiocb *aiocbp){return(aio_return(aiocbp));} int my_aio_write ( struct aiocb *aiocbp){return(aio_write (aiocbp));} #else // Mockup aio library struct aiocb { FILE *aio_fildes; // File descriptor size_t aio_offset; // File offset void *aio_buf; // Location of buffer size_t aio_nbytes; // Length of transfer int aio_lio_opcode; // Operation to be performed }; int my_aio_error(const struct aiocb *aiocbp) { return(aiocbp->aio_lio_opcode); } // Set the file position and read a block of data int my_aio_read(struct aiocb *aiocbp) { if( (MYFSEEK(aiocbp->aio_fildes, (size_t)aiocbp->aio_offset, SEEK_SET) == 0) && (fread(aiocbp->aio_buf, 1, aiocbp->aio_nbytes, aiocbp->aio_fildes) == aiocbp->aio_nbytes) ) { aiocbp->aio_lio_opcode = 0; } else { aiocbp->aio_lio_opcode = -1; } return(aiocbp->aio_lio_opcode); } size_t my_aio_return(struct aiocb *aiocbp) { return(aiocbp->aio_nbytes); } // Set the file position and write a block of data int my_aio_write(struct aiocb *aiocbp) { if( (MYFSEEK(aiocbp->aio_fildes, (size_t)aiocbp->aio_offset, SEEK_SET) == 0) && (fwrite(aiocbp->aio_buf, 1, aiocbp->aio_nbytes, aiocbp->aio_fildes) == aiocbp->aio_nbytes) ) { aiocbp->aio_lio_opcode = 0; } else { aiocbp->aio_lio_opcode = -1; } return(aiocbp->aio_lio_opcode); } #endif /*----------------------------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------------------------*/ #define Asc 1 #define Bin 2 #define MshFil 4 #define SolFil 8 #define InfKwd 1 #define RegKwd 2 #define SolKwd 3 #define CmtKwd 4 #define F77Kwd 5 #define WrdSiz 4 #define FilStrSiz 64 #define BufSiz 10000L #define MaxArg 20 /*----------------------------------------------------------------------------*/ /* Structures */ /*----------------------------------------------------------------------------*/ typedef struct { int typ, deg, NmbNod, SolSiz, NmbWrd, NmbTyp, TypTab[ GmfMaxTyp ]; int *OrdTab, NmbInt, NmbDbl; int64_t NmbLin; size_t pos; char fmt[ GmfMaxTyp*9 ]; }KwdSct; typedef struct { int dim, ver, mod, typ, cod, FilDes, FltSiz, SolTypSiz[5]; int64_t NexKwdPos, siz; size_t pos; jmp_buf err; KwdSct KwdTab[ GmfMaxKwd + 1 ]; FILE *hdl; int *IntBuf; float *FltBuf; char *buf; char FilNam[ GmfStrSiz ]; double DblBuf[1000/8]; unsigned char blk[ BufSiz + 1000L ]; }GmfMshSct; /*----------------------------------------------------------------------------*/ /* Global variables */ /*----------------------------------------------------------------------------*/ const char *GmfKwdFmt[ GmfMaxKwd + 1 ][3] = { {"Reserved", "", ""}, {"MeshVersionFormatted", "", "i"}, {"Reserved", "", ""}, {"Dimension", "", "i"}, {"Vertices", "i", "dri"}, {"Edges", "i", "iii"}, {"Triangles", "i", "iiii"}, {"Quadrilaterals", "i", "iiiii"}, {"Tetrahedra", "i", "iiiii"}, {"Prisms", "i", "iiiiiii"}, {"Hexahedra", "i", "iiiiiiiii"}, {"Reserved", "", ""}, {"Reserved", "", ""}, {"Corners", "i", "i"}, {"Ridges", "i", "i"}, {"RequiredVertices", "i", "i"}, {"RequiredEdges", "i", "i"}, {"RequiredTriangles", "i", "i"}, {"RequiredQuadrilaterals", "i", "i"}, {"TangentAtEdgeVertices", "i", "iii"}, {"NormalAtVertices", "i", "ii"}, {"NormalAtTriangleVertices", "i", "iii"}, {"NormalAtQuadrilateralVertices", "i", "iiii"}, {"AngleOfCornerBound", "", "r"}, {"TrianglesP2", "i", "iiiiiii"}, {"EdgesP2", "i", "iiii"}, {"SolAtPyramids", "i", "sr"}, {"QuadrilateralsQ2", "i", "iiiiiiiiii"}, {"ISolAtPyramids", "i", "iiiii"}, {"SubDomainFromGeom", "i", "iii"}, {"TetrahedraP2", "i", "iiiiiiiiiii"}, {"Fault_NearTri", "i", "i"}, {"Fault_Inter", "i", "i"}, {"HexahedraQ2", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"ExtraVerticesAtEdges", "i", "in"}, {"ExtraVerticesAtTriangles", "i", "in"}, {"ExtraVerticesAtQuadrilaterals", "i", "in"}, {"ExtraVerticesAtTetrahedra", "i", "in"}, {"ExtraVerticesAtPrisms", "i", "in"}, {"ExtraVerticesAtHexahedra", "i", "in"}, {"VerticesOnGeometricVertices", "i", "ii"}, {"VerticesOnGeometricEdges", "i", "iirr"}, {"VerticesOnGeometricTriangles", "i", "iirrr"}, {"VerticesOnGeometricQuadrilaterals", "i", "iirrr"}, {"EdgesOnGeometricEdges", "i", "ii"}, {"Fault_FreeEdge", "i", "i"}, {"Polyhedra", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"Polygons", "", "iiiiiiiii"}, {"Fault_Overlap", "i", "i"}, {"Pyramids", "i", "iiiiii"}, {"BoundingBox", "", "drdr"}, {"Reserved", "", ""}, {"PrivateTable", "i", "i"}, {"Fault_BadShape", "i", "i"}, {"End", "", ""}, {"TrianglesOnGeometricTriangles", "i", "ii"}, {"TrianglesOnGeometricQuadrilaterals", "i", "ii"}, {"QuadrilateralsOnGeometricTriangles", "i", "ii"}, {"QuadrilateralsOnGeometricQuadrilaterals", "i", "ii"}, {"Tangents", "i", "dr"}, {"Normals", "i", "dr"}, {"TangentAtVertices", "i", "ii"}, {"SolAtVertices", "i", "sr"}, {"SolAtEdges", "i", "sr"}, {"SolAtTriangles", "i", "sr"}, {"SolAtQuadrilaterals", "i", "sr"}, {"SolAtTetrahedra", "i", "sr"}, {"SolAtPrisms", "i", "sr"}, {"SolAtHexahedra", "i", "sr"}, {"DSolAtVertices", "i", "sr"}, {"ISolAtVertices", "i", "i"}, {"ISolAtEdges", "i", "ii"}, {"ISolAtTriangles", "i", "iii"}, {"ISolAtQuadrilaterals", "i", "iiii"}, {"ISolAtTetrahedra", "i", "iiii"}, {"ISolAtPrisms", "i", "iiiiii"}, {"ISolAtHexahedra", "i", "iiiiiiii"}, {"Iterations", "", "i"}, {"Time", "", "r"}, {"Fault_SmallTri", "i", "i"}, {"CoarseHexahedra", "i", "i"}, {"Comments", "i", "c"}, {"PeriodicVertices", "i", "ii"}, {"PeriodicEdges", "i", "ii"}, {"PeriodicTriangles", "i", "ii"}, {"PeriodicQuadrilaterals", "i", "ii"}, {"PrismsP2", "i", "iiiiiiiiiiiiiiiiiii"}, {"PyramidsP2", "i", "iiiiiiiiiiiiiii"}, {"QuadrilateralsQ3", "i", "iiiiiiiiiiiiiiiii"}, {"QuadrilateralsQ4", "i", "iiiiiiiiiiiiiiiiiiiiiiiiii"}, {"TrianglesP3", "i", "iiiiiiiiiii"}, {"TrianglesP4", "i", "iiiiiiiiiiiiiiii"}, {"EdgesP3", "i", "iiiii"}, {"EdgesP4", "i", "iiiiii"}, {"IRefGroups", "i", "ciii"}, {"DRefGroups", "i", "iii"}, {"TetrahedraP3", "i", "iiiiiiiiiiiiiiiiiiiii"}, {"TetrahedraP4", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"HexahedraQ3", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"HexahedraQ4", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"PyramidsP3", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"PyramidsP4", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"PrismsP3", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"PrismsP4", "i", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"}, {"HOSolAtEdgesP1", "i", "hr"}, {"HOSolAtEdgesP2", "i", "hr"}, {"HOSolAtEdgesP3", "i", "hr"}, {"HOSolAtTrianglesP1", "i", "hr"}, {"HOSolAtTrianglesP2", "i", "hr"}, {"HOSolAtTrianglesP3", "i", "hr"}, {"HOSolAtQuadrilateralsQ1", "i", "hr"}, {"HOSolAtQuadrilateralsQ2", "i", "hr"}, {"HOSolAtQuadrilateralsQ3", "i", "hr"}, {"HOSolAtTetrahedraP1", "i", "hr"}, {"HOSolAtTetrahedraP2", "i", "hr"}, {"HOSolAtTetrahedraP3", "i", "hr"}, {"HOSolAtPyramidsP1", "i", "hr"}, {"HOSolAtPyramidsP2", "i", "hr"}, {"HOSolAtPyramidsP3", "i", "hr"}, {"HOSolAtPrismsP1", "i", "hr"}, {"HOSolAtPrismsP2", "i", "hr"}, {"HOSolAtPrismsP3", "i", "hr"}, {"HOSolAtHexahedraQ1", "i", "hr"}, {"HOSolAtHexahedraQ2", "i", "hr"}, {"HOSolAtHexahedraQ3", "i", "hr"}, {"BezierBasis", "", "i"}, {"ByteFlow", "i", "i"}, {"EdgesP2Ordering", "i", "i"}, {"EdgesP3Ordering", "i", "i"}, {"TrianglesP2Ordering", "i", "iii"}, {"TrianglesP3Ordering", "i", "iii"}, {"QuadrilateralsQ2Ordering", "i", "ii"}, {"QuadrilateralsQ3Ordering", "i", "ii"}, {"TetrahedraP2Ordering", "i", "iiii"}, {"TetrahedraP3Ordering", "i", "iiii"}, {"PyramidsP2Ordering", "i", "iii"}, {"PyramidsP3Ordering", "i", "iii"}, {"PrismsP2Ordering", "i", "iiii"}, {"PrismsP3Ordering", "i", "iiii"}, {"HexahedraQ2Ordering", "i", "iii"}, {"HexahedraQ3Ordering", "i", "iii"}, {"EdgesP1Ordering", "i", "i"}, {"EdgesP4Ordering", "i", "i"}, {"TrianglesP1Ordering", "i", "iii"}, {"TrianglesP4Ordering", "i", "iii"}, {"QuadrilateralsQ1Ordering", "i", "ii"}, {"QuadrilateralsQ4Ordering", "i", "ii"}, {"TetrahedraP1Ordering", "i", "iiii"}, {"TetrahedraP4Ordering", "i", "iiii"}, {"PyramidsP1Ordering", "i", "iii"}, {"PyramidsP4Ordering", "i", "iii"}, {"PrismsP1Ordering", "i", "iiii"}, {"PrismsP4Ordering", "i", "iiii"}, {"HexahedraQ1Ordering", "i", "iii"}, {"HexahedraQ4Ordering", "i", "iii"}, {"FloatingPointPrecision", "", "i"}, {"HOSolAtEdgesP4", "i", "hr"}, {"HOSolAtTrianglesP4", "i", "hr"}, {"HOSolAtQuadrilateralsQ4", "i", "hr"}, {"HOSolAtTetrahedraP4", "i", "hr"}, {"HOSolAtPyramidsP4", "i", "hr"}, {"HOSolAtPrismsP4", "i", "hr"}, {"HOSolAtHexahedraQ4", "i", "hr"}, {"HOSolAtEdgesP1NodesPositions", "i", "rr"}, {"HOSolAtEdgesP2NodesPositions", "i", "rr"}, {"HOSolAtEdgesP3NodesPositions", "i", "rr"}, {"HOSolAtEdgesP4NodesPositions", "i", "rr"}, {"HOSolAtTrianglesP1NodesPositions", "i", "rrr"}, {"HOSolAtTrianglesP2NodesPositions", "i", "rrr"}, {"HOSolAtTrianglesP3NodesPositions", "i", "rrr"}, {"HOSolAtTrianglesP4NodesPositions", "i", "rrr"}, {"HOSolAtQuadrilateralsQ1NodesPositions", "i", "rr"}, {"HOSolAtQuadrilateralsQ2NodesPositions", "i", "rr"}, {"HOSolAtQuadrilateralsQ3NodesPositions", "i", "rr"}, {"HOSolAtQuadrilateralsQ4NodesPositions", "i", "rr"}, {"HOSolAtTetrahedraP1NodesPositions", "i", "rrrr"}, {"HOSolAtTetrahedraP2NodesPositions", "i", "rrrr"}, {"HOSolAtTetrahedraP3NodesPositions", "i", "rrrr"}, {"HOSolAtTetrahedraP4NodesPositions", "i", "rrrr"}, {"HOSolAtPyramidsP1NodesPositions", "i", "rrr"}, {"HOSolAtPyramidsP2NodesPositions", "i", "rrr"}, {"HOSolAtPyramidsP3NodesPositions", "i", "rrr"}, {"HOSolAtPyramidsP4NodesPositions", "i", "rrr"}, {"HOSolAtPrismsP1NodesPositions", "i", "rrrr"}, {"HOSolAtPrismsP2NodesPositions", "i", "rrrr"}, {"HOSolAtPrismsP3NodesPositions", "i", "rrrr"}, {"HOSolAtPrismsP4NodesPositions", "i", "rrrr"}, {"HOSolAtHexahedraQ1NodesPositions", "i", "rrr"}, {"HOSolAtHexahedraQ2NodesPositions", "i", "rrr"}, {"HOSolAtHexahedraQ3NodesPositions", "i", "rrr"}, {"HOSolAtHexahedraQ4NodesPositions", "i", "rrr"}, {"EdgesReferenceElement", "", "rr"}, {"TriangleReferenceElement", "", "rrrrrr"}, {"QuadrilateralReferenceElement", "", "rrrrrrrr"}, {"TetrahedronReferenceElement", "", "rrrrrrrrrrrr"}, {"PyramidReferenceElement", "", "rrrrrrrrrrrrrrr"}, {"PrismReferenceElement", "", "rrrrrrrrrrrrrrrrrr"}, {"HexahedronReferenceElement", "", "rrrrrrrrrrrrrrrrrrrrrrrr"}, {"BoundaryLayers", "i", "iii"}, {"ReferenceStrings", "i", "iic"}, {"Prisms9", "i", "iiiiiiiiii"}, {"Hexahedra12", "i", "iiiiiiiiiiiii"}, {"Quadrilaterals6", "i", "iiiiiii"}, {"BoundaryPolygonHeaders", "i", "ii"}, {"BoundaryPolygonVertices", "i", "i"}, {"InnerPolygonHeaders", "i", "ii"}, {"InnerPolygonVertices", "i", "i"}, {"PolyhedraHeaders", "i", "ii"}, {"PolyhedraFaces", "i", "i"}, {"Domains", "", "ii"}, {"VerticesGID", "i", "iii"}, {"EdgesGID", "i", "iii"}, {"TrianglesGID", "i", "iii"}, {"QuadrilateralsGID", "i", "iii"}, {"TetrahedraGID", "i", "iii"}, {"PyramidsGID", "i", "iii"}, {"PrismsGID", "i", "iii"}, {"HexahedraGID", "i", "iii"}, {"SolAtBoundaryPolygons", "i", "sr"}, {"SolAtPolyhedra", "i", "sr"}, {"VertexOnGeometryNode", "i", "iiiiii"}, {"VertexOnGeometryEdge", "i", "iiiiirdrii"}, {"EdgeOnGeometryEdge", "i", "iiiiiii"}, {"VertexOnGeometryFace", "i", "iiiiirrdrii"}, {"EdgeOnGeometryFace", "i", "iiiiiii"}, {"TriangleOnGeometryFace", "i", "iiiiiii"}, {"QuadrialteralOnGeometryFace", "i", "iiiiiii"}, {"MeshOnGeometry", "i", "iiiiiidrdrii"} }; #ifdef TRANSMESH int GmfMaxRefTab[ GmfMaxKwd + 1 ]; #endif static char F77RefFlg[ GmfMaxKwd + 1 ] = { 0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,1,0,0,0, 0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0 }; /*----------------------------------------------------------------------------*/ /* Prototypes of local procedures */ /*----------------------------------------------------------------------------*/ static void ScaWrd (GmfMshSct *, void *); static void ScaDblWrd(GmfMshSct *, void *); static int64_t GetPos (GmfMshSct *); static void RecWrd (GmfMshSct *, const void *); static void RecDblWrd(GmfMshSct *, const void *); static void RecBlk (GmfMshSct *, const void *, int); static void SetPos (GmfMshSct *, int64_t); static int ScaKwdTab(GmfMshSct *); static void ExpFmt (GmfMshSct *, int); static void ScaKwdHdr(GmfMshSct *, int); static void SwpWrd (char *, int); static int SetFilPos(GmfMshSct *, int64_t); static int64_t GetFilPos(GmfMshSct *msh); static int64_t GetFilSiz(GmfMshSct *); /*----------------------------------------------------------------------------*/ /* Fscanf and fgets checking for errors */ /*----------------------------------------------------------------------------*/ #define safe_fscanf(hdl, format, ptr, JmpErr) \ do { \ if( fscanf(hdl, format, ptr) != 1 ) \ longjmp( JmpErr, -1); \ } while(0) #define safe_fgets(ptr, siz, hdl, JmpErr) \ do { \ if( fgets(ptr, siz, hdl) == NULL ) \ longjmp( JmpErr, -2); \ } while(0) #define safe_fread(ptr, siz, nit, str, JmpErr) \ do { \ if( fread(ptr, siz, nit, str) != nit ) \ longjmp( JmpErr, -3); \ } while(0) /*----------------------------------------------------------------------------*/ /* Open a mesh file in read or write mode */ /*----------------------------------------------------------------------------*/ int64_t GmfOpenMesh(const char *FilNam, int mod, ...) { int KwdCod, res, *PtrVer, *PtrDim, err; int64_t MshIdx; char str[ GmfStrSiz ]; va_list VarArg; GmfMshSct *msh; /*---------------------*/ /* MESH STRUCTURE INIT */ /*---------------------*/ if(!(msh = calloc(1, sizeof(GmfMshSct)))) return(0); MshIdx = (int64_t)msh; // Save the current stack environment for longjmp if( (err = setjmp(msh->err)) != 0) { #ifdef GMFDEBUG printf("libMeshb : mesh %p : error %d\n", msh, err); #endif if(msh->hdl != NULL) fclose(msh->hdl); if(msh->FilDes != 0) #ifdef GMF_WINDOWS _close(msh->FilDes); #else close(msh->FilDes); #endif free(msh); return(0); } // Copy the FilNam into the structure if(strlen(FilNam) + 7 >= GmfStrSiz) longjmp(msh->err, -4); strcpy(msh->FilNam, FilNam); // Store the opening mod (read or write) and guess // the filetype (binary or ascii) depending on the extension msh->mod = mod; msh->buf = (void *)msh->DblBuf; msh->FltBuf = (void *)msh->DblBuf; msh->IntBuf = (void *)msh->DblBuf; if(strstr(msh->FilNam, ".meshb")) msh->typ |= (Bin | MshFil); else if(strstr(msh->FilNam, ".mesh")) msh->typ |= (Asc | MshFil); else if(strstr(msh->FilNam, ".solb")) msh->typ |= (Bin | SolFil); else if(strstr(msh->FilNam, ".sol")) msh->typ |= (Asc | SolFil); else longjmp(msh->err, -5); // Open the file in the required mod and initialize the mesh structure if(msh->mod == GmfRead) { /*-----------------------*/ /* OPEN FILE FOR READING */ /*-----------------------*/ va_start(VarArg, mod); PtrVer = va_arg(VarArg, int *); PtrDim = va_arg(VarArg, int *); va_end(VarArg); // Read the endian coding tag, the mesh version // and the mesh dimension (mandatory kwd) if(msh->typ & Bin) { // Create the name string and open the file #ifdef WITH_GMF_AIO // [Bruno] added binary flag (necessary under Windows) msh->FilDes = open(msh->FilNam, OPEN_READ_FLAGS, OPEN_READ_MODE); if(msh->FilDes <= 0) longjmp(msh->err, -6); // Read the endian coding tag if(read(msh->FilDes, &msh->cod, WrdSiz) != WrdSiz) longjmp(msh->err, -7); #else // [Bruno] added binary flag (necessary under Windows) if(!(msh->hdl = fopen(msh->FilNam, "rb"))) longjmp(msh->err, -8); // Read the endian coding tag safe_fread(&msh->cod, WrdSiz, 1, msh->hdl, msh->err); #endif // Read the mesh version and the mesh dimension (mandatory kwd) if( (msh->cod != 1) && (msh->cod != 16777216) ) longjmp(msh->err, -9); ScaWrd(msh, (unsigned char *)&msh->ver); if( (msh->ver < 1) || (msh->ver > 4) ) longjmp(msh->err, -10); if( (msh->ver >= 3) && (sizeof(int64_t) != 8) ) longjmp(msh->err, -11); ScaWrd(msh, (unsigned char *)&KwdCod); if(KwdCod != GmfDimension) longjmp(msh->err, -12); GetPos(msh); ScaWrd(msh, (unsigned char *)&msh->dim); } else { // Create the name string and open the file if(!(msh->hdl = fopen(msh->FilNam, "rb"))) longjmp(msh->err, -13); do { res = fscanf(msh->hdl, "%100s", str); }while( (res != EOF) && strcmp(str, "MeshVersionFormatted") ); if(res == EOF) longjmp(msh->err, -14); safe_fscanf(msh->hdl, "%d", &msh->ver, msh->err); if( (msh->ver < 1) || (msh->ver > 4) ) longjmp(msh->err, -15); do { res = fscanf(msh->hdl, "%100s", str); }while( (res != EOF) && strcmp(str, "Dimension") ); if(res == EOF) longjmp(msh->err, -16); safe_fscanf(msh->hdl, "%d", &msh->dim, msh->err); } if( (msh->dim != 2) && (msh->dim != 3) ) longjmp(msh->err, -17); (*PtrVer) = msh->ver; (*PtrDim) = msh->dim; // Set default real numbers size if(msh->ver == 1) msh->FltSiz = 32; else msh->FltSiz = 64; /*------------*/ /* KW READING */ /*------------*/ // Read the list of kw present in the file if(!ScaKwdTab(msh)) return(0); // Preset solution entities sizes msh->SolTypSiz[ GmfSca ] = 1; msh->SolTypSiz[ GmfVec ] = msh->dim; msh->SolTypSiz[ GmfSymMat ] = msh->dim * (msh->dim - 1); msh->SolTypSiz[ GmfMat ] = msh->dim * msh->dim; return(MshIdx); } else if(msh->mod == GmfWrite) { /*-----------------------*/ /* OPEN FILE FOR WRITING */ /*-----------------------*/ msh->cod = 1; // Check if the user provided a valid version number and dimension va_start(VarArg, mod); msh->ver = va_arg(VarArg, int); msh->dim = va_arg(VarArg, int); va_end(VarArg); if( (msh->ver < 1) || (msh->ver > 4) ) longjmp(msh->err, -18); if( (msh->ver >= 3) && (sizeof(int64_t) != 8) ) longjmp(msh->err, -19); if( (msh->dim != 2) && (msh->dim != 3) ) longjmp(msh->err, -20); // Set default real numbers size if(msh->ver == 1) msh->FltSiz = 32; else msh->FltSiz = 64; // Create the mesh file if(msh->typ & Bin) { /* * [Bruno] replaced previous call to creat(): * with a call to open(), because Windows needs the * binary flag to be specified. */ #ifdef WITH_GMF_AIO msh->FilDes = open(msh->FilNam, OPEN_WRITE_FLAGS, OPEN_WRITE_MODE); if(msh->FilDes <= 0) longjmp(msh->err, -21); #else if(!(msh->hdl = fopen(msh->FilNam, "wb"))) longjmp(msh->err, -22); #endif } else if(!(msh->hdl = fopen(msh->FilNam, "wb"))) longjmp(msh->err, -23); /*------------*/ /* KW WRITING */ /*------------*/ // Write the mesh version and dimension if(msh->typ & Asc) { fprintf(msh->hdl, "%s %d\n\n", GmfKwdFmt[ GmfVersionFormatted ][0], msh->ver); fprintf(msh->hdl, "%s %d\n", GmfKwdFmt[ GmfDimension ][0], msh->dim); } else { RecWrd(msh, (unsigned char *)&msh->cod); RecWrd(msh, (unsigned char *)&msh->ver); GmfSetKwd(MshIdx, GmfDimension, 0); RecWrd(msh, (unsigned char *)&msh->dim); } // Preset solution entities sizes msh->SolTypSiz[ GmfSca ] = 1; msh->SolTypSiz[ GmfVec ] = msh->dim; msh->SolTypSiz[ GmfSymMat ] = msh->dim * (msh->dim - 1); msh->SolTypSiz[ GmfMat ] = msh->dim * msh->dim; return(MshIdx); } else { free(msh); return(0); } } /*----------------------------------------------------------------------------*/ /* Close a meshfile in the right way */ /*----------------------------------------------------------------------------*/ int GmfCloseMesh(int64_t MshIdx) { int i, res = 1; GmfMshSct *msh = (GmfMshSct *)MshIdx; RecBlk(msh, msh->buf, 0); // In write down the "End" kw in write mode if(msh->mod == GmfWrite) { if(msh->typ & Asc) fprintf(msh->hdl, "\n%s\n", GmfKwdFmt[ GmfEnd ][0]); else GmfSetKwd(MshIdx, GmfEnd, 0); } // Close the file and free the mesh structure if(msh->typ & Bin) #ifdef WITH_GMF_AIO close(msh->FilDes); #else fclose(msh->hdl); #endif else if(fclose(msh->hdl)) res = 0; // Free optional H.O. renumbering tables for(i=0;iKwdTab[i].OrdTab) free(msh->KwdTab[i].OrdTab); free(msh); return(res); } /*----------------------------------------------------------------------------*/ /* Read the number of lines and set the position to this kwd */ /*----------------------------------------------------------------------------*/ int64_t GmfStatKwd(int64_t MshIdx, int KwdCod, ...) { int i, *PtrNmbTyp, *PtrSolSiz, *TypTab, *PtrDeg, *PtrNmbNod; GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd; va_list VarArg; if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; if(!kwd->NmbLin) return(0); // Read further arguments if this kw is a sol if(kwd->typ == SolKwd) { va_start(VarArg, KwdCod); PtrNmbTyp = va_arg(VarArg, int *); *PtrNmbTyp = kwd->NmbTyp; PtrSolSiz = va_arg(VarArg, int *); *PtrSolSiz = kwd->SolSiz; TypTab = va_arg(VarArg, int *); for(i=0;iNmbTyp;i++) TypTab[i] = kwd->TypTab[i]; // Add two extra paramaters for HO elements: degree and nmb nodes if(!strcmp("hr", GmfKwdFmt[ KwdCod ][2]) ) { PtrDeg = va_arg(VarArg, int *); *PtrDeg = kwd->deg; PtrNmbNod = va_arg(VarArg, int *); *PtrNmbNod = kwd->NmbNod; } va_end(VarArg); } return(kwd->NmbLin); } /*----------------------------------------------------------------------------*/ /* Set the current file position to a given kwd */ /*----------------------------------------------------------------------------*/ int GmfGotoKwd(int64_t MshIdx, int KwdCod) { GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) || !kwd->NmbLin ) return(0); return(SetFilPos(msh, kwd->pos)); } /*----------------------------------------------------------------------------*/ /* Write the kwd and set the number of lines */ /*----------------------------------------------------------------------------*/ int GmfSetKwd(int64_t MshIdx, int KwdCod, int64_t NmbLin, ...) { int i, typ, *TypTab; int64_t CurPos; va_list VarArg; GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd; RecBlk(msh, msh->buf, 0); if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; // Read further arguments if this kw is a solution if(!strcmp(GmfKwdFmt[ KwdCod ][2], "sr") || !strcmp(GmfKwdFmt[ KwdCod ][2], "hr")) { va_start(VarArg, NmbLin); kwd->NmbTyp = va_arg(VarArg, int); TypTab = va_arg(VarArg, int *); for(i=0;iNmbTyp;i++) kwd->TypTab[i] = TypTab[i]; // Add two extra paramaters for HO elements: degree and nmb nodes if(!strcmp("hr", GmfKwdFmt[ KwdCod ][2])) { kwd->deg = va_arg(VarArg, int); kwd->NmbNod = va_arg(VarArg, int); } va_end(VarArg); } // Setup the kwd info ExpFmt(msh, KwdCod); if(!kwd->typ) return(0); else if(kwd->typ == InfKwd) kwd->NmbLin = 1; else kwd->NmbLin = NmbLin; // Store the next kwd position in binary file if( (msh->typ & Bin) && msh->NexKwdPos ) { CurPos = GetFilPos(msh); if(!SetFilPos(msh, msh->NexKwdPos)) return(0); SetPos(msh, CurPos); if(!SetFilPos(msh, CurPos)) return(0); } // Write the header if(msh->typ & Asc) { fprintf(msh->hdl, "\n%s\n", GmfKwdFmt[ KwdCod ][0]); if(kwd->typ != InfKwd) fprintf(msh->hdl, INT64_T_FMT"\n", kwd->NmbLin); // In case of solution field, write the extended header if(kwd->typ == SolKwd) { fprintf(msh->hdl, "%d ", kwd->NmbTyp); for(i=0;iNmbTyp;i++) { typ = kwd->TypTab[i] > GmfMat ? GmfSca : kwd->TypTab[i]; fprintf(msh->hdl, "%d ", typ); } fprintf(msh->hdl, "\n"); } if(!strcmp("hr", GmfKwdFmt[ KwdCod ][2])) fprintf(msh->hdl, "%d %d\n", kwd->deg, kwd->NmbNod); } else { RecWrd(msh, (unsigned char *)&KwdCod); msh->NexKwdPos = GetFilPos(msh); SetPos(msh, 0); if(kwd->typ != InfKwd) { if(msh->ver < 4) { i = (int)kwd->NmbLin; RecWrd(msh, (unsigned char *)&i); } else RecDblWrd(msh, (unsigned char *)&kwd->NmbLin); } // In case of solution field, write the extended header at once if(kwd->typ == SolKwd) { RecWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) { typ = kwd->TypTab[i] > GmfMat ? GmfSca : kwd->TypTab[i]; RecWrd(msh, (unsigned char *)&typ); } if(!strcmp("hr", GmfKwdFmt[ KwdCod ][2])) { RecWrd(msh, (unsigned char *)&kwd->deg); RecWrd(msh, (unsigned char *)&kwd->NmbNod); } } } // Reset write buffer position msh->pos = 0; // Compute the total file size and check if it crosses the 2GB threshold msh->siz += kwd->NmbLin * kwd->NmbWrd * WrdSiz; return(1); } /*----------------------------------------------------------------------------*/ /* Read a full line from the current kwd */ /*----------------------------------------------------------------------------*/ int GmfGetLin(int64_t MshIdx, int KwdCod, ...) { int i, err, typ, *IntTab, *RefPtr, IntVal; int64_t LngVal; float *FltSolTab, FltVal, *PtrFlt; double *DblSolTab, *PtrDbl, *DblTab, DblVal; va_list VarArg; GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd; // Special trick: if the kwd is negative the call come from Fortran if(KwdCod < 0) { // Set Fortran mode ON KwdCod = -KwdCod; kwd = &msh->KwdTab[ KwdCod ]; typ = F77Kwd; } else { kwd = &msh->KwdTab[ KwdCod ]; typ = kwd->typ; } if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); // Save the current stack environment for longjmp if( (err = setjmp(msh->err)) != 0) { #ifdef GMFDEBUG printf("libMeshb : mesh %p : error %d\n", msh, err); #endif return(0); } // Start decoding the arguments va_start(VarArg, KwdCod); switch(typ) { case InfKwd : case RegKwd : case CmtKwd : { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(msh->FltSiz == 32) { safe_fscanf(msh->hdl, "%f", &FltVal, msh->err); PtrDbl = va_arg(VarArg, double *); PtrFlt = (float *)PtrDbl; *PtrFlt = FltVal; } else { PtrDbl = va_arg(VarArg, double *); safe_fscanf(msh->hdl, "%lf",PtrDbl, msh->err); } } else if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) { safe_fscanf(msh->hdl, "%d", va_arg(VarArg, int *), msh->err); } else { // [Bruno] %ld -> INT64_T_FMT safe_fscanf(msh->hdl, INT64_T_FMT, va_arg(VarArg, int64_t *), msh->err); } } else if(kwd->fmt[i] == 'c') { safe_fscanf(msh->hdl, "%s", va_arg(VarArg, char *), msh->err); } } } else { for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'r') if(msh->FltSiz == 32) ScaWrd(msh, (unsigned char *)va_arg(VarArg, float *)); else ScaDblWrd(msh, (unsigned char *)va_arg(VarArg, double *)); else if(kwd->fmt[i] == 'i') if(msh->ver <= 3) ScaWrd(msh, (unsigned char *)va_arg(VarArg, int *)); else ScaDblWrd(msh, (unsigned char *)va_arg(VarArg, int64_t *)); else if(kwd->fmt[i] == 'c') // [Bruno] added error control safe_fread(va_arg(VarArg, char *), WrdSiz, FilStrSiz, msh->hdl, msh->err); } }break; case SolKwd : { if(msh->FltSiz == 32) { FltSolTab = va_arg(VarArg, float *); if(msh->typ & Asc) for(i=0; iSolSiz; i++) safe_fscanf(msh->hdl, "%f", &FltSolTab[i], msh->err); else for(i=0; iSolSiz; i++) ScaWrd(msh, (unsigned char *)&FltSolTab[i]); } else { DblSolTab = va_arg(VarArg, double *); if(msh->typ & Asc) for(i=0; iSolSiz; i++) safe_fscanf(msh->hdl, "%lf", &DblSolTab[i], msh->err); else for(i=0; iSolSiz; i++) ScaDblWrd(msh, (unsigned char *)&DblSolTab[i]); } }break; case F77Kwd : { IntTab = va_arg(VarArg, int *); DblTab = va_arg(VarArg, double *); RefPtr = va_arg(VarArg, int *); for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) { if(msh->typ & Asc) safe_fscanf(msh->hdl, "%d", &IntVal, msh->err); else ScaWrd(msh, (unsigned char *)&IntVal); } else { if(msh->typ & Asc) safe_fscanf(msh->hdl, INT64_T_FMT, &LngVal, msh->err); else ScaDblWrd(msh, (unsigned char *)&LngVal); IntVal = (int)LngVal; } if(!F77RefFlg[ KwdCod ] || (i < kwd->SolSiz - 1)) IntTab[i] = IntVal; else *RefPtr = IntVal; } else if(kwd->fmt[i] == 'r') { if(msh->FltSiz == 32) { if(msh->typ & Asc) safe_fscanf(msh->hdl, "%f", &FltVal, msh->err); else ScaWrd(msh, (unsigned char *)&FltVal); DblVal = (double)FltVal; } else { if(msh->typ & Asc) safe_fscanf(msh->hdl, "%lf", &DblVal, msh->err); else ScaDblWrd(msh, (unsigned char *)&DblVal); } DblTab[i] = DblVal; } } }break; } va_end(VarArg); return(1); } /*----------------------------------------------------------------------------*/ /* Write a full line from the current kwd */ /*----------------------------------------------------------------------------*/ int GmfSetLin(int64_t MshIdx, int KwdCod, ...) { int i, pos, *IntBuf, err, typ, *IntTab, *RefPtr; int64_t *LngBuf; float *FltSolTab, *FltBuf; double *DblSolTab, *DblBuf, *DblTab; va_list VarArg; GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd; // Special trick: if the kwd is negative the call come from Fortran if(KwdCod < 0) { // Set Fortran mode ON KwdCod = -KwdCod; kwd = &msh->KwdTab[ KwdCod ]; typ = F77Kwd; } else { kwd = &msh->KwdTab[ KwdCod ]; typ = kwd->typ; } if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); // Save the current stack environment for longjmp // This is needed in RecBlk() if( (err = setjmp(msh->err)) != 0) { #ifdef GMFDEBUG printf("libMeshb : mesh %p : error %d\n", msh, err); #endif return(0); } // Save the current stack environment for longjmp // This is needed in RecBlk() if( (err = setjmp(msh->err)) != 0) { #ifdef GMFDEBUG printf("libMeshb : mesh %p : error %d\n", msh, err); #endif return(0); } // Start decoding the arguments va_start(VarArg, KwdCod); switch(typ) { case InfKwd : case RegKwd : case CmtKwd : { if(msh->typ & Asc) { for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(msh->FltSiz == 32) fprintf(msh->hdl, "%.9g ", va_arg(VarArg, double)); else fprintf(msh->hdl, "%.17g ", va_arg(VarArg, double)); } else if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) fprintf(msh->hdl, "%d ", va_arg(VarArg, int)); else { // [Bruno] %ld -> INT64_T_FMT fprintf(msh->hdl, INT64_T_FMT " ", va_arg(VarArg, int64_t)); } } else if(kwd->fmt[i] == 'c') fprintf(msh->hdl, "%s ", va_arg(VarArg, char *)); } } else { pos = 0; for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(msh->FltSiz == 32) { FltBuf = (void *)&msh->buf[ pos ]; *FltBuf = (float)va_arg(VarArg, double); pos += 4; } else { DblBuf = (void *)&msh->buf[ pos ]; *DblBuf = va_arg(VarArg, double); pos += 8; } } else if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) { IntBuf = (void *)&msh->buf[ pos ]; *IntBuf = va_arg(VarArg, int); pos += 4; } else { LngBuf = (void *)&msh->buf[ pos ]; *LngBuf = va_arg(VarArg, int64_t); pos += 8; } } else if(kwd->fmt[i] == 'c') { memset(&msh->buf[ pos ], 0, FilStrSiz * WrdSiz); strncpy(&msh->buf[ pos ], va_arg(VarArg, char *), FilStrSiz * WrdSiz); pos += FilStrSiz; } } RecBlk(msh, msh->buf, kwd->NmbWrd); } }break; case SolKwd : { if(msh->FltSiz == 32) { FltSolTab = va_arg(VarArg, float *); if(msh->typ & Asc) for(i=0; iSolSiz; i++) fprintf(msh->hdl, "%.9g ", (double)FltSolTab[i]); else RecBlk(msh, (unsigned char *)FltSolTab, kwd->NmbWrd); } else { DblSolTab = va_arg(VarArg, double *); if(msh->typ & Asc) for(i=0; iSolSiz; i++) fprintf(msh->hdl, "%.17g ", DblSolTab[i]); else RecBlk(msh, (unsigned char *)DblSolTab, kwd->NmbWrd); } }break; case F77Kwd : { IntTab = va_arg(VarArg, int *); DblTab = va_arg(VarArg, double *); RefPtr = va_arg(VarArg, int *); if(msh->typ & Asc) { for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(msh->FltSiz == 32) fprintf(msh->hdl, "%.9g ", (float)DblTab[i]); else fprintf(msh->hdl, "%.17g ", DblTab[i]); } else if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) if(!F77RefFlg[ KwdCod ] || (i < kwd->SolSiz - 1)) fprintf(msh->hdl, "%d ", IntTab[i]); else fprintf(msh->hdl, "%d ", *RefPtr); else { if(!F77RefFlg[ KwdCod ] || (i < kwd->SolSiz - 1)) fprintf(msh->hdl, INT64_T_FMT " ", (int64_t)IntTab[i]); else fprintf(msh->hdl, INT64_T_FMT " ", (int64_t)*RefPtr); } } } } else { pos = 0; for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(msh->FltSiz == 32) { FltBuf = (void *)&msh->buf[ pos ]; *FltBuf = (float)DblTab[i]; pos += 4; } else { DblBuf = (void *)&msh->buf[ pos ]; *DblBuf = DblTab[i]; pos += 8; } } else if(kwd->fmt[i] == 'i') { if(msh->ver <= 3) { IntBuf = (void *)&msh->buf[ pos ]; if(!F77RefFlg[ KwdCod ] || (i < kwd->SolSiz - 1)) *IntBuf = IntTab[i]; else *IntBuf = *RefPtr; pos += 4; } else { LngBuf = (void *)&msh->buf[ pos ]; if(!F77RefFlg[ KwdCod ] || (i < kwd->SolSiz - 1)) *LngBuf = (int64_t)IntTab[i]; else *LngBuf = (int64_t)*RefPtr; pos += 8; } } } RecBlk(msh, msh->buf, kwd->NmbWrd); } }break; } va_end(VarArg); if(msh->typ & Asc) fprintf(msh->hdl, "\n"); return(1); } /*----------------------------------------------------------------------------*/ /* Private procedure for mesh : copy a whole line */ /*----------------------------------------------------------------------------*/ #ifdef TRANSMESH int GmfCpyLin(int64_t InpIdx, int64_t OutIdx, int KwdCod) { char s[ WrdSiz * FilStrSiz ]; double d; float f; int i, a, err; int64_t l; GmfMshSct *InpMsh = (GmfMshSct *)InpIdx, *OutMsh = (GmfMshSct *)OutIdx; KwdSct *kwd = &InpMsh->KwdTab[ KwdCod ]; // Save the current stack environment for longjmp if( (err = setjmp(InpMsh->err)) != 0) { #ifdef GMFDEBUG printf("libMeshb : mesh %p : error %d\n", InpMsh, err); #endif return(0); } for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') { if(InpMsh->FltSiz == 32) { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%f", &f, InpMsh->err); else ScaWrd(InpMsh, (unsigned char *)&f); d = (double)f; } else { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%lf", &d, InpMsh->err); else ScaDblWrd(InpMsh, (unsigned char *)&d); f = (float)d; } if(OutMsh->FltSiz == 32) if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%.9g ", (double)f); else RecWrd(OutMsh, (unsigned char *)&f); else if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%.17g ", d); else RecDblWrd(OutMsh, (unsigned char *)&d); } else if(kwd->fmt[i] == 'i') { if(InpMsh->ver <= 3) { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, "%d", &a, InpMsh->err); else ScaWrd(InpMsh, (unsigned char *)&a); l = (int64_t)a; } else { if(InpMsh->typ & Asc) safe_fscanf(InpMsh->hdl, INT64_T_FMT, &l, InpMsh->err); else ScaDblWrd(InpMsh, (unsigned char *)&l); a = (int)l; } if( (i == kwd->SolSiz-1) && (a > GmfMaxRefTab[ KwdCod ]) ) GmfMaxRefTab[ KwdCod ] = a; if(OutMsh->ver <= 3) { if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%d ", a); else RecWrd(OutMsh, (unsigned char *)&a); } else { if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, INT64_T_FMT" ", l); else RecDblWrd(OutMsh, (unsigned char *)&l); } } else if(kwd->fmt[i] == 'c') { memset(s, 0, FilStrSiz * WrdSiz); if(InpMsh->typ & Asc) { //safe_fgets(s, WrdSiz * FilStrSiz, InpMsh->hdl, InpMsh->err); safe_fscanf(InpMsh->hdl, "%s", s, InpMsh->err); } else #ifdef WITH_GMF_AIO read(InpMsh->FilDes, s, WrdSiz * FilStrSiz); #else safe_fread(s, WrdSiz, FilStrSiz, InpMsh->hdl, InpMsh->err); #endif if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "%s ", s); else #ifdef WITH_GMF_AIO write(OutMsh->FilDes, s, WrdSiz * FilStrSiz); #else fwrite(s, WrdSiz, FilStrSiz, OutMsh->hdl); #endif } } if(OutMsh->typ & Asc) fprintf(OutMsh->hdl, "\n"); return(1); } #endif // [Bruno] Made asynchronous I/O optional #ifndef WITHOUT_AIO /*----------------------------------------------------------------------------*/ /* Bufferized asynchronous reading of all keyword's lines */ /*----------------------------------------------------------------------------*/ int GmfGetBlock( int64_t MshIdx, int KwdCod, int64_t BegIdx, int64_t EndIdx, int MapTyp, void *MapTab, void *prc, ... ) { char *UsrDat[ GmfMaxTyp ], *UsrBas[ GmfMaxTyp ], *FilPos, *EndUsrDat; char *FilBuf = NULL, *FrtBuf = NULL, *BckBuf = NULL, *BegUsrDat; char *StrTab[4] = { "%f", "%lf", "%d", INT64_T_FMT }; char **BegTab, **EndTab; int i, j, k, *FilPtrI32, *UsrPtrI32, FilTyp[ GmfMaxTyp ]; int UsrTyp[ GmfMaxTyp ], TypSiz[4] = {4,8,4,8}; int *IntMapTab = NULL, err, TotSiz = 0, IniFlg = 1, mod = GmfArgLst; int *TypTab, *SizTab, typ, VecCnt, ArgCnt = 0; float *FilPtrR32, *UsrPtrR32; double *FilPtrR64, *UsrPtrR64; int64_t BlkNmbLin, *FilPtrI64, *UsrPtrI64, BlkBegIdx, BlkEndIdx = 0; int64_t *LngMapTab = NULL, OldIdx = 0, UsrNmbLin, VecLen; size_t FilBegIdx = BegIdx, FilEndIdx = EndIdx; void (*UsrPrc)(int64_t, int64_t, void *) = NULL; size_t UsrLen[ GmfMaxTyp ], ret, LinSiz, b, l, NmbBlk; va_list VarArg; GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; struct aiocb aio; char *UsrArg = NULL; // Save the current stack environment for longjmp if( (err = setjmp(msh->err)) != 0) { #ifdef GMFDEBUG printf("libMeshb : mesh %p : error %d\n", msh, err); #endif if(BckBuf) free(BckBuf); if(FrtBuf) free(FrtBuf); return(0); } // Check mesh and keyword if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) || !kwd->NmbLin ) return(0); // Make sure it's not a simple information keyword if( (kwd->typ != RegKwd) && (kwd->typ != SolKwd) ) return(0); // Check user's bounds if( (FilBegIdx < 1) || (FilBegIdx > FilEndIdx) || (FilEndIdx > (size_t)kwd->NmbLin) ) return(0); // Compute the number of lines to be read UsrNmbLin = FilEndIdx - FilBegIdx + 1; // Get the renumbering map if any if(MapTyp == GmfInt) IntMapTab = (int *)MapTab; else if(MapTyp == GmfLong) LngMapTab = (int64_t *)MapTab; // Start decoding the arguments va_start(VarArg, prc); LinSiz = 0; // Get the user's preprocessing procedure and argument adresses, if any if(prc) { UsrPrc = (void (*)(int64_t, int64_t, void *))prc; UsrArg = va_arg(VarArg, void *); } if( (kwd->typ != RegKwd) && (kwd->typ != SolKwd) ) longjmp(msh->err, -36); // Read the first data type to select between list and table mode typ = va_arg(VarArg, int); // If the table mode is selected, read the four additional tables // containing the arguments: type, vector size, begin and end pointers if(typ == GmfArgTab) { mod = GmfArgTab; TypTab = va_arg(VarArg, int *); SizTab = va_arg(VarArg, int *); BegTab = va_arg(VarArg, char **); EndTab = va_arg(VarArg, char **); } // Read the arguments until to total size reaches the keyword's size while(TotSiz < kwd->SolSiz) { // In list mode all arguments are read from the variable argument buffer if(mod == GmfArgLst) { // Do not read the type argument for the first iteration because // it was read befeore the loop begins to get the argument mode if(IniFlg) IniFlg = 0; else typ = va_arg(VarArg, int); if(typ >= GmfFloatVec && typ <= GmfLongVec) { // In case the type is a vector, get its size and change // the type for the corresponding scalar type typ -= 4; VecCnt = va_arg(VarArg, int); } else if(typ >= GmfSca && typ <= GmfMat) { // In case it is a mathematical solution, expand it // to the right size with the mesh file's own real kind VecCnt = msh->SolTypSiz[ typ ]; typ = (msh->ver == 1) ? GmfFloat : GmfDouble; } else VecCnt = 1; BegUsrDat = va_arg(VarArg, char *); EndUsrDat = va_arg(VarArg, char *); } else { // Do exactly the same as above but the arguments are read from // the tables instead of VarArgs typ = TypTab[ ArgCnt ]; if(typ >= GmfFloatVec && typ <= GmfLongVec) { typ -= 4; VecCnt = SizTab[ ArgCnt ]; } else if(typ >= GmfSca && typ <= GmfMat) { // In case it is a mathematical solution, expand it // to the right size with the mesh file's own real kind VecCnt = msh->SolTypSiz[ typ ]; typ = (msh->ver == 1) ? GmfFloat : GmfDouble; } else VecCnt = 1; BegUsrDat = (char *)BegTab[ ArgCnt ]; EndUsrDat = (char *)EndTab[ ArgCnt ]; ArgCnt++; } if(UsrNmbLin > 1) { VecLen = (size_t)(EndUsrDat - BegUsrDat); VecLen /= UsrNmbLin - 1; } else VecLen = 0; // Compute the consecutive begin / end adresses for vector data types for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') if(msh->FltSiz == 32) FilTyp[i] = GmfFloat; else FilTyp[i] = GmfDouble; else if(msh->ver <= 3) FilTyp[i] = GmfInt; else FilTyp[i] = GmfLong; // Compute the file stride LinSiz += TypSiz[ FilTyp[i] - GmfFloat ]; } va_end(VarArg); // Move file pointer to the keyword data SetFilPos(msh, kwd->pos); // Read the whole kwd data if(msh->typ & Asc) { OldIdx = 1; for(l=1;l<=FilEndIdx;l++) { for(j=0;jSolSiz;j++) { // Reorder HO nodes on the fly if(kwd->OrdTab && (j != kwd->SolSiz-1)) k = kwd->OrdTab[j]; else k = j; // Move to the next user's data line only when the desired // begining position in the ascii file has been reached since // we cannot move directly to an arbitrary position if(IntMapTab) UsrDat[j] = UsrBas[k] + (IntMapTab[ OldIdx ] - 1) * UsrLen[k]; else if(LngMapTab) UsrDat[j] = UsrBas[k] + (LngMapTab[ OldIdx ] - 1) * UsrLen[k]; else UsrDat[j] = UsrBas[k] + (OldIdx - 1) * UsrLen[k]; safe_fscanf(msh->hdl, StrTab[ UsrTyp[j] - GmfFloat ], UsrDat[j], msh->err); } if(l >= FilBegIdx) OldIdx++; // Call the user's preprocessing procedure if(UsrPrc) UsrPrc(1, kwd->NmbLin, UsrArg); } } else { // Allocate both front and back buffers if(!(BckBuf = malloc(BufSiz * LinSiz))) longjmp(msh->err, -37); if(!(FrtBuf = malloc(BufSiz * LinSiz))) longjmp(msh->err, -38); // Setup the ansynchonous parameters memset(&aio, 0, sizeof(struct aiocb)); FilBuf = BckBuf; aio.aio_buf = BckBuf; #ifdef WITH_GMF_AIO aio.aio_fildes = msh->FilDes; #else aio.aio_fildes = msh->hdl; #endif aio.aio_offset = (size_t)(GetFilPos(msh) + (FilBegIdx-1) * LinSiz); NmbBlk = UsrNmbLin / BufSiz; // Loop over N+1 blocks for(b=0;b<=NmbBlk+1;b++) { // Wait for the previous block read to complete except // for the first loop interation if(b) { while(my_aio_error(&aio) == EINPROGRESS); err = my_aio_error(&aio); ret = my_aio_return(&aio); if (err != 0) { printf (" Error at aio_error() : %s\n", strerror (err)); longjmp(msh->err, -39); } if (ret != aio.aio_nbytes) { printf(" Error at aio_return()\n"); longjmp(msh->err, -40); } // Increment the reading position aio.aio_offset += (size_t)aio.aio_nbytes; // and swap the buffers if(aio.aio_buf == BckBuf) { aio.aio_buf = FrtBuf; FilBuf = BckBuf; } else { aio.aio_buf = BckBuf; FilBuf = FrtBuf; } } // Read a chunk of data except for the last loop interarion if(b <= NmbBlk) { // The last block is shorter than the others if(b == NmbBlk) BlkNmbLin = UsrNmbLin - b * BufSiz; else BlkNmbLin = BufSiz; aio.aio_nbytes = BlkNmbLin * LinSiz; if(my_aio_read(&aio) == -1) { printf("block = %zd / %zd\n", b+1, NmbBlk+1); printf("size = "INT64_T_FMT" lines\n", BlkNmbLin); #ifdef WITH_GMF_AIO printf("aio_fildes = %d\n",aio.aio_fildes); #else printf("aio_fildes = %p\n",aio.aio_fildes); #endif printf("aio_buf = %p\n",aio.aio_buf); printf("aio_offset = " INT64_T_FMT "\n",(int64_t)aio.aio_offset); printf("aio_nbytes = " INT64_T_FMT "\n",(int64_t)aio.aio_nbytes); printf("errno = %d\n",errno); longjmp(msh->err, -41); } } // Then decode the block and store it in the user's data structure // except for the first loop interation if(b) { // The last block is shorter than the others if(b-1 == NmbBlk) BlkNmbLin = UsrNmbLin - (b-1) * BufSiz; else BlkNmbLin = BufSiz; BlkBegIdx = BlkEndIdx+1; BlkEndIdx += BlkNmbLin; FilPos = FilBuf; for(i=0;iSolSiz;j++) { if(msh->cod != 1) SwpWrd(FilPos, TypSiz[ FilTyp[j] - GmfFloat ]); // Reorder HO nodes on the fly if(kwd->OrdTab && (j != kwd->SolSiz-1)) k = kwd->OrdTab[j]; else k = j; if(IntMapTab) UsrDat[j] = UsrBas[k] + (IntMapTab[ OldIdx ] - 1) * UsrLen[k]; else if(LngMapTab) UsrDat[j] = UsrBas[k] + (LngMapTab[ OldIdx ] - 1) * UsrLen[k]; else UsrDat[j] = UsrBas[k] + (OldIdx - 1) * UsrLen[k]; if(FilTyp[j] == GmfInt) { FilPtrI32 = (int *)FilPos; if(UsrTyp[j] == GmfInt) { UsrPtrI32 = (int *)UsrDat[j]; *UsrPtrI32 = *FilPtrI32; } else { UsrPtrI64 = (int64_t *)UsrDat[j]; *UsrPtrI64 = (int64_t)*FilPtrI32; } } else if(FilTyp[j] == GmfLong) { FilPtrI64 = (int64_t *)FilPos; if(UsrTyp[j] == GmfLong) { UsrPtrI64 = (int64_t *)UsrDat[j]; *UsrPtrI64 = *FilPtrI64; } else { UsrPtrI32 = (int *)UsrDat[j]; *UsrPtrI32 = (int)*FilPtrI64; } } else if(FilTyp[j] == GmfFloat) { FilPtrR32 = (float *)FilPos; if(UsrTyp[j] == GmfFloat) { UsrPtrR32 = (float *)UsrDat[j]; *UsrPtrR32 = *FilPtrR32; } else { UsrPtrR64 = (double *)UsrDat[j]; *UsrPtrR64 = (double)*FilPtrR32; } } else if(FilTyp[j] == GmfDouble) { FilPtrR64 = (double *)FilPos; if(UsrTyp[j] == GmfDouble) { UsrPtrR64 = (double *)UsrDat[j]; *UsrPtrR64 = *FilPtrR64; } else { UsrPtrR32 = (float *)UsrDat[j]; *UsrPtrR32 = (float)*FilPtrR64; } } FilPos += TypSiz[ FilTyp[j] - GmfFloat ]; } } // Call the user's preprocessing procedure if(UsrPrc) UsrPrc(BlkBegIdx, BlkEndIdx, UsrArg); } } free(BckBuf); free(FrtBuf); } return(1); } /*----------------------------------------------------------------------------*/ /* Bufferized writing of all keyword's lines */ /*----------------------------------------------------------------------------*/ int GmfSetBlock( int64_t MshIdx, int KwdCod, int64_t BegIdx, int64_t EndIdx, int MapTyp, void *MapTab, void *prc, ... ) { char *UsrDat[ GmfMaxTyp ], *UsrBas[ GmfMaxTyp ]; char *StrTab[4] = {"%.9g", "%.17g", "%d", "%lld" }, *FilPos; char *FilBuf = NULL, *FrtBuf = NULL, *BckBuf = NULL; char **BegTab, **EndTab, *BegUsrDat, *EndUsrDat; int i, j, *FilPtrI32, *UsrPtrI32, FilTyp[ GmfMaxTyp ]; int UsrTyp[ GmfMaxTyp ], TypSiz[4] = {4,8,4,8}; int err, *IntMapTab = NULL, typ, mod = GmfArgLst; int *TypTab, *SizTab, IniFlg = 1, TotSiz = 0, VecCnt, ArgCnt = 0; float *FilPtrR32, *UsrPtrR32; double *FilPtrR64, *UsrPtrR64; int64_t UsrNmbLin, BlkNmbLin = 0, BlkBegIdx, BlkEndIdx = 0; int64_t *FilPtrI64, *UsrPtrI64, *LngMapTab = NULL, OldIdx = 0; size_t FilBegIdx = BegIdx, FilEndIdx = EndIdx; void (*UsrPrc)(int64_t, int64_t, void *) = NULL; size_t UsrLen[ GmfMaxTyp ], ret, LinSiz, VecLen, s, b, NmbBlk; va_list VarArg; GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; struct aiocb aio; char *UsrArg = NULL; // Save the current stack environment for longjmp if( (err = setjmp(msh->err)) != 0) { #ifdef GMFDEBUG printf("libMeshb : mesh %p : error %d\n", msh, err); #endif if(FilBuf) free(FilBuf); return(0); } // Check mesh and keyword if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) || !kwd->NmbLin ) return(0); // Make sure it's not a simple information keyword if( (kwd->typ != RegKwd) && (kwd->typ != SolKwd) ) return(0); // Temporarily overwright the given begin and end values // as arbitrary position block write is not yet implemented FilBegIdx = 1; FilEndIdx = kwd->NmbLin; // Check user's bounds if( (FilBegIdx < 1) || (FilBegIdx > FilEndIdx) || (FilEndIdx > (size_t)kwd->NmbLin) ) return(0); // Compute the number of lines to be written UsrNmbLin = FilEndIdx - FilBegIdx + 1; // Get the renumbering map if any if(MapTyp == GmfInt) IntMapTab = (int *)MapTab; else if(MapTyp == GmfLong) LngMapTab = (int64_t *)MapTab; // Start decoding the arguments va_start(VarArg, prc); LinSiz = 0; // Get the user's postprocessing procedure and argument adresses, if any if(prc) { UsrPrc = (void (*)(int64_t, int64_t, void *))prc; UsrArg = va_arg(VarArg, void *); } if( (kwd->typ != RegKwd) && (kwd->typ != SolKwd) ) longjmp(msh->err, -42); // Read the first data type to select between list and table mode typ = va_arg(VarArg, int); // If the table mode is selected, read the four additional tables // containing the arguments: type, vector size, begin and end pointers if(typ == GmfArgTab) { mod = GmfArgTab; TypTab = va_arg(VarArg, int *); SizTab = va_arg(VarArg, int *); BegTab = va_arg(VarArg, char **); EndTab = va_arg(VarArg, char **); } // Read the arguments until to total size reaches the keyword's size while(TotSiz < kwd->SolSiz) { // In list mode all arguments are read from the variable argument buffer if(mod == GmfArgLst) { // Do not read the type argument for the first iteration because // it was read befeore the loop begins to get the argument mode if(IniFlg) IniFlg = 0; else typ = va_arg(VarArg, int); // In case the type is a vector. get its size and change the type // for the corresponding scalar type if(typ >= GmfFloatVec && typ <= GmfLongVec) { typ -= 4; VecCnt = va_arg(VarArg, int); } else if(typ >= GmfSca && typ <= GmfMat) { // In case it is a mathematical solution, expand it // to the right size with the mesh file's own real kind VecCnt = msh->SolTypSiz[ typ ]; typ = (msh->ver == 1) ? GmfFloat : GmfDouble; } else VecCnt = 1; BegUsrDat = va_arg(VarArg, char *); EndUsrDat = va_arg(VarArg, char *); } else { // Do exactly the same as above but the arguments are read from // the tables instead of VarArgs typ = TypTab[ ArgCnt ]; if(typ >= GmfFloatVec && typ <= GmfLongVec) { typ -= 4; VecCnt = SizTab[ ArgCnt ]; } else if(typ >= GmfSca && typ <= GmfMat) { // In case it is a mathematical solution, expand it // to the right size with the mesh file's own real kind VecCnt = msh->SolTypSiz[ typ ]; typ = (msh->ver == 1) ? GmfFloat : GmfDouble; } else VecCnt = 1; BegUsrDat = (char *)BegTab[ ArgCnt ]; EndUsrDat = (char *)EndTab[ ArgCnt ]; ArgCnt++; } if(UsrNmbLin > 1) { VecLen = EndUsrDat - BegUsrDat; VecLen /= UsrNmbLin - 1; } else VecLen = 0; // Compute the consecutive begin / end adresses for vector data types for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'r') if(msh->FltSiz == 32) FilTyp[i] = GmfFloat; else FilTyp[i] = GmfDouble; else if(msh->ver <= 3) FilTyp[i] = GmfInt; else FilTyp[i] = GmfLong; // Compute the file stride LinSiz += TypSiz[ FilTyp[i] - GmfFloat ]; } va_end(VarArg); // Write the whole kwd data if(msh->typ & Asc) { if(UsrPrc) UsrPrc(1, kwd->NmbLin, UsrArg); for(s=FilBegIdx; s<=FilEndIdx; s++) for(j=0;jSolSiz;j++) { if(UsrTyp[j] == GmfFloat) { UsrPtrR32 = (float *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] - GmfFloat ], (double)*UsrPtrR32); } else if(UsrTyp[j] == GmfDouble) { UsrPtrR64 = (double *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] - GmfFloat ], *UsrPtrR64); } else if(UsrTyp[j] == GmfInt) { UsrPtrI32 = (int *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] - GmfFloat ], *UsrPtrI32); } else if(UsrTyp[j] == GmfLong) { UsrPtrI64 = (int64_t *)UsrDat[j]; fprintf(msh->hdl, StrTab[ UsrTyp[j] - GmfFloat ], *UsrPtrI64); } if(j < kwd->SolSiz -1) fprintf(msh->hdl, " "); else fprintf(msh->hdl, "\n"); //UsrDat[j] += UsrLen[j]; if(IntMapTab) UsrDat[j] = UsrBas[j] + IntMapTab[s] * UsrLen[j]; else if(LngMapTab) UsrDat[j] = UsrBas[j] + LngMapTab[s] * UsrLen[j]; else UsrDat[j] = UsrBas[j] + s * UsrLen[j]; } } else { // Allocate the front and back buffers if(!(BckBuf = malloc(BufSiz * LinSiz))) longjmp(msh->err, -43); if(!(FrtBuf = malloc(BufSiz * LinSiz))) longjmp(msh->err, -44); // Setup the asynchronous parameters memset(&aio, 0, sizeof(struct aiocb)); FilBuf = BckBuf; #ifdef WITH_GMF_AIO aio.aio_fildes = msh->FilDes; #else aio.aio_fildes = msh->hdl; #endif aio.aio_offset = (size_t)GetFilPos(msh); NmbBlk = UsrNmbLin / BufSiz; // Loop over N+1 blocks for(b=0;b<=NmbBlk+1;b++) { // Launch an asynchronous block write // except for the first loop iteration if(b) { aio.aio_nbytes = BlkNmbLin * LinSiz; if(my_aio_write(&aio) == -1) { #ifdef WITH_GMF_AIO printf("aio_fildes = %d\n",aio.aio_fildes); #else printf("aio_fildes = %p\n",aio.aio_fildes); #endif printf("aio_buf = %p\n",aio.aio_buf); printf("aio_offset = " INT64_T_FMT "\n",(int64_t)aio.aio_offset); printf("aio_nbytes = " INT64_T_FMT "\n",(int64_t)aio.aio_nbytes); printf("errno = %d\n",errno); longjmp(msh->err, -45); } } // Parse the block data except at the last loop iteration if(b<=NmbBlk) { // The last block is shorter if(b == NmbBlk) BlkNmbLin = UsrNmbLin - b * BufSiz; else BlkNmbLin = BufSiz; FilPos = FilBuf; BlkBegIdx = BlkEndIdx+1; BlkEndIdx += BlkNmbLin; // Call user's preprocessing first if(UsrPrc) UsrPrc(BlkBegIdx, BlkEndIdx, UsrArg); // Then copy it's data to the file buffer for(i=0;iSolSiz;j++) { if(IntMapTab) UsrDat[j] = UsrBas[j] + (IntMapTab[ OldIdx ] - 1) * UsrLen[j]; else if(LngMapTab) UsrDat[j] = UsrBas[j] + (LngMapTab[ OldIdx ] - 1) * UsrLen[j]; else UsrDat[j] = UsrBas[j] + (OldIdx - 1) * UsrLen[j]; if(FilTyp[j] == GmfInt) { FilPtrI32 = (int *)FilPos; if(UsrTyp[j] == GmfInt) { UsrPtrI32 = (int *)UsrDat[j]; *FilPtrI32 = *UsrPtrI32; } else { UsrPtrI64 = (int64_t *)UsrDat[j]; *FilPtrI32 = (int)*UsrPtrI64; } } else if(FilTyp[j] == GmfLong) { FilPtrI64 = (int64_t *)FilPos; if(UsrTyp[j] == GmfLong) { UsrPtrI64 = (int64_t *)UsrDat[j]; *FilPtrI64 = *UsrPtrI64; } else { UsrPtrI32 = (int *)UsrDat[j]; *FilPtrI64 = (int64_t)*UsrPtrI32; } } else if(FilTyp[j] == GmfFloat) { FilPtrR32 = (float *)FilPos; if(UsrTyp[j] == GmfFloat) { UsrPtrR32 = (float *)UsrDat[j]; *FilPtrR32 = *UsrPtrR32; } else { UsrPtrR64 = (double *)UsrDat[j]; *FilPtrR32 = (float)*UsrPtrR64; } } else if(FilTyp[j] == GmfDouble) { FilPtrR64 = (double *)FilPos; if(UsrTyp[j] == GmfDouble) { UsrPtrR64 = (double *)UsrDat[j]; *FilPtrR64 = *UsrPtrR64; } else { UsrPtrR32 = (float *)UsrDat[j]; *FilPtrR64 = (double)*UsrPtrR32; } } FilPos += TypSiz[ FilTyp[j] - GmfFloat ]; } } } // Wait for write completion execpt at the first loop iteration if(b) { while(my_aio_error(&aio) == EINPROGRESS); err = my_aio_error(&aio); ret = my_aio_return(&aio); if (err != 0) { printf (" Error at aio_error() : %s\n", strerror (err)); longjmp(msh->err, -46); } if (ret != aio.aio_nbytes) { printf(" Error at aio_return()\n"); longjmp(msh->err, -47); } // Move the write position aio.aio_offset += (size_t)aio.aio_nbytes; } // Swap the buffers if(FilBuf == BckBuf) { aio.aio_buf = BckBuf; FilBuf = FrtBuf; } else { aio.aio_buf = FrtBuf; FilBuf = BckBuf; } } SetFilPos(msh, aio.aio_offset); free(BckBuf); free(FrtBuf); } return(1); } /*----------------------------------------------------------------------------*/ /* Map two HO element's nodes numbering orders */ /*----------------------------------------------------------------------------*/ int GmfSetHONodesOrdering(int64_t MshIdx, int KwdCod, int *BasTab, int *OrdTab) { int i, j, k, flg, NmbNod, NmbCrd; GmfMshSct *msh = (GmfMshSct *)MshIdx; KwdSct *kwd; if( (KwdCod < 1) || (KwdCod > GmfMaxKwd) ) return(0); kwd = &msh->KwdTab[ KwdCod ]; // Find the Bezier indices dimension according to the element's kind switch(KwdCod) { case GmfEdges : NmbNod = 2; NmbCrd = 1; break; case GmfEdgesP2 : NmbNod = 3; NmbCrd = 1; break; case GmfEdgesP3 : NmbNod = 4; NmbCrd = 1; break; case GmfEdgesP4 : NmbNod = 5; NmbCrd = 1; break; case GmfTriangles : NmbNod = 3; NmbCrd = 3; break; case GmfTrianglesP2 : NmbNod = 6; NmbCrd = 3; break; case GmfTrianglesP3 : NmbNod = 10; NmbCrd = 3; break; case GmfTrianglesP4 : NmbNod = 15; NmbCrd = 3; break; case GmfQuadrilaterals : NmbNod = 4; NmbCrd = 2; break; case GmfQuadrilateralsQ2 : NmbNod = 9; NmbCrd = 2; break; case GmfQuadrilateralsQ3 : NmbNod = 16; NmbCrd = 2; break; case GmfQuadrilateralsQ4 : NmbNod = 25; NmbCrd = 2; break; case GmfTetrahedra : NmbNod = 4; NmbCrd = 4; break; case GmfTetrahedraP2 : NmbNod = 10; NmbCrd = 4; break; case GmfTetrahedraP3 : NmbNod = 20; NmbCrd = 4; break; case GmfTetrahedraP4 : NmbNod = 35; NmbCrd = 4; break; case GmfPyramids : NmbNod = 5; NmbCrd = 3; break; case GmfPyramidsP2 : NmbNod = 14; NmbCrd = 3; break; case GmfPyramidsP3 : NmbNod = 30; NmbCrd = 3; break; case GmfPyramidsP4 : NmbNod = 55; NmbCrd = 3; break; case GmfPrisms : NmbNod = 6; NmbCrd = 4; break; case GmfPrismsP2 : NmbNod = 18; NmbCrd = 4; break; case GmfPrismsP3 : NmbNod = 40; NmbCrd = 4; break; case GmfPrismsP4 : NmbNod = 75; NmbCrd = 4; break; case GmfHexahedra : NmbNod = 8; NmbCrd = 3; break; case GmfHexahedraQ2 : NmbNod = 27; NmbCrd = 3; break; case GmfHexahedraQ3 : NmbNod = 64; NmbCrd = 3; break; case GmfHexahedraQ4 : NmbNod =125; NmbCrd = 3; break; default : return(0); } // Free and rebuild the mapping table if there were already one if(kwd->OrdTab) free(kwd->OrdTab); if(!(kwd->OrdTab = malloc(NmbNod * sizeof(int)))) return(0); // Find the corresponding Bezier coordinates from the source table for(i=0;iOrdTab[j] = i; } } // Check the ordering consistency for(i=0;iOrdTab[j] == i) { flg = 1; break; } if(!flg) { for(j=0;jOrdTab[j] = j; return(0); } } return(1); } #endif /*----------------------------------------------------------------------------*/ /* Read an EGADS binary CAD and return the byte flow and its exact byte size */ /*----------------------------------------------------------------------------*/ char *GmfReadByteFlow(int64_t MshIdx, int *NmbByt) { int cod, *WrdTab; size_t i, NmbWrd; GmfMshSct *msh = (GmfMshSct *)MshIdx; // Read and allocate the number of 4-byte words in the byteflow if(!(NmbWrd = GmfStatKwd(MshIdx, GmfByteFlow))) return(NULL); if(!(WrdTab = malloc(NmbWrd * WrdSiz))) return(NULL); // Disable the endianess conversion cod = msh->cod; msh->cod = 1; // Read the exact number of bytes in the byteflow GmfGotoKwd(MshIdx, GmfByteFlow); GmfGetLin(MshIdx, GmfByteFlow, NmbByt); // Read the byteflow as 4-byte blocks for(i=0;icod = cod; return((char *)WrdTab); } /*----------------------------------------------------------------------------*/ /* Write an EGADS binary CAD as an integer table whose first entry is the size*/ /*----------------------------------------------------------------------------*/ int GmfWriteByteFlow(int64_t MshIdx, char *BytTab, int NmbByt) { int i, PadWrd = 0, *WrdTab = (int *)BytTab, NmbWrd = NmbByt / WrdSiz; // Add an extra padding word at the end if needed if(NmbByt > NmbWrd * 4) PadWrd = 1; // Create the keyword with the number of words, not bytes if(!GmfSetKwd(MshIdx, GmfByteFlow, NmbWrd + PadWrd)) return(0); // Reacord the exact number of bytes GmfSetLin(MshIdx, GmfByteFlow, NmbByt); // Write the byteflow as 4-byte words, missing up to 3 endding bytes for(i=0;iFltSiz = FltSiz; } return(msh->FltSiz); } /*----------------------------------------------------------------------------*/ /* Set the floating point precision arbitrarily, regardless the file version */ /*----------------------------------------------------------------------------*/ void GmfSetFloatPrecision(int64_t MshIdx , int FltSiz) { GmfMshSct *msh = (GmfMshSct *)MshIdx; if(FltSiz != 32 && FltSiz != 64) return; msh->FltSiz = FltSiz; GmfSetKwd(MshIdx, GmfFloatingPointPrecision, 1); GmfSetLin(MshIdx, GmfFloatingPointPrecision, FltSiz); } /*----------------------------------------------------------------------------*/ /* Find every kw present in a meshfile */ /*----------------------------------------------------------------------------*/ static int ScaKwdTab(GmfMshSct *msh) { int KwdCod, c; int64_t NexPos, EndPos, LstPos; char str[ GmfStrSiz ]; if(msh->typ & Asc) { // Scan each string in the file until the end while(fscanf(msh->hdl, "%100s", str) != EOF) { // Fast test in order to reject quickly the numeric values if(isalpha(str[0])) { // Search which kwd code this string is associated with, then get its // header and save the curent position in file (just before the data) for(KwdCod=1; KwdCod<= GmfMaxKwd; KwdCod++) if(!strcmp(str, GmfKwdFmt[ KwdCod ][0])) { ScaKwdHdr(msh, KwdCod); break; } } else if(str[0] == '#') while((c = fgetc(msh->hdl)) != '\n' && c != EOF); } } else { // Get file size EndPos = GetFilSiz(msh); LstPos = -1; // Jump through kwd positions in the file do { // Get the kwd code and the next kwd position ScaWrd(msh, ( char *)&KwdCod); NexPos = GetPos(msh); // Make sure the flow does not move beyond the file size if(NexPos > EndPos) longjmp(msh->err, -24); // And check that it does not move back if(NexPos && (NexPos <= LstPos)) longjmp(msh->err, -30); LstPos = NexPos; // Check if this kwd belongs to this mesh version if( (KwdCod >= 1) && (KwdCod <= GmfMaxKwd) ) ScaKwdHdr(msh, KwdCod); // Go to the next kwd if(NexPos && !(SetFilPos(msh, NexPos))) longjmp(msh->err, -25); }while(NexPos && (KwdCod != GmfEnd)); } return(1); } /*----------------------------------------------------------------------------*/ /* Read and setup the keyword's header */ /*----------------------------------------------------------------------------*/ static void ScaKwdHdr(GmfMshSct *msh, int KwdCod) { int i; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; if(!strcmp("i", GmfKwdFmt[ KwdCod ][1])) if(msh->typ & Asc) safe_fscanf(msh->hdl, INT64_T_FMT, &kwd->NmbLin, msh->err); else if(msh->ver <= 3) { ScaWrd(msh, (unsigned char *)&i); kwd->NmbLin = i; } else ScaDblWrd(msh, (unsigned char *)&kwd->NmbLin); else kwd->NmbLin = 1; if(!strcmp("sr", GmfKwdFmt[ KwdCod ][2]) || !strcmp("hr", GmfKwdFmt[ KwdCod ][2]) ) { if(msh->typ & Asc) { safe_fscanf(msh->hdl, "%d", &kwd->NmbTyp, msh->err); for(i=0;iNmbTyp;i++) safe_fscanf(msh->hdl, "%d", &kwd->TypTab[i], msh->err); // Scan two extra fields for HO solutions: deg and nmb Nodes if(!strcmp("hr", GmfKwdFmt[ KwdCod ][2])) { safe_fscanf(msh->hdl, "%d", &kwd->deg, msh->err); safe_fscanf(msh->hdl, "%d", &kwd->NmbNod, msh->err); } else { kwd->deg = 0; kwd->NmbNod = 1; } } else { ScaWrd(msh, (unsigned char *)&kwd->NmbTyp); for(i=0;iNmbTyp;i++) ScaWrd(msh, (unsigned char *)&kwd->TypTab[i]); // Scan two extra fields for HO solutions: deg and nmb Nodes if(!strcmp("hr", GmfKwdFmt[ KwdCod ][2])) { ScaWrd(msh, (unsigned char *)&kwd->deg); ScaWrd(msh, (unsigned char *)&kwd->NmbNod); } else { kwd->deg = 0; kwd->NmbNod = 1; } } } ExpFmt(msh, KwdCod); kwd->pos = GetFilPos(msh); } /*----------------------------------------------------------------------------*/ /* Expand the compacted format and compute the line size */ /*----------------------------------------------------------------------------*/ static void ExpFmt(GmfMshSct *msh, int KwdCod) { int i, j, TmpSiz=0, IntWrd, FltWrd; char chr; const char *InpFmt = GmfKwdFmt[ KwdCod ][2]; KwdSct *kwd = &msh->KwdTab[ KwdCod ]; // Set the kwd's type if(!strlen(GmfKwdFmt[ KwdCod ][1])) kwd->typ = InfKwd; else if( !strcmp(InpFmt, "sr") || !strcmp(InpFmt, "hr") ) kwd->typ = SolKwd; else kwd->typ = RegKwd; // Get the solution-field's size if(kwd->typ == SolKwd) for(i=0;iNmbTyp;i++) switch(kwd->TypTab[i]) { case GmfSca : TmpSiz += 1; break; case GmfVec : TmpSiz += msh->dim; break; case GmfSymMat : TmpSiz += (msh->dim * (msh->dim+1)) / 2; break; case GmfMat : TmpSiz += msh->dim * msh->dim; break; } // Scan each character from the format string i = kwd->SolSiz = kwd->NmbWrd = 0; while(i < (int)strlen(InpFmt)) { chr = InpFmt[ i++ ]; if(chr == 'd') { chr = InpFmt[i++]; for(j=0;jdim;j++) kwd->fmt[ kwd->SolSiz++ ] = chr; } else if((chr == 's')||(chr == 'h')) { chr = InpFmt[i++]; for(j=0;jfmt[ kwd->SolSiz++ ] = chr; } else kwd->fmt[ kwd->SolSiz++ ] = chr; } if(msh->FltSiz == 32) FltWrd = 1; else FltWrd = 2; if(msh->ver <= 3) IntWrd = 1; else IntWrd = 2; for(i=0;iSolSiz;i++) switch(kwd->fmt[i]) { case 'i' : kwd->NmbWrd += IntWrd; break; case 'c' : kwd->NmbWrd += FilStrSiz; break; case 'r' : kwd->NmbWrd += FltWrd;break; } // HO solution: duplicate the format as many times as the number of nodes if( !strcmp(InpFmt, "hr") && (kwd->NmbNod > 1) ) { for(i=1;i<=kwd->NmbNod;i++) for(j=0;jSolSiz;j++) kwd->fmt[ i * kwd->SolSiz + j ] = kwd->fmt[j]; kwd->SolSiz *= kwd->NmbNod; kwd->NmbWrd *= kwd->NmbNod; } // Count the final number of intergers and reals needed by the Fortran API for(i=0;iSolSiz;i++) if(kwd->fmt[i] == 'i') kwd->NmbInt++; else if(kwd->fmt[i] == 'r') kwd->NmbDbl++; } /*----------------------------------------------------------------------------*/ /* Read a four bytes word from a mesh file */ /*----------------------------------------------------------------------------*/ static void ScaWrd(GmfMshSct *msh, void *ptr) { #ifdef WITH_GMF_AIO if(read(msh->FilDes, ptr, WrdSiz) != WrdSiz) #else if(fread(ptr, WrdSiz, 1, msh->hdl) != 1) #endif longjmp(msh->err, -26); if(msh->cod != 1) SwpWrd((char *)ptr, WrdSiz); } /*----------------------------------------------------------------------------*/ /* Read an eight bytes word from a mesh file */ /*----------------------------------------------------------------------------*/ static void ScaDblWrd(GmfMshSct *msh, void *ptr) { #ifdef WITH_GMF_AIO if(read(msh->FilDes, ptr, WrdSiz * 2) != WrdSiz * 2) #else if( fread(ptr, WrdSiz, 2, msh->hdl) != 2 ) #endif longjmp(msh->err, -27); if(msh->cod != 1) SwpWrd((char *)ptr, 2 * WrdSiz); } /*----------------------------------------------------------------------------*/ /* Read a 4 or 8 bytes position in mesh file */ /*----------------------------------------------------------------------------*/ static int64_t GetPos(GmfMshSct *msh) { int IntVal; int64_t pos; if(msh->ver >= 3) ScaDblWrd(msh, (unsigned char*)&pos); else { ScaWrd(msh, (unsigned char*)&IntVal); pos = (int64_t)IntVal; } return(pos); } /*----------------------------------------------------------------------------*/ /* Write a four bytes word to a mesh file */ /*----------------------------------------------------------------------------*/ static void RecWrd(GmfMshSct *msh, const void *wrd) { // [Bruno] added error control #ifdef WITH_GMF_AIO if(write(msh->FilDes, wrd, WrdSiz) != WrdSiz) #else if(fwrite(wrd, WrdSiz, 1, msh->hdl) != 1) #endif longjmp(msh->err,-28); } /*----------------------------------------------------------------------------*/ /* Write an eight bytes word to a mesh file */ /*----------------------------------------------------------------------------*/ static void RecDblWrd(GmfMshSct *msh, const void *wrd) { // [Bruno] added error control #ifdef WITH_GMF_AIO if(write(msh->FilDes, wrd, WrdSiz * 2) != WrdSiz*2) #else if(fwrite(wrd, WrdSiz, 2, msh->hdl) != 2) #endif longjmp(msh->err,-29); } /*----------------------------------------------------------------------------*/ /* Write a block of four bytes word to a mesh file */ /*----------------------------------------------------------------------------*/ static void RecBlk(GmfMshSct *msh, const void *blk, int siz) { // Copy this line-block into the main mesh buffer if(siz) { memcpy(&msh->blk[ msh->pos ], blk, (size_t)(siz * WrdSiz)); msh->pos += siz * WrdSiz; } // When the buffer is full or this procedure is APIF77ed with a 0 size, // flush the cache on disk if( (msh->pos > BufSiz) || (!siz && msh->pos) ) { #ifdef GMF_WINDOWS /* * [Bruno] TODO: check that msh->pos is smaller * than 4G (fits in 32 bits). * Note: for now, when trying to write more than 4Gb, it will * trigger an error (longjmp). * As far as I understand: * Given that this function just flushes the cache, and given that * the cache size is 10000 words, this is much much smaller than 4Gb * so there is probably no problem. */ #ifdef WITH_GMF_AIO if(write(msh->FilDes, msh->blk, (int)msh->pos) != (ssize_t)msh->pos) #else if(fwrite(msh->blk, 1, (size_t)msh->pos, msh->hdl) != msh->pos) #endif longjmp(msh->err, -30); #else #ifdef WITH_GMF_AIO if(write(msh->FilDes, msh->blk, msh->pos) != (ssize_t)msh->pos) #else if(fwrite(msh->blk, 1, msh->pos, msh->hdl) != msh->pos) #endif longjmp(msh->err, -31); #endif msh->pos = 0; } } /*----------------------------------------------------------------------------*/ /* Write a 4 or 8 bytes position in a mesh file */ /*----------------------------------------------------------------------------*/ static void SetPos(GmfMshSct *msh, int64_t pos) { int IntVal; if(msh->ver >= 3) RecDblWrd(msh, (unsigned char*)&pos); else { IntVal = (int)pos; RecWrd(msh, (unsigned char*)&IntVal); } } /*----------------------------------------------------------------------------*/ /* Endianness conversion */ /*----------------------------------------------------------------------------*/ static void SwpWrd(char *wrd, int siz) { char swp; int i; for(i=0;ityp & Bin) return((lseek(msh->FilDes, (size_t)pos, 0) != -1)); else return((MYFSEEK(msh->hdl, (size_t)pos, SEEK_SET) == 0)); #else return((MYFSEEK(msh->hdl, (size_t)pos, SEEK_SET) == 0)); #endif } /*----------------------------------------------------------------------------*/ /* Get current position in a file */ /*----------------------------------------------------------------------------*/ static int64_t GetFilPos(GmfMshSct *msh) { #ifdef WITH_GMF_AIO if(msh->typ & Bin) return(lseek(msh->FilDes, 0, 1)); else return(MYFTELL(msh->hdl)); #else return(MYFTELL(msh->hdl)); #endif } /*----------------------------------------------------------------------------*/ /* Move the position to the end of file and return the size */ /*----------------------------------------------------------------------------*/ static int64_t GetFilSiz(GmfMshSct *msh) { int64_t CurPos, EndPos = 0; if(msh->typ & Bin) { #ifdef WITH_GMF_AIO CurPos = lseek(msh->FilDes, 0, 1); EndPos = lseek(msh->FilDes, 0, 2); lseek(msh->FilDes, (size_t)CurPos, 0); #else CurPos = MYFTELL(msh->hdl); if(MYFSEEK(msh->hdl, 0, SEEK_END) != 0) longjmp(msh->err, -32); EndPos = MYFTELL(msh->hdl); if(MYFSEEK(msh->hdl, (size_t)CurPos, SEEK_SET) != 0) longjmp(msh->err, -33); #endif } else { CurPos = MYFTELL(msh->hdl); if(MYFSEEK(msh->hdl, 0, SEEK_END) != 0) longjmp(msh->err, -34); EndPos = MYFTELL(msh->hdl); if(MYFSEEK(msh->hdl, (size_t)CurPos, SEEK_SET) != 0) longjmp(msh->err, -35); } return(EndPos); } /*----------------------------------------------------------------------------*/ /* Fortran 77 API */ /*----------------------------------------------------------------------------*/ int64_t APIF77(gmfopenmeshf77)( char *FilNam, int *mod, int *ver, int *dim, long int StrSiz ) { int i = 0; char TmpNam[ GmfStrSiz ]; if(StrSiz <= 0) return(0); // Trim trailing spaces from the fortran string while(isspace(FilNam[ StrSiz-1 ])) StrSiz--; for(i=0;iKwdTab[ *KwdCod ]; // Fortran call to getblock uses the GmfArgTab mode where pointers are passed // through tables: types[], vec sizes[], begin pointers[] and end pointers[] for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'i') { TypTab[i] = GmfInt; SizTab[i] = 1; if( (F77RefFlg[ *KwdCod ]) && (i == kwd->SolSiz-1) ) { BegTab[i] = (char *)BegRef; EndTab[i] = (char *)EndRef; } else { BegTab[i] = (char *)&BegInt[i]; EndTab[i] = (char *)&EndInt[i]; } }else if(kwd->fmt[i] == 'r') { TypTab[i] = GmfDouble; SizTab[i] = 1; BegTab[i] = (char *)&BegDbl[i]; EndTab[i] = (char *)&EndDbl[i]; } } return(GmfGetBlock( *MshIdx, *KwdCod, *BegIdx, *EndIdx, *MapTyp, MatTab, NULL, GmfArgTab, TypTab, SizTab, BegTab, EndTab )); } int APIF77(gmfsetblockf77)(int64_t *MshIdx, int *KwdCod, int *BegIdx, int *EndIdx, int *MapTyp, int *MatTab, int *BegInt, int *EndInt, double *BegDbl, double *EndDbl, int *BegRef, int *EndRef) { int i, TypTab[ MaxArg ], SizTab[ MaxArg ]; char *BegTab[ MaxArg ], *EndTab[ MaxArg ]; GmfMshSct *msh = (GmfMshSct *)*MshIdx; KwdSct *kwd = &msh->KwdTab[ *KwdCod ]; // Fortran call to setblock uses the GmfArgTab mode where pointers are passed // through tables: types[], vec sizes[], begin pointers[] and end pointers[] for(i=0;iSolSiz;i++) { if(kwd->fmt[i] == 'i') { TypTab[i] = GmfInt; SizTab[i] = 1; if( (F77RefFlg[ *KwdCod ]) && (i == kwd->SolSiz-1) ) { BegTab[i] = (char *)BegRef; EndTab[i] = (char *)EndRef; } else { BegTab[i] = (char *)&BegInt[i]; EndTab[i] = (char *)&EndInt[i]; } }else if(kwd->fmt[i] == 'r') { TypTab[i] = GmfDouble; SizTab[i] = 1; BegTab[i] = (char *)&BegDbl[i]; EndTab[i] = (char *)&EndDbl[i]; } } return(GmfSetBlock( *MshIdx, *KwdCod, *BegIdx, *EndIdx, *MapTyp, MatTab, NULL, GmfArgTab, TypTab, SizTab, BegTab, EndTab )); } libMeshb-7.80/sources/libmeshb7.h000066400000000000000000000225301456732543400167240ustar00rootroot00000000000000 /*----------------------------------------------------------------------------*/ /* */ /* LIBMESHB V7.80 */ /* */ /*----------------------------------------------------------------------------*/ /* */ /* Description: handle .meshb file format I/O */ /* Author: Loic MARECHAL */ /* Creation date: dec 09 1999 */ /* Last modification: feb 27 2024 */ /* */ /*----------------------------------------------------------------------------*/ // [Bruno] get PRINTF_INT64_MODIFIER // #include #ifndef LIBMESHB7_H #define LIBMESHB7_H #include /*----------------------------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------------------------*/ #define GmfStrSiz 1024 #define GmfMaxTyp 1000 #define GmfMaxKwd GmfLastKeyword - 1 #define GmfMshVer 1 #define GmfRead 1 #define GmfWrite 2 #define GmfSca 1 #define GmfVec 2 #define GmfSymMat 3 #define GmfMat 4 #define GmfFloat 8 #define GmfDouble 9 #define GmfInt 10 #define GmfLong 11 #define GmfFloatVec 12 #define GmfDoubleVec 13 #define GmfIntTab 14 #define GmfIntVec 14 #define GmfLongTab 15 #define GmfLongVec 15 #define GmfArgTab 100 #define GmfArgLst 101 enum GmfKwdCod { GmfReserved1, GmfVersionFormatted, GmfReserved2, GmfDimension, GmfVertices, GmfEdges, GmfTriangles, GmfQuadrilaterals, GmfTetrahedra, GmfPrisms, GmfHexahedra, GmfReserved3, GmfReserved4, GmfCorners, GmfRidges, GmfRequiredVertices, GmfRequiredEdges, GmfRequiredTriangles, GmfRequiredQuadrilaterals, GmfTangentAtEdgeVertices, GmfNormalAtVertices, GmfNormalAtTriangleVertices, GmfNormalAtQuadrilateralVertices, GmfAngleOfCornerBound, GmfTrianglesP2, GmfEdgesP2, GmfSolAtPyramids, GmfQuadrilateralsQ2, GmfISolAtPyramids, GmfSubDomainFromGeom, GmfTetrahedraP2, GmfFault_NearTri, GmfFault_Inter, GmfHexahedraQ2, GmfExtraVerticesAtEdges, GmfExtraVerticesAtTriangles, GmfExtraVerticesAtQuadrilaterals, GmfExtraVerticesAtTetrahedra, GmfExtraVerticesAtPrisms, GmfExtraVerticesAtHexahedra, GmfVerticesOnGeometricVertices, GmfVerticesOnGeometricEdges, GmfVerticesOnGeometricTriangles, GmfVerticesOnGeometricQuadrilaterals, GmfEdgesOnGeometricEdges, GmfFault_FreeEdge, GmfPolyhedra, GmfPolygons, GmfFault_Overlap, GmfPyramids, GmfBoundingBox, GmfReserved5, GmfPrivateTable, GmfFault_BadShape, GmfEnd, GmfTrianglesOnGeometricTriangles, GmfTrianglesOnGeometricQuadrilaterals, GmfQuadrilateralsOnGeometricTriangles, GmfQuadrilateralsOnGeometricQuadrilaterals, GmfTangents, GmfNormals, GmfTangentAtVertices, GmfSolAtVertices, GmfSolAtEdges, GmfSolAtTriangles, GmfSolAtQuadrilaterals, GmfSolAtTetrahedra, GmfSolAtPrisms, GmfSolAtHexahedra, GmfDSolAtVertices, GmfISolAtVertices, GmfISolAtEdges, GmfISolAtTriangles, GmfISolAtQuadrilaterals, GmfISolAtTetrahedra, GmfISolAtPrisms, GmfISolAtHexahedra, GmfIterations, GmfTime, GmfFault_SmallTri, GmfCoarseHexahedra, GmfComments, GmfPeriodicVertices, GmfPeriodicEdges, GmfPeriodicTriangles, GmfPeriodicQuadrilaterals, GmfPrismsP2, GmfPyramidsP2, GmfQuadrilateralsQ3, GmfQuadrilateralsQ4, GmfTrianglesP3, GmfTrianglesP4, GmfEdgesP3, GmfEdgesP4, GmfIRefGroups, GmfDRefGroups, GmfTetrahedraP3, GmfTetrahedraP4, GmfHexahedraQ3, GmfHexahedraQ4, GmfPyramidsP3, GmfPyramidsP4, GmfPrismsP3, GmfPrismsP4, GmfHOSolAtEdgesP1, GmfHOSolAtEdgesP2, GmfHOSolAtEdgesP3, GmfHOSolAtTrianglesP1, GmfHOSolAtTrianglesP2, GmfHOSolAtTrianglesP3, GmfHOSolAtQuadrilateralsQ1, GmfHOSolAtQuadrilateralsQ2, GmfHOSolAtQuadrilateralsQ3, GmfHOSolAtTetrahedraP1, GmfHOSolAtTetrahedraP2, GmfHOSolAtTetrahedraP3, GmfHOSolAtPyramidsP1, GmfHOSolAtPyramidsP2, GmfHOSolAtPyramidsP3, GmfHOSolAtPrismsP1, GmfHOSolAtPrismsP2, GmfHOSolAtPrismsP3, GmfHOSolAtHexahedraQ1, GmfHOSolAtHexahedraQ2, GmfHOSolAtHexahedraQ3, GmfBezierBasis, GmfByteFlow, GmfEdgesP2Ordering, GmfEdgesP3Ordering, GmfTrianglesP2Ordering, GmfTrianglesP3Ordering, GmfQuadrilateralsQ2Ordering, GmfQuadrilateralsQ3Ordering, GmfTetrahedraP2Ordering, GmfTetrahedraP3Ordering, GmfPyramidsP2Ordering, GmfPyramidsP3Ordering, GmfPrismsP2Ordering, GmfPrismsP3Ordering, GmfHexahedraQ2Ordering, GmfHexahedraQ3Ordering, GmfEdgesP1Ordering, GmfEdgesP4Ordering, GmfTrianglesP1Ordering, GmfTrianglesP4Ordering, GmfQuadrilateralsQ1Ordering, GmfQuadrilateralsQ4Ordering, GmfTetrahedraP1Ordering, GmfTetrahedraP4Ordering, GmfPyramidsP1Ordering, GmfPyramidsP4Ordering, GmfPrismsP1Ordering, GmfPrismsP4Ordering, GmfHexahedraQ1Ordering, GmfHexahedraQ4Ordering, GmfFloatingPointPrecision, GmfHOSolAtEdgesP4, GmfHOSolAtTrianglesP4, GmfHOSolAtQuadrilateralsQ4, GmfHOSolAtTetrahedraP4, GmfHOSolAtPyramidsP4, GmfHOSolAtPrismsP4, GmfHOSolAtHexahedraQ4, GmfHOSolAtEdgesP1NodesPositions, GmfHOSolAtEdgesP2NodesPositions, GmfHOSolAtEdgesP3NodesPositions, GmfHOSolAtEdgesP4NodesPositions, GmfHOSolAtTrianglesP1NodesPositions, GmfHOSolAtTrianglesP2NodesPositions, GmfHOSolAtTrianglesP3NodesPositions, GmfHOSolAtTrianglesP4NodesPositions, GmfHOSolAtQuadrilateralsQ1NodesPositions, GmfHOSolAtQuadrilateralsQ2NodesPositions, GmfHOSolAtQuadrilateralsQ3NodesPositions, GmfHOSolAtQuadrilateralsQ4NodesPositions, GmfHOSolAtTetrahedraP1NodesPositions, GmfHOSolAtTetrahedraP2NodesPositions, GmfHOSolAtTetrahedraP3NodesPositions, GmfHOSolAtTetrahedraP4NodesPositions, GmfHOSolAtPyramidsP1NodesPositions, GmfHOSolAtPyramidsP2NodesPositions, GmfHOSolAtPyramidsP3NodesPositions, GmfHOSolAtPyramidsP4NodesPositions, GmfHOSolAtPrismsP1NodesPositions, GmfHOSolAtPrismsP2NodesPositions, GmfHOSolAtPrismsP3NodesPositions, GmfHOSolAtPrismsP4NodesPositions, GmfHOSolAtHexahedraQ1NodesPositions, GmfHOSolAtHexahedraQ2NodesPositions, GmfHOSolAtHexahedraQ3NodesPositions, GmfHOSolAtHexahedraQ4NodesPositions, GmfEdgesReferenceElement, GmfTriangleReferenceElement, GmfQuadrilateralReferenceElement, GmfTetrahedronReferenceElement, GmfPyramidReferenceElement, GmfPrismReferenceElement, GmfHexahedronReferenceElement, GmfBoundaryLayers, GmfReferenceStrings, GmfPrisms9, GmfHexahedra12, GmfQuadrilaterals6, GmfBoundaryPolygonHeaders, GmfBoundaryPolygonVertices, GmfInnerPolygonHeaders, GmfInnerPolygonVertices, GmfPolyhedraHeaders, GmfPolyhedraFaces, GmfDomains, GmfVerticesGID, GmfEdgesGID, GmfTrianglesGID, GmfQuadrilateralsGID, GmfTetrahedraGID, GmfPyramidsGID, GmfPrismsGID, GmfHexahedraGID, GmfSolAtBoundaryPolygons, GmfSolAtPolyhedra, GmfVerticesOnGeometryNodes, GmfVerticesOnGeometryEdges, GmfEdgesOnGeometryEdges, GmfVerticesOnGeometryFaces, GmfEdgesOnGeometryFaces, GmfTrianglesOnGeometryFaces, GmfQuadrialteralsOnGeometryFaces, GmfMeshOnGeometry, GmfLastKeyword }; #ifdef __cplusplus extern "C" { #endif /*----------------------------------------------------------------------------*/ /* Public procedures */ /*----------------------------------------------------------------------------*/ extern int64_t GmfOpenMesh (const char *, int, ...); extern int GmfCloseMesh (int64_t); extern int64_t GmfStatKwd (int64_t, int, ...); extern int GmfSetKwd (int64_t, int, int64_t, ...); extern int GmfGotoKwd (int64_t, int); extern int GmfGetLin (int64_t, int, ...); extern int GmfSetLin (int64_t, int, ...); extern int GmfGetBlock (int64_t, int, int64_t, int64_t, int, void *, void *, ...); extern int GmfSetBlock (int64_t, int, int64_t, int64_t, int, void *, void *, ...); extern char *GmfReadByteFlow (int64_t, int *); extern int GmfWriteByteFlow (int64_t, char *, int); extern int GmfSetHONodesOrdering(int64_t, int, int *, int *); extern int GmfGetFloatPrecision (int64_t); extern void GmfSetFloatPrecision (int64_t, int); /*----------------------------------------------------------------------------*/ /* Transmesh private API */ /*----------------------------------------------------------------------------*/ #ifdef TRANSMESH extern int GmfMaxRefTab[ GmfMaxKwd + 1 ]; extern const char *GmfKwdFmt[ GmfMaxKwd + 1 ][3]; extern int GmfCpyLin(int64_t, int64_t, int); #endif #ifdef __cplusplus } // end extern "C" #endif #endif libMeshb-7.80/sources/libmeshb7.ins000066400000000000000000000473271456732543400173010ustar00rootroot00000000000000 c---------------------------------------------------------- c c LIBMESH V 7.80 c c---------------------------------------------------------- c c Description: handles .meshb file format I/O c Author: Loic MARECHAL c Creation date: dec 08 2015 c Last modification: feb 27 2024 c c---------------------------------------------------------- c Procedures definition external gmfopenmeshf77 external gmfclosemeshf77 external gmfstatkwdf77 external gmfsetkwdf77 external gmfgotokwdf77 external gmfsethonodesorderingf77 external gmfgetlinef77 external gmfsetlinef77 external gmfgetblockf77 external gmfsetblockf77 integer*8 gmfopenmeshf77 integer gmfclosemeshf77 integer gmfstatkwdf77 integer gmfsetkwdf77 integer gmfgotokwdf77 integer gmfsethonodesorderingf77 integer gmfgetlinef77 integer gmfsetlinef77 integer gmfgetblockf77 integer gmfsetblockf77 c Parameters definition integer gmfmaxtyp integer gmfmaxkwd integer gmfread integer gmfwrite integer gmfsca integer gmfvec integer gmfsymmat integer gmfmat integer gmffloat integer gmfdouble integer gmfint integer gmflong integer gmfinttab integer gmflongtab integer gmffloatvec integer gmfdoublevec integer gmfintvec integer gmflongvec integer gmfargtab integer gmfarglst parameter (gmfmaxtyp=1000) parameter (gmfmaxkwd=227) parameter (gmfread=1) parameter (gmfwrite=2) parameter (gmfsca=1) parameter (gmfvec=2) parameter (gmfsymmat=3) parameter (gmfmat=4) parameter (gmffloat=8) parameter (gmfdouble=9) parameter (gmfint=10) parameter (gmflong=11) parameter (gmfinttab=14) parameter (gmflongtab=15) parameter (gmffloatvec=12) parameter (gmfdoublevec=13) parameter (gmfintvec=14) parameter (gmflongvec=15) parameter (gmfargtab=100) parameter (gmfarglst=101) c Keywords list integer gmfmeshversionformatted integer gmfdimension integer gmfvertices integer gmfedges integer gmftriangles integer gmfquadrilaterals integer gmftetrahedra integer gmfprisms integer gmfhexahedra integer gmfiterationsall integer gmftimesall integer gmfcorners integer gmfridges integer gmfrequiredvertices integer gmfrequirededges integer gmfrequiredtriangles integer gmfrequiredquadrilaterals integer gmftangentatedgevertices integer gmfnormalatvertices integer gmfnormalattrianglevertices integer gmfnormalatquadrilateralvertices integer gmfangleofcornerbound integer gmftrianglesp2 integer gmfedgesp2 integer gmfsolatpyramids integer gmfquadrilateralsq2 integer gmfisolatpyramids integer gmfsubdomainfromgeom integer gmftetrahedrap2 integer gmffault_neartri integer gmffault_inter integer gmfhexahedraq2 integer gmfextraverticesatedges integer gmfextraverticesattriangles integer gmfextraverticesatquadrilaterals integer gmfextraverticesattetrahedra integer gmfextraverticesatprisms integer gmfextraverticesathexahedra integer gmfverticesongeometricvertices integer gmfverticesongeometricedges integer gmfverticesongeometrictriangles integer gmfverticesongeometricquadrilaterals integer gmfedgesongeometricedges integer gmffault_freeedge integer gmfpolyhedra integer gmfpolygons integer gmffault_overlap integer gmfpyramids integer gmfboundingbox integer gmfbody integer gmfprivatetable integer gmffault_badshape integer gmfend integer gmftrianglesongeometrictriangles integer gmftrianglesongeometricquadrilaterals integer gmfquadrilateralsongeometrictriangles integer gmfquadrilateralsongeometricquadrilaterals integer gmftangents integer gmfnormals integer gmftangentatvertices integer gmfsolatvertices integer gmfsolatedges integer gmfsolattriangles integer gmfsolatquadrilaterals integer gmfsolattetrahedra integer gmfsolatprisms integer gmfsolathexahedra integer gmfdsolatvertices integer gmfisolatvertices integer gmfisolatedges integer gmfisolattriangles integer gmfisolatquadrilaterals integer gmfisolattetrahedra integer gmfisolatprisms integer gmfisolathexahedra integer gmfiterations integer gmftime integer gmffault_smalltri integer gmfcoarsehexahedra integer gmfcomments integer gmfperiodicvertices integer gmfperiodicedges integer gmfperiodictriangles integer gmfperiodicquadrilaterals integer gmfprismsp2 integer gmfpyramidsp2 integer gmfquadrilateralsq3 integer gmfquadrilateralsq4 integer gmftrianglesp3 integer gmftrianglesp4 integer gmfedgesp3 integer gmfedgesp4 integer gmfirefgroups integer gmfdrefgroups integer gmftetrahedrap3 integer gmftetrahedrap4 integer gmfhexahedraq3 integer gmfhexahedraq4 integer gmfpyramidsp3 integer gmfpyramidsp4 integer gmfprismsp3 integer gmfprismsp4 integer gmfhosolatedgesp1 integer gmfhosolatedgesp2 integer gmfhosolatedgesp3 integer gmfhosolattrianglesp1 integer gmfhosolattrianglesp2 integer gmfhosolattrianglesp3 integer gmfhosolatquadrilateralsq1 integer gmfhosolatquadrilateralsq2 integer gmfhosolatquadrilateralsq3 integer gmfhosolattetrahedrap1 integer gmfhosolattetrahedrap2 integer gmfhosolattetrahedrap3 integer gmfhosolatpyramidsp1 integer gmfhosolatpyramidsp2 integer gmfhosolatpyramidsp3 integer gmfhosolatprismsp1 integer gmfhosolatprismsp2 integer gmfhosolatprismsp3 integer gmfhosolathexahedraq1 integer gmfhosolathexahedraq2 integer gmfhosolathexahedraq3 integer gmfbezierbasis integer gmfbyteflow integer gmfedgesp2ordering integer gmfedgesp3ordering integer gmftrianglesp2ordering integer gmftrianglesp3ordering integer gmfquadrilateralsq2ordering integer gmfquadrilateralsq3ordering integer gmftetrahedrap2ordering integer gmftetrahedrap3ordering integer gmfpyramidsp2ordering integer gmfpyramidsp3ordering integer gmfprismsp2ordering integer gmfprismsp3ordering integer gmfhexahedraq2ordering integer gmfhexahedraq3ordering integer gmfedgesp1ordering integer gmfedgesp4ordering integer gmftrianglesp1ordering integer gmftrianglesp4ordering integer gmfquadrilateralsq1ordering integer gmfquadrilateralsq4ordering integer gmftetrahedrap1ordering integer gmftetrahedrap4ordering integer gmfpyramidsp1ordering integer gmfpyramidsp4ordering integer gmfprismsp1ordering integer gmfprismsp4ordering integer gmfhexahedraq1ordering integer gmfhexahedraq4ordering integer gmffloatingpointprecision integer gmfhosolatedgesp4 integer gmfhosolattrianglesp4 integer gmfhosolatquadrilateralsq4 integer gmfhosolattetrahedrap4 integer gmfhosolatpyramidsp4 integer gmfhosolatprismsp4 integer gmfhosolathexahedraq4 integer gmfhosolatedgesp1nodespositions integer gmfhosolatedgesp2nodespositions integer gmfhosolatedgesp3nodespositions integer gmfhosolatedgesp4nodespositions integer gmfhosolattrianglesp1nodespositions integer gmfhosolattrianglesp2nodespositions integer gmfhosolattrianglesp3nodespositions integer gmfhosolattrianglesp4nodespositions integer gmfhosolatquadrilateralsq1nodespositions integer gmfhosolatquadrilateralsq2nodespositions integer gmfhosolatquadrilateralsq3nodespositions integer gmfhosolatquadrilateralsq4nodespositions integer gmfhosolattetrahedrap1nodespositions integer gmfhosolattetrahedrap2nodespositions integer gmfhosolattetrahedrap3nodespositions integer gmfhosolattetrahedrap4nodespositions integer gmfhosolatpyramidsp1nodespositions integer gmfhosolatpyramidsp2nodespositions integer gmfhosolatpyramidsp3nodespositions integer gmfhosolatpyramidsp4nodespositions integer gmfhosolatprismsp1nodespositions integer gmfhosolatprismsp2nodespositions integer gmfhosolatprismsp3nodespositions integer gmfhosolatprismsp4nodespositions integer gmfhosolathexahedraq1nodespositions integer gmfhosolathexahedraq2nodespositions integer gmfhosolathexahedraq3nodespositions integer gmfhosolathexahedraq4nodespositions integer gmfedgesreferenceelement integer gmftrianglereferenceelement integer gmfquadrilateralreferenceelement integer gmftetrahedronreferenceelement integer gmfpyramidreferenceelement integer gmfprismreferenceelement integer gmfhexahedronreferenceelement integer gmfboundarylayers integer gmfreferencestrings integer gmfprisms9 integer gmfhexahedra12 integer gmfquadrilaterals6 integer gmfboundarypolygonheaders integer gmfboundarypolygonvertices integer gmfinnerpolygonheaders integer gmfinnerpolygonvertices integer gmfpolyhedraheaders integer gmfpolyhedrafaces integer gmfdomains integer gmfverticesgid integer gmfedgesgid integer gmftrianglesgid integer gmfquadrilateralsgid integer gmftetrahedragid integer gmfpyramidsgid integer gmfprismsgid integer gmfhexahedragid integer gmfsolatboundarypolygons integer gmfsolatpolyhedra integer gmfverticesongeometrynodes integer gmfverticesongeometryedges integer gmfedgesongeometryedges integer gmfverticesongeometryfaces integer gmfedgesongeometryfaces integer gmftrianglesongeometryfaces integer gmfquadrialteralsongeometryfaces integer gmfmeshongeometry parameter (gmfmeshversionformatted=1) parameter (gmfdimension=3) parameter (gmfvertices=4) parameter (gmfedges=5) parameter (gmftriangles=6) parameter (gmfquadrilaterals=7) parameter (gmftetrahedra=8) parameter (gmfprisms=9) parameter (gmfhexahedra=10) parameter (gmfiterationsall=11) parameter (gmftimesall=12) parameter (gmfcorners=13) parameter (gmfridges=14) parameter (gmfrequiredvertices=15) parameter (gmfrequirededges=16) parameter (gmfrequiredtriangles=17) parameter (gmfrequiredquadrilaterals=18) parameter (gmftangentatedgevertices=19) parameter (gmfnormalatvertices=20) parameter (gmfnormalattrianglevertices=21) parameter (gmfnormalatquadrilateralvertices=22) parameter (gmfangleofcornerbound=23) parameter (gmftrianglesp2=24) parameter (gmfedgesp2=25) parameter (gmfsolatpyramids=26) parameter (gmfquadrilateralsq2=27) parameter (gmfisolatpyramids=28) parameter (gmfsubdomainfromgeom=29) parameter (gmftetrahedrap2=30) parameter (gmffault_neartri=31) parameter (gmffault_inter=32) parameter (gmfhexahedraq2=33) parameter (gmfextraverticesatedges=34) parameter (gmfextraverticesattriangles=35) parameter (gmfextraverticesatquadrilaterals=36) parameter (gmfextraverticesattetrahedra=37) parameter (gmfextraverticesatprisms=38) parameter (gmfextraverticesathexahedra=39) parameter (gmfverticesongeometricvertices=40) parameter (gmfverticesongeometricedges=41) parameter (gmfverticesongeometrictriangles=42) parameter (gmfverticesongeometricquadrilaterals=43) parameter (gmfedgesongeometricedges=44) parameter (gmffault_freeedge=45) parameter (gmfpolyhedra=46) parameter (gmfpolygons=47) parameter (gmffault_overlap=48) parameter (gmfpyramids=49) parameter (gmfboundingbox=50) parameter (gmfbody=51) parameter (gmfprivatetable=52) parameter (gmffault_badshape=53) parameter (gmfend=54) parameter (gmftrianglesongeometrictriangles=55) parameter (gmftrianglesongeometricquadrilaterals=56) parameter (gmfquadrilateralsongeometrictriangles=57) parameter (gmfquadrilateralsongeometricquadrilaterals=58) parameter (gmftangents=59) parameter (gmfnormals=60) parameter (gmftangentatvertices=61) parameter (gmfsolatvertices=62) parameter (gmfsolatedges=63) parameter (gmfsolattriangles=64) parameter (gmfsolatquadrilaterals=65) parameter (gmfsolattetrahedra=66) parameter (gmfsolatprisms=67) parameter (gmfsolathexahedra=68) parameter (gmfdsolatvertices=69) parameter (gmfisolatvertices=70) parameter (gmfisolatedges=71) parameter (gmfisolattriangles=72) parameter (gmfisolatquadrilaterals=73) parameter (gmfisolattetrahedra=74) parameter (gmfisolatprisms=75) parameter (gmfisolathexahedra=76) parameter (gmfiterations=77) parameter (gmftime=78) parameter (gmffault_smalltri=79) parameter (gmfcoarsehexahedra=80) parameter (gmfcomments=81) parameter (gmfperiodicvertices=82) parameter (gmfperiodicedges=83) parameter (gmfperiodictriangles=84) parameter (gmfperiodicquadrilaterals=85) parameter (gmfprismsp2=86) parameter (gmfpyramidsp2=87) parameter (gmfquadrilateralsq3=88) parameter (gmfquadrilateralsq4=89) parameter (gmftrianglesp3=90) parameter (gmftrianglesp4=91) parameter (gmfedgesp3=92) parameter (gmfedgesp4=93) parameter (gmfirefgroups=94) parameter (gmfdrefgroups=95) parameter (gmftetrahedrap3=96) parameter (gmftetrahedrap4=97) parameter (gmfhexahedraq3=98) parameter (gmfhexahedraq4=99) parameter (gmfpyramidsp3=100) parameter (gmfpyramidsp4=101) parameter (gmfprismsp3=102) parameter (gmfprismsp4=103) parameter (gmfhosolatedgesp1=104) parameter (gmfhosolatedgesp2=105) parameter (gmfhosolatedgesp3=106) parameter (gmfhosolattrianglesp1=107) parameter (gmfhosolattrianglesp2=108) parameter (gmfhosolattrianglesp3=109) parameter (gmfhosolatquadrilateralsq1=110) parameter (gmfhosolatquadrilateralsq2=111) parameter (gmfhosolatquadrilateralsq3=112) parameter (gmfhosolattetrahedrap1=113) parameter (gmfhosolattetrahedrap2=114) parameter (gmfhosolattetrahedrap3=115) parameter (gmfhosolatpyramidsp1=116) parameter (gmfhosolatpyramidsp2=117) parameter (gmfhosolatpyramidsp3=118) parameter (gmfhosolatprismsp1=119) parameter (gmfhosolatprismsp2=120) parameter (gmfhosolatprismsp3=121) parameter (gmfhosolathexahedraq1=122) parameter (gmfhosolathexahedraq2=123) parameter (gmfhosolathexahedraq3=124) parameter (gmfbezierbasis=125) parameter (gmfbyteflow=126) parameter (gmfedgesp2ordering=127) parameter (gmfedgesp3ordering=128) parameter (gmftrianglesp2ordering=129) parameter (gmftrianglesp3ordering=130) parameter (gmfquadrilateralsq2ordering=131) parameter (gmfquadrilateralsq3ordering=132) parameter (gmftetrahedrap2ordering=133) parameter (gmftetrahedrap3ordering=134) parameter (gmfpyramidsp2ordering=135) parameter (gmfpyramidsp3ordering=136) parameter (gmfprismsp2ordering=137) parameter (gmfprismsp3ordering=138) parameter (gmfhexahedraq2ordering=139) parameter (gmfhexahedraq3ordering=140) parameter (gmfedgesp1ordering=141) parameter (gmfedgesp4ordering=142) parameter (gmftrianglesp1ordering=143) parameter (gmftrianglesp4ordering=144) parameter (gmfquadrilateralsq1ordering=145) parameter (gmfquadrilateralsq4ordering=146) parameter (gmftetrahedrap1ordering=147) parameter (gmftetrahedrap4ordering=148) parameter (gmfpyramidsp1ordering=149) parameter (gmfpyramidsp4ordering=150) parameter (gmfprismsp1ordering=151) parameter (gmfprismsp4ordering=152) parameter (gmfhexahedraq1ordering=153) parameter (gmfhexahedraq4ordering=154) parameter (gmffloatingpointprecision=155) parameter (gmfhosolatedgesp4=156) parameter (gmfhosolattrianglesp4=157) parameter (gmfhosolatquadrilateralsq4=158) parameter (gmfhosolattetrahedrap4=159) parameter (gmfhosolatpyramidsp4=160) parameter (gmfhosolatprismsp4=161) parameter (gmfhosolathexahedraq4=162) parameter (gmfhosolatedgesp1nodespositions=163) parameter (gmfhosolatedgesp2nodespositions=164) parameter (gmfhosolatedgesp3nodespositions=165) parameter (gmfhosolatedgesp4nodespositions=166) parameter (gmfhosolattrianglesp1nodespositions=167) parameter (gmfhosolattrianglesp2nodespositions=168) parameter (gmfhosolattrianglesp3nodespositions=169) parameter (gmfhosolattrianglesp4nodespositions=170) parameter (gmfhosolatquadrilateralsq1nodespositions=171) parameter (gmfhosolatquadrilateralsq2nodespositions=172) parameter (gmfhosolatquadrilateralsq3nodespositions=173) parameter (gmfhosolatquadrilateralsq4nodespositions=174) parameter (gmfhosolattetrahedrap1nodespositions=175) parameter (gmfhosolattetrahedrap2nodespositions=176) parameter (gmfhosolattetrahedrap3nodespositions=177) parameter (gmfhosolattetrahedrap4nodespositions=178) parameter (gmfhosolatpyramidsp1nodespositions=179) parameter (gmfhosolatpyramidsp2nodespositions=180) parameter (gmfhosolatpyramidsp3nodespositions=181) parameter (gmfhosolatpyramidsp4nodespositions=182) parameter (gmfhosolatprismsp1nodespositions=183) parameter (gmfhosolatprismsp2nodespositions=184) parameter (gmfhosolatprismsp3nodespositions=185) parameter (gmfhosolatprismsp4nodespositions=186) parameter (gmfhosolathexahedraq1nodespositions=187) parameter (gmfhosolathexahedraq2nodespositions=188) parameter (gmfhosolathexahedraq3nodespositions=189) parameter (gmfhosolathexahedraq4nodespositions=190) parameter (gmfedgesreferenceelement=191) parameter (gmftrianglereferenceelement=192) parameter (gmfquadrilateralreferenceelement=193) parameter (gmftetrahedronreferenceelement=194) parameter (gmfpyramidreferenceelement=195) parameter (gmfprismreferenceelement=196) parameter (gmfhexahedronreferenceelement=197) parameter (gmfboundarylayers=198) parameter (gmfreferencestrings=199) parameter (gmfprisms9=200) parameter (gmfhexahedra12=201) parameter (gmfquadrilaterals6=202) parameter (gmfboundarypolygonheaders=203) parameter (gmfboundarypolygonvertices=204) parameter (gmfinnerpolygonheaders=205) parameter (gmfinnerpolygonvertices=206) parameter (gmfpolyhedraheaders=207) parameter (gmfpolyhedrafaces=208) parameter (gmfdomains=209) parameter (gmfverticesgid=210) parameter (gmfedgesgid=211) parameter (gmftrianglesgid=212) parameter (gmfquadrilateralsgid=213) parameter (gmftetrahedragid=214) parameter (gmfpyramidsgid=215) parameter (gmfprismsgid=216) parameter (gmfhexahedragid=217) parameter (gmfsolatboundarypolygons=218) parameter (gmfsolatpolyhedra=219) parameter (gmfverticesongeometrynodes=220) parameter (gmfverticesongeometryedges=221) parameter (gmfedgesongeometryedges=222) parameter (gmfverticesongeometryfaces=223) parameter (gmfedgesongeometryfaces=224) parameter (gmftrianglesongeometryfaces=225) parameter (gmfquadrialteralsongeometryfaces=226) parameter (gmfmeshongeometry=227) libMeshb-7.80/sources/libmeshb7_mod.f90000066400000000000000000001035431456732543400177360ustar00rootroot00000000000000!---------------------------------------------------------- ! ! LIBMESH V 7.79 ! !---------------------------------------------------------- ! ! Description: handles .meshb file format I/O ! Author: Loic MARECHAL ! Creation date: dec 08 2015 ! Last modification: feb 12 2024 ! !---------------------------------------------------------- module libmeshb7 use iso_fortran_env use, intrinsic :: iso_c_binding, only: c_int,c_long,c_loc,c_ptr,c_null_ptr implicit none ! Procedures definition integer(int64) , external :: gmfopenmeshf77 integer(int32) , external :: gmfclosemeshf77 integer(int32) , external :: GmfStatKwdf77 integer(int32) , external :: gmfsetkwdf77 integer(int32) , external :: gmfgotokwdf77 integer(int32) , external :: gmfsethonodesorderingf77 integer(int32) , external :: gmfgetlinef77 integer(int32) , external :: gmfsetlinef77 integer(int32) , external :: gmfgetblockf77 integer(int32) , external :: gmfsetblockf77 ! Parameters definition integer(int32), parameter :: gmfmaxtyp=1000 integer(int32), parameter :: gmfmaxkwd=227 integer(int32), parameter :: gmfread=1 integer(int32), parameter :: gmfwrite=2 integer(int32), parameter :: gmfsca=1 integer(int32), parameter :: gmfvec=2 integer(int32), parameter :: gmfsymmat=3 integer(int32), parameter :: gmfmat=4 integer(int32), parameter :: gmffloat=8 integer(int32), parameter :: gmfdouble=9 integer(int32), parameter :: gmfint=10 integer(int32), parameter :: gmflong=11 integer(int32), parameter :: gmfinttab=14 integer(int32), parameter :: gmflongtab=15 integer(int32), parameter :: gmffloatvec=12 integer(int32), parameter :: gmfdoublevec=13 integer(int32), parameter :: gmfintvec=14 integer(int32), parameter :: gmflongvec=15 integer(int32), parameter :: gmfargtab=100 integer(int32), parameter :: gmfarglst=101 ! Keywords list integer(int32), parameter :: gmfdimension=3 integer(int32), parameter :: gmfmeshversionformatted=1 integer(int32), parameter :: gmfvertices=4 integer(int32), parameter :: gmfedges=5 integer(int32), parameter :: gmftriangles=6 integer(int32), parameter :: gmfquadrilaterals=7 integer(int32), parameter :: gmftetrahedra=8 integer(int32), parameter :: gmfprisms=9 integer(int32), parameter :: gmfhexahedra=10 integer(int32), parameter :: gmfiterationsall=11 integer(int32), parameter :: gmftimesall=12 integer(int32), parameter :: gmfcorners=13 integer(int32), parameter :: gmfridges=14 integer(int32), parameter :: gmfrequiredvertices=15 integer(int32), parameter :: gmfrequirededges=16 integer(int32), parameter :: gmfrequiredtriangles=17 integer(int32), parameter :: gmfrequiredquadrilaterals=18 integer(int32), parameter :: gmftangentatedgevertices=19 integer(int32), parameter :: gmfnormalatvertices=20 integer(int32), parameter :: gmfnormalattrianglevertices=21 integer(int32), parameter :: gmfnormalatquadrilateralvertices=22 integer(int32), parameter :: gmfangleofcornerbound=23 integer(int32), parameter :: gmftrianglesp2=24 integer(int32), parameter :: gmfedgesp2=25 integer(int32), parameter :: gmfsolatpyramids=26 integer(int32), parameter :: gmfquadrilateralsq2=27 integer(int32), parameter :: gmfisolatpyramids=28 integer(int32), parameter :: gmfsubdomainfromgeom=29 integer(int32), parameter :: gmftetrahedrap2=30 integer(int32), parameter :: gmffault_neartri=31 integer(int32), parameter :: gmffault_inter=32 integer(int32), parameter :: gmfhexahedraq2=33 integer(int32), parameter :: gmfextraverticesatedges=34 integer(int32), parameter :: gmfextraverticesattriangles=35 integer(int32), parameter :: gmfextraverticesatquadrilaterals=36 integer(int32), parameter :: gmfextraverticesattetrahedra=37 integer(int32), parameter :: gmfextraverticesatprisms=38 integer(int32), parameter :: gmfextraverticesathexahedra=39 integer(int32), parameter :: gmfverticesongeometricvertices=40 integer(int32), parameter :: gmfverticesongeometricedges=41 integer(int32), parameter :: gmfverticesongeometrictriangles=42 integer(int32), parameter :: gmfverticesongeometricquadrilaterals=43 integer(int32), parameter :: gmfedgesongeometricedges=44 integer(int32), parameter :: gmffault_freeedge=45 integer(int32), parameter :: gmfpolyhedra=46 integer(int32), parameter :: gmfpolygons=47 integer(int32), parameter :: gmffault_overlap=48 integer(int32), parameter :: gmfpyramids=49 integer(int32), parameter :: gmfboundingbox=50 integer(int32), parameter :: gmfbody=51 integer(int32), parameter :: gmfprivatetable=52 integer(int32), parameter :: gmffault_badshape=53 integer(int32), parameter :: gmfend=54 integer(int32), parameter :: gmftrianglesongeometrictriangles=55 integer(int32), parameter :: gmftrianglesongeometricquadrilaterals=56 integer(int32), parameter :: gmfquadrilateralsongeometrictriangles=57 integer(int32), parameter :: gmfquadrilateralsongeometricquadrilaterals=58 integer(int32), parameter :: gmftangents=59 integer(int32), parameter :: gmfnormals=60 integer(int32), parameter :: gmftangentatvertices=61 integer(int32), parameter :: gmfsolatvertices=62 integer(int32), parameter :: gmfsolatedges=63 integer(int32), parameter :: gmfsolattriangles=64 integer(int32), parameter :: gmfsolatquadrilaterals=65 integer(int32), parameter :: gmfsolattetrahedra=66 integer(int32), parameter :: gmfsolatprisms=67 integer(int32), parameter :: gmfsolathexahedra=68 integer(int32), parameter :: gmfdsolatvertices=69 integer(int32), parameter :: gmfisolatvertices=70 integer(int32), parameter :: gmfisolatedges=71 integer(int32), parameter :: gmfisolattriangles=72 integer(int32), parameter :: gmfisolatquadrilaterals=73 integer(int32), parameter :: gmfisolattetrahedra=74 integer(int32), parameter :: gmfisolatprisms=75 integer(int32), parameter :: gmfisolathexahedra=76 integer(int32), parameter :: gmfiterations=77 integer(int32), parameter :: gmftime=78 integer(int32), parameter :: gmffault_smalltri=79 integer(int32), parameter :: gmfcoarsehexahedra=80 integer(int32), parameter :: gmfcomments=81 integer(int32), parameter :: gmfperiodicvertices=82 integer(int32), parameter :: gmfperiodicedges=83 integer(int32), parameter :: gmfperiodictriangles=84 integer(int32), parameter :: gmfperiodicquadrilaterals=85 integer(int32), parameter :: gmfprismsp2=86 integer(int32), parameter :: gmfpyramidsp2=87 integer(int32), parameter :: gmfquadrilateralsq3=88 integer(int32), parameter :: gmfquadrilateralsq4=89 integer(int32), parameter :: gmftrianglesp3=90 integer(int32), parameter :: gmftrianglesp4=91 integer(int32), parameter :: gmfedgesp3=92 integer(int32), parameter :: gmfedgesp4=93 integer(int32), parameter :: gmfirefgroups=94 integer(int32), parameter :: gmfdrefgroups=95 integer(int32), parameter :: gmftetrahedrap3=96 integer(int32), parameter :: gmftetrahedrap4=97 integer(int32), parameter :: gmfhexahedraq3=98 integer(int32), parameter :: gmfhexahedraq4=99 integer(int32), parameter :: gmfpyramidsp3=100 integer(int32), parameter :: gmfpyramidsp4=101 integer(int32), parameter :: gmfprismsp3=102 integer(int32), parameter :: gmfprismsp4=103 integer(int32), parameter :: gmfhosolatedgesp1=104 integer(int32), parameter :: gmfhosolatedgesp2=105 integer(int32), parameter :: gmfhosolatedgesp3=106 integer(int32), parameter :: gmfhosolattrianglesp1=107 integer(int32), parameter :: gmfhosolattrianglesp2=108 integer(int32), parameter :: gmfhosolattrianglesp3=109 integer(int32), parameter :: gmfhosolatquadrilateralsq1=110 integer(int32), parameter :: gmfhosolatquadrilateralsq2=111 integer(int32), parameter :: gmfhosolatquadrilateralsq3=112 integer(int32), parameter :: gmfhosolattetrahedrap1=113 integer(int32), parameter :: gmfhosolattetrahedrap2=114 integer(int32), parameter :: gmfhosolattetrahedrap3=115 integer(int32), parameter :: gmfhosolatpyramidsp1=116 integer(int32), parameter :: gmfhosolatpyramidsp2=117 integer(int32), parameter :: gmfhosolatpyramidsp3=118 integer(int32), parameter :: gmfhosolatprismsp1=119 integer(int32), parameter :: gmfhosolatprismsp2=120 integer(int32), parameter :: gmfhosolatprismsp3=121 integer(int32), parameter :: gmfhosolathexahedraq1=122 integer(int32), parameter :: gmfhosolathexahedraq2=123 integer(int32), parameter :: gmfhosolathexahedraq3=124 integer(int32), parameter :: gmfbezierbasis=125 integer(int32), parameter :: gmfbyteflow=126 integer(int32), parameter :: gmfedgesp2ordering=127 integer(int32), parameter :: gmfedgesp3ordering=128 integer(int32), parameter :: gmftrianglesp2ordering=129 integer(int32), parameter :: gmftrianglesp3ordering=130 integer(int32), parameter :: gmfquadrilateralsq2ordering=131 integer(int32), parameter :: gmfquadrilateralsq3ordering=132 integer(int32), parameter :: gmftetrahedrap2ordering=133 integer(int32), parameter :: gmftetrahedrap3ordering=134 integer(int32), parameter :: gmfpyramidsp2ordering=135 integer(int32), parameter :: gmfpyramidsp3ordering=136 integer(int32), parameter :: gmfprismsp2ordering=137 integer(int32), parameter :: gmfprismsp3ordering=138 integer(int32), parameter :: gmfhexahedraq2ordering=139 integer(int32), parameter :: gmfhexahedraq3ordering=140 integer(int32), parameter :: gmfedgesp1ordering=141 integer(int32), parameter :: gmfedgesp4ordering=142 integer(int32), parameter :: gmftrianglesp1ordering=143 integer(int32), parameter :: gmftrianglesp4ordering=144 integer(int32), parameter :: gmfquadrilateralsq1ordering=145 integer(int32), parameter :: gmfquadrilateralsq4ordering=146 integer(int32), parameter :: gmftetrahedrap1ordering=147 integer(int32), parameter :: gmftetrahedrap4ordering=148 integer(int32), parameter :: gmfpyramidsp1ordering=149 integer(int32), parameter :: gmfpyramidsp4ordering=150 integer(int32), parameter :: gmfprismsp1ordering=151 integer(int32), parameter :: gmfprismsp4ordering=152 integer(int32), parameter :: gmfhexahedraq1ordering=153 integer(int32), parameter :: gmfhexahedraq4ordering=154 integer(int32), parameter :: gmffloatingpointprecision=155 integer(int32), parameter :: gmfhosolatedgesp4=156 integer(int32), parameter :: gmfhosolattrianglesp4=157 integer(int32), parameter :: gmfhosolatquadrilateralsq4=158 integer(int32), parameter :: gmfhosolattetrahedrap4=159 integer(int32), parameter :: gmfhosolatpyramidsp4=160 integer(int32), parameter :: gmfhosolatprismsp4=161 integer(int32), parameter :: gmfhosolathexahedraq4=162 integer(int32), parameter :: gmfhosolatedgesp1nodespositions=163 integer(int32), parameter :: gmfhosolatedgesp2nodespositions=164 integer(int32), parameter :: gmfhosolatedgesp3nodespositions=165 integer(int32), parameter :: gmfhosolatedgesp4nodespositions=166 integer(int32), parameter :: gmfhosolattrianglesp1nodespositions=167 integer(int32), parameter :: gmfhosolattrianglesp2nodespositions=168 integer(int32), parameter :: gmfhosolattrianglesp3nodespositions=169 integer(int32), parameter :: gmfhosolattrianglesp4nodespositions=170 integer(int32), parameter :: gmfhosolatquadrilateralsq1nodespositions=171 integer(int32), parameter :: gmfhosolatquadrilateralsq2nodespositions=172 integer(int32), parameter :: gmfhosolatquadrilateralsq3nodespositions=173 integer(int32), parameter :: gmfhosolatquadrilateralsq4nodespositions=174 integer(int32), parameter :: gmfhosolattetrahedrap1nodespositions=175 integer(int32), parameter :: gmfhosolattetrahedrap2nodespositions=176 integer(int32), parameter :: gmfhosolattetrahedrap3nodespositions=177 integer(int32), parameter :: gmfhosolattetrahedrap4nodespositions=178 integer(int32), parameter :: gmfhosolatpyramidsp1nodespositions=179 integer(int32), parameter :: gmfhosolatpyramidsp2nodespositions=180 integer(int32), parameter :: gmfhosolatpyramidsp3nodespositions=181 integer(int32), parameter :: gmfhosolatpyramidsp4nodespositions=182 integer(int32), parameter :: gmfhosolatprismsp1nodespositions=183 integer(int32), parameter :: gmfhosolatprismsp2nodespositions=184 integer(int32), parameter :: gmfhosolatprismsp3nodespositions=185 integer(int32), parameter :: gmfhosolatprismsp4nodespositions=186 integer(int32), parameter :: gmfhosolathexahedraq1nodespositions=187 integer(int32), parameter :: gmfhosolathexahedraq2nodespositions=188 integer(int32), parameter :: gmfhosolathexahedraq3nodespositions=189 integer(int32), parameter :: gmfhosolathexahedraq4nodespositions=190 integer(int32), parameter :: gmfedgesreferenceelement=191 integer(int32), parameter :: gmftrianglereferenceelement=192 integer(int32), parameter :: gmfquadrilateralreferenceelement=193 integer(int32), parameter :: gmftetrahedronreferenceelement=194 integer(int32), parameter :: gmfpyramidreferenceelement=195 integer(int32), parameter :: gmfprismreferenceelement=196 integer(int32), parameter :: gmfhexahedronreferenceelement=197 integer(int32), parameter :: gmfboundarylayers=198 integer(int32), parameter :: gmfreferencestrings=199 integer(int32), parameter :: gmfprisms9=200 integer(int32), parameter :: gmfhexahedra12=201 integer(int32), parameter :: gmfquadrilaterals6=202 integer(int32), parameter :: gmfboundarypolygonheaders=203 integer(int32), parameter :: gmfboundarypolygonvertices=204 integer(int32), parameter :: gmfinnerpolygonheaders=205 integer(int32), parameter :: gmfinnerpolygonvertices=206 integer(int32), parameter :: gmfpolyhedraheaders=207 integer(int32), parameter :: gmfpolyhedrafaces=208 integer(int32), parameter :: gmfdomains=209 integer(int32), parameter :: gmfverticesgid=210 integer(int32), parameter :: gmfedgesgid=211 integer(int32), parameter :: gmftrianglesgid=212 integer(int32), parameter :: gmfquadrilateralsgid=213 integer(int32), parameter :: gmftetrahedragid=214 integer(int32), parameter :: gmfpyramidsgid=215 integer(int32), parameter :: gmfprismsgid=216 integer(int32), parameter :: gmfhexahedragid=217 integer(int32), parameter :: gmfsolatboundarypolygons=218 integer(int32), parameter :: gmfsolatpolyhedra=219 integer(int32), parameter :: gmfverticesongeometrynodes=220 integer(int32), parameter :: gmfverticesongeometryedges=221 integer(int32), parameter :: gmfedgesongeometryedges=222 integer(int32), parameter :: gmfverticesongeometryfaces=223 integer(int32), parameter :: gmfedgesongeometryfaces=224 integer(int32), parameter :: gmftrianglesongeometryfaces=225 integer(int32), parameter :: gmfquadrialteralsongeometryfaces=226 integer(int32), parameter :: gmfmeshongeometry=227 interface GmfStatKwdF90 module procedure GmfStatKwdF90_0 !> vertices & nodes module procedure GmfStatKwdF90_1 !> solutions end interface GmfStatKwdF90 interface GmfSetKwdF90 module procedure GmfSetKwdF90_0 !> vertices & nodes module procedure GmfSetKwdF90_1 !> solutions end interface GmfSetKwdF90 interface GmfGetLineF90 module procedure GmfGetLineF90_i module procedure GmfGetLineF90_d end interface GmfGetLineF90 interface GmfSetLineF90 module procedure GmfSetLineF90_i module procedure GmfSetLineF90_d module procedure GmfSetLineF90_sol_i module procedure GmfSetLineF90_sol_d end interface GmfSetLineF90 interface GmfGetBlockF90 !module procedure GmfGetBlockF90_00 module procedure GmfGetBlockF90_01 !> nodes + ref module procedure GmfGetBlockF90_01Bis !> nodes module procedure GmfGetBlockF90_02 !> vertices + ref module procedure GmfGetBlockF90_02Bis !> solutions end interface GmfGetBlockF90 interface GmfSetBlockF90 !module procedure GmfGetBlockF90_00 module procedure GmfSetBlockF90_01 !> nodes + ref module procedure GmfSetBlockF90_02 !> vertices + ref module procedure GmfSetBlockF90_02Bis !> solutions end interface GmfSetBlockF90 contains function GmfOpenMeshF90(name, GmfKey, ver, dim) result(unit) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> character(*) , intent(in) :: name integer(int32), intent(in) :: GmfKey integer(int32), intent(inout) :: ver integer(int32), intent(inout) :: dim integer(int64) :: unit !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> unit = GmfOpenMeshf77(trim(name), GmfKey, ver, dim) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfOpenMeshF90 function GmfCloseMeshF90(unit) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: res !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res=GmfCloseMeshF77(unit) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfCloseMeshF90 function GmfStatKwdF90_0(unit, GmfKey) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey integer(int32) :: Nmb integer(int32) :: res !> integer(int32) :: t(1),d,ho,s !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res = GmfStatKwdf77(unit, GmfKey, 0, 0, t(1), 0, 0) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfStatKwdF90_0 function GmfStatKwdF90_1(unit, GmfKey, r, s, t, d, ho) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey integer(int32) :: Nmb integer(int32) :: res !> integer(int32) :: r,s,t(:),d,ho !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res = GmfStatKwdf77(unit, GmfKey, r, s, t(1), d, ho) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfStatKwdF90_1 function GmfGotoKwdF90(unit, GmfKey) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey integer(int32) :: res !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res=GmfgotokwdF77(unit, GmfKey) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfGotoKwdF90 function GmfSetKwdF90_0(unit, GmfKey, Nmb) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey integer(int32) :: Nmb !> integer(int32) :: t(1),d,ho,s integer(int32) :: res !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res = GmfSetKwdF77(unit, GmfKey, Nmb, 0, t(1), 0, ho) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetKwdF90_0 function GmfSetKwdF90_1(unit, GmfKey, Nmb, d, t, s, ho) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey integer(int32) :: Nmb integer(int32) :: t(:) integer(int32) :: d,ho,s integer(int32) :: res !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res = GmfSetKwdF77(unit, GmfKey, Nmb, d, t, s, ho) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetKwdF90_1 function GmfSetHONodesOrderingF90(unit, GmfKey, BasTab, OrdTab) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey integer(int32) :: BasTab(:,:) integer(int32) :: OrdTab(:,:) integer(int32) :: res !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res=GmfSetHONodesOrderingF77(unit,GmfKey,BasTab,OrdTab) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetHONodesOrderingF90 function GmfGetLineF90_i(unit, GmfKey, Tab, Ref) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> Reading Nodes and Ref !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey integer(int32) :: Tab(:) integer(int32) :: Ref integer(int32) :: res !> real(real64) :: dTab(1) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res=GmfGetLineF77(unit, GmfKey, Tab(1), dTab(1), Ref) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfGetLineF90_i function GmfGetLineF90_d(unit, GmfKey, Tab, Ref) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> Reading Vertices and Ref !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey real(real64) :: Tab(:) integer(int32) :: Ref integer(int32) :: res !> integer(int32) :: iTab(1) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res=GmfGetLineF77(unit, GmfKey, iTab(1), Tab(1), Ref) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> end function GmfGetLineF90_d function GmfSetLineF90_i(unit, GmfKey, Tab, Ref) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> Writting Nodes and Ref !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey integer(int32) :: Tab(:) integer(int32) :: Ref integer(int32) :: res !> real(real64) :: dTab(1) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res=GmfSetLineF77(unit, GmfKey, Tab(1), dTab(1), Ref) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetLineF90_i function GmfSetLineF90_d(unit, GmfKey, Tab, Ref) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> Writting Vertices and Ref !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey real(real64) :: Tab(:) integer(int32) :: Ref integer(int32) :: res !> integer(int32) :: iTab(1) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res=GmfSetLineF77(unit, GmfKey, iTab(1), Tab(1), Ref) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetLineF90_d function GmfSetLineF90_sol_i(unit, GmfKey, iTab) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> Writting Nodes and Ref !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey integer(int32) :: iTab(:) integer(int32) :: iRef integer(int32) :: res !> real(real64) :: dTab(1) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res=GmfSetLineF77(unit, GmfKey, iTab(1), dTab(1), iRef) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetLineF90_sol_i function GmfSetLineF90_sol_d(unit, GmfKey, dTab) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !> Writting Vertices and Ref !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64) :: unit integer(int32) :: GmfKey real(real64) :: dTab(:) integer(int32) :: res !> integer(int32) :: iRef integer(int32) :: iTab(1) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> res=GmfSetLineF77(unit, GmfKey, iTab(1), dTab(1), iRef) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetLineF90_sol_d function GmfGetBlockF90_00(unit, GmfKey, ad0, ad1, iTab, dTab, Ref) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64), intent(in) :: unit integer(int32), intent(in) :: GmfKey integer(int32), intent(in) :: ad0 integer(int32), intent(in) :: ad1 integer(int32), intent(inout) :: iTab(:,:) real(real64) , intent(inout) :: dTab(:,:) integer(int32), intent(inout) :: Ref( :) integer(int32) :: res !> integer(int32) :: Nmb integer(int32), pointer :: map(:)=>null() !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nmb=ad1-ad0+1 res=GmfGetBlockF77(unit ,& & GmfKey ,& & ad0 ,& & ad1 ,& & int32 ,& & map ,& & iTab(1, 1),& & iTab(1,Nmb),& & dTab(1, 1),& & dTab(1,Nmb),& & Ref( 1),& & Ref( Nmb) ) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfGetBlockF90_00 function GmfGetBlockF90_01(unit, GmfKey, ad0, ad1, Tab, Ref) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64), intent(in) :: unit integer(int32), intent(in) :: GmfKey integer(int32), intent(in) :: ad0 integer(int32), intent(in) :: ad1 integer(int32), intent(inout) :: Tab(:,:) integer(int32), intent(inout) :: Ref( :) integer(int32) :: res !> integer(int32) :: Nmb real(real64) :: dTab(1) integer(int32), pointer :: map(:)=>null() !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nmb=ad1-ad0+1 print '("GmfGetBlockF90_01 (ad0,ad1)=(",i0,",",i0,") Nmb=",i0)',ad0,ad1,Nmb print '("GmfGetBlockF90_01 size(Tab)=",i0,"x",i0)',size(Tab,1),size(Tab,2) print '("GmfGetBlockF90_01 size(Ref)= ",i0)',size(Ref) res=GmfGetBlockF77(unit ,& & GmfKey ,& & ad0 ,& & ad1 ,& & int32 ,& & map ,& & Tab(1, 1) ,& & Tab(1,Nmb) ,& & dTab(1) ,& & dTab(1) ,& & Ref( 1) ,& & Ref( Nmb) ) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfGetBlockF90_01 function GmfGetBlockF90_01Bis(unit, GmfKey, ad0, ad1, Tab) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64), intent(in) :: unit integer(int32), intent(in) :: GmfKey integer(int32), intent(in) :: ad0 integer(int32), intent(in) :: ad1 integer(int32), intent(inout) :: Tab(:,:) integer(int32) :: res !> integer(int32) :: Nmb real(real64) :: dTab(1) integer(int32) :: Ref(1) integer(int32), pointer :: map(:)=>null() !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nmb=ad1-ad0+1 print '("GmfGetBlockF90_01Bis (ad0,ad1)=(",i0,",",i0,") Nmb=",i0)',ad0,ad1,Nmb print '("GmfGetBlockF90_01Bis size(Tab)=",i0,"x",i0)',size(Tab,1),size(Tab,2) print '("GmfGetBlockF90_01Bis size(Ref)= ",i0)',size(Ref) res=GmfGetBlockF77(unit ,& & GmfKey ,& & ad0 ,& & ad1 ,& & int32 ,& & map ,& & Tab(1, 1) ,& & Tab(1,Nmb) ,& & dTab(1) ,& & dTab(1) ,& & Ref( 1) ,& & Ref( 1) ) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfGetBlockF90_01Bis function GmfGetBlockF90_02(unit, GmfKey, ad0, ad1, Tab, Ref) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64), intent(in) :: unit integer(int32), intent(in) :: GmfKey integer(int32), intent(in) :: ad0 integer(int32), intent(in) :: ad1 real(real64) , intent(inout) :: Tab(:,:) integer(int32), intent(inout) :: Ref( :) integer(int32) :: res !> integer(int32) :: iTab(1) integer(int32) :: Nmb integer(int32), pointer :: map(:)=>null() !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nmb=ad1-ad0+1 print '("GmfGetBlockF90_02 (ad0,ad1)=(",i0,",",i0,") Nmb=",i0)',ad0,ad1,Nmb print '("GmfGetBlockF90_02 size(Tab)=",i0,"x",i0)',size(Tab,1),size(Tab,2) print '("GmfGetBlockF90_02 size(Ref)= ",i0)',size(Ref) res=GmfGetBlockF77(unit ,& & GmfKey ,& & ad0 ,& & ad1 ,& & int32 ,& & map ,& & iTab(1) ,& & iTab(1) ,& & Tab(1, 1) ,& & Tab(1,Nmb) ,& & Ref( 1) ,& & Ref( Nmb) ) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfGetBlockF90_02 function GmfGetBlockF90_02Bis(unit, GmfKey, ad0, ad1, Tab) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64), intent(in) :: unit integer(int32), intent(in) :: GmfKey integer(int32), intent(in) :: ad0 integer(int32), intent(in) :: ad1 real(real64) , intent(inout) :: Tab(:,:) integer(int32) :: res !> integer(int32) :: Ref (1) integer(int32) :: iTab(1) integer(int32) :: Nmb integer(int32), pointer :: map(:)=>null() !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nmb=ad1-ad0+1 print '("GmfGetBlockF90_02Bis (ad0,ad1)=(",i0,",",i0,") Nmb=",i0)',ad0,ad1,Nmb print '("GmfGetBlockF90_02Bis size(Tab)=",i0,"x",i0)',size(Tab,1),size(Tab,2) print '("GmfGetBlockF90_02Bis size(Ref)= ",i0)',size(Ref) res=GmfGetBlockF77(unit ,& & GmfKey ,& & ad0 ,& & ad1 ,& & int32 ,& & map ,& & iTab(1) ,& & iTab(1) ,& & Tab(1, 1) ,& & Tab(1,Nmb) ,& & Ref( 1) ,& & Ref( 1) ) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfGetBlockF90_02Bis function GmfSetBlockF90_01(unit, GmfKey, ad0, ad1, Tab, Ref) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64), intent(in) :: unit integer(int32), intent(in) :: GmfKey integer(int32), intent(in) :: ad0 integer(int32), intent(in) :: ad1 integer(int32), intent(inout) :: Tab(:,:) integer(int32), intent(inout) :: Ref( :) integer(int32) :: res !> integer(int32) :: Nmb real(real64) :: dTab(1) integer(int32), pointer :: map(:)=>null() !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nmb=ad1-ad0+1 print '("GmfSetBlockF90_01 (ad0,ad1)=(",i0,",",i0,") Nmb=",i0)',ad0,ad1,Nmb print '("GmfSetBlockF90_01 size(Tab)=",i0,"x",i0)',size(Tab,1),size(Tab,2) print '("GmfSetBlockF90_01 size(Ref)= ",i0)',size(Ref) res=GmfSetBlockF77(unit ,& & GmfKey ,& & ad0 ,& & ad1 ,& & int32 ,& & map ,& & Tab(1, 1) ,& & Tab(1,Nmb) ,& & dTab(1) ,& & dTab(1) ,& & Ref( 1) ,& & Ref( Nmb) ) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetBlockF90_01 function GmfSetBlockF90_02(unit, GmfKey, ad0, ad1, Tab, Ref) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64), intent(in) :: unit integer(int32), intent(in) :: GmfKey integer(int32), intent(in) :: ad0 integer(int32), intent(in) :: ad1 real(real64) , intent(inout) :: Tab(:,:) integer(int32), intent(inout) :: Ref( :) integer(int32) :: res !> integer(int32) :: iTab(1) integer(int32) :: Nmb integer(int32), pointer :: map(:)=>null() !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nmb=ad1-ad0+1 print '("GmfSetBlockF90_02 (ad0,ad1)=(",i0,",",i0,") Nmb=",i0)',ad0,ad1,Nmb print '("GmfSetBlockF90_02 size(Tab)=",i0,"x",i0)',size(Tab,1),size(Tab,2) print '("GmfSetBlockF90_02 size(Ref)= ",i0)',size(Ref) res=GmfSetBlockF77(unit ,& & GmfKey ,& & ad0 ,& & ad1 ,& & int32 ,& & map ,& & iTab(1) ,& & iTab(1) ,& & Tab(1, 1) ,& & Tab(1,Nmb) ,& & Ref( 1) ,& & Ref( Nmb) ) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetBlockF90_02 function GmfSetBlockF90_02Bis(unit, GmfKey, ad0, ad1, Tab) result(res) !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> integer(int64), intent(in) :: unit integer(int32), intent(in) :: GmfKey integer(int32), intent(in) :: ad0 integer(int32), intent(in) :: ad1 real(real64) , intent(inout) :: Tab(:,:) integer(int32) :: res !> integer(int32) :: Ref(1) integer(int32) :: iTab(1) integer(int32) :: Nmb integer(int32), pointer :: map(:)=>null() !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nmb=ad1-ad0+1 print '("GmfSetBlockF90_02Bis (ad0,ad1)=(",i0,",",i0,") Nmb=",i0)',ad0,ad1,Nmb print '("GmfSetBlockF90_02Bis size(Tab)=",i0,"x",i0)',size(Tab,1),size(Tab,2) print '("GmfSetBlockF90_02Bis size(Ref)= ",i0)',size(Ref) res=GmfSetBlockF77(unit ,& & GmfKey ,& & ad0 ,& & ad1 ,& & int32 ,& & map ,& & iTab( 1) ,& & iTab( 1) ,& & Tab(1, 1) ,& & Tab(1,Nmb) ,& & Ref( 1) ,& & Ref( 1) ) !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< return end function GmfSetBlockF90_02Bis end module libmeshb7libMeshb-7.80/todolist.md000066400000000000000000000064221456732543400154010ustar00rootroot00000000000000## HIGH PRIORITY ### Develop a helper to build the list of Ghost elements - Read and allocate the required ElementGID, then build the list of elements that do not belong to the local domain and return it to the caller. ### Distributed parallel write - Open a mesh file in write mode but only create the skeleton of the mesh structure to enable further concurrent write access. - Open an existing mesh file in write mode and enable concurrent block writes, thanks to the existing file structure. ## STANDARD PRIORITY ### Handle arbitrary degree high-order elements - Setup a keyword to store Pk elements. - Give along a routine to convert to and from well-known high-order numberings. ### Solution fields comments - Add a procedure that would search for a string among comments. - Input: keyword name, physical property, free comment, wildcards. - Output: list of solutions keywords and particular field number. ### Add IHOSol* + DHOSol* for each element kinds, For example: "IHOSolAtVertices", "i", "ii" // ii = degree + index in DSol "DHOSolAtVertices", "i", "hr" // High Order solution ### Topological operations - Add a helper to build the list of inner or surface triangles from tetrahedra - Add a helper to build the list of unique edges from tetrahedra - Add a helper to get the face neighborhood between tets and triangles - Add a helper to get an edge's shell of triangles or tets ### Documentation ## DONE - Indirect storage through a renumbering table for parallel reading. - Keyword documentation updated. - High-Order multiple solutions per element for DG. - Added ByteFlow keyword to store an arbitrary sized byte array. - Added two examples to read and write EGADS CAD models stores as byte flows. - Give a way to describe the node numbering. - Setup a polygon keyword that provides an arbitrary degree and number of nodes. - Setup a polyhedron keyword that provides an arbitrary degree and number of oriented polygons. - Setup a boundary polygon keyword that lists the boundary faces among the ensemble of volume polygons. - Create a separate helper file to be optionally compiled along the libMeshb. - Added a helper to allocate and read the boundary polygons. - Added a helper to allocate and read the polyhedra and inner polygons. - Added a helper that returns a polygon's degree and nodes list. - Added a helper that returns a polyhedron's degree and face indices list. - Write the helper's documentation. - Added an example that converts and fuses all surfaces and volume elements to polygons and polyhedra. - Added a helper to tesselate a polygon into a set of triangles made of nodes and edge visibility flags. - Added a set of keywords for each kind of element that stores the number of vertices and their barycentric coordinates. - Added a section about the AIO mode (Asynchronous Input Output). - Added a helper that evaluates the quality of a mesh numbering in terms of efficient cache reuse and inner concurrency. - Added F77 API to GmfSetHONodesOrdering - Completely rewrote the whole Fortran API because GFortran dropped support for C variable argumeents procedure. - H.O. tests converted to Fortran by Christophe Peyret - Added a helper that cuts a polyhedron through a plane and generates the intersection's triangulated mesh in an STL-like format. libMeshb-7.80/utilities/000077500000000000000000000000001456732543400152255ustar00rootroot00000000000000libMeshb-7.80/utilities/CMakeLists.txt000066400000000000000000000014311456732543400177640ustar00rootroot00000000000000 ################# # BUILD UTILITIES ################# add_executable(transmesh transmesh.c ../sources/libmeshb7.c) target_compile_options (transmesh PRIVATE -DTRANSMESH) target_link_libraries (transmesh Meshb.7 ${AIO_LIBRARIES}) install (TARGETS transmesh DESTINATION bin COMPONENT applications) add_executable(mshinfo mshinfo.c) target_link_libraries (mshinfo Meshb.7 ${AIO_LIBRARIES}) install (TARGETS mshinfo DESTINATION bin COMPONENT applications) add_executable(speed_test speed_test.c) target_link_libraries (speed_test Meshb.7 ${AIO_LIBRARIES}) install (TARGETS speed_test DESTINATION bin COMPONENT applications) add_executable(ugrid2mesh ugrid2mesh.c) target_link_libraries (ugrid2mesh Meshb.7 ${AIO_LIBRARIES}) install (TARGETS ugrid2mesh DESTINATION bin COMPONENT applications) libMeshb-7.80/utilities/README.md000066400000000000000000000016751456732543400165150ustar00rootroot00000000000000This directory contains various utilities to convert files in .meshb format to and from some other formats. ### transmesh Convert a .meshb file into another .meshb one while changing the file format version (from 1 to 4) or switching between ASCII and Binary. ### sol2bb A legacy utility that is base on an older version of the libmeshb. It converts solution files in .sol(b) to .bb format. ### bb2sol A legacy utility that is base on an older version of the libmeshb. It converts solution files in .bb to .sol(b) format. ### mesh2patran A legacy utility that is base on an older version of the libmeshb. It converts mesh files in .mesh to patran neutral format. ### msh2mesh A legacy utility that is base on an older version of the libmeshb. It converts MSH2 mesh files in .points/.faces to .mesh(b) format. ### noboiteb2meshb A legacy utility that is base on an older version of the libmeshb. It converts mesh files in .noboiteb to .mesh(b) format. libMeshb-7.80/utilities/libmeshb7_helpers.c000066400000000000000000000305661456732543400210010ustar00rootroot00000000000000 /*----------------------------------------------------------------------------*/ /* */ /* LIBMESHB-HELPERS V0.91 */ /* */ /*----------------------------------------------------------------------------*/ /* */ /* Description: Set of helpers functions useful for the libMeshb */ /* Author: Loic MARECHAL */ /* Creation date: mar 24 2021 */ /* Last modification: nov 05 2021 */ /* */ /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------------------------*/ #include "libmeshb7_helpers.h" #include "libmeshb7.h" #include #include /*----------------------------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------------------------*/ #ifdef INT64 #define itg int64_t #else #define itg int32_t #endif #ifdef REAL32 #define fpn float #else #define fpn double #endif /*----------------------------------------------------------------------------*/ /* Defintion of macro commands */ /*----------------------------------------------------------------------------*/ #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define POW(a) ((a) * (a)) /*----------------------------------------------------------------------------*/ /* Allocate a structure to hold all polygons and polyhedra related data */ /*----------------------------------------------------------------------------*/ PolMshSct *GmfAllocatePolyhedralStructure(int64_t MshIdx) { int SrfFlg = 0, VolFlg = 0, ErrFlg = 0; itg NmbBndHdr, NmbBndVer, NmbInrHdr, NmbInrVer, NmbVolHdr, NmbVolFac; PolMshSct *pol; if (!MshIdx) return (NULL); // Get all the polyhedra related field's sizes NmbBndHdr = (itg)GmfStatKwd(MshIdx, GmfBoundaryPolygonHeaders); NmbBndVer = (itg)GmfStatKwd(MshIdx, GmfBoundaryPolygonVertices); NmbInrHdr = (itg)GmfStatKwd(MshIdx, GmfInnerPolygonHeaders); NmbInrVer = (itg)GmfStatKwd(MshIdx, GmfInnerPolygonVertices); NmbVolHdr = (itg)GmfStatKwd(MshIdx, GmfPolyhedraHeaders); NmbVolFac = (itg)GmfStatKwd(MshIdx, GmfPolyhedraFaces); // There are surface polygons if (NmbBndHdr && NmbBndVer) SrfFlg = 1; // There are volume polyhedra if (NmbInrHdr && NmbInrVer && NmbVolHdr && NmbVolFac) VolFlg = 1; if (!SrfFlg && !VolFlg) return (NULL); pol = malloc(sizeof(PolMshSct)); if (!pol) return (NULL); pol->MshIdx = MshIdx; // Store surface information and allocate Headers and data tables if (SrfFlg) { pol->NmbBndHdr = NmbBndHdr; pol->NmbBndVer = NmbBndVer; pol->BndHdrTab = malloc((NmbBndHdr + 1) * 2 * sizeof(itg)); pol->BndVerTab = malloc((NmbBndVer + 1) * sizeof(itg)); if (!pol->BndHdrTab || !pol->BndVerTab) ErrFlg = 1; } else { pol->NmbBndHdr = 0; pol->NmbBndVer = 0; } // Store volume information and allocate Headers and data tables // for both inner polygons and polyhedra if (VolFlg) { pol->NmbInrHdr = NmbInrHdr; pol->NmbInrVer = NmbInrVer; pol->NmbVolHdr = NmbVolHdr; pol->NmbVolFac = NmbVolFac; pol->InrHdrTab = malloc((NmbInrHdr + 1) * 2 * sizeof(itg)); pol->InrVerTab = malloc((NmbInrVer + 1) * sizeof(itg)); pol->VolHdrTab = malloc((NmbVolHdr + 1) * 2 * sizeof(itg)); pol->VolFacTab = malloc((NmbVolFac + 1) * sizeof(itg)); if (!pol->InrHdrTab || !pol->InrVerTab || !pol->VolHdrTab || !pol->VolFacTab) ErrFlg = 1; } else { pol->NmbInrHdr = 0; pol->NmbInrVer = 0; pol->NmbVolHdr = 0; pol->NmbVolFac = 0; } // If something went wrong, free all memories if (ErrFlg) { GmfFreePolyghedralStructure(pol); return (NULL); } return (pol); } /*----------------------------------------------------------------------------*/ /* Free all polyhedral tables and the head structure itself */ /*----------------------------------------------------------------------------*/ void GmfFreePolyghedralStructure(PolMshSct *pol) { if (!pol) return; if (pol->BndHdrTab) free(pol->BndHdrTab); if (pol->BndVerTab) free(pol->BndVerTab); if (pol->InrHdrTab) free(pol->InrHdrTab); if (pol->InrVerTab) free(pol->InrVerTab); if (pol->VolHdrTab) free(pol->VolHdrTab); if (pol->VolFacTab) free(pol->VolFacTab); free(pol); } /*----------------------------------------------------------------------------*/ /* Read the surface polygons from an already opened mesh file */ /* and store the data in the provided polyhedral structure */ /*----------------------------------------------------------------------------*/ int GmfReadBoundaryPolygons(PolMshSct *pol) { int ret; if (!pol || !pol->BndHdrTab || !pol->BndVerTab) return (0); ret = GmfGetBlock(pol->MshIdx, GmfBoundaryPolygonHeaders, 1, pol->NmbBndHdr, 0, NULL, NULL, GmfIntVec, 2, pol->BndHdrTab[1], pol->BndHdrTab[pol->NmbBndHdr]); if (!ret) return (0); ret = GmfGetBlock(pol->MshIdx, GmfBoundaryPolygonVertices, 1, pol->NmbBndVer, 0, NULL, NULL, GmfInt, &pol->BndVerTab[1], &pol->BndVerTab[pol->NmbBndVer]); if (!ret) return (0); return (1); } /*----------------------------------------------------------------------------*/ /* Read the polyhedra from an already opened mesh file */ /* and store the data in the provided polyhedral structure */ /*----------------------------------------------------------------------------*/ int GmfReadPolyhedra(PolMshSct *pol) { int ret; if (!pol || !pol->InrHdrTab || !pol->InrVerTab || !pol->VolHdrTab || !pol->VolFacTab) { return (0); } ret = GmfGetBlock(pol->MshIdx, GmfInnerPolygonHeaders, 1, pol->NmbInrHdr, 0, NULL, NULL, GmfIntVec, 2, pol->InrHdrTab[1], pol->InrHdrTab[pol->NmbInrHdr]); if (!ret) return (0); ret = GmfGetBlock(pol->MshIdx, GmfInnerPolygonVertices, 1, pol->NmbInrVer, 0, NULL, NULL, GmfInt, &pol->InrVerTab[1], &pol->InrVerTab[pol->NmbInrVer]); if (!ret) return (0); ret = GmfGetBlock(pol->MshIdx, GmfPolyhedraHeaders, 1, pol->NmbVolHdr, 0, NULL, NULL, GmfIntVec, 2, pol->VolHdrTab[1], pol->VolHdrTab[pol->NmbVolHdr]); if (!ret) return (0); ret = GmfGetBlock(pol->MshIdx, GmfPolyhedraFaces, 1, pol->NmbVolFac, 0, NULL, NULL, GmfInt, &pol->VolFacTab[1], &pol->VolFacTab[pol->NmbVolFac]); if (!ret) return (0); return (1); } /*----------------------------------------------------------------------------*/ /* Copy one surface polygon list of vertices in the table and return its size */ /*----------------------------------------------------------------------------*/ itg GmfGetBoundaryPolygon(PolMshSct *pol, itg EleIdx, itg *UsrTab) { itg i, BegIdx, EndIdx; if (!pol || (EleIdx <= 0) || (EleIdx > pol->NmbBndHdr)) return (0); BegIdx = pol->BndHdrTab[EleIdx][0]; if (EleIdx == pol->NmbBndHdr) EndIdx = pol->NmbBndVer; else EndIdx = pol->BndHdrTab[EleIdx + 1][0] - 1; EndIdx = MIN(EndIdx, BegIdx + 256); for (i = BegIdx; i <= EndIdx; i++) UsrTab[i - BegIdx] = pol->BndVerTab[i]; return (EndIdx - BegIdx + 1); } /*----------------------------------------------------------------------------*/ /* Copy one inner polygon list of vertices in the table and return its size */ /*----------------------------------------------------------------------------*/ itg GmfGetInnerPolygon(PolMshSct *pol, itg EleIdx, itg *UsrTab) { itg i, BegIdx, EndIdx, ord = 1; if(EleIdx < 0) { EleIdx = -EleIdx; ord = -1; } if (!pol || (EleIdx <= 0) || (EleIdx > pol->NmbInrHdr)) return (0); BegIdx = pol->InrHdrTab[EleIdx][0]; if (EleIdx == pol->NmbInrHdr) EndIdx = pol->NmbInrVer; else EndIdx = pol->InrHdrTab[EleIdx + 1][0] - 1; EndIdx = MIN(EndIdx, BegIdx + 256); if(ord == 1) for (i = BegIdx; i <= EndIdx; i++) UsrTab[i - BegIdx] = pol->InrVerTab[i]; else for (i = EndIdx; i >= BegIdx; i--) UsrTab[EndIdx - i] = pol->InrVerTab[i]; return (EndIdx - BegIdx + 1); } /*----------------------------------------------------------------------------*/ /* Copy one polyhedra list of polygonal faces in the table and return its size*/ /*----------------------------------------------------------------------------*/ itg GmfGetPolyhedron(PolMshSct *pol, itg EleIdx, itg *UsrTab) { itg i, BegIdx, EndIdx; if (!pol || (EleIdx <= 0) || (EleIdx > pol->NmbVolHdr)) return (0); BegIdx = pol->VolHdrTab[EleIdx][0]; if (EleIdx == pol->NmbVolHdr) EndIdx = pol->NmbVolFac; else EndIdx = pol->VolHdrTab[EleIdx + 1][0] - 1; EndIdx = MIN(EndIdx, BegIdx + 256); for (i = BegIdx; i <= EndIdx; i++) UsrTab[i - BegIdx] = pol->VolFacTab[i]; return (EndIdx - BegIdx + 1); } /*----------------------------------------------------------------------------*/ /* Create the tessellation in triangles of a polygon */ /* Output: number of triangles, list of trangles and visibility of egdes */ /*----------------------------------------------------------------------------*/ itg GmfTesselatePolygon(PolMshSct *pol, itg EleIdx, itg (*Tri)[3], itg (*VisEdg)[3]) { itg NmbTri, deg1, i, buf1[256]; deg1 = GmfGetBoundaryPolygon(pol, EleIdx, buf1); NmbTri = deg1 - 2; //-- First triangle Tri[0][0] = buf1[0]; Tri[0][1] = buf1[1]; Tri[0][2] = buf1[2]; VisEdg[0][0] = 1; VisEdg[0][1] = 0; VisEdg[0][2] = 1; //-- Other triangles for (i = 1; i < NmbTri - 1; i++) { Tri[i][0] = buf1[0]; Tri[i][1] = buf1[i + 1]; Tri[i][2] = buf1[i + 2]; VisEdg[i][0] = 1; VisEdg[i][1] = 0; VisEdg[i][2] = 0; } //-- Last triangle Tri[NmbTri - 1][0] = buf1[0]; Tri[NmbTri - 1][1] = buf1[deg1 - 2]; Tri[NmbTri - 1][2] = buf1[deg1 - 1]; VisEdg[NmbTri - 1][0] = 1; VisEdg[NmbTri - 1][1] = 1; VisEdg[NmbTri - 1][2] = 0; // for (i = 0; i < NmbTri; i++) { // printf("GmfTesselatePolygon: Tri[%d] %d %d %d \n", i, Tri[i][0], Tri[i][1], Tri[i][2]); // printf("GmfTesselatePolygon: VisEdg[%d] %d %d %d \n", i, VisEdg[i][0], VisEdg[i][1], VisEdg[i][2]); // } return NmbTri; } /*----------------------------------------------------------------------------*/ /* Return the percentage of cache hit while doing element to node accesses */ /*----------------------------------------------------------------------------*/ float GmfEvaluateNumbering(int NmbEle, int NmbNod, int *PtrEle, int *PtrEnd) { int i, j, EleStp, HshTab[256] = {0}, NmbHit = 0; if(!NmbEle || !NmbNod || !PtrEle || !PtrEnd || (PtrEnd < PtrEle)) return(0.); // Compute the user data structure stride between two lines of elements EleStp = (NmbEle > 1) ? (PtrEnd - PtrEle) / (NmbEle - 1) : 0; // Simulate the search and insert in a 256 entries hash table for(i=0;i #ifdef INT64 #define itg int64_t #else #define itg int32_t #endif #ifdef REAL32 #define fpn float #else #define fpn double #endif /*----------------------------------------------------------------------------*/ /* Prototypes of public structures */ /*----------------------------------------------------------------------------*/ typedef struct { int64_t MshIdx; itg NmbBndHdr, (*BndHdrTab)[2], NmbBndVer, *BndVerTab; itg NmbInrHdr, (*InrHdrTab)[2], NmbInrVer, *InrVerTab; itg NmbVolHdr, (*VolHdrTab)[2], NmbVolFac, *VolFacTab; }PolMshSct; /*----------------------------------------------------------------------------*/ /* Prototypes of public procedures */ /*----------------------------------------------------------------------------*/ #ifdef __cplusplus extern "C" { #endif extern PolMshSct *GmfAllocatePolyhedralStructure(int64_t); extern void GmfFreePolyghedralStructure (PolMshSct *); extern int GmfReadBoundaryPolygons (PolMshSct *); extern int GmfReadPolyhedra (PolMshSct *); extern itg GmfGetBoundaryPolygon (PolMshSct *, itg, itg *); extern itg GmfGetInnerPolygon (PolMshSct *, itg, itg *); extern itg GmfGetPolyhedron (PolMshSct *, itg, itg *); extern itg GmfTesselatePolygon (PolMshSct *, itg, itg (*)[3], itg (*)[3]); extern float GmfEvaluateNumbering (int, int, int *, int *); #ifdef __cplusplus } // end extern "C" #endif #endif libMeshb-7.80/utilities/libmeshb7_helpers.md000066400000000000000000000133061456732543400211500ustar00rootroot00000000000000## libMeshb helper functions The source file **libMeshb7\_helpers.c** is a collection additional functions that you may include in your code. These functions are of higher level than the libMeshb which is a low level I/O library. Consequently, they may not be of interest to everyone and are not part of the library itself. This higher-level code offers some data structures that store multiple fields (files, tables, information) as well as a high-level procedure to perform on these structures (open, allocate and read a whole mesh file with a single call for example). You can either include the C file in your project or pick-up some functions and structures that suit your needs. ### Define the size of your integers and real numbers Two data kinds are defined to easily switch from 32-bit and 64-bit integers and reals. This convention is used throughout the helper procedures. **itg** should be used to define all integers instead of using **int** or **long**, its default size is 32 bits (int32\_t) and you only need to add the compiling flag **-DINT64** to switch all itg to 64-bit (int64\_t). **fpn** should be used to define all reals instead of using **float** or **double**, its default size is 64 bits (double) and you only need to add the compiling flag **-DREAL32** to switch all itg to 32-bit (float). ### Polyhedral mesh structure To easily handle arbitrary degree polygons and polyhedra, a new set of keywords have been added: - GmfBoundaryPolygonHeaders - GmfBoundaryPolygonVertices - GmfInnerPolygonHeaders - GmfInnerPolygonVertices - GmfPolyhedraHeaders - GmfPolyhedraFaces All the tables pointers and sizes can be conveniently stored in this dedicated structure. ```C++ typedef struct { int64_t MshIdx; itg NmbBndHdr, (*BndHdrTab)[2], NmbBndVer, *BndVerTab; itg NmbInrHdr, (*InrHdrTab)[2], NmbInrVer, *InrVerTab; itg NmbVolHdr, (*VolHdrTab)[2], NmbVolFac, *VolFacTab; }PolMshSct; ``` - MshIdx stores the mesh file index this structure if associated with. - NmbBndHdr: number of lines in the GmfBoundaryPolygonHeaders keyword (number of boundary polygons). - BndHdrTab: table of polygon headers that give the index of the polygon's vertices table in BndVerTab and a material reference. - NmbBndVer: total size of compounded boundary polygons vertices (GmfBoundaryPolygonVertices). - BndVerTab: table of vertex indices of all boundary polygons. - NmbInrHdr: number of lines in the GmfInnerPolygonHeaders keyword (number of inner polygons referenced by polyhedra). - InrHdrTab: table of polygon headers that give the index of the polygon's vertices table in InrVerTab and a material reference. - NmbInrVer: total size of compounded inner polygons vertices (GmfInnerPolygonVertices). - InrVerTab: table of vertex indices of all inner polygons. - NmbVolHdr: number of lines in the GmfPolyhedraHeaders keyword (number of polyhedra). - VolHdrTab: table of polyhedra headers that give the index of the element face index table in VolFacTab and a material reference. - NmbVolFac: total size of compounded polyhedra faces (GmfPolyhedraFaces). - VolFacTab: table of polygons indices of all polyhedra. ### GmfAllocatePolyghedralStructure Synopsis: this function only allocate memories but does not read the data from the mesh file. - input: the index of an already opened mesh file that contains polygons or polyhedra. - output: a PolMshSct structure set up with the table sizes and pointers to allocated memory. ### GmfFreePolyghedralStructure Synopsis: free all tables and the structure itself. - input: a pointer to an allocated PolMshSct structure. ### GmfReadBoundaryPolygons Synopsis: reads the two keywords' fields, GmfBoundaryPolygonHeaders and GmfBoundaryPolygonVertices, into the polyhedra structure's tables. - input: a pointer to an allocated PolMshSct structure. - output: 0 in case of failure and 1 otherwise. ### GmfReadPolyhedra Synopsis: reads the four keywords' fields, GmfInnerPolygonHeaders, GmfInnerPolygonVertices, GmfPolyhedraHeaders and GmfPolyhedraFaces, into the polyhedra structure's tables. - input: a pointer to an allocated PolMshSct structure. - output: 0 in case of failure and 1 otherwise. ### GmfGetBoundaryPolygon Synopsis: extract a polygon's vertex list from the main global table and copy them to your local table. - input: a pointer to an allocated PolMshSct structure, the index of a boundary polygonal face, a pointer to a table of **itg** that you have previously allocated with at least 256 entries. - output: the polygon's number of vertices is the function's returned value (0 in case of failure) and the provided table is filled with the polygons' vertex indices. ### GmfGetInnerPolygon Same procedure as above but for inner polygons only. ### GmfGetPolyhedron Synopsis: extract a polyhedron's face list from the main global table and copy them to your local table. - input: a pointer to an allocated PolMshSct structure, the index of a polyhedral element, a pointer to a table of **itg** that you have previously allocated with at least 256 entries. - output: the polyhedron's number of faces is the function's returned value (0 in case of failure) and the provided table is filled with the polyhedron's face indices. ### GmlEvaluateNumbering Synopsis: Evaluate the quality of a mesh elements and nodes numbering. Usually, Delaunay meshes are quite bad (quality < 50) and need renumbering, octree or advancing front meshes are tolerable (from 50 to 90), and Hilbert renumbered meshes have a quality greater than 90. -input: the number of elements. -input: the number of nodes that make-up this kind of element (edge = 2, tetrahedron = 4). -input pointer to the first node of the first element. -input pointer to the first node of the last element. -output: a quality factor that ranges from 0 (bad) to 100 (perfect). libMeshb-7.80/utilities/msh2mesh.c000066400000000000000000000141061456732543400171210ustar00rootroot00000000000000 /*----------------------------------------------------------*/ /* */ /* MSH2SMESH */ /* */ /* Loic MARECHAL 21/10/99 */ /* */ /* lecture d'un .faces/.points et ecriture d'un .mesh */ /* */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------*/ #include #include #include #include /*----------------------------------------------------------*/ /* Protos */ /*----------------------------------------------------------*/ void mouliner(char *,char *); /*----------------------------------------------------------*/ /* Parsing des arguments */ /*----------------------------------------------------------*/ main(argc,argv) int argc; char **argv; { char *nom_source=0,*nom_destination=0; switch(argc) { case 1 : { printf("\nMSH2MESH v1.1 04/01/2000 Loic MARECHAL\n"); printf(" Utilisation : msh2mesh source destination\n"); printf(" source : nom du maillage au format .POINTS/.FACES sans l'extension\n"); printf(" destination : nom du maillage au format MESH\n\n"); exit(1); }break; case 2 : { if(argc==2) { fprintf(stderr,"Nombre d'arguments incorrect!\n"); exit(1); } }break; case 3 : { nom_source=*++argv; nom_destination=*++argv; }break; } mouliner(nom_source,nom_destination); } /*----------------------------------------------------------*/ /* Moulinette : lit et ecrit a la volee */ /*----------------------------------------------------------*/ void mouliner(nom_source,nom_destination) char *nom_source,*nom_destination; { FILE *h_points,*h_faces,*dest; int nbv=0,nbf=0,nbp,nbe=0,nbt=0,nbq=0,ref,i,j,v0,v1,v2,v3,vide,meshversion=1,pos; double x,y,z; char nom[256],sx[256],sy[256],sz[256],*ptr; /* ouverture du .points/.faces */ strcpy(nom, nom_source); strcat(nom, ".points"); if(!(h_points = fopen(nom, "r"))) { fprintf(stderr, "Impossible d'ouvrir %s\n",nom); exit(1); } strcpy(nom, nom_source); strcat(nom, ".faces"); if(!(h_faces = fopen(nom, "r"))) { fprintf(stderr, "Impossible d'ouvrir %s\n",nom); exit(1); } /* ouverture du mesh de destination */ if(!(dest = ouvrir_mesh(nom_destination,"w",&meshversion))) { fprintf(stderr,"Impossible d'ouvrir %s\n",nom_destination); exit(1); } /* lecture des dimensions dans le .points/.faces */ fscanf(h_points, "%d", &nbv); fscanf(h_faces, "%d", &nbf); /* conversion des points a la volee */ ecrire_commentaire(dest, "Conversion d'un fichier msh2 (.points/.faces) par MSH2MESH v 1.0 de Loic MARECHAL"); ecrire_mot_clef(dest, MeshDimension); ecrire_int(dest, 3); formater(dest); ecrire_mot_clef(dest, Vertices); ecrire_int(dest, nbv); formater(dest); for(i=1;i<=nbv;i++) { /* Lecture des coordonnees dans des chaines */ fscanf(h_points, "%s %s %s %d", &sx, &sy, &sz, &ref); /* Les 'd' ou 'D' dur fortran sont remplaces par des 'e' pour le C */ if(ptr=strpbrk(sx,"dD")) *ptr = 'e'; if(ptr=strpbrk(sy,"dD")) *ptr = 'e'; if(ptr=strpbrk(sz,"dD")) *ptr = 'e'; /* Lecture C standard des chaines filtrees */ sscanf(sx, "%lf", &x); sscanf(sy, "%lf", &y); sscanf(sz, "%lf", &z); ecrire_reel(dest, x); ecrire_reel(dest, y); ecrire_reel(dest, z); ecrire_int(dest, ref); formater(dest); } /* compte le nombre d'edges, de triangles et de quadrangles */ pos = ftell(h_faces); for(i=1;i<=nbf;i++) { fscanf(h_faces, "%d", &nbp); switch(nbp) { case 2 : { nbe++; for(j=1;j<=5;j++) fscanf(h_faces, "%d", &vide); }break; case 3 : { nbt++; for(j=1;j<=7;j++) fscanf(h_faces, "%d", &vide); }break; case 4 : { nbq++; for(j=1;j<=9;j++) fscanf(h_faces, "%d", &vide); }break; } } /* conversion des edges a la volee */ if(nbe) { fseek(h_faces, pos, SEEK_SET); ecrire_mot_clef(dest, Edges); ecrire_int(dest, nbe); formater(dest); for(i=1;i<=nbf;i++) { fscanf(h_faces, "%d", &nbp); switch(nbp) { case 2 : { fscanf(h_faces, "%d %d %d %d %d", &v0, &v1, &ref, &vide, &vide); ecrire_int(dest, v0); ecrire_int(dest, v1); ecrire_int(dest, ref); formater(dest); }break; case 3 : { for(j=1;j<=7;j++) fscanf(h_faces, "%d", &vide); }break; case 4 : { for(j=1;j<=9;j++) fscanf(h_faces, "%d", &vide); }break; } } } /* conversion des triangles a la volee */ if(nbt) { fseek(h_faces, pos, SEEK_SET); ecrire_mot_clef(dest, Triangles); ecrire_int(dest, nbt); formater(dest); for(i=1;i<=nbf;i++) { fscanf(h_faces, "%d", &nbp); switch(nbp) { case 2 : { for(j=1;j<=5;j++) fscanf(h_faces, "%d", &vide); }break; case 3 : { fscanf(h_faces, "%d %d %d %d %d %d %d", \ &v0, &v1, &v2, &ref, &vide, &vide, &vide); ecrire_int(dest, v0); ecrire_int(dest, v1); ecrire_int(dest, v2); ecrire_int(dest, ref); formater(dest); }break; case 4 : { for(j=1;j<=9;j++) fscanf(h_faces, "%d", &vide); }break; } } } /* conversion des quadrangles a la volee */ if(nbq) { fseek(h_faces, pos, SEEK_SET); ecrire_mot_clef(dest, Quadrilaterals); ecrire_int(dest, nbq); formater(dest); for(i=1;i<=nbf;i++) { fscanf(h_faces, "%d", &nbp); switch(nbp) { case 2 : { for(j=1;j<=5;j++) fscanf(h_faces, "%d", &vide); }break; case 3 : { for(j=1;j<=7;j++) fscanf(h_faces, "%d", &vide); }break; case 4 : { fscanf(h_faces, "%d %d %d %d %d %d %d %d %d", \ &v0, &v1, &v2, &v3, &ref, &vide, &vide, &vide, &vide); ecrire_int(dest, v0); ecrire_int(dest, v1); ecrire_int(dest, v2); ecrire_int(dest, v3); ecrire_int(dest, ref); formater(dest); }break; } } } /* fermeture des fichiers */ ecrire_mot_clef(dest, End); fclose(h_points); fclose(h_faces); fclose(dest); } libMeshb-7.80/utilities/mshinfo.c000066400000000000000000000305571456732543400170460ustar00rootroot00000000000000#include #include #include #include "libmeshb7.h" /* simulate exception */ #include jmp_buf ex_buf__; extern const char *GmfKwdFmt[ GmfMaxKwd + 1 ][3]; int main(int argc, char *argv[]) { int NmbVer, dim, deg, FilVer, NmbCor, NmbRidg; int NmbTet, NmbHex, NmbPri, NmbPyr, NmbTri, NmbQua, NmbEdg; int NmbTetP2, NmbHexQ2, NmbPriP2, NmbPyrP2, NmbTriP2, NmbQuaQ2, NmbEdgP2, NmbNod; int NmbTetP3, NmbHexQ3, NmbPriP3, NmbPyrP3, NmbTriP3, NmbQuaQ3, NmbEdgP3; int NmbTetP4, NmbHexQ4, NmbPriP4, NmbPyrP4, NmbTriP4, NmbQuaQ4, NmbEdgP4; int OrdTet, OrdHex, OrdPri, OrdPyr, OrdTri, OrdQua, OrdEdg; int OrdTetP2, OrdHexQ2, OrdPriP2, OrdPyrP2, OrdTriP2, OrdQuaQ2, OrdEdgP2; int OrdTetP3, OrdHexQ3, OrdPriP3, OrdPyrP3, OrdTriP3, OrdQuaQ3, OrdEdgP3; int OrdTetP4, OrdHexQ4, OrdPriP4, OrdPyrP4, OrdTriP4, OrdQuaQ4, OrdEdgP4; int64_t InpMsh = 0, InpSol = 0; int i, j, ite = 0; float flt; double dbl, time = 0.0; int NbrLin, SolSiz, NbrTyp, TypTab[ GmfMaxTyp ]; deg = 1; NmbNod = 0; if (argc <= 1) { printf(" USAGE : mshinfo name [-check]\n"); exit(1); } char name[1024]; char sol[1024]; strcpy(name,argv[1]); strcpy(sol,argv[1]); char *sub = NULL; sub = strstr(name,".mesh"); // check if it has the extension .mesh[b] char *subsol = NULL; subsol = strstr(name,".sol"); // check if it has the extension .sol[b] // Mesh part //-- test the reading of the file as a mesh if (subsol == NULL) { //--- no extension sol[b], check if it is a mesh name without extnsion if(sub != NULL) sol[sub-name]='\0'; // change file name to be opened as sol even if mesh extension is given if (sub != NULL) InpMsh = GmfOpenMesh(name, GmfRead, &FilVer, &dim); else { strcat(name,".meshb"); InpMsh = GmfOpenMesh(name, GmfRead, &FilVer, &dim); if(InpMsh == 0){ int ln = strlen(name); name[ln -1] = '\0'; InpMsh = GmfOpenMesh(name, GmfRead, &FilVer, &dim); } } } if ( InpMsh != 0 && subsol == NULL ) { printf("Mesh informations :\n"); /* Get number of entities*/ NmbVer = GmfStatKwd(InpMsh, GmfVertices); NmbCor = GmfStatKwd(InpMsh, GmfCorners); NmbRidg = GmfStatKwd(InpMsh, GmfRidges); NmbTet = GmfStatKwd(InpMsh, GmfTetrahedra); NmbHex = GmfStatKwd(InpMsh, GmfHexahedra); NmbPyr = GmfStatKwd(InpMsh, GmfPyramids); NmbPri = GmfStatKwd(InpMsh, GmfPrisms); NmbTri = GmfStatKwd(InpMsh, GmfTriangles); NmbQua = GmfStatKwd(InpMsh, GmfQuadrilaterals); NmbEdg = GmfStatKwd(InpMsh, GmfEdges); NmbTetP2 = GmfStatKwd(InpMsh, GmfTetrahedraP2); NmbHexQ2 = GmfStatKwd(InpMsh, GmfHexahedraQ2); NmbPyrP2 = GmfStatKwd(InpMsh, GmfPyramidsP2); NmbPriP2 = GmfStatKwd(InpMsh, GmfPrismsP2); NmbTriP2 = GmfStatKwd(InpMsh, GmfTrianglesP2); NmbQuaQ2 = GmfStatKwd(InpMsh, GmfQuadrilateralsQ2); NmbEdgP2 = GmfStatKwd(InpMsh, GmfEdgesP2); NmbTetP3 = GmfStatKwd(InpMsh, GmfTetrahedraP3); NmbHexQ3 = GmfStatKwd(InpMsh, GmfHexahedraQ3); NmbPyrP3 = GmfStatKwd(InpMsh, GmfPyramidsP3); NmbPriP3 = GmfStatKwd(InpMsh, GmfPrismsP3); NmbTriP3 = GmfStatKwd(InpMsh, GmfTrianglesP3); NmbQuaQ3 = GmfStatKwd(InpMsh, GmfQuadrilateralsQ3); NmbEdgP3 = GmfStatKwd(InpMsh, GmfEdgesP3); NmbTetP4 = GmfStatKwd(InpMsh, GmfTetrahedraP4); NmbHexQ4 = GmfStatKwd(InpMsh, GmfHexahedraQ4); NmbPyrP4 = GmfStatKwd(InpMsh, GmfPyramidsP4); NmbPriP4 = GmfStatKwd(InpMsh, GmfPrismsP4); NmbTriP4 = GmfStatKwd(InpMsh, GmfTrianglesP4); NmbQuaQ4 = GmfStatKwd(InpMsh, GmfQuadrilateralsQ4); NmbEdgP4 = GmfStatKwd(InpMsh, GmfEdgesP4); //-- Nodes ordering OrdTet = GmfStatKwd(InpMsh, GmfTetrahedraP1Ordering); OrdHex = GmfStatKwd(InpMsh, GmfHexahedraQ1Ordering); OrdPyr = GmfStatKwd(InpMsh, GmfPyramidsP1Ordering); OrdPri = GmfStatKwd(InpMsh, GmfPrismsP1Ordering); OrdTri = GmfStatKwd(InpMsh, GmfTrianglesP1Ordering); OrdQua = GmfStatKwd(InpMsh, GmfQuadrilateralsQ1Ordering); OrdEdg = GmfStatKwd(InpMsh, GmfEdgesP1Ordering); OrdTetP2 = GmfStatKwd(InpMsh, GmfTetrahedraP2Ordering); OrdHexQ2 = GmfStatKwd(InpMsh, GmfHexahedraQ2Ordering); OrdPyrP2 = GmfStatKwd(InpMsh, GmfPyramidsP2Ordering); OrdPriP2 = GmfStatKwd(InpMsh, GmfPrismsP2Ordering); OrdTriP2 = GmfStatKwd(InpMsh, GmfTrianglesP2Ordering); OrdQuaQ2 = GmfStatKwd(InpMsh, GmfQuadrilateralsQ2Ordering); OrdEdgP2 = GmfStatKwd(InpMsh, GmfEdgesP2Ordering); OrdTetP3 = GmfStatKwd(InpMsh, GmfTetrahedraP3Ordering); OrdHexQ3 = GmfStatKwd(InpMsh, GmfHexahedraQ3Ordering); OrdPyrP3 = GmfStatKwd(InpMsh, GmfPyramidsP3Ordering); OrdPriP3 = GmfStatKwd(InpMsh, GmfPrismsP3Ordering); OrdTriP3 = GmfStatKwd(InpMsh, GmfTrianglesP3Ordering); OrdQuaQ3 = GmfStatKwd(InpMsh, GmfQuadrilateralsQ3Ordering); OrdEdgP3 = GmfStatKwd(InpMsh, GmfEdgesP3Ordering); OrdTetP4 = GmfStatKwd(InpMsh, GmfTetrahedraP4Ordering); OrdHexQ4 = GmfStatKwd(InpMsh, GmfHexahedraQ4Ordering); OrdPyrP4 = GmfStatKwd(InpMsh, GmfPyramidsP4Ordering); OrdPriP4 = GmfStatKwd(InpMsh, GmfPrismsP4Ordering); OrdTriP4 = GmfStatKwd(InpMsh, GmfTrianglesP4Ordering); OrdQuaQ4 = GmfStatKwd(InpMsh, GmfQuadrilateralsQ4Ordering); OrdEdgP4 = GmfStatKwd(InpMsh, GmfEdgesP4Ordering); printf("version = %d; dim = %d; nbv = %d; (nbc = %d)\n", FilVer, dim, NmbVer, NmbCor); if ( NmbTet > 0 || NmbTri > 0 || NmbEdg > 0 || NmbHex > 0|| NmbPri > 0 || NmbPyr > 0|| NmbQua > 0 ) { printf("P1/Q1 elements :\n"); if ( NmbTet >0 || NmbTri > 0 || NmbEdg > 0 ) printf("nbtet = %d; nbtri = %d; nbedg = %d; (nbrdg = %d)\n", NmbTet, NmbTri, NmbEdg, NmbRidg); if ( NmbHex > 0|| NmbPri > 0 || NmbPyr > 0|| NmbQua > 0 ) printf("nbhex = %d; nbpri = %d; nbpyr = %d; nbqua = %d\n", NmbHex, NmbPri, NmbPyr, NmbQua); } if ( OrdTet >0 || OrdTri > 0 || OrdEdg > 0 || OrdHex > 0|| OrdPri > 0 || OrdPyr > 0|| OrdQua > 0 ) { printf("P1/Q1 ordering :\n"); if ( OrdTet > 0 || OrdTri > 0 || OrdEdg > 0 ) { if ( OrdTet > 0 ) printf("tet "); if ( OrdTri > 0 ) printf("tri "); if ( OrdEdg > 0 ) printf("edg "); printf("\n"); } if ( OrdHex > 0|| OrdPri > 0 || OrdPyr > 0|| OrdQua > 0 ) { if ( OrdHex > 0 ) printf("hex "); if ( OrdPri > 0 ) printf("pri "); if ( OrdPyr > 0 ) printf("pyr "); if ( OrdQua > 0 ) printf("qua "); printf("\n"); } } if ( NmbTetP2 > 0 || NmbTriP2 > 0 || NmbEdgP2 > 0 || NmbHexQ2 > 0|| NmbPriP2 > 0 || NmbPyrP2 > 0|| NmbQuaQ2 > 0 ) { printf("P2/Q2 elements :\n"); if ( NmbTetP2 > 0 || NmbTriP2 > 0 || NmbEdgP2 > 0 ) printf("nbtetP2 = %d; nbtriP2 = %d; nbedgP2 = %d; (nbrdg = %d)\n", NmbTetP2, NmbTriP2, NmbEdgP2, NmbRidg); if ( NmbHexQ2 > 0|| NmbPriP2 > 0 || NmbPyrP2 > 0|| NmbQuaQ2 > 0 ) printf("nbhexQ2 = %d; nbpriP2 = %d; nbpyrP2 = %d; nbquaQ2 = %d\n", NmbHexQ2, NmbPriP2, NmbPyrP2, NmbQuaQ2); } if ( OrdTetP2 >0 || OrdTriP2 > 0 || OrdEdgP2 > 0 || OrdHexQ2 > 0|| OrdPriP2 > 0 || OrdPyrP2 > 0|| OrdQuaQ2 > 0 ) { printf("P2/Q2 ordering :\n"); if ( OrdTetP2 > 0 || OrdTriP2 > 0 || OrdEdgP2 > 0 ) { if ( OrdTetP2 > 0 ) printf("tetP2 "); if ( OrdTriP2 > 0 ) printf("triP2 "); if ( OrdEdgP2 > 0 ) printf("edgP2 "); printf("\n"); } if ( OrdHexQ2 > 0|| OrdPriP2 > 0 || OrdPyrP2 > 0|| OrdQuaQ2 > 0 ) { if ( OrdHexQ2 > 0 ) printf("hexQ2 "); if ( OrdPriP2 > 0 ) printf("priP2 "); if ( OrdPyrP2 > 0 ) printf("pyrP2 "); if ( OrdQuaQ2 > 0 ) printf("quaQ2 "); printf("\n"); } } if ( NmbTetP3 > 0 || NmbTriP3 > 0 || NmbEdgP3 > 0 || NmbHexQ3 > 0|| NmbPriP3 > 0 || NmbPyrP3 > 0|| NmbQuaQ3 > 0 ) { printf("P3/Q3 elements :\n"); if ( NmbTetP3 > 0 || NmbTriP3 > 0 || NmbEdgP3 > 0 ) printf("nbtetP3 = %d; nbtriP3 = %d; nbedgP3 = %d; (nbrdg = %d)\n", NmbTetP3, NmbTriP3, NmbEdgP3, NmbRidg); if ( NmbHexQ3 > 0|| NmbPriP3 > 0 || NmbPyrP3 > 0|| NmbQuaQ3 > 0 ) printf("nbhexQ3 = %d; nbpriP3 = %d; nbpyrP3 = %d; nbquaQ3 = %d\n", NmbHexQ3, NmbPriP3, NmbPyrP3, NmbQuaQ3); } if ( OrdTetP3 >0 || OrdTriP3 > 0 || OrdEdgP3 > 0 || OrdHexQ3 > 0|| OrdPriP3 > 0 || OrdPyrP3 > 0|| OrdQuaQ3 > 0 ) { printf("P3/Q3 ordering :\n"); if ( OrdTetP3 > 0 || OrdTriP3 > 0 || OrdEdgP3 > 0 ) { if ( OrdTetP3 > 0 ) printf("tetP3 "); if ( OrdTriP3 > 0 ) printf("triP3 "); if ( OrdEdgP3 > 0 ) printf("edgP3 "); printf("\n"); } if ( OrdHexQ3 > 0|| OrdPriP3 > 0 || OrdPyrP3 > 0|| OrdQuaQ3 > 0 ) { if ( OrdHexQ3 > 0 ) printf("hexQ3 "); if ( OrdPriP3 > 0 ) printf("priP3 "); if ( OrdPyrP3 > 0 ) printf("pyrP3 "); if ( OrdQuaQ3 > 0 ) printf("quaQ3 "); printf("\n"); } } if ( NmbTetP4 > 0 || NmbTriP4 > 0 || NmbEdgP4 > 0 || NmbHexQ4 > 0|| NmbPriP4 > 0 || NmbPyrP4 > 0|| NmbQuaQ4 > 0 ) { printf("P4/Q4 elements :\n"); if ( NmbTetP4 > 0 || NmbTriP4 > 0 || NmbEdgP4 > 0 ) printf("nbtetP4 = %d; nbtriP4 = %d; nbedgP4 = %d; (nbrdg = %d)\n", NmbTetP4, NmbTriP4, NmbEdgP4, NmbRidg); if ( NmbHexQ4 > 0|| NmbPriP4 > 0 || NmbPyrP4 > 0|| NmbQuaQ4 > 0 ) printf("nbhexQ4 = %d; nbpriP4 = %d; nbpyrP4 = %d; nbquaQ4 = %d\n", NmbHexQ4, NmbPriP4, NmbPyrP4, NmbQuaQ4); } if ( OrdTetP4 >0 || OrdTriP4 > 0 || OrdEdgP4 > 0 || OrdHexQ4 > 0|| OrdPriP4 > 0 || OrdPyrP4 > 0|| OrdQuaQ4 > 0 ) { printf("P4/Q4 ordering :\n"); if ( OrdTetP4 > 0 || OrdTriP4 > 0 || OrdEdgP4 > 0 ) { if ( OrdTetP4 > 0 ) printf("tetP4 "); if ( OrdTriP4 > 0 ) printf("triP4 "); if ( OrdEdgP4 > 0 ) printf("edgP4 "); printf("\n"); } if ( OrdHexQ4 > 0|| OrdPriP4 > 0 || OrdPyrP4 > 0|| OrdQuaQ4 > 0 ) { if ( OrdHexQ4 > 0 ) printf("hexQ4 "); if ( OrdPriP4 > 0 ) printf("priP4 "); if ( OrdPyrP4 > 0 ) printf("pyrP4 "); if ( OrdQuaQ4 > 0 ) printf("quaQ4 "); printf("\n"); } } GmfCloseMesh(InpMsh); } // solution part //-- test the reading of the file as a solution if (subsol != NULL) { //--- a file containing char ".sol" is given in input InpSol = GmfOpenMesh(sol, GmfRead, &FilVer, &dim); if ( InpSol == 0 ) { strcat(sol,"b"); InpSol = GmfOpenMesh(sol, GmfRead, &FilVer, &dim); } } else { //-- check if a solution with the same name as the mesh one exists strcat(sol,".sol"); InpSol = GmfOpenMesh(sol, GmfRead, &FilVer, &dim); if ( InpSol == 0 ) { strcat(sol,"b"); InpSol = GmfOpenMesh(sol, GmfRead, &FilVer, &dim); } } if (InpSol!= 0 ) { printf("Solution informations :\n"); if ( GmfStatKwd(InpSol, GmfTime) ) { GmfGotoKwd(InpSol, GmfTime); if ( FilVer == GmfFloat ) { // read 32 bits float GmfGetLin(InpSol, GmfTime, &flt); time = (double)flt; } else if ( FilVer == GmfDouble ) { // read 64 bits float GmfGetLin(InpSol, GmfTime, &dbl); time = dbl; } } if ( GmfStatKwd(InpSol, GmfIterations) ) { GmfGotoKwd(InpSol, GmfIterations); GmfGetLin( InpSol, GmfIterations, &ite); } printf("dim = %d; ite = %d; time = %lg\n",dim, ite, time); for(i=1; i<=GmfMaxKwd; i++) { if( ( (!strcmp(GmfKwdFmt[i][2], "sr") || !strcmp(GmfKwdFmt[i][2], "hr")) ) && ( (NbrLin = GmfStatKwd(InpSol, i, &NbrTyp, &SolSiz, TypTab, °, &NmbNod)) ) ) { printf("%s = %d\n", GmfKwdFmt[i][0], NbrLin); if ( deg != 1 && NmbNod != 0 ) printf("deg = %d; nbnod = %d\n",deg, NmbNod); printf("type = ["); for(j=0; j #include #include #include "libmesh5.h" #define IMAX(a,b) ((a) > (b) ? (a) : (b)) #define IMIN(a,b) ((a) < (b) ? (a) : (b)) #define DMAX(a,b) ((a) > (b) ? (a) : (b)) #define DMIN(a,b) ((a) < (b) ? (a) : (b)) // -- structure de donnees typedef double Vertex[3]; typedef int Tetrahedron[4]; typedef int Triangle[3]; int bin; int b64; int amdba; typedef struct mesh_t { int NbrVer; int NbrTet; int NbrTfr; int NbrVfr; int Sub[5]; Vertex *Crd; int *VerRef; Tetrahedron *Tet; int *TetRef; Triangle *Tfr; int *TfrRef; } Mesh, *pMesh; // --- declaration fonctions void usage(); static Mesh* loadMesh(char *InNam); static int openInputMesh(char *InNam, int *FilVer); static Mesh* loadAmdba(char *MshNam); static Mesh* loadNoboite(char *InNam); static void freeMesh(Mesh *msh); static void writeMesh(char *OutNam, Mesh* msh); static void writeNoboiteFormat(char *OutNam, Mesh* msh); static void writeNoboite(char *OutNam, Mesh* msh); static void writeNoboiteb(char *outFil, Mesh* msh); static void writeNoboite8(char *OutNam, Mesh* msh); static void writeNoboiteb8(char *outFil, Mesh* msh); void usage() { printf("\n -- NB2MESH \n"); printf(" Copyright (c) INRIA, 2008\n"); printf(" Version compiled %s at %s\n\n",__DATE__,__TIME__); printf(" USAGE : nb2mesh filein fileout [-f] [-f64/-f32]\n"); printf(" filein : xxx.[no]boite[b] or xxx.mesh[b]\n"); printf(" fileout: yyy.mesh[b] or yyy.[no]boite[b]\n"); printf(" -f : write binary file\n"); printf(" -f32/-f64 : write 32-bits/64-bits file\n"); printf("\n"); fflush(stdout); exit(1); } int main(int argc, char **argv) { int nb2msh,msh2nb,msh2msh,i,end; char *inNam,*outNam; char *sub; Mesh *msh; //-- variables globales nb2msh = msh2nb = msh2msh = 0; b64 = 0; bin = 0; end = 0; amdba = 0; if( argc < 3 || argc > 5 ) usage(); printf("\n -- NB2MESH \n"); printf(" Copyright (c) INRIA, 2008\n"); printf(" Version compiled %s at %s\n\n",__DATE__,__TIME__); if ( argc != 3 ) { for (i=3; iNbrVer = 0; msh->NbrTet = 0; msh->NbrTfr = 0; msh->NbrVfr = 0; //--- define the input file name and open mesh file InpMsh = openInputMesh(InNam,&FilVer); //--- Get number of entities of the mesh file msh->NbrVer = GmfStatKwd(InpMsh, GmfVertices); msh->NbrTfr = GmfStatKwd(InpMsh, GmfTriangles); msh->NbrTet = GmfStatKwd(InpMsh, GmfTetrahedra); if ( msh->NbrVer <= 0 ) { fprintf(stderr,"\n ## ERROR: NO VERTICES. IGNORED\n"); fprintf(stderr," Number of vertices = %lld\n",(long long)msh->NbrVer); exit(1); } if ( msh->NbrTfr <= 0 ) { fprintf(stderr,"\n ## ERROR: NO BOUNDARY FACES. IGNORED\n"); fprintf(stderr," Number of bdry faces = %lld\n",(long long)msh->NbrTfr); exit(1); } if ( msh->NbrTet <= 0 ) { fprintf(stderr,"\n ## ERROR: NO TETRAHEDRA. IGNORED\n"); fprintf(stderr," Number of tetrahedra = %lld\n",(long long)msh->NbrTet); exit(1); } msh->Crd = malloc(sizeof(Vertex)*(msh->NbrVer+1)); if ( msh->Crd == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE VERTICES.\n"); exit(1); } msh->VerRef = malloc(sizeof(int)*(msh->NbrVer+1)); if ( msh->VerRef == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE VERTICES REF.\n"); exit(1); } msh->Tet = malloc(sizeof(Tetrahedron)*(msh->NbrTet+1)); if ( msh->Tet == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE TETRAHEDRA.\n"); exit(1); } msh->TetRef = malloc(sizeof(int)*(msh->NbrTet+1)); if ( msh->TetRef == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE TETRHEDRA REF.\n"); exit(1); } msh->Tfr = malloc(sizeof(Triangle)*(msh->NbrTfr+1)); if ( msh->Tfr == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE BOUNDARY TRIANGLES.\n"); exit(1); } msh->TfrRef = malloc(sizeof(int)*(msh->NbrTfr+1)); if ( msh->TfrRef == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE BOUNDARY TRIANGLES REF.\n"); exit(1); } printf(" Vertices %d\n", msh->NbrVer); printf(" Boundary Triangles %d\n", msh->NbrTfr); printf(" Tetrahedra %d\n", msh->NbrTet); GmfGotoKwd(InpMsh, GmfVertices); if ( FilVer == GmfFloat ) { // read 32 bits float for (i=1; iNbrVer+1; ++i) { GmfGetLin(InpMsh, GmfVertices, &bufFlt[0], &bufFlt[1], &bufFlt[2], &iref); msh->Crd[i][0] = (double) bufFlt[0]; msh->Crd[i][1] = (double) bufFlt[1]; msh->Crd[i][2] = (double) bufFlt[2]; msh->VerRef[i] = iref; if (i<10) printf(" crd[%d] = %lf %lf %lf\n",i,msh->Crd[i][0],msh->Crd[i][1],msh->Crd[i][2]); if (i==2372 || i==8582) printf(" crd[%d] = %lf %lf %lf\n",i,msh->Crd[i][0],msh->Crd[i][1],msh->Crd[i][2]); } } else if ( FilVer == GmfDouble ) { // read 64 bits float for (i=1; iNbrVer+1; ++i) { GmfGetLin(InpMsh, GmfVertices, &bufDbl[0], &bufDbl[1], &bufDbl[2], &iref); msh->Crd[i][0] = bufDbl[0]; msh->Crd[i][1] = bufDbl[1]; msh->Crd[i][2] = bufDbl[2]; msh->VerRef[i] = iref; if (i<10) printf(" crd[%d] = %lf %lf %lf\n",i,msh->Crd[i][0],msh->Crd[i][1],msh->Crd[i][2]); if (i==2372 || i==8582) printf(" crd[%d] = %lf %lf %lf\n",i,msh->Crd[i][0],msh->Crd[i][1],msh->Crd[i][2]); } } else { fprintf(stderr,"\n ## ERROR: WRONG MESH FORMAT VERSION. IGNORED\n"); exit(1); } GmfGotoKwd(InpMsh, GmfTetrahedra); for (i=1; iNbrTet+1; i++) GmfGetLin(InpMsh, GmfTetrahedra, &msh->Tet[i][0], &msh->Tet[i][1], &msh->Tet[i][2], &msh->Tet[i][3],&msh->TetRef[i]); //--- Read Tfr and get NbrVfr. Assume that all boundary vertices are first in the list. GmfGotoKwd(InpMsh, GmfTriangles); for (i=1; iNbrTfr+1; i++) { GmfGetLin(InpMsh, GmfTriangles, &msh->Tfr[i][0], &msh->Tfr[i][1], &msh->Tfr[i][2],&msh->TfrRef[i]); for (j=0; j<3; ++j) msh->NbrVfr = IMAX(msh->NbrVfr,msh->Tfr[i][j]); } if ( !GmfCloseMesh(InpMsh) ) { fprintf(stderr," ## ERROR: Cannot close mesh file %s.mesh[b] ! \n",InNam); exit(1); } //--- Set noboite subdomain coef msh->Sub[0] = 1; msh->Sub[1] = msh->Sub[2] = msh->Sub[3] = 0; msh->Sub[4] = 1; return msh; } /* Open mesh file for reading and verif */ static int openInputMesh(char *InNam, int *FilVer) { int InpMsh,dim; char InpFil[512]; char *ptr = NULL; strcpy(InpFil,InNam); ptr = strstr(InpFil,".mesh"); // strstr :locate a substring in a string if ( !ptr ) ptr = "null"; // if found return a pointer to the 1st char, otherwise return NULL if ( strcmp(ptr,".mesh") == 0 || strcmp(ptr,".meshb") == 0 ) { if ( !(InpMsh = GmfOpenMesh(InpFil,GmfRead,FilVer,&dim)) ) { fprintf(stderr," ## ERROR: Mesh data file %s not found ! \n",InpFil); exit(1); } } else { strcat(InpFil,".meshb"); if ( !(InpMsh = GmfOpenMesh(InpFil,GmfRead,FilVer,&dim)) ) { strcpy(InpFil,InNam); strcat(InpFil,".mesh"); if ( !(InpMsh = GmfOpenMesh(InpFil,GmfRead,FilVer,&dim)) ) { fprintf(stderr," ## ERROR: Mesh data file %s.mesh[b] not found !! \n",InNam); exit(1); } } } printf(" %% %s OPENED, VERSION %d\n",InpFil,*FilVer); if ( dim != 3 ) { printf(" ## ERROR: INVALID DIMENSION. READ %d, 3 EXPECTED \n",dim); exit(1); } return InpMsh; } static Mesh* loadAmdba(char *MshNam) { int i; //--- Get the global mesh structure Mesh *msh = malloc(sizeof(Mesh)); msh->NbrVer = 0; msh->NbrTet = 0; msh->NbrTfr = 0; //--- read amdba file FILE* f = fopen(MshNam,"r"); printf(" read %s\n",MshNam); fscanf(f,"%d %d",&msh->NbrVer,&msh->NbrTfr); printf(" nbv %d nbf %d\n",msh->NbrVer,msh->NbrTfr); msh->Crd = malloc(sizeof(Vertex)*(msh->NbrVer+1)); if ( msh->Crd == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE VERTICES.\n"); exit(1); } msh->VerRef = malloc(sizeof(int)*(msh->NbrVer+1)); if ( msh->VerRef == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE VERTICES REF.\n"); exit(1); } msh->Tfr = malloc(sizeof(Triangle)*(msh->NbrTfr+1)); if ( msh->Tfr == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE BOUNDARY TRIANGLES.\n"); exit(1); } msh->TfrRef = malloc(sizeof(int)*(msh->NbrTfr+1)); if ( msh->TfrRef == NULL ) { fprintf(stderr,"\n ## ERROR: CANNOT ALLOCATE BOUNDARY TRIANGLES REF.\n"); exit(1); } for (i=1; i<=msh->NbrVer; ++i) { fscanf(f,"%lf %lf %lf",&msh->Crd[i][0],&msh->Crd[i][1],&msh->Crd[i][2]); msh->VerRef[i] = 0.; //printf("ver %d = %lf %lf %lf\n",i,msh->Crd[i][0],msh->Crd[i][1],msh->Crd[i][2]); //exit(1); } for (i=1; i<=msh->NbrTfr; ++i) { fscanf(f,"%d %d %d",&msh->Tfr[i][0],&msh->Tfr[i][1],&msh->Tfr[i][2]); msh->TfrRef[i] = 3; } fclose(f); return msh; } static Mesh* loadNoboite(char *MshNam) { //--- Get the global mesh structure Mesh *msh = malloc(sizeof(Mesh)); msh->NbrVer = 0; msh->NbrTet = 0; msh->NbrTfr = 0; return msh; } static void freeMesh(Mesh *msh) { if ( msh->Crd != NULL ) free( (void *) msh->Crd); if ( msh->Tfr != NULL ) free( (void *) msh->Tfr); if ( msh->Tet != NULL ) free( (void *) msh->Tet); if ( msh->TfrRef != NULL ) free( (void *) msh->TfrRef); } static void writeMesh(char *OutNam, Mesh *msh) { int OutMsh; int i,j; float bufFlt[3]; char outFil[512]; //--- set output file name strcpy(outFil,OutNam); if ( bin == 1 ) strcat(outFil,".meshb"); else strcat(outFil,".mesh"); //--- open mesh file if ( b64 == 1 ) { if ( !(OutMsh = GmfOpenMesh(outFil,GmfWrite,GmfDouble,3)) ) { fprintf(stderr," ## ERROR: Cannot open mesh file %s ! \n",outFil); exit(1); } printf(" %% %s OPENED, VERSION %d\n",outFil,GmfDouble); } else { if ( !(OutMsh = GmfOpenMesh(outFil,GmfWrite,GmfFloat,3)) ) { fprintf(stderr," ## ERROR: Cannot open mesh file %s ! \n",outFil); exit(1); } printf(" %% %s OPENED, VERSION %d\n",outFil,GmfFloat); } //--- write Vertices GmfSetKwd(OutMsh, GmfVertices,msh->NbrVer); if ( b64 == 1 ) { for (i=1; i<=msh->NbrVer; i++) GmfSetLin(OutMsh, GmfVertices, msh->Crd[i][0], msh->Crd[i][1], msh->Crd[i][2], msh->VerRef[i]); } else { for (i=1; i<=msh->NbrVer; i++) { for (j=0; j<3; ++j) bufFlt[j] = (float)msh->Crd[i][j]; GmfSetLin(OutMsh, GmfVertices, bufFlt[0], bufFlt[1], bufFlt[2], msh->VerRef[i]); } } //--- write triangles GmfSetKwd(OutMsh, GmfTriangles,msh->NbrTfr); for (i=1; i<=msh->NbrTfr; i++) GmfSetLin(OutMsh, GmfTriangles, msh->Tfr[i][0], msh->Tfr[i][1], msh->Tfr[i][2], msh->TfrRef[i]); //--- write tetrahedra GmfSetKwd(OutMsh, GmfTetrahedra,msh->NbrTet); for (i=1; i<=msh->NbrTet; i++) GmfSetLin(OutMsh, GmfTetrahedra, msh->Tet[i][0], msh->Tet[i][1], msh->Tet[i][2], msh->Tet[i][3], msh->TetRef[i]); if ( !GmfCloseMesh(OutMsh) ) { fprintf(stderr," ## ERROR: Cannot close mesh file %s.mesh[b] ! \n",outFil); exit(1); } } static void writeNoboiteFormat(char *OutNam, Mesh* msh) { char outFil[512]; strcpy(outFil,OutNam); if ( bin == 1 ) { if ( b64 == 1 ) { strcat(outFil,".noboiteb8"); writeNoboiteb8(outFil,msh); } else { strcat(outFil,".noboiteb"); writeNoboiteb(outFil,msh); } } else { if ( b64 == 1 ) { strcat(outFil,".noboite8"); writeNoboite8(outFil,msh); } else { strcat(outFil,".noboite"); writeNoboite(outFil,msh); } } } static void writeNoboite(char *outFil, Mesh* msh) { FILE *out; int iVer,iTet,k; int nbele,loele,nbelef,loelef; int nbpoi,lopoi,nbpoif,lopoif; int nbhlo,lohlo,nbhlof,lohlof; int npfixe,icube,npbli; out = fopen(outFil,"w"); if ( !out ) { fprintf(stderr," ## ERROR: Unalble to open file %s ! \n",outFil); exit(1); } fprintf(stdout," %% Writing file %s\n",outFil); //--- define noboite parameters nbele = 1; loele = 4*msh->NbrTet; nbelef = loelef = 0; nbpoi = 1; lopoi = 3*msh->NbrVer; nbpoif = lopoif = 0; nbhlo = 1; lohlo = msh->NbrVer; nbhlof = lohlof = 0; npfixe = msh->NbrVfr; icube = 0; npbli = 0; fprintf(out,"%d %d ",msh->NbrTet,msh->NbrVer); fprintf(out,"%d %d %d ",npfixe,icube,npbli); fprintf(out,"%d %d %d %d ",nbele,loele,nbelef,loelef); fprintf(out,"%d %d %d %d ",nbpoi,lopoi,nbpoif,lopoif); fprintf(out,"%d %d %d %d\n",nbhlo,lohlo,nbhlof,lohlof); fprintf(stdout," -- Writing simplices\n"); for (iTet=1; iTet<=msh->NbrTet; ++iTet) { fprintf(out,"%d %d %d %d ",msh->Tet[iTet][0],msh->Tet[iTet][1],msh->Tet[iTet][2],msh->Tet[iTet][3]); if ( iTet % 3 == 0 ) fprintf(out,"\n"); } if ( (iTet-1) % 3 != 0 ) fprintf(out,"\n"); fprintf(stdout," -- Writing coords\n"); for (iVer=1; iVer<=msh->NbrVer; iVer++) { fprintf(out,"%g %g %g ",(float)msh->Crd[iVer][0],(float)msh->Crd[iVer][1],(float)msh->Crd[iVer][2]); if ( iVer % 3 == 0 ) fprintf(out,"\n"); } if ( (iVer-1) % 3 != 0 ) fprintf(out,"\n"); //--- write coefficients for (k=0; k<=4; k++) fprintf(out,"%d ",msh->Sub[k]); fprintf(out,"\n"); fclose(out); } static void writeNoboiteb(char *outFil, Mesh* msh) { FILE *out; int sizBlk,deb,fin,j,k,l,idx; int nbele,loele,nbelef,loelef; int nbpoi,lopoi,nbpoif,lopoif; int nbhlo,lohlo,nbhlof,lohlof; int npfixe,icube,npbli,no; float crd[3]; out = fopen(outFil,"w"); if ( !out ) { fprintf(stderr," ## ERROR: Unalble to open file %s ! \n",outFil); exit(1); } fprintf(stdout," %% Writing file %s\n",outFil); //--- Binary size block sizBlk = 12 * 16384; //--- define noboite parameters : split or not the record if ( msh->NbrTet < sizBlk ) { // only one block nbele = 1; loele = 4*msh->NbrTet; nbelef = loelef = 0; // elements nbpoi = 1; lopoi = 3*msh->NbrVer; nbpoif = lopoif = 0; // vertices nbhlo = 1; lohlo = msh->NbrVer; nbhlof = lohlof = 0; // sub-domain } else { // split the record in a series of block of size sizBlk //printf(" ## Splitting the records %d\n",sizBlk); nbele = 4*msh->NbrTet / sizBlk; // nbr of blk loele = sizBlk; // siz of blk nbelef = 1; // more than one blk loelef = 4*msh->NbrTet - sizBlk*nbele; // size of the residual blk nbpoi = 3*msh->NbrVer / sizBlk; lopoi = sizBlk; nbpoif = 1; lopoif = 3*msh->NbrVer - sizBlk*nbpoi; if ( msh->NbrVer < sizBlk ) { nbhlo = 1; lohlo = msh->NbrVer; nbhlof = lohlof = 0; } else { nbhlo = msh->NbrVer / sizBlk; lohlo = sizBlk; nbhlof = 1; lohlof = msh->NbrVer - sizBlk*nbhlo; } } npfixe = msh->NbrVfr; icube = 0; npbli = 0; no = 68; // =17*4 as we write 17 int fwrite(&no,sizeof(int),1,out); fwrite(&msh->NbrTet,sizeof(int),1,out); fwrite(&msh->NbrVer,sizeof(int),1,out); fwrite(&npfixe,sizeof(int),1,out); fwrite(&icube,sizeof(int),1,out); fwrite(&npbli,sizeof(int),1,out); fwrite(&nbele,sizeof(int),1,out); fwrite(&loele,sizeof(int),1,out); fwrite(&nbelef,sizeof(int),1,out); fwrite(&loelef,sizeof(int),1,out); fwrite(&nbpoi,sizeof(int),1,out); fwrite(&lopoi,sizeof(int),1,out); fwrite(&nbpoif,sizeof(int),1,out); fwrite(&lopoif,sizeof(int),1,out); fwrite(&nbhlo,sizeof(int),1,out); fwrite(&lohlo,sizeof(int),1,out); fwrite(&nbhlof,sizeof(int),1,out); fwrite(&lohlof,sizeof(int),1,out); fwrite(&no,sizeof(int),1,out); fprintf(stdout," -- Writing simplices\n"); deb = 1; fin = loele; idx = 1; //--- write each block for (j=1; j<=nbele; j++) { no = (fin-deb+1)*sizeof(int); fwrite(&no,sizeof(int),1,out); for (k=deb; k<=fin; k+=4) { for (l=0; l<4; ++l) fwrite(&msh->Tet[idx][l],sizeof(int),1,out); //fwrite(&msh->Tet[idx],sizeof(int),4,out); idx++; } deb += loele; fin += loele; fwrite(&no,sizeof(int),1,out); } //--- write the last block (residual block) if ( deb < 4*msh->NbrTet ) { no = (4*msh->NbrTet-deb+1)*sizeof(int); fwrite(&no,sizeof(int),1,out); for (k=deb; k<=4*msh->NbrTet; k+=4) { for (l=0; l<4; ++l) fwrite(&msh->Tet[idx][l],sizeof(int),1,out); //fwrite(&msh->Tet[idx],sizeof(int),4,out); idx++; } fwrite(&no,sizeof(int),1,out); } fprintf(stdout," -- Writing coords\n"); deb = 1; fin = lopoi; idx = 1; //--- write each block for (j=1; j<=nbpoi; j++) { no = (fin-deb+1)*sizeof(float); if (j==1) printf(" no = %d\n",no); fwrite(&no,sizeof(int),1,out); for (k=deb; k<=fin; k+=3) { if (j==1&&k<=30) printf(" crd[%d] = %lf %lf %lf\n",idx,msh->Crd[idx][0],msh->Crd[idx][1],msh->Crd[idx][2]); if (idx==2372 || idx==8582) printf(" crd[%d] = %lf %lf %lf\n",idx,msh->Crd[idx][0],msh->Crd[idx][1],msh->Crd[idx][2]); for (l=0; l<3; ++l) crd[l] = (float)msh->Crd[idx][l]; fwrite(&crd[0],3*sizeof(float),1,out); idx++; } deb += lopoi; fin += lopoi; fwrite(&no,sizeof(int),1,out); } //--- write the last block (residual block) if ( deb < 3*msh->NbrVer ) { no = (3*msh->NbrVer-deb+1)*sizeof(float); fwrite(&no,sizeof(int),1,out); for (k=deb; k<=3*msh->NbrVer; k+=3) { for (l=0; l<3; ++l) crd[l] = (float)msh->Crd[idx][l]; fwrite(&crd[0],3*sizeof(float),1,out); idx++; } fwrite(&no,sizeof(int),1,out); } //--- write coefficients no = 5*sizeof(int); fwrite(&no,sizeof(int),1,out); fwrite(&msh->Sub,sizeof(int),5,out); fwrite(&no,sizeof(int),1,out); fclose(out); } static void writeNoboite8(char *outFil, Mesh* msh) { FILE *out; long long int iVer,iTet,k; long long int nbele,loele,nbelef,loelef; long long int nbpoi,lopoi,nbpoif,lopoif; long long int nbhlo,lohlo,nbhlof,lohlof; long long int npfixe,icube,npbli; out = fopen(outFil,"w"); if ( !out ) { fprintf(stderr," ## ERROR: Unalble to open file %s ! \n",outFil); exit(1); } fprintf(stdout," %% Writing file %s\n",outFil); //--- define noboite parameters nbele = 1; loele = 4*msh->NbrTet; nbelef = loelef = 0; nbpoi = 1; lopoi = 3*msh->NbrVer; nbpoif = lopoif = 0; nbhlo = 1; lohlo = msh->NbrVer; nbhlof = lohlof = 0; npfixe = msh->NbrVfr; icube = 0; npbli = 0; fprintf(out,"%d %d ",msh->NbrTet,msh->NbrVer); fprintf(out,"%lld %lld %lld ",npfixe,icube,npbli); fprintf(out,"%lld %lld %lld %lld ",nbele,loele,nbelef,loelef); fprintf(out,"%lld %lld %lld %lld ",nbpoi,lopoi,nbpoif,lopoif); fprintf(out,"%lld %lld %lld %lld\n",nbhlo,lohlo,nbhlof,lohlof); fprintf(stdout," -- Writing simplices\n"); for (iTet=1; iTet<=msh->NbrTet; iTet++) { fprintf(out,"%lld %lld %lld %lld ", (long long int)msh->Tet[iTet][0],(long long int)msh->Tet[iTet][1], (long long int)msh->Tet[iTet][2],(long long int)msh->Tet[iTet][3]); if ( iTet % 3 == 0 ) fprintf(out,"\n"); } if ( (iTet-1) % 3 != 0 ) fprintf(out,"\n"); fprintf(stdout," -- Writing coords\n"); for (iVer=1; iVer<=msh->NbrVer; iVer++) { fprintf(out,"%.15lg %.15lg %.15lg ",msh->Crd[iVer][0],msh->Crd[iVer][1],msh->Crd[iVer][2]); if ( iVer % 3 == 0 ) fprintf(out,"\n"); } if ( (iVer-1) % 3 != 0 ) fprintf(out,"\n"); //--- write coefficients for (k=0; k<=4; k++) fprintf(out,"%lld ",(long long int)msh->Sub[k]); fprintf(out,"\n"); fclose(out); } static void writeNoboiteb8(char *outFil, Mesh* msh) { FILE *out; long long int sizBlk,deb,fin,j,k,idx; long long int nbele,loele,nbelef,loelef; long long int nbpoi,lopoi,nbpoif,lopoif; long long int nbhlo,lohlo,nbhlof,lohlof; long long int npfixe,icube,npbli,no; out = fopen(outFil,"w"); if ( !out ) { fprintf(stderr," ## ERROR: Unalble to open file %s ! \n",outFil); exit(1); } fprintf(stdout," %% Writing file %s\n",outFil); //--- Binary size block sizBlk = 12 * 16384; //--- define noboite parameters : split or not the record if ( msh->NbrTet < sizBlk ) { // only one block nbele = 1; loele = 4*msh->NbrTet; nbelef = loelef = 0; // elements nbpoi = 1; lopoi = 3*msh->NbrVer; nbpoif = lopoif = 0; // vertices nbhlo = 1; lohlo = msh->NbrVer; nbhlof = lohlof = 0; // sub-domain } else { // split the record in a series of block of size sizBlk //printf(" ## Splitting the records %d\n",sizBlk); nbele = 4*msh->NbrTet / sizBlk; // nbr of blk loele = sizBlk; // siz of blk nbelef = 1; // more than one blk loelef = 4*msh->NbrTet - sizBlk*nbele; // size of the residual blk nbpoi = 3*msh->NbrVer / sizBlk; lopoi = sizBlk; nbpoif = 1; lopoif = 3*msh->NbrVer - sizBlk*nbpoi; if ( msh->NbrVer < sizBlk ) { nbhlo = 1; lohlo = msh->NbrVer; nbhlof = lohlof = 0; } else { nbhlo = msh->NbrVer / sizBlk; lohlo = sizBlk; nbhlof = 1; lohlof = msh->NbrVer - sizBlk*nbhlo; } } npfixe = msh->NbrVfr; icube = 0; npbli = 0; no = 136; // =17*8 as we write 17 long long int // NO EN INT OU LONG LONG INT ?????? fwrite(&no,sizeof(long long int),1,out); fwrite(&msh->NbrTet,sizeof(long long int),1,out); fwrite(&msh->NbrVer,sizeof(long long int),1,out); fwrite(&npfixe,sizeof(long long int),1,out); fwrite(&icube,sizeof(long long int),1,out); fwrite(&npbli,sizeof(long long int),1,out); fwrite(&nbele,sizeof(long long int),1,out); fwrite(&loele,sizeof(long long int),1,out); fwrite(&nbelef,sizeof(long long int),1,out); fwrite(&loelef,sizeof(long long int),1,out); fwrite(&nbpoi,sizeof(long long int),1,out); fwrite(&lopoi,sizeof(long long int),1,out); fwrite(&nbpoif,sizeof(long long int),1,out); fwrite(&lopoif,sizeof(long long int),1,out); fwrite(&nbhlo,sizeof(long long int),1,out); fwrite(&lohlo,sizeof(long long int),1,out); fwrite(&nbhlof,sizeof(long long int),1,out); fwrite(&lohlof,sizeof(long long int),1,out); fwrite(&no,sizeof(long long int),1,out); fprintf(stdout," -- Writing simplices\n"); deb = 1; fin = loele; idx = 1; //--- write each block for (j=1; j<=nbele; j++) { no = (fin-deb+1)*sizeof(long long int); fwrite(&no,sizeof(long long int),1,out); for (k=deb; k<=fin; k+=4) { fwrite(&msh->Tet[idx],sizeof(long long int),4,out); idx++; } deb += loele; fin += loele; fwrite(&no,sizeof(long long int),1,out); } //--- write the last block (residual block) if ( deb < 4*msh->NbrTet ) { no = (4*msh->NbrTet-deb+1)*sizeof(long long int); fwrite(&no,sizeof(long long int),1,out); for (k=deb; k<=4*msh->NbrTet; k+=4) { fwrite(&msh->Tet[idx],sizeof(long long int),4,out); idx++; } fwrite(&no,sizeof(long long int),1,out); } fprintf(stdout," -- Writing coords\n"); deb = 1; fin = lopoi; idx = 1; //--- write each block for (j=1; j<=nbpoi; j++) { no = (fin-deb+1)*sizeof(double); fwrite(&no,sizeof(long long int),1,out); for (k=deb; k<=fin; k+=3) { fwrite(&msh->Crd[idx],3*sizeof(double),1,out); idx++; } deb += lopoi; fin += lopoi; fwrite(&no,sizeof(long long int),1,out); } //--- write the last block (residual block) if ( deb < 3*msh->NbrVer ) { no = (3*msh->NbrVer-deb+1)*sizeof(double); fwrite(&no,sizeof(long long int),1,out); for (k=deb; k<=3*msh->NbrVer; k+=3) { fwrite(&msh->Crd[idx],3*sizeof(double),1,out); idx++; } fwrite(&no,sizeof(long long int),1,out); } //--- write coefficients no = 5*sizeof(long long int); fwrite(&no,sizeof(long long int),1,out); fwrite(&msh->Sub,sizeof(long long int),5,out); fwrite(&no,sizeof(long long int),1,out); fclose(out); } libMeshb-7.80/utilities/speed_test.c000066400000000000000000000061171456732543400175350ustar00rootroot00000000000000 #include #include #ifdef _WIN32 #include #else #include #endif #include /*----------------------------------------------------------------------------*/ /* Starts or stops the given timer */ /*----------------------------------------------------------------------------*/ double GetWallClock() { #ifdef WIN32 struct __timeb64 tb; _ftime64(&tb); return((double)tb.time + (double)tb.millitm/1000.); #else struct timeval tp; gettimeofday(&tp, NULL); return(tp.tv_sec + tp.tv_usec / 1000000.); #endif } /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ int main() { int i, NmbVer, NmbTet, ver, dim, *RefTab, (*TetTab)[5]; int64_t InpMsh, OutMsh; double (*VerTab)[3]; double timer; /*-----------------------------------*/ /* Open mesh file "tets.meshb" */ /*-----------------------------------*/ timer = GetWallClock(); if(!(InpMsh = GmfOpenMesh("tets.meshb", GmfRead, &ver, &dim))) return(1); printf("InpMsh : idx = %lld, version = %d, dimension = %d\n", InpMsh, ver, dim); // Read the number of vertices and allocate memory NmbVer = GmfStatKwd(InpMsh, GmfVertices); printf("InpMsh : nmb vertices = %d\n", NmbVer); VerTab = malloc((size_t)(NmbVer+1) * 3 * sizeof(double)); RefTab = malloc((size_t)(NmbVer+1) * sizeof(int)); // Read the number of tets and allocate memory NmbTet = GmfStatKwd(InpMsh, GmfTetrahedra); printf("InpMsh : nmb tets = %d\n", NmbTet); TetTab = malloc((size_t)(NmbTet+1) * 5 * sizeof(int)); // Read the vertices GmfGetBlock(InpMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfDoubleVec, 3, &VerTab[1][0], &VerTab[ NmbVer ][0], GmfInt, &RefTab[1], &RefTab[ NmbVer ] ); // Read the tets GmfGetBlock(InpMsh, GmfTetrahedra, 1, NmbTet, 0, NULL, NULL, GmfIntVec, 5, &TetTab[1][0], &TetTab[ NmbTet ][0]); // Close the tet mesh GmfCloseMesh(InpMsh); printf("Time for reading: %g seconds\n", GetWallClock() - timer); /*-----------------------------------*/ /* Write the mesh back */ /*-----------------------------------*/ timer = GetWallClock(); if(!(OutMsh = GmfOpenMesh("tets_out.meshb", GmfWrite, ver, dim))) return(1); // Write the vertices GmfSetKwd(OutMsh, GmfVertices, NmbVer); GmfSetBlock(OutMsh, GmfVertices, 1, NmbVer, 0, NULL, NULL, GmfDoubleVec, 3, &VerTab[1][0], &VerTab[ NmbVer ][0], GmfInt, &RefTab[1], &RefTab[ NmbVer ] ); // Write the tets GmfSetKwd(OutMsh, GmfTetrahedra, NmbTet); GmfSetBlock(InpMsh, GmfTetrahedra, 1, NmbTet, 0, NULL, NULL, GmfIntVec, 5, &TetTab[1][0], &TetTab[ NmbTet ][0]); // Do not forget to close the mesh file GmfCloseMesh(OutMsh); printf("Time for writing: %g seconds\n", GetWallClock() - timer); free(TetTab); free(RefTab); free(VerTab); return(0); } libMeshb-7.80/utilities/transmesh.c000066400000000000000000000221551456732543400174020ustar00rootroot00000000000000 /*----------------------------------------------------------------------------*/ /* */ /* TRANSMESH V 5.2 */ /* */ /*----------------------------------------------------------------------------*/ /* */ /* Description: convert mesh file from/to ascii/bin */ /* Author: Loic MARECHAL */ /* Creation date: mar 08 2004 */ /* Last modification: aug 05 2021 */ /* */ /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ /* Defines */ /*----------------------------------------------------------------------------*/ #define TRANSMESH 1 #define StrSiz 1024 #define DefMaxRef 1024 #define MaxGrp 1024 #define MaxTok 1024 #ifdef PRINTF_INT64_MODIFIER #define INT64_T_FMT "%" PRINTF_INT64_MODIFIER "d" #else # ifdef GMF_WINDOWS # define INT64_T_FMT "%Id" # else # include # define INT64_T_FMT "%" PRId64 # endif #endif /*----------------------------------------------------------------------------*/ /* Includes */ /*----------------------------------------------------------------------------*/ #include #include #include #include "libmeshb7.h" /*----------------------------------------------------------------------------*/ /* Prototypes of structures */ /*----------------------------------------------------------------------------*/ typedef struct { int idx, NmbRef, *RefTab, typ, sgn; char *NfoStr; }GrpSct; /*----------------------------------------------------------------------------*/ /* Return the kwd's integer from its string */ /*----------------------------------------------------------------------------*/ int GetKwdIdx(char *KwdStr) { int KwdIdx; for(KwdIdx=1; KwdIdx<=GmfMaxKwd; KwdIdx++) if(!strcmp(GmfKwdFmt[ KwdIdx ][0], KwdStr)) return(KwdIdx); return(0); } /*----------------------------------------------------------------------------*/ /* Check args and copy each field from in-file to out-file */ /*----------------------------------------------------------------------------*/ int main(int ArgCnt, char **ArgVec) { int NmbTyp, SolSiz, TypTab[ GmfMaxTyp ], FilVer = 0, InpVer, OutVer = 1; int i, j, dim, MaxRef, ArgIdx = 1, NmbGrp = 0, pos, deg, NmbNod; int64_t NmbLin, InpIdx, OutIdx; char *InpNam, *OutNam, *PtrArg, *FlgTab; GrpSct GrpTab[ MaxGrp ], *grp; #ifndef WIN32 float f; double d; int NmbTok, NmbTok2, TokTab[ MaxTok ], TokTab2[ MaxTok ]; char *MshNam[ StrSiz ], *TmpStr, *TmpStr2, *TmpStr3; #endif if(ArgCnt == 1) { puts("\nTRANSMESH v5.2, july 19 2017, Loic MARECHAL / INRIA\n"); puts(" Usage : transmesh source_name destination_name (-options)\n"); puts(" optional : -v output_file_version"); puts(" version 1: 32 bits integers, 32 bits reals, file size < 2 GigaBytes"); puts(" version 2: 32 bits integers, 64 bits reals, file size < 2 GigaBytes"); puts(" version 3: 32 bits integers, 64 bits reals, file size < 8 ExaBytes"); puts(" version 4: 64 bits integers, 64 bits reals, file size < 8 ExaBytes\n"); #ifndef WIN32 puts(" optional : -igroup inflow 1 Triangles 3,5,6,9-14"); puts(" Defines a group named \"inflow\" with index 1 that includes"); puts(" a set of comma-seprated triangle references."); puts(" You may also specify ranges between two dash-separated indices.\n"); puts(" optional : -egroup wings 3 Quadrilaterals 6-20"); puts(" Defines a group named \"wings\" with index 3 that excludes"); puts(" a set of comma-seprated quadrilateral references."); puts(" You may also specify ranges between two dash-separated indices.\n"); #endif exit(0); } InpNam = ArgVec[ ArgIdx++ ]; OutNam = ArgVec[ ArgIdx++ ]; if(!strcmp(InpNam, OutNam)) { puts("The output mesh cannot overwrite the input mesh."); exit(1); } memset(GmfMaxRefTab, 0, (GmfMaxKwd + 1) * sizeof(int)); while(ArgIdx < ArgCnt) { PtrArg = ArgVec[ ArgIdx++ ]; if(!strcmp(PtrArg, "-v")) { FilVer = atoi(ArgVec[ ArgIdx++ ]); if( (FilVer < 1) || (FilVer > 4) ) { printf("Wrong size type : %d\n", FilVer); exit(1); } } #ifndef WIN32 if(!strcmp(PtrArg, "-igroup") || !strcmp(PtrArg, "-egroup")) { grp = &GrpTab[ NmbGrp++ ]; grp->NfoStr = ArgVec[ ArgIdx++ ]; grp->idx = atoi(ArgVec[ ArgIdx++ ]); grp->typ = GetKwdIdx(ArgVec[ ArgIdx++ ]); grp->NmbRef = 0; NmbTok = 0; TmpStr = ArgVec[ ArgIdx++ ]; while( (NmbTok < MaxTok) && ((TmpStr2 = strsep(&TmpStr, ","))) ) { NmbTok2 = 0; while( (NmbTok2 < 2) && ((TmpStr3 = strsep(&TmpStr2, "-"))) ) TokTab2[ NmbTok2++ ] = atoi(TmpStr3); if(NmbTok2 == 1) TokTab[ NmbTok++ ] = TokTab2[0]; else if(NmbTok2 == 2) for(i=TokTab2[0]; i<=TokTab2[1]; i++) TokTab[ NmbTok++ ] = i; else exit(1); } grp->NmbRef = NmbTok; grp->RefTab = malloc(grp->NmbRef * sizeof(int)); for(i=0;iNmbRef;i++) grp->RefTab[i] = TokTab[i]; if(!strcmp(PtrArg, "-igroup")) grp->sgn = 1; else grp->sgn = -1; } #endif } if(!(InpIdx = GmfOpenMesh(InpNam, GmfRead, &InpVer, &dim))) { fprintf(stderr,"Source of error : TRANSMESH / OPEN_MESH\n"); fprintf(stderr,"Cannot open %s\n", InpNam); return(1); } if(FilVer) OutVer = FilVer; else OutVer = InpVer; if(!(OutIdx = GmfOpenMesh(OutNam, GmfWrite, OutVer, dim))) { fprintf(stderr,"Source of error : TRANSMESH / OPEN_MESH\n"); fprintf(stderr,"Cannot open %s\n", OutNam); return(1); } for(i=0;i<=GmfMaxKwd;i++) { if(!strcmp(GmfKwdFmt[i][0], "Reserved") || !strcmp(GmfKwdFmt[i][0], "End")) continue; if(!GmfGotoKwd(InpIdx, i)) continue; if(strcmp("i", GmfKwdFmt[i][1])) { if((NmbLin = GmfStatKwd(InpIdx, i))) GmfSetKwd(OutIdx, i, 0); else continue; } else if(strcmp("sr", GmfKwdFmt[i][2]) && strcmp("hr", GmfKwdFmt[i][2])) { if((NmbLin = GmfStatKwd(InpIdx, i))) GmfSetKwd(OutIdx, i, NmbLin); else continue; } else { if(!strcmp("sr", GmfKwdFmt[i][2])) { if((NmbLin = GmfStatKwd(InpIdx, i, &NmbTyp, &SolSiz, TypTab))) GmfSetKwd(OutIdx, i, NmbLin, NmbTyp, TypTab); else continue; } else if(!strcmp("hr", GmfKwdFmt[i][2])) { if((NmbLin = GmfStatKwd(InpIdx, i, &NmbTyp, &SolSiz, TypTab, °, &NmbNod))) GmfSetKwd(OutIdx, i, NmbLin, NmbTyp, TypTab, deg, NmbNod); else continue; } } printf("Parsing %s : "INT64_T_FMT" item\n", GmfKwdFmt[i][0], NmbLin); for(j=1;j<=NmbLin;j++) GmfCpyLin(InpIdx, OutIdx, i); } if(NmbGrp) { GmfSetKwd(OutIdx, GmfIRefGroups, NmbGrp); pos = 1; for(i=0;isgn == -1) { MaxRef = GmfMaxRefTab[ grp->typ ] ? GmfMaxRefTab[ grp->typ ] : DefMaxRef; FlgTab = malloc(MaxRef+1); for(i=1;i<=MaxRef;i++) FlgTab[i] = 1; for(i=0;iNmbRef;i++) FlgTab[ grp->RefTab[i] ] = 0; free(grp->RefTab); grp->NmbRef = MaxRef - grp->NmbRef; grp->RefTab = malloc(grp->NmbRef * sizeof(int)); pos = 0; for(i=1;i<=MaxRef;i++) if(FlgTab[i]) grp->RefTab[ pos++ ] = i; free(FlgTab); } GmfSetLin(OutIdx, GmfIRefGroups, grp->NfoStr, grp->idx, grp->typ, grp->NmbRef, pos); pos += grp->NmbRef; } GmfSetKwd(OutIdx, GmfDRefGroups, pos - 1); for(i=0;iNmbRef;j++) GmfSetLin(OutIdx, GmfDRefGroups, grp->typ, grp->RefTab[j], grp->idx); } } if(!GmfCloseMesh(InpIdx)) return(1); if(!GmfCloseMesh(OutIdx)) return(1); return(0); } libMeshb-7.80/utilities/ugrid2mesh.c000066400000000000000000000244751456732543400174560ustar00rootroot00000000000000/* Adrien Loseille, INRIA, 2016 */ #include #include #include #include #define max(a,b) ((a)>(b))?(a):(b) typedef int mint; typedef long long int lint; typedef double double3[3]; typedef mint int3[3]; typedef mint int4[4]; typedef mint int5[5]; typedef mint int6[6]; typedef mint int8[8]; int littleEndian() { int n = 1; // little endian if true if(*(char *)&n == 1) return 1; else return 0; } double swapd(double d) { double a; unsigned char *dst = (unsigned char *)&a; unsigned char *src = (unsigned char *)&d; if ( ! littleEndian() ) return d; dst[0] = src[7]; dst[1] = src[6]; dst[2] = src[5]; dst[3] = src[4]; dst[4] = src[3]; dst[5] = src[2]; dst[6] = src[1]; dst[7] = src[0]; return a; } int swapi4(int d) { mint a; unsigned char *dst = (unsigned char *)&a; unsigned char *src = (unsigned char *)&d; if ( ! littleEndian() ) return d; dst[0] = src[3]; dst[1] = src[2]; dst[2] = src[1]; dst[3] = src[0]; return a; } lint swapi8(lint d) { lint a; unsigned char *dst = (unsigned char *)&a; unsigned char *src = (unsigned char *)&d; if ( ! littleEndian() ) return d; dst[0] = src[7]; dst[1] = src[6]; dst[2] = src[5]; dst[3] = src[4]; dst[4] = src[3]; dst[5] = src[2]; dst[6] = src[1]; dst[7] = src[0]; return a; } mint main(int argc, char *argv[]) { mint nbrVer=0, nbrTri=0, nbrQua=0, nbrTet = 0, nbrPyr = 0, nbrPri = 0, nbrHex = 0; int3 *tri = NULL; int4 *qua = NULL; int4 *tet = NULL; int5 *pyr = NULL; int6 *pri = NULL; int8 *hex = NULL; mint *lsurf = NULL; double3 *crd = NULL; int writeSurf = 0; mint iVer,iTri,iQua,iTet,iPyr,iPri,iHex,i,ix; if ( argc < 3 ) { printf(" Usage : ugrid2mesh file.ugrid file.mesh[b] [ -surf -info ]\n"); return 0; } /* write surface only */ if ( argc >= 4 ) { if( strcmp(argv[3],"-surf") == 0 ) writeSurf = 1; } printf(" *************************************** \n"); printf("\n"); printf(" UGRID2MESH Conversion, version 1.0 \n"); printf("\n"); printf(" *************************************** \n"); FILE *f = fopen(argv[1],"r"); if ( f == NULL ) { printf(" ## ERROR: CANNOT OPEN FILE %s \n", argv[1]); return 0; } //--- should be used to see if it is necessary to swaps the bytes.... printf(" ** Local system is in %s \n",(littleEndian() == 1)?"Little Endian encoding":"Big Endian encoding \n"); //printf(" f= %p \n",f); unsigned int size[7]; fread(size,sizeof(int),7,f); //printf(" size %d %d %d %d %d %d %d \n",swapi4(size[0]),swapi4(size[1]),swapi4(size[2]),swapi4(size[3]),swapi4(size[4]),swapi4(size[5]),swapi4(size[6])); printf(" %% %s OPENED \n",argv[1]); printf(" Number of Nodes %15d\n",swapi4(size[0])); printf(" Number of Triangles %15d\n",swapi4(size[1])); printf(" Number of Quads %15d\n",swapi4(size[2])); printf(" Number of Tetrahedra %15d\n",swapi4(size[3])); printf(" Number of Pyramids %15d\n",swapi4(size[4])); printf(" Number of Prisms %15d\n",swapi4(size[5])); printf(" Number of Hexes %15d\n",swapi4(size[6])); //printf(" size of the file %lg Gb\n",(swapi4(size[0])*3.0*8.0 + swapi4(size[1])*4.*4. + swapi4(size[3])*4.*4.)/(1024*1024*1024)); /* exist here if just a query on the mesh */ printf(" argc %d \n",argc); if ( argc > 2 ) { if ( strcmp(argv[2],"-info") == 0 ) return 1; if ( argc > 3 ) { if ( strcmp(argv[3],"-info") == 0 ) return 1; } } printf(" -- allocating vertices \n"); nbrVer = swapi4(size[0]); crd = (double3 *)malloc(sizeof(double)*3*nbrVer); fread(crd,sizeof(double),3*nbrVer,f); printf(" -- reading vertices %d\n",nbrVer); for(iVer=0; iVer= nbrVer-10 ) printf("iVer[%15d] = %lg %lg %lg \n", iVer+1,crd[iVer][0],crd[iVer][1],crd[iVer][2]); //printf("iVer[%d] = %lg %lg %lg \n", iVer+1, crd[iVer][0],crd[iVer][1],crd[iVer][2]); } //--- write only surface mesh ? printf(" -- allocating surface link \n"); mint mark = 1; int *pmark = malloc(sizeof(mint)*(nbrVer+1)); mint npsrf = 0; mint *lpsrf = malloc(sizeof(mint)*(nbrVer+1)); memset(pmark,0,sizeof(mint)*(nbrVer+1)); mint maxid = 0; printf(" -- reading triangles \n"); nbrTri = swapi4(size[1]); if ( nbrTri > 0 ) { tri = (int3 *)malloc(sizeof(mint)*3*nbrTri); fread(tri,sizeof(mint),3*nbrTri,f); for(iTri=0; iTri 0 ) { qua = (int4 *)malloc(sizeof(mint)*4*nbrQua); fread(qua,sizeof(mint),4*nbrQua,f); for(iQua=0; iQua 0 ) { tet = (int4 *)malloc(sizeof(mint)*4*nbrTet); fread(tet,sizeof(mint),4*nbrTet,f); for(iTet=0; iTet 0 ) { pyr = (int5 *)malloc(sizeof(mint)*5*nbrPyr); fread(pyr,sizeof(mint),5*nbrPyr,f); for(iPyr=0; iPyr 0 ) { pri = (int6 *)malloc(sizeof(mint)*6*nbrPri); fread(pri,sizeof(mint),6*nbrPri,f); for(iPri=0; iPri 0 ) { hex = (int8 *)malloc(sizeof(mint)*8*nbrHex); fread(hex,sizeof(mint),8*nbrHex,f); for(iHex=0; iHex