ࡱ> ~udir__SRP_0 ,__SRP_1__SRP_4K*mrU ~~~~~~~>~~~~~~~~~~~~~~~~~~>~~+>~~~~~/ 'hiF&  a I3 !AYqRoot EntryC_ 'VBA_Projecti5C_ VBAڦ5H Form_Tess55   Y"#$%&'()*+,-./012345789:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}PROJECTwm PROJECTf6o]  !"#$%&'()*+,-/01235789:;<=>?@ABCDEFGHIJKLMNOPQRSTWYZ[\^_`abcdefghijklmnopqrstuvwyz{|}~ID="{CF738F34-791E-4B5D-A031-1AADAE96BAED}" Document=ThisDrawing/&H00000000 Module=Module1 Package={AC9F2F90-E877-11CE-9F68-00AA00574A4F} Module=Module2 BaseClass=Form_Tess Module=Module3 Module=Module4 Name="ACADProject" HelpContextID="0" VersionCompatible32="393222000" CMG="6361451EDA22DA22DA22DA22" DPB="FCFEDABDEA57EB57EB57" GC="9597B324D5BCD6BCD643" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] ThisDrawing=0, 0, 0, 0, C Module1=270, 270, 1474, 811, Module2=258, 46, 1462, 832, Form_Tess=316, 13, 1206, 708, , 333, 37, 1185, 759, Module3=263, 4, 1467, 801, Module4=0, 0, 1000, 557, Z ThisDrawingThisDrawingModule1Module1Module2Module2Form_TessForm_TessModule3Module3Module4Module4rU~~~~~~~~~~~i CompObj 4aVBFrame.fThisDrawing__SRP_6X__SRP_7VBModule1.DForm_Tess5Module2Module3IModule46$VBA_Project_Version(U_VBA_PROJECT!*tess miniTessBoolnumbBoolaxesBoolAxesColorsBool auxLinesBoolExplodePolygonsBool NameTextBool OnlyInfoBooliNumdblRadCenPolangPrecmodeedgVertphasept1pt2varPnt1varPnt2nomselecobjEnt strLayerNameArrn q Y q( q8 qH qX qh qax !2PolylinevArrayinLowinHinomblock !5SelecvectorMyFolder YPPP0* pHd ACADProject8@ = t  y~T( J< rstdole>stdole h%^*\G{00020430-;C 0046}#2.0#0#C:\Windows\Sys@WOW64\e2) !  ACADProject ThisDrawingModule1 Form_TessModule2Module3Module4F /C:\PROGRA~2\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLLVBA  00FC:\Windows\SysWOW64\stdole2.tlbstdole @r'OР;C:\Program Files\Common Files\Autodesk Shared\acax18enu.tlbAutoCAD a P0( B=B(C:\Windows\SysWOW64\scrrun.dll Scripting y`.E .`M C:\Windows\system32\FM20.DLLMSForms aapj@%*FK͙' 1C:\Users\Valen\AppData\Local\Temp\VBE\MSForms.exd AaiShow_Form_TessGenerate_Tessellation Reading_DataAnalyzing_DataBҋB `Drawing_Phase_PolygsDrawAligningPolygondrawingPolygon PolygonVexsNumbEdgesPolyg OrderVexsEraseElegibles NextElegibleSelectElegibles Draw_Axes AddNameTessMirroring_Sectoroverkillpolygons EqualPointsRotating_SectorMirroring_ModuleRotate_Move_Module SelectWindowCleaningAroundOrigin LimitsOfEdgesborra_seleccionAngleCalTestingAngleCalc cajaobjetoAddLayerPrintArrayVariantsPrintArrayDoublesV XX    0 HLP`hۆF:M M4)?3 bK$Q׀YOvrEuwB 4Zj D-<$N7 SelectALLCheckBox_MiniTessellation!-6S` Iȏ[qJ eUserForms /OAOS>Y F3Dynamic  9"-?@Label_kUniformLabel_Tess_Gen Label_NomencLabel1Label2Label3Label4Label5{lFWJOCommandButton_AcceptCommandButton_CancelCheckBox_OnlyInfoCheckBox_NumberingCheckBox_AuxLinesLabel_NumberingLabel6CommandButton_HelpLabel_AuxLinesLabel_MinitessellationLabel_2UniformCheckBox_ExplodePolygonsLabel7 Label_UniformLabel8Label9{lFWJO TabStrip1YL&i e Image_AtwerpeLabel10Label_NameTextCheckBox_AxesColorsLabel_AxesColorsLabel11ҋB `TextBox_Tessellation2ҋB `ComboBox_UniformComboBox_2Uniform QuickSortComboBox_kUniformCheckBox_NameText CheckBox_AxesCommandButton_Accept_ClickUserForm_ActivateComboBox_Uniform_ClickComboBox_2Uniform_ClickComboBox_kUniform_ClickCheckBox_MiniTessellation_ClickCheckBox_Numbering_ClickCheckBox_Axes_ClickCheckBox_AxesColors_ClickCheckBox_AuxLines_ClickCheckBox_ExplodePolygons_ClickCheckBox_NameText_ClickCheckBox_OnlyInfo_ClickCommandButton_Cancel_ClickGetVertexCountCommandButton_Help_ClickTestLaunchBrowserDialog LaunchPDF 3ҋB ` 3-3/30/60 4-4/45/90 6-6/30 (-------------------- 6-3-6/30/30 6-4-3/30/30 12-0,4/30/30 4-3-3-4/90/90 12-0,3/30/60 8-0,4/45/90 4-3/90/r15(2)4 Bottom (4-3,3-4,3/r90/r75(2) $6-3-3,3/r60/r41(2) 4-3/90/r15(2) 6-3-3/30/r46(3) 6-3-3/30/60 .4-3,4-3,3-3,3/90/r23(4) 4-3-3-3/90/90 3-4-3/30/30 12-3,4-3/30/30 3-6-3/30/r30(2) &6-3,6-3,3/90/r19(2) &3-4-3,4-3,3,3/30/60 @4L-3,3-3,4,3-4,3,3,4-0,3,4/90/90 6-4-3-3/30/30 &4LB-3,4-3/90/r28(2) ,4-4,4-3,4-3,3/90/r7(3) 6-4-3,3/30/30 6-3,6/90/90 12-0,3/45/90 6-4-3,4/30/30 6-3,4/90/90 6-3,4/90/r70(2) 12-6,4/30/60 6-4-3,4-6/30/60 8--- 2 TYPES OF VERTICES ---- "6-3-3-3/30/r71(4) &3-4,3-3,3,3,4/90/90 8--- 3 TYPES OF VERTICES ---- 612-3,3,4-4,3,0,3/r90/r84(2) 012-3,4,3,4-3,3,3,3/90/90 R6-4,4-3,3,3,3-0,0,4,3,4-0,3,3,6-0,4/90/90 :4-3,3-3,4-4,3,3-0,3,4,3/90/90 04-3,3-3,4-3,3/r90/r75(3) $--- 7-UNIFORM ---- <12-6,4,3,3-0,3,0,3,4/90/r50(3) >--- NOT FOUND ANYWHERE ELSE --- 612-0,3,3,4-0,4,3-0,12/90/90 04-3,3-4,3-0,3/r90/r15(3)CҋB `ҋB `  Numbers r t NameTess VPlease, introduce a valid tessellation nameVBE6.DLL 0S (zmAL4[QY)wNny&Y11l"N$PN}Z AuxLines AxesP(BfG!95A+@ď B:1&I>\pZBS.>Oą Jr>$&3 AcadDocument @=$0I*h?PـfB.vSC5BS2I LB 0I (Y1H _layon   _erase _w , 0 _LayerP SelectSSR,B=OZЋ?jjO %=G' / - ,Tessellation name is:  Center M $Middle of Triangle L Left R Right B Left-Bottom BL 0Origin of Seed Polygon: *Number of phases is:  Phase   :   &Mirroring angle No  - by rotation " - by translation - by reflection 0i X 01 x 0k  p 41 84 Reflection: NONE 1 Reflection: YES m 360 Rotation: YES g ,Glide Reflection: NONE 6 4 2 &Group of Symmetry:  PhasePolygon 0f  0H  0F 6.҂CO X$.X3@?\I28#c@_yc'b 0 ( i =   ->  n =  F T}~űN & ( )NRߞKF("('x PtIntersec 8_BjE7I%mڢ  =  --   ,  ExportCoordsMuestraLimites TestSelect borra_bloquesprueba_borrado borra_bloqueEsquinas_Bloque_TodoTestSelectionSetOperatorSelectLINESandPOLYLINESlista_obj_de_selecc ListBlocksListSelectionsDeleteAllSelections maxVector minVectorseleccionar_archivocerrar_archivoCh2_IterateLayerExample_ActiveDocumentExample_FullName Example_Path CreateDir  ERRORjJoNKl :The order of intersection is &but there are only  intersections in the angle CoordinatesCoordinate Dist = zj%En%04 PDMODE PDSIZE 0G ` X Y _explode _all -overkill 0.00001 O N C E A S TEV XX ;;O   0xl~ lHLliP`h??e)7$[C,Pbb=iFF,إ<h^IeB^ ĉE)~7Az CG 1P 9V XX @;;O   0 HLP`ham *\G{000204EF-0000-0000-C000-000000000046}#4.0#9#C:\PROGRA~2\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL#Visual Basic For Applications*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation *\G{E072BCE4-9027-4F86-BAE2-EF119FD0A0D3}#1.0#0#C:\Program Files\Common Files\Autodesk Shared\acax18enu.tlb#AutoCAD 2011 Type Library*\G{420B2830-E718-11CF-893D-00A0C9054228}#1.0#0#C:\Windows\SysWOW64\scrrun.dll#Microsoft Scripting Runtime*\G{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0#C:\Windows\system32\FM20.DLL#Microsoft Forms 2.0 Object Library*\G{0B845A22-E40F-4D52-BE3B-0906A53BBB16}#2.0#0#C:\Users\Valen\AppData\Local\Temp\VBE\MSForms.exd#Microsoft Forms 2.0 Object Library.E .`M  y~TThisDrawing0@547dc7c6ThisDrawingModule10G547ed280Module14` 2Form_Tess0D547dcf43Form_Tess0V,Module20B547dcf01Module2mHModule30Q547ef8a6Module3<`PqModule40R547ef8b7|Module4Cx+Hx`0^-D}BcjKpawJMmdt*aOCSVXLB & LrlHY X;*Fz7h0pVBAWin16~Win32MacVBA6# ACADProjectstdole`AutoCAD" ScriptingMSFormsC ThisDrawing5 _EvaluateModule1bFSOFileSystemObjectNUInsert_RefX_with_Colors3archrefdocPathDcont{ OpcsMsgBox1ArchhBArchivodocObjk AcadDocumentZobjLayer&3 AcadLayer objBlock> AcadBlock Path_Folder Path_XRef0 Name_XRef_1 Name_XRef_2 ListOfFoldersi`MsgBoxRvbCr$ List_F_SF@vbYesNo vbQuestionvbDefaultButton2vbNo% SendCommandc DocumentsAddr Application*BlocksӍIsXRefEl vbTextCompare QDetachPchange_color_layer Cambia_color color_layeri  name_layerU/length_name_layermjLayers TopFolderNameӀ TopFolderObjFolderQFoldersSubfoldersfkbtxt GetFoldernListSubFolders_OfFolderV SubFolderjaPath2 SubFoldersx= ListFolderxFSF]FSfoldertxtSF sFolderPathS Form_Tessu miniTessBool~numbBoolaxesBool)AxesColorsBoolX auxLinesBoolTExplodePolygonsBool+ NameTextBool9 OnlyInfoBoolShow_Form_TessIShowCommandButton_Accept_ClickkTextBox_Tessellation:Hide9zGenerate_TessellationbUserForm_ActivateZsComboBox_Uniformz2ClearAddItem ComboBox_2Uniform:ComboBox_kUniform^CheckBox_NameTextValueK CheckBox_AxesUComboBox_Uniform_Click@ComboBox_2Uniform_Click!ComboBox_kUniform_ClicksCheckBox_MiniTessellation_ClickCheckBox_MiniTessellationĊCheckBox_Numbering_ClickCheckBox_Numbering CheckBox_Axes_Click5WCheckBox_AxesColors_Click?CheckBox_AxesColors6CheckBox_AuxLines_ClickM>CheckBox_AuxLines2CheckBox_ExplodePolygons_ClickNCheckBox_ExplodePolygonsCheckBox_NameText_Click;xCheckBox_OnlyInfo_ClickjCheckBox_OnlyInfoCommandButton_Cancel_ClickCommandButton_Help_Click LaunchPDFvTestLaunchBrowserDialog strStartUrl݁strInput blnStatusUtility1JLaunchBrowserDialogAfnA]objShellC CreateObjectModule2ctess3N_phPolygsƏN_PolverTicesEdgesRepEdghTxtS<phase OriginFCenPtawA_textInfo minCorner + MAXCornertMirrX PolygonSector AcadLWPolylinePolygonSectorSel?AcadSelectionSetAuxSelPI^sjTOL1pt1kpt2lAtnQu ZoomWindowCleaningAroundOrigin  Reading_DataWAnalyzing_Dataz Drawing_Phase_PolygsjAddLayer0LayerOn Rotating_SectoryIMirroring_SectorhRotate_Move_Module#[Mirroring_Module^ Draw_Axes AddNameTessE SelectWindow overkillpolygons-Pos1Pos2Pos3 MirroringDatarestR<@restL6@N_pg OriginTxT IsNumeric$*Right part~ReflRotatGlide +SmRotGlideConditionуneradqdistanXdistanY ActiveLayer>EraseElegiblesu NextElegibleDrawAligningPolygonSqr(Tan-SindrawingPolygon  OrderVexsDSelectElegiblesuNumbEdgesPolygFiNum]dblRadoPlineptFree1ptFree2CenPol_'nEdganGleAbEta.fI<]dltAngEDiste PolarPointK ModelSpace_AddLightWeightPolyline PolygonVexs_Closed,UpdateangPrecmodevtmpPtiCntB!vCnt+vxCnt{dblAngϬinitAngptsarrgRoundedg^nCoordNumTxtAcadText~ptNumAptNumBptNumMaxe_XAddTextQVertK6n1L^n2M^minXXnVertDef)ptMinXmde\rinumEdgesz#nX1MnY1޺nX2NnY2ߺRepeatedrEligiblêax_Xfax_YfAcadLineeaxe_YvarPnt05varpnt1xvarpnt1yh_Color2FAddLine8NameTxtFPtOfAxexangMirrobjDrawingObject AcadEntityiobjMirroredObject?cZPto1Pto2ArrayBoundingPtsZ LimitsOfEdgesCosOMirrorasGetBoundingBoxYDone  EqualPoints#NumRot varPolarArray  ArrayPolarW angMirrPerp%UAxeMirrF AxeMirrPerpwAPt0j PtIntersec MaxIntersecbsubMaxIntersec MirrorPointcgouTest< AxeMirrArray IntersectWith ObjectNameOffsetLayer PtOfRotAuxPtAux1UPtAux2VvarPickRotPointangRotVangRot0(objRotatedObject objPolylineʼn AcadPolyline^LineAux\q PointObjectD4 AcadPointPPointMirrObject RotatedPointɈPointAuxorderIntil IntPtOrdX IntPtOrdXaux ValXArrayhtxt2Dist1\Dist2\Vert1xVert2y QuickSort Coordinates!k CoordinateQAddPoint  SetVariable?RCopyƿRotateMove>yvarPnt1 5varPnt2 5lngMode[borra_seleccionacSelectionSetWindowy SelectionSets Highlight_elemEdgnomselecobjSS5 ItemzDeletexAngleCalTestingAngleCalc@~angltpt^ cajaobjetoeobjEntX0 EsqInfIzqJ EsqSupDch vbCrLf strLayerName>UPrintArrayVariantsArr uPrintArrayDoublesUModule3d ExportCoordsAcSSetMXoTypeNameSelectOnScreenCount0vGetVertexCountoutstr RealToStringacDefaultUnitsE Elevation,InsertionPointPolylineVertListdvArrayXinLow)inHi,[pivotlBtmpSwaptmpLowtmpHi SelectALL!acSelectionSetAll. GetStringMuestraLimitesccorner1corner2LimitsP TestSelect6strOpt0InitializeUserInputk GetKeyword2DacSelectionSetCrossingacSelectionSetPreviousacSelectionSetLastGetPoint/IIfz GetCornery GetEntityPromptm borra_bloques^[ strBlockListnomblockG ListBlocksдprueba_borradoA borra_bloqueEsquinas_Bloque_Todo objSourceEntsbintI\ varDestEntsw* CopyObjectsTestSelectionSetOperatorUintCodesS varCodeValuessstrNameZvbLfT%SelectLINESandPOLYLINES lista_obj_de_seleccSeleclistaListSelections\DeleteAllSelections maxVector+vectorm minVectorseleccionar_archivo׼AcadAppAcadDoc# AcadCommandM GetObjectzActiveDocument\AcadUtil=dblStartTimerXcerrar_archivoCh2_IterateLayer}msgQExample_ActiveDocument activeDocڒ vbInformationnExample_FullNamedocName׷FullNameОappNameKp Example_Path`appPath CreateDirMyFolderTMkDirApptModule4eSS'_NOTDuplPointSSn0 DuplPointSStRemoveDuplicatePoints˴FindDuplicatePointswqDeleteDuplicatePoints{objEntsReplist*UserFormNLabel_kUniformLabel_Tess_Gen~N Label_Nomenc Label1,Label2,Label3,Label4,Label5,CommandButton_AcceptFICommandButton_Cancel Label_NumberingLabel6,CommandButton_Help,Label_AuxLinesLabel_MinitessellationjLabel_2Uniformf Label7, Label_UniformFLabel8,Label9,Label10@Label_NameTextQLabel_AxesColorsLabel11A TabStrip1z Image_Atwerpe3dClickActivate| _B_var_LeftQ _B_var_Right9 _B_var_ptsarre_B_var_QuickSortP}   lR@ @@!d(m%CxME<$`B$  `  4 %`$ B ` 1  ias %`x J`a  !% D `H =iF '@B ord `r H ` NiF @B '`r' `@''F`L `N ow o`Ppoin \`} ^```Bcorn``es i b` der c% h0``j`nies p``"B@`re fo t`ivB@8 ii  2 %@   `0x( P h0 ` +(`` 9I o (ox `)  F P X Fp " 00 8 X h4x  X`,:":X,`    ..Hx,  ..H X `hp x B    , (8X` " h  p    !    4  4 @P  Xh$x  $$   " ( :0 px     ""   (  ( 8 ZX    < 28  p    " :   F FP  @ " H BP         0 @(  "h           (  "0$X  2&   . 28 ,p , $   " @P  (X  $     2 P `p x "  X 2  (08H X  `(p, * X`  h  DD 0  "     (.8h  "  (   "    $( 0 8P `px <(0H P "  X `h $p      \p 6 >  "   ^ x    D 8 ,P     "&   f  (  \ 8 X  h <p $  ( 0  HN`&  <  8X p $x     &   0 `8   "   !!0! D8!D! ! x" <" 2"  " # (# 8#@# " H# LP# n# $$ $($ 0$  8$.H$x$ "$0$ $$% 4(%&`%&%*%$%&&&0&TX& &T&&(' P'p' (' ' ','$( @( `(p( x( 0( ( (( ( B  ( 2( f ) )))) *)&)  * "*28* p*$* 4*&**+$@+&h+ ++ (+ + ,,(,$X, , ,,  , , "  , ,,  , -  -"0- X- @`- - " ------. . . " (. :0. p.x. &. ... .. " . :/ @/ H/ `// / B  / /  / / // / /0  0(0 00 B  80 @0  P0 `0 x00 0 00 00 0 " 0 60 2 1 X1`1h1 &p111  "1 T1 82 X2p2x22 &2 2 " 2  Z203 H3 " P3 |X3 &34 444 4&@4h4 p44 " 44 *44J405 " 85 6@5 4x5 5  B5 D6X6 `6Np6  (666R7 X7 " `7 Dh7  :7 78 8F(8 p8x8H8 8 &8 *9 209 "h9 "  9999 9?MDULO CON HERRAMIENTAS DE SELECCIN, BLOQUES, LMITES y ARRAYS--Option Explicit@obliga a declarar variables para no perder espacio en la memoria`]@]`]x ExportCoords %$Nothing ExportCoords !B@Vk ExportCoords %. B@ B@C:\ExportCoords.txt- hard codedhase !  !   %. $ IAcadPolylineKIAcadLWPolylineKIAcad3DPolylineKIAcadLWPolyline2KT B $ B %#  %'   B %#  %'" $IAcad3DPolyline    B %#  %'numbd   !  %'kh A@D @okA@D IAcadPointKT !'$  %'  $  %'  $  %' IAcadBlockReference2K IAcadShapeKT !'$  %'  $  %'  $  %' nkW B@op ` $IAcadLWPolylineKT !'  ' IAcadPolylineKIAcad3DPolylineKT !'  ' ni(]D\]]D^]D ' '   $'   $      '  $     '   $' $ +  +  '  'k80   G   A@j   G   A@jo3Macro para seleccionar todos los objetos del dibujo]0]P,x ! '' create a new selectionsetr SelectALL !%V.rigi  B@H!' highlight the selected entities B@ing ' pause for the user8  F*Se ha creado la seleccin total SelectALL. FEnter to continueC@' unhighlight the entities B@q,6Esto se aade para limpiar los datos del objeto creado,' if the selectionset was created, delete it Axes B@kho`h4Macro para mostrar en ventana los lmites del dibujos ]] %+F %+F+ %+F %+F+ Lmite inf X:$ F Lmite inf Y:$ F F Lmite sup X:$ F Lmite sup Y:$A@Datioo<Macro para seleccionar objetos segn preferencias de usuario&]X]x]]],8 ! ' get input for mode !Window Crossing Previous Last AllC@ F,Select [Window/Crossing/Previous/Last/All]: 7'' convert keyword into modes WindowKTF 'CrossingKTF ',AcPreviousKTF 'LastKTF 'AllKTF 'n' create a new selectionset TestSelectSS !%V.,' if it's window or crossing, get the pointsWindow Crossing  ' get first pointC@ FPick the first corner: 7'Er ,' get corner, using dashed lines if crossingCrossing  $ C@  FPick other corner: 7'appl ' select entities using points    B@Hd ' select entities using mode  B@Hk!' highlight the selected entities B@' pause for the userB FEnter to continueC@on o' unhighlight the entities B@e fiq,,' if the selectionset was created, delete it`  B@koRte pide que selecciones un objeto y te da las esquinas de la caja que lo contienen,funciona correctamente, incluso para bloques]]0]H]`]x]  !  X FPick an entity: C@ "check if object was picked. You did not pick as entityC@| k F You picked a  !L At $X,$XA@Dq Esquinas_objeto (objEnt)   B*$+F$+F$+$+ F$+ F$+ X limite inf = $ , $ , $ F F limite sup = $  , $  , $ A@Do ](]H]`lista los bloquesA@ !  FNombre de bloque?  7'  !Z%B@qx op x "si el bloque ya existe, lo eliminaSeleccion_TODOA@o ]]8Enumera los bloques existentesA@'B 4 !Z 4!  B 'Bk BSe va a borrar el bloque  !Z%!A@Dding  !Z%B@Se ha borrado el bloque A@Dd No existe ningn bloque llamado A@DkoP]]Enumera los bloques existenteshe aListSelections'B  ! !  B 'Bk BMsUMsgBox "Se va a borrar la seleccion " & ThisDrawing.SelectionSets.Item(nomselec).Name  !%B@/MsgBox "Se ha borrado la seleccin " & nomselecd88MsgBox "No existe ninguna seleccin llamada " & nomseleckodevuelve las coordenadas inferior izquierda y superior derecha de la caja de abarque la seleccin de todos los objetos del dibujo.WEsta caja de abarque es el rectngulo que se ajusta al objeto abarcndolo por completo.rDE MOMENTO NO FUNCIONA pq parece que la funcin getboundingbox no se puede aplicar a selecciones, grupos o bloques](]@]`]x]]]]On Error Resume Next>ejecuta la funcin que selecciona todos los objetos del dibujo On Error GoTo Done %si la seleccin ya existe, la eliminaSeleccion_TODOA@ !P '' create a new selectionset Seleccion_TODO !%V.  B@Hng n elementos de la seleccin: ! Fnombre de seleccin:  !A@D!' highlight the selected entities B@' pause for the user F Se ha creado la seleccin total  ! F. Enter to continueC@%' unhighlight the entities B@pq5crea un BloqueTODO para que getboundingbox vaya mejor]0Dim BlocksCollection As Object]P]]] "si el bloque ya existe, lo elimina BloqueTODOA@"Kcreamos el bloque+F+F+M' set the origin point  BloqueTODO !Z%V.4 5' put selected entities into an array for CopyObjects ! &  ( ! x ($ (2& ' copy the entities into block & 4 %,'* Control 3A@D 4BloqueTODO No ha cogido nadaA@DdBloqueTODO <> vacoA@Dk n elementos del bloque: 4! Fnombre del bloque:  4!A@D   4B*esta instruccin no funciona No ha cogido nadaA@DdEsqInfIzq <> vacoA@Dk$+F$+F$+$+ F$+ F$+  limite inf = $ , $ , $ F F limite sup = $  , $  , $ A@D, 6Esto se aade para limpiar los datos del objeto creado ,' if the selectionset was created, delete itha llegado al DoneA@D  B@ko FMacro versionada de AutoCAD 2006 VBA. A Programmers Reference, pg 266hselecciona todos los objetos de tipo polilnea, arco y crculo que se encuentren en una determinada capa]P ]p ] ] , ! FLayer name to INclude: 7'4 4G|j' create a new selectionsetTestSelectionSetOperator !%V.' using 9 filters 0 F 2 .' set codes and values - indented for clarity:+0F+2+0F+24(Si fuese NOT sera para excluir esa capa +0Fand> +2' filter the objects  0 2 B@H!' highlight the selected entities B@' pause for the user F ! entities selectedC@ 6Enter to continue C@' unhighlight the entities B@q,)' if the selection was created, delete it  B@k(o  +Macro para seleccionar todas las polilneas`selecciona todos los objetos de tipo polilnea y lnea que se encuentren en una determinada capa]X ]x ] ] $' if the selection exists, delete itSelectionLINESandPOLYLINESA@ !' create a new selectionsetSelectionLINESandPOLYLINES !%V.' using 4 filters0 F2 .' set codes and values - indented for clarity:+0F+2' filter the objects  0 2 B@H!' highlight the selected entities B@' pause for the user F ! entities selectedC@ 6Enter to continue C@' unhighlight the entities B@qH .8i00] ] ' reinicia el listado'> B <! > F B <%!'>)Lista de objetos dentro de la seleccin: F >A@DoX ] ] List of blocks: ' 4 !Z  F 4!' A@Do 3Lista los grupos de seleccin que haya en el dibujo]p ] Lista de grupos de seleccin: '  !  F !'  A@Do0 3Lista los grupos de seleccin que haya en el dibujo]  !borra_seleccion objSS.Namexop ]h   F'r B r B B$F'Dk B$F D B$F'Dki ]  F'r B r B B$F'Hk` B$F H B$F'Hk0(i  0Selecciona un archivo mediante cuadro de dilogo,pasando a Autocad una funcin de Visual Lisp]h]]AutoCAD.Application$R.L L!T.N N!.VAppActivate AcadApp.CaptionNAcadCommand = "{(}SETQ Archivo {(}getfiled ""titulo"" ""c:"" ""dwg"" 8{)}{)} "SendKeys AcadCommand, True - delay 2 second Z'X Z X       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstvwxyz{|}~ bh Archivo elegido es *A@Do8 Spara que cierre el dibujo actual y al abrirlo de nuevo no lo haga como solo lectura_close B@Ro u El ejemplo siguiente efecta iteraciones en una coleccin y presenta los nombres de todas las capas de la coleccin: Iterate through the collection ]0]H'` B !l! ` B !l%!  '` `A@Dox `]$ Returns current document in AutoCAD !X!T.dThe active document is: d! fActiveDocument ExampleA@Do 0 This example uses the FullName property to find- the full name of the current drawing, and of the application.; Find the full name of current drawing file including path.> (If the drawing has not been saved, this name will be blank.)] !l'j(The full name of the current drawing is jFullName ExampleA@D" Find the full name of application] !X!l'n,The full name of the current application is nFullName ExampleA@Do0> This example returns the path of the drawing and application.3 If the drawing has not been saved, the path of the document will be blank.]p !'"#The Path of the current drawing is " Path ExampleA@D] !X!'r&The Path of the current appication is r Path ExampleA@Do( Here is a way to create a Folder$from the first time my program runs.+If it exists, then I got an error, but it'sOk. Now I'm sure it exists.` z! \MyFolderA@xo80Attribute VB_Name = "Module3" 'MDULO CON HERRAMIENTAS DE SELECCIN, BLOQUES, LMITES y AXYSOption Explicit"obliga a declarar variab les p no perder espacio en la memo( PrivaSubZortCoords() Dim AcSS et As adSelec jpV 0 <XC@ol.CB - 1AE8Objp@ Item(X{ Ay Casef   "IAcadPolyl@ine", LW3DX 2@! GiE7GetVertex7(% 9outstr@Utility.RealTorS@ngJin(i)(0), acDefaultUnitsx, 3=&d " & 1 d%/+jCo=$2 ElseIPoEle@`4 f|MsgBox #3n#1,D "ok[Jgint_ = =(UsS*2Ppt[( [` Y  (?` Ng 5/BlockReference2AFShape2.InsH(Po?A ?0H GG GM?SS?RO?U 9r56P @"s 2 w # / rFa 3<$b +4+,C1) qȟ! c.!JQVGALL!'MacrPs6@n@todos P otdel djoQ3SS!/j` 4lnge{1 PGoTo DonTWit~hP7Ҥme=cAllG'' pnew se0/# esa("{3`"'R  p highht the ed entitiO es objSS.Highlt True'' pause for the ,rx.GetString False, vbCr & "Se ha creado la seleccin total StALL.".!5Entego continueb" unhey$tiC End With Done: 'EstoV aade}ra limpiar los datel ep0' ifvtionset wasted, dA{te itI f Not&SS( IshThenӃD aIf SubPriva. MuestraLimites() 'Macroimo@r en vQafn@95lB ) @dibujoDimcrner1(0 To 2) As Doubl2 co) = Th@isDraw9.A's(0):11= 0K 2 2(3@XMsgBox "LD inf X:2&ƺH YJ @F _oAuEsupJB4NA I4AgTس~Don@ZXs^gn preferenci V_usuarib@="Q?Acad \SeYAvarPPnt1Vann2r ROptAS"%! lng MoNLongOn ErrGoRxC|MUtility g@sinpu:tbm CA .Initializ@eUserI1, "Window CrosstPrevious Las`ll = Keyw0ord(%c' [U / / / /All]: "w vert| k `Td C~aස' D": ,= acCC;CQEeE!$X`*߸bkcDX0a newh@܄g`cĻ),s@.Add("gvSSe>N it's> !Q_Q, AZpointh<@ROr "gg2fir . 2051;+EA0P (ǂPickrs3CVw/A1,8dashed@znesw? = + IIf(ot, 32, 07S 2!=Crm( oprdm #xtF uD2W."E:cV2E/;CWA1W O / /b-ϣ ϣG} ϣ ϣⴐ eC  caja '@@pi@tqueJc]q'nI4y 0despquincл %len'fu.rect amPinclusĦbloH0 q~Obj0SQ4Q@0~VEsqInfIzqSupDchPto1(1~3&Resume Nex_OI+) a: Nan?yAZ 'chePR/&`bpped."PromLfYoud n! y芡Exit SndC a u .N PAtB1,q%1$Wm6S)_!( Cal`qBound0b(v$, #v#)p]fRrbowr%=)(2A s2@z2(S p=bb2"  z & _ "limite sup = "Pto2(1)$(" ,D2D3) End SubPri va$ borra_bloques(ZDim objBlock As Acad str ListStringnomH'6'l.a los jENsWith ThisDraw..Utility4= .Get6(True@, vbCrNAFre de9??_v6H.Item(4).DeleteAR׃pGbdo:'si elO ya exalo|,na ks@"ccion ("S_TODO"@4J#| zF6qi Integer2'Enumerw2 DvSzi08CFor EachInI If .NameThenA i + 1rIfNextCCNot B)@!IMsgBox ` va ars_,'k!hdGJǡ! ElsX&NO nnnllama `& k`ubli~c!ċ&VNNS.S!Zt`\Se 2R?Oc.O'AO ;!OlOCPSSOcOOO'Pla ⃡6iJ )c! HRnR"CRfRunCSa XSHEsqu`inas_`_To'devuelve las coordenad`inferi@iz@erda yderec@ Πcajaabar ` 3`@t s"etosl dibujo. @'Esta MesF`tngu`bse ajuYalP QcPndo0p c8ompkDE MOMENTO NO FUNCIONA pq $pae  funci getbPoundAb@OnBo pue` arp>arPa'es, grup otD2#lngMo`Lou?n?AObjec$AvarPiVariantInfIzqSupDe1(1 To 3)aDo@LRGӖ+'On Err@Resp ]d'e uP!sler|a d S55Go Don\ `Y_!_5 = acHAll '' crea new5absabEu$0%=:kPAddb+. _\n=emen@ C:RNC8tt9"#? ˇ Phighl0t thCQted itiepU HfGpauLf3pEu7 FaGSe W1!@.totPpW". Er7^ntinue" un/U - ?3['q un jZaY vaco nd IfCCn @m@os del P@: " &0& vbCr_B "nombreNamC0ŶCallGhetBdK[(EsqInfIzq, SupDTche'uastruccin no func}aC(C@c"" bBNoS^K]E  \E[Pto1(1^(0)T: 2132$`2f c!e 2(e d 2(e e limite)f$@<&A`% , BC" sup 7J ",3DDone:#M'Esto aade para @piar laYat$Ze@creado' if Gswas ,!YeA#zC( wlleg al pA`Q9]SS[b.D tt~LSub$ PrivaS` TcScCAˠOper@"r(@*'Macro versaeda AutoCAD 2006 VBA. A Programmers Reference, pg 266 '&n tod.A/. tipo polilnea,co y crculo ;A8 u untermi capy eS As AcadCodes()aInte8gerCAVa lu Vari|an: `Str`*!0On ErrGo:#HWithUtilityc = .M(Tru@2"LaHyer^me0 INcludeX1P#PK= Thep xit >SeqP. a newC-' %yS8 q"O$C$Hus 9 xfil`HV9M#(90 !8ca`dl-INd@"1cltyHAV0S-4:r'RGd(9FZOb"s(6?1b" 'Sivese NO"T`&raXex+ir es r;e"78]R-*F8? 1 b" \>"? ? ? t"s(!9Q7 *gs.rcNct(/SDS.4 acI5All, e ,+*A:highl0tihHEpauA3QU.^mptÿx6Cqe3L Fap bLf="M!winue h&un U? %oaW]| |P|?xmw WwwFv S LINES)POLYwsrsPl0prP%vvvuvu cuuurw8uuueun existRs.bo_ ("V5.i!yy` /s32/scv$s QLINES")  '' using 4 fi lterslReDim intCodes(3):" Hvar$Va lu. set c` and v F -dented for clarity:8e0) = -4:9 d"3 the object@SS.Sel acionSetAll, , 1highlt3s'Pitie8H TrueJpaus.eh,r.Prompt vb0Cr &A3/CoHunt@" E A.GetStrFalse3(bLf Er tontinue Oun 74C-EWithC;CV ZPOLYBd Functc Private Sub l ista_ _d$e_;c( As AcadCr@ۃABA CiI@Cge\reinicia el doX= "PKFi70 To.7x- 1+ &>b.Item(i).NamHG0Next MsgBox "L&D d`tos@nHtro!laFcin: "CL?B1 /C11 Blocks(@-,3OA*1 Astr0@(aof b ` (Each!_b In ThisDraw@[.ml )e)'D%)CQDiP!LB'Aa l@+grupO-S* qkhayGnAHdibuj H"SS%g e& 'aa:P( )(Dl  *RGQ?*zrDte F*n?** C 'borra di "EdE maxVfor(vb!VxantrJ12pi, nqHW=n@DUB0_dB?1jFn@EIf THhenG @ FkaYIf;P >9_ = _]$Ia8in#N ~?p E < mVT?pdqc OLonar_archivo_':c0a un  medi@-e cuadSfdilog O'paso a Autoza f~RPSVisual Up)1eApp2OWDoc  Comm!SBq = (, "!1 CAD.Plica!)Q=҈I.Ave0um0Util!{!@.w'ѐ$ .CapsD 'pa{(}SETQ Aœ getб""titulo$""c:bdwgp8{)} JSendKey, " '-@jlay 2!conddb@lStartT imBDo W hile r <" + 2Lo>o`#@wh("Eggido esBd0U2\8 ce`0'pHaraBicieK~tA-y -a`brirl—@vo no hagamo sohura i"_cJ!`' roughD3On ErrRes`3> u`<>">msg=!00͊\bNs[0= a+O* F +LTr3  ' ox msg End Sub  Private Example_ActiveDocumen@t() Dim a2 As` AcadHD' Returns currv d in AutoCAD*SetM= ThisDrawing.Application. ;MsgB"TheCg@s: " &[.Name, vb@Inform*,l "+}"FXull)'] e uses tL property to Pfindb'f& nP of#, aof݉a F.+ ) lecclud@[ path.)E(I!d has not been save4d,i,will blan'Herys a w"acreAa Folder 'from2first time my!gram runs<':it ists|`~I gan error, but it's Ok. Now I'm suae)` QC"Dipr(My;ĆOXn EA @sD PNext'k ̀.a"`"\ findb'\ZZmxME 0 0$<< < <<$<(<,0########( `a0( `a0(! `#,I `&+0q ` /&+< `/&++( `)o( `9k0 `)Qo&(9 `)o8a ` 9)Qko&( `#( `a0$ `( `1#0) `iykk$Q `(y ` #( ` #, `//$  `$1 `(Y `00 `iykk$ `( `;( `/0! `)o&0I `)k&ni rU~|  o  4y411  1! 1 12 i333a//Q   /y   /  44Y24 5)5A5Y55Y 556;)6I/; <A6666Y7q77773 8I8i88I9y999:a::y<<<<)=A====>)>>>>>0A? 9 I ? @y@q  a   @A9AaAAA!BIBaByB1 JH$$9 $9 볜hhh dddHHHHM$ %dM4 %$   l  l  , @ l :4 N 5:4 N 52 :4 %$ 4 X t) 2 :4%$ 4 X t) 0C l0   QPC l0) l O l0C l O l  + 2 :4 %$ 4 X t) 2 :4 %$ 4 X t) 2 :4%$ 4 X t) D2 :4%$ 4 X t)  2 :4 %$ 4 X t) 2 :4 %$ 4 X t)  l (2 :4%$ 4 X t) 42 :4%$ 4 X t) HYM$`dYM4` l$ 5HM$ %dM4 %$ (9ldHHHHe \ +pv kv; F$dptd kvl M$@ , dpt d($]td:$-Upz5 kzkzd , `1`5 &l`J`M$@ , `1`5 .T``M$@ /4`M$@ 0 `F``6&l`J`M$@ , `1`5 d1` :$.d ($Pl`Jl`$px kxN3kx`M$@ , P" 5%l`Jkx`M$@ 0 `1`5P($P#l`3k$P" .C`PU0'dkzD$"d 0 dokt" Jkvl M$@ 0 d(@(($pd:$+Upv5 kvId#@";/,kvd , `#@";/5'dkvD$"d 0 d.@"@M$@ ,  /5YD@"@M$@ , `#@(";/6D@"J@"@M$@ 0 `#@";/5w.@($";5 @!1 *# *# *182`C l.02C4V l304C4V l506C4V l708C4V l90):C4V l;0A<C4V l=0V<C4Wl8 *#>*#l4*# *# *#?*##*# *182(@Dhp[3l8 *#@*F@:$A`18/6>@"0clP4l8F$@"k> :B`186 >dl @~pktG(@(($pLGGl8 *#C*F@($(<:A,`18/6<,l8@"*18b@($"C(5 l(0 l8D*18: l(0, l8E*18: l8F*18 @L}l8 *T\\9D(p\L@P8`d4@ <,\ *18Gd;.d;.d;.d;&H0I0 f$Pl8J*#  *18/ Kd; c$Pl8L*#  *18/ Md;&N001 f$P f$@l8J*#  *18/ Kd;i c$P c$@l8L*#  *18/ Md; c$@l8O*#  *18/ k6 f$@Pd;P@'l8Q*#  *18/ k>Kd;Kd;Cl# 0/ >Rd;l<# 0/ cRd;lZ# 0/ Sd;l# 0/ Td;Kd;fl8 *# U*# *#d*#d*#d*#d*# *182 l8T('''M$@ V6\`9HP@deI6HY84 L:4WN$$ 5$9:4W% $ 4 XQ[$ !) (lDh  lUp^Pk^Pl(4]t^L Xjl"0cl"kj Uph kh L Yl(4]t.h Z kh$9 [tohhh`30$9 [tohhhq0kh9 \tok4L+kh9 ]tot`3khkh붫9 ]to`otD`C l50LBho l70L$Bho l90oDho l;0 LBhoDho l=0=LBhoDhohhhhhYM4` ^ H _L :4KL lUp^^LH ` L a jd l~h9:4%% $ 4 XQ[$ !) eL8T9 lL $|L˔LLp*vk*ckvL:k]3kvLB\kvLB\\kvLB@kvLB@@:jkvL vd0@\t R2@\@\9 t  tot o9 ]tot6@\@\o t  o ot4mm\M %$ ! `e,Y+o 붯ll , b$  cl= x)5 x 8 x d˔Lpvkv @lxkv 9l\sGE@:Jiex,M+tlll d b\d`$ ` cl\= x)`\5d x 8 x d˔Lpvkv @lxkv (9x`\dtLoL붃t< pVpZpXkV8   oL9 ]t0o0 kZfo9@px+:dP0$(TP\L˔LLpzvkzkr%kvLk`]gkvLB%kvLk`]tkvLB%kvLk`]g5kvLB%kvLk`]tvkvLB verr,$9 Ppv!p$ !Qp[lxh*_dx (*ld 0/dP kvpv xh** kv1P FT%p$ !p )P X*)pP %,0lhxdpP0 (  0 )  0 *  K2P d%t$ 4t XlP=x)tP lxc8P dLt$ 4t dlP=x/L)tP lxc0(9xLtP0 +  0 h,       Rh) 8x))"9) ,) *(*8*4H*J**B*8 +, X+ ++<0<4<8<<<@ %p)l  H  *468TIONS FROM4 to decla $ ryault arr0x.` @. @0hase.0 @8<>BD`Ep s ofP of  with@vertices%cons -co%P edge%ʐ,(EP1JLNP `|@" `@^^( i i 0i Pi0 pi i i$ iP( i,  .d@( 0Hx` 8`(@i `Rz`Tx`Vv`Xt @ZHd `\0`@^P @B@ `>`xx8``4 :0`@HUUi  fd@hP @j@ `l> `n<`x8+s `p6 edg <x `@pBB\i  0@Bl zoo`jthe `rhng t`t`rigi`^ Re@vL A@8`xDing 8 X h `@ 77i  XSeing n x use%`Bvus \` ns EH   @ Axes `, avoi`*xes` s `for `he n`h for ` lygoH ` `\@ i  the i irK x tK%`Bvatio@ +`@ &&iD  A@i  jusi eri (@i `\ isua`Z` Xs `VX`x Ll` D,Ac` <tion  `@P))) e thssellati p `xx,Ac`Bvtion`rt`rss `p l8l@Er %ate Tx` 8pond appl %  `@P QQ7) he u of the  p`xPo`Bv"-"@rd on o@T 0`Re fi`P*if`Ntion`L``8J the 0he R`x( num | ` ) PX. Cumber of 8 i'V@Bl fir@\ @vL the`J abo`H'Z`F V ~ `XH ) X in h `Bz  `@ rr)   forn the st )X`' left ha @ i`z of `x if `vrela`tgin:`Br \`p1+`n get@\ @ L " & @@< ANT=`4'`0`X. \`, `x`( "Or J `@H %%$i loop@l in hpoly %@X ffer Tding% H<Poly  @ for( x T`` he a L` @Ii  xAMs% `H& " 0 D,h` P8 sig D `@33a d num`XMs TH(res% Ph'%@B@ phas@0 `.DING`0 `  rmat "$d' P`@` i s & .@`  ).ft tt twice )08 nexing  B0`@$$`0x tP%`2d @BT ring`RV `@ ming` 0 ing H`pi ow i r on`$`6$d % 0% 8Pg th % :pame  %@B Tess` <2Wr`> @(er' B`LKH D`F ft-B`H BLK`xm' Fp%`h@(i  of Rdx F` Hs: T, V   XX 'x@  Z rrorx @\ rror`^`0Mi@6 B`  : ` (!% a(H!% c h!y ro% 9 ! % g!'x % i!tion% m!% o"% q("he u%@B0! ella@p ry W@R!` 7Se@TP!P of `r!Ny Mo <H"4"h"`> iont (#'dend the G# v `#xs & vbCrH# @"#+It# B0###`F! tx`xx" " &@x" irr(`zbCr @# ) = @|`" "Mi`~#& vb #x$$$ "\$ wit$$ % 0% P% N8&`@%i %i es w`x`xt`B%rF 6'`@ d&&`XS T&CO% P'%@B@ f`> &$h'e ReP' '1' $0(`P`z6`x`BvKT (`P@p(i  F x(f%`BvF )`)  ).@)H)nu ())0)1Cr h) *` `%l *B) +`X*%i  pha` ` ty o * the* +$Al* >+`LDX+AI poly 1x+A@~% h,`+!!U),, the ori + ir`B`x `,v),,+ ,irN`B poi`x`-@@-0@-H@.L@ (.PH@ P.T@P\@xh @ @.h@/@@/@#h/@'/ @(/@ʘ*(B)(.h,..@0(0 `-(@/+P--08&+*(//x ` x.xP..pp%h -.8-'h//0N`$ppHP8[@ @ @ 'p'&x& '8'&x39FN89 @ 3 @ 9 x9x @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 9&%%p669"&66@l @h dh` 9` @P @@ @0 @ @ @ ((p((8p8@C  x88(p @l 8 8hO 8 8d 8 @C8 T @C P  @C `:`:[x$ bdp: @ @ : @ @ :F:/ :F: ;T@;@lygoex;;( @ ;Z; @ @ @ @ @ @ ;e;p <e <n 8<gh<l H<gX<k<l<\ <o<L/ =o@[@< @, @( =rzHh=h>[Dp>x>$ X>X  @ @ @ @ =[ [ @ @ @ @ @ @ @ @   pA@[ |@4 X[X$ @[@ @ @ @ @ @ A A 0A @A XAhA AXAX(A@ hAAA A&[ B:;x+X+BUUt @d @T <UP <UL <Up  CPNpHNPNXt @PN@d (PN(` @\ ` H HE D0EEPN8l  EPNHNPN8PN@0 PN, @ @ @PN@ PN @ @  hPPGhGFL& G8G$/ (GG(G G GGHGLL@ GEH HEL @ @ @ @ @ I(pL`I[@ & I#I$/ I#I" I%I  (L%8HL8 0J @ (xJ( @ @ (J( @ @ (K( @p @` 8KP @@ (K(0 @ @ (K( @ @ @L@ @ @ 20L8L-`L<pL LEL LEh[PHMM[* MN X(NX @(N@ @ @ @ N(N/ @NPN "[0  0 N O[20O HOXO O(O( O X[X @[@ @ [ xX0QP[4 @$ @ @  Q 0Q `Q (pQ(hQpQ Q Q Q Q Q R Q QR0R@R XRhR R[ pP`SS[8(&T 0S STp S @ T @O `TX[X @ ([( @ !(('U@UUHUPUt hU xUr/ U (U(` UP H* Up8-h,( 1P/y~T*\R2*#13f*\R2*#1e5$*\Rffff*0B547dcf01"  N NX D 6,0 &`*VLF`F<40*h8026H6.  4F@ "    " T ..H x ^00> r7@7H> *    (  @  P  *`    ^ *0 ` x H: N:  *  P `  x   T       T  p    ( F  2  2( @ ,H x 2  2  2 2028X *`  222(  0VP  > > 8 @ " H DP (((8FH8 2 40<h<  Z `h* p0< L0 `  L& :@   4&  "  6  Hh, p  T< H L3X H%  H x#P  F  $(L'P 4^" L`H< L8   >, X'H\.P $D ,D!( 08 B@0! 8 (@`""nW .h*3 " 4 @  P  X ` 4  FG !0! H! X! x! ! ! !! !!! ! " " D" P" >p" "" ""6# 08# Bh#### # P&$ $$$% % (%$0%X%h% @p%R&% & &$&@&P& X& `&$h&&& &"& $&' '' ' ('*@' p''''''  ' '' '' (( ((8(H(P(`( dfh(  (  (( ( " ( $(  )(0)X)`)h) 8x))"9) ,) *(*8*4H*J**B*8 +, X+ ++ +D+ 0+ (,vH8,,pD,0-8-b0@-^+-r3. T. .4.6%/4 P/F1/F1/d5000F0F 0: 1`1 p1  x1 1 @1J 1 (282 @2 H2 9P2 h2 " p2 (x2 22222*2333 3(3 J0333 &3B3JB`4>444 55@555<25(6B06Bx6" 6@66@(7h7 p7 D477 J8BY 9 Bh9 9 9 99:  : " (: (0: X:`: h: J:6M: B; X; h; x;;; ; B; p; zX< "< = , = ZP= ======= B=B0>& x>>0>H>R+8? ? ?L?D2@4 X@{@6 APA XA`A hA " pA &xA <A AA A$B 8BBXB&B"B2B(C 20ChC9C 8CBCb D D 0E 6PE&EN0EJ0FJ"PFJ"F tF0DhH H 9HD2H I " I jI FI BI JJ J 8J$XJ J6J$JK 8KB@K K ZL JL H8M <M M,MzN4N*!NP)N,HO&xOO0PB48P N)P ,PQQQ Q XQ. R@R PRZ`RR R RZ RHSPST(T0Tb38TT T TDT UP)(UxUV "V@VLHV2VrVHW:N`W W  W hW X "  X L(X (xX2X:X `Y`xY.Y0Z 88Z>pZB%Z  Z [ [ [ p [R[[[ \ (\ 0\ " 8\ L@\ \ \\ \\ \ \ " \ T] BX] Z] *^ $0^ X^*x^*^^^^^_8_8P__ 0_8_B_J@`4` `8abb b H(b pb <b 0bc^chc>pc\Ec@|'de8eNe ` ff fN fN f `0gXg\GgHhXh fh`ixi^!i^ iDXjj j \j k t0k k Dk4l\G8l 2l%llmT?m4:`m @mmnn (nFnP8o 8oNbo p$3p@pHp *Ppp Zp btpPq RXq qqqHq`rprxrr r r 0s  Ps Xs " `s (hs ss sss*s  t2*@t2*xt2*t t6u 0@upu9u (uu5uu u7v=8v Xv"4xv":v 9v v " v Dv 8w @w`wpw w2*w w(x 00x`x9xx *x :x 9x y "y |y yyyyyyyy Fy^00zb'zz{ 4{P{p{{ ${!{ V{0|-@| X|Lh| F|0I}0I0}0I`}0I} }} h~,,x~~ ~ L~   60 h x  B  L JP27X J \ `H f  0  B  N(x  " | V(  F VLX T! T , 8 F@ȇ! 6 @ Pp x "  \ T T@ 6 Xhpxdt*.8 (0 T8Z VbH \&&8``p(Ў>BHD`(Hp,Б V8H r`ؒ N 8.X.   fГ \80 ~Ȕ>H:`>` ЗBx >P:`>hț 2Л0Ȝ ~>x:О(`0>П0 0>:Xp`x>آ08 @H(V&p&  VХ :(Dhl `  8@HP dX((&&8`h DpЪ  `PhȫЫ  VP` x0~@,  6 0 @` h" p dx N H0 jx L 8HXhx8Ȱа  (dHtz(*.ز<($h( TZ! (p 8B$д2\"8,KB$ȵT2 h 8!(!Hh nxD? P0  #Tvи&( .AH .7x йR%8 X `h p *x  4" D ` h# N "( 0 8XhxB%ؼ  PP(5X H'Ƚ ؽ   % P( Zxؾ : b0 X :` 6 % 6  X %xD=  .#H` pP"3*= 18 1X x @Z HA ") 8 HB X .dD ,8 hp  0 6dD0    J8P:h("(" `(Hhx F4 :.(X b`   4HX h %x .  \ 8 HLh B4 8 H  (/X   - -      % .  (  8 @(H p,3x .@ (:  H( p   V- 0 @ P -`-x D    %( .Hh p   J( 6 0 @` h " p "x  .  *  8 H "P 1xN%2 H ,h   2   ("0 8HPX`p 6@( Vh 4 " 0 H  "( @0 ,p( J 0@P`<Ax<A<A<A8 x  "   $   !    (  0 \@1 6 >8 @ B  H :P,(<*8h p " x V^P.h f  "   X 2h   , * 8@*H  x  DD @  "   $ *02` x8* 4 2HP $X  "  H "   (8BP     (08H:`@  "   H "X  B: `h@p  H-------------------------------------ATWERP-----------------------------H--- Application for Tessellations With Edge-to-Edge Regular Polygons ---d=AUTOMATIC GENERATION OF TESSELLATIONS FROM THEIR DENOMINATION .Forcing to declare variables for saving memory# Set default array subscripts to 1.] 8-name of the tessellation] `-counter of number of phases] <As Integer 'array of 2D for collecting polyons of each phase] -7array for counting the number of polygons of each phase] -8array with coordinates of vertices of polygon considered] -8array with coordinates of vertices of polygon considered] .-counter of number of repeated edges per phase] (.&heigth of the edge of numbers of sides] P.number of the current phase] P*position of the origin of the seed polygon] x.] x"Size of the square of the WorkArea] .#info about the current tessellation]!point of minimum limit of Edges].!point of maximum limit of Edges].angle of mirroring axes]/]@/]h/] /]$/"length of the edge of each polygon]$h㈵>(-tolerance for finding differences in geometryp B@oXNMacro for getting the name of the tessellation from the user and processing it]point of minimum window]Hpoint of maximum windowMsgBox "Application for generating automatically demiregular tessellations" & vbCr & "For more instructions, check the help of the program."$2'(+F+F+)&setting the center point in the origin'/ Setting the size of the square of the WorkArea  *+.F  *+.F+..+s is the length of the edge of each polygon  *+0F  *+0F+0 . 0A@4*applying zoom to the extents of the points#Cleaning the area around the originA@6 Reading data A@8Analyzing data A@: $Macro for drawing the Phase polygons@ A@<Erasing duplicate objectsXSelectWindow pt1, pt2 'Selecting now will permit us to use P, which responds to previous$overkillpolygons ExplodePolygonsBoolAuxLinesA@>AxesA@> GAxes %l(@j@for avoiding mirroring the axes GNumbers %l(@jC"for avoiding mirroring the numbers$Macro for drawing the Phase polygons$rKTFA@BSFA@DnpMMacro for mirroring the mini-tessellations if the option miniTessBool is true $rKTF A@FtKTF A@F66Translation is the same but moving instead of rotatingSF A@Hnxkp"Activation / Visualization of AXES A@J4Draw the main axes just if it was chosen by the user Axes %l(@dAxes %l(@k%Activation / Visualization of NUMBERS Numbers %l(@dXNumbers %l(@k0,Activation / Visualization of AUXILIAR LINES AuxLines %l(@dAuxLines %l(@k$Include the NAME of the tessellation A@L,Activation / Visualization of AUXILIAR LINES NameTess %l(@dNameTess %l(@kErasing duplicate objects . 0A@NASelecting now will permit us to use P, which responds to previous A@P . 0A@4*applying zoom to the extents of the points8ZoomExtents 'applying zoom to the extents of the drawingko>Procedure for asking the user for the name of the tessellation]Position of the first "-"]Position of the first ","]0Position of the first "/"]H*if there is no information about mirroring]`x1rest of the searched string to the Right and Left] )As Integer 'counter of number of polygons]counters]],'''''Processing the name of the tessellation. Calculating the number of phases and polygons /'V&Search for the first "/" in the string V*if there is no information about mirroring 'Z'Xd  V $'Z!<Renaming the rest of the string to the left of the first "/"'Xk ' initiating counter of phases Z working the different phases  ' Z-'R&Search for the first "-" in the string R Z R$'\#4Take the left hand side of that string from that "-"ZAnalyzing data of first phase, to know if there is info about relative position of origin:  \ \ $'\1+Cleaning the string, getting rid of the "-" 4MsgBox "Phase " & N_ph & " - restL CLEANT= " & restL' \$b \$d ' \ \ $'\( MsgBox "Origin = " & Origink d Z'\(Preparing the last phase to be processed'ZTo finish the loopk '^ initiating counter of polygonsNworking the different phases for including their polygons in 2D array Polygs() \ \,'T!&Search for the first "," in the string T \ T$  ^+4)Adding left hand side to the array Polygs \ \ T $d'\4'Cleaning restL from polyg already added ^ '^d AMsgBox "(restL) = " & (restL) & " - Abs(restL) = " & Abs(restL) \  ^+,]Adding last polyg to the array Polygs - it changes sign to - in last polygon cause of "...6-"'\ ^ +1for counting the number of polygons of each phasekMsgBox "(restR) = " & (restR) Z Z R $d'Z,,Cleaning restR from phases already processedX'''READING MIRRORING DATA X'if there is information about mirroring   V $d'Z*=Renaming the rest of the string to the right of the first "/"EMsgBox "tess = " & tess & " - pos3 = " & Pos3 & " - restR = " & restR B+starting from left to right, doing it twice Z/'V!%Search for the next "/" in the stringEMsgBox "tess = " & tess & " - pos3 = " & Pos3 & " - restR = " & restR V Z B+dP Z V $ B+,Adding the mirroring angle Z Z V $d'Z47Renaming the rest of the string to the right of the "/"k B$$$b07Analizing the data to know if there is any letter on it B$$ B + B$ B$ $d B+dF B +kk;Writing the data of the tessallation name already processedTessellation name is:  F F'x2Writing the data of the origin of the seed polygon KTFCenter'`MKTFMiddle of Triangle'`LKTFLeft'`RKTFRight'`BKTFBottom'`LBKTF Left-Bottom'`BLKTF Left-Bottom'`n x FOrigin of Seed Polygon:  ` F FNumber of phases is:   F'x(Writing the data of Polygs() and phases: B  x FPhase  B : 'x  B$If Polygs(i, j) <> "0" Then x B $ 'xEnd IfWriting the mirroring data X'if there is information about mirroring B x FMirroring angle No  B  : 'x x B$'x B $rKT x - by rotation'xtKT x - by translation'xSP x - by reflection'xn( k x F'o>Procedure for asking the user for the name of the tessellationSymmetry Wallpaper Group7See The classification of Wallpaper patterns by Morandi]h]]Smallest rotation]]'delete it once found the GlideCondition  F'x& vbCr & tess & vbCr & vbCrp+f+It will change to "c" only in certain cases+f+f+ftxt = txt & "Mirr(1) = " & Mirr(1) & vbCr & "Mirr(2) = " & Mirr(2) & vbCr & "Mirr(3) = " & Mirr(3) & vbCr & "Mirr(4) = " & Mirr(4) & vbCr & vbCr$41$84.Only cases with no reflection'h xReflection: NONE F'x1+fd'h xReflection: YES F'xm+fk9Not found yet tessellations with no rotation or reflexion$360$t.Only cases with no reflection'h'j xReflection: NONE F'x1+fd'h'j xReflection: YES F'xm+fkX'j x Rotation: YES F'xCONDITION FOR GLIDE REFLECTION p'jg+fk h j xGlide Reflection: NONE F'x l1+fdh1+fkPkH$KTF6+f<KTF6+fZKTF4+fKTF2+fSF1+fn x FGroup of Symmetry:  F$f$f$f$f F'x x' A@Do0Macro for drawing the polygons]]number of sides of Polygon]]]  1Create layer "Seed_Polygon" and set it as current PhasePolygonA@> PhasePolygon %l (z B Along all the phases B' @ P +  B !when there are more than 2 phases  A@|$5erases eligibility of phases previous to the last onek(  B$$Along all the polygons of each phase B $'rnumber of sides of each Polygon rwhen next polygon is empty A@~d` B r *A@*0Drawing the polygons aligned with the precedentsd'Defining the origin of the Seed Polygon r *$+F *+F+N&setting the center point in the origin M *$+F+F+N&setting the center point in the originkd * ( r$'v8.Delimiting distance of center to main vertical * ( r$'t6'Radius of the circunscrit circunference t ( r r $'xG.Delimiting distance of center to bottom vertexNMsgBox "rad = " & rad & vbCr & "distanY = " & distanY & vbCr & (n \ 4) + 1 / 2 LKTF v+5Left as the originRKTF v+7Left as the originBKTF x+5Left as the originLBKTF v+F x+JLeft as the originBLKTF v+F x+JLeft as the originSF+F+F+L&setting the center point in the originnxkp  r *A@,.drawing the Seed Polygon, s = size of the edge A@#5Macro for Ordering the vertices of a the seed polygonp *$for avoiding problems with the array1+k B'   A@ 9If numbBool Then 'Option chose by the user to number them A@%9Macro for Numbering the edges (not repeated) of a polygon End Ifk 0 %l (zo x !Drawing a polygon with a polyline] ] ]0 ]h ] ] number of elements in Edg()] ] ] ] ]0    ',%number of elements in the array Edg() B  B$T MsgBox "Finding a T in i = " & i B $+F B $+F+M1setting the first 2 points of first eligible edge B $+F B $+F+F B+'setting that edge as not eligible againy k tMsgBox "ptFree1 = " & ptFree1(0) & " , " & ptFree1(1) & vbCr & "ptFree2 = " & ptFree2(0) & " , " & ptFree2(1)$$ &setting angle of destination ('d $$ $$ $2'k  ( '(Delimiting angle of center to 2 vertices (  '&angle to rest to the destination angle  $'$$  $$    ( '+because arctng is ambiguous in 3rd quadrantk   '    !%'; Drawing the temporal point tmpPtGMsgBox "dltAng = " & dltAng * 180 / PI & vbCr & "angle = " & anGle * 180 / PI & vbCr & "beta = " & bEta * 180 / PI & vbCr & "anGle + bEta = " & (anGle + bEta) * 180 / PI & vbCr & "cenPol = " & cenPol(0) & "," & cenPol(1) & vbCrD drawing polyline after vertices obtained with function PolygonVexs:     ( $ !%.;oPline.ConstantWidth = 0.05 'Giving a width to the polyline ( B@    'B B @`  B 2oh !Drawing a polygon with a polyline] ]( Dim dblAng As DoubleD drawing polyline after vertices obtained with function PolygonVexs:    ($ !%.;oPline.ConstantWidth = 0.05 'Giving a width to the polyline ( B@    'B B @X  B 2o0 ` i Function to define the vertices of the polygon, ordered clockwise. Vertices stored in array PolygonVexs.t Modified from http://forums.autodesk.com/t5/Visual-Basic-Customization/Draw-a-Polygon-just-like-Autocad/m-p/1978783 cenPol: the center point iNum: number of sides% angPrec angle of precedent polygonT dblRad: size of the circunscribed circunferenced or length of side (if mode = 0).]H ]` ]x ] ] ] ]  ( '(Delimiting angle of center to 2 vertices   ''Initial angle to start just after axe X 'Number of vertices' counter of sides' "counter of coordinates of vertices #0redimension of the array with number of vertices G  $'j9Obtaining side mesuring 1Locating the vertices:      '%2Setting next angle (sign - for ordering clockwise)    !%'C Drawing the temporal point tmpPt  'increasing the counter of sides$$ +F$$  +O5saving data of temporal point tmpPt in array ptsarray  '"increasing the counter of vertices> ' 'i> Numbering the sides of a polygon5edg: is the array with the coordinates of the polygon]]]number of the edge]number of coordinates]number of vertices]4array with the texts of the numbers of the the sides]Hvertex previous] vertex next]midde point between vertices],Create layer "Numbers" and set it as currentNumbersA@>Numbers %l (z    ''number of coordinates '-number of vertices = number of coordinates /2 * ' M 'heigth of the text of numbers of sides, s = size of the edge of the polygonMsgBox "Numbering the new edges : " & vbCr & "nCoord = UBound(edg) - LBound(edg) + 1 = " & nCoord & vbCr & "n = edg(1) = " & edg(1)PrintArrayVariants edg, 6 B along all the coordinates B$'rnumber of the edge B $+F B $+5Previous vertex B $+F B $+3 Next vertex$$ +,Coordinate X of middle point$$ +,Coordinate X of midlde point H]MsgBox "nCoord : " & nCoord & vbCr & "nVert : " & nVert & vbCr & "Vert. " & n & " : " & vbCr & "ptNumA(1) " & ptNumA(1) & " - " & "ptNumA(2) " & ptNumA(2) & vbCr & "-" & "ptNumB(1) " & ptNumB(1) & " - " & "ptNumB(2) " & ptNumB(2) & vbCr & "-" & "ptNumM(1) " & ptNumM(1) & " - " & "ptNumM(2) " & ptNumM(2) r   !%.A NumTxt(n)`70 %l (zNumbers %l(@."for avoiding mirroring the numberso6c Function to order the vertices of the polygon. Vertices stored ordered in arrays Vertices & ptsarr@ Vert: is the array with the original coordinates of the polygon< First vertice just on the axe Y or the next one on its left]]]]number of the edge] number of coordinates]8number of vertices]P'confirming if initial point is on axe Y]hvertex previous]    ')number of coordinates '-number of vertices = number of coordinates /2 {:MsgBox "Antes de ordenar : " & vbCr & "nCoord = UBound(Vert) - LBound(Vert) = " & UBound(Vert) & " - " & LBound(Vert) & vbCr & "nCoord : " & nCoord & vbCr & "nVert : " & nVert & vbCr & "vert(1) : " & Vert(1)TFinding the closest vertex to axe Y (ptMinX) with minimum X but with coordinates Y +CInitiating the initial vertex PtMinX with vertex oposite to 1st oneBptMinX(1) = Vert(1 + nCoord / 2): ptMinX(2) = Vert(2 + nCoord / 2)5MinX = 1 + nCoord / 2 'setting the default coordinate+F+' setting the default coordinatelMsgBox "DEFAULT point " & 1 & vbCr & "ptMinX (1) : " & ptMinX(1) & vbCr & "ptMinX (2) : " & ptMinX(2) B along the coordinates X B$ B $  B$+F! B $+9Definitive ptMinX found B'setting the current coordinate'Initial point is on axe YMsgBox "Initial point " & MinX & " is on axe Y " & vbCr & "ptMinX (1) : " & ptMinX(1) & vbCr & "ptMinX (2) : " & ptMinX(2)d/ B$$ B$  B $ B$+F% B $+=Possible ptMinX found B'setting the current coordinate MsgBox "Closest point " & MinX & " to axe Y is in " & vbCr & "ptMinX (1) : " & ptMinX(1) & vbCr & "ptMinX (2) : " & ptMinX(2)kX.kP.H.RSetting the definitive initial coordinate depending on the angle of the upper side  If initial point is not on axe Y  '    'EObtaining the rest of the division to avoid problems with vert(0 - 1)k8-  '    'EObtaining the rest of the division to avoid problems with vert(0 - 2)k,MsgBox "Initial point " & MinX & vbCr & "ptMinX (1) : " & ptMinX(1) & vbCr & "ptMinX (2) : " & ptMinX(2) & vbCr & "n1 : " & n1 & vbCr & "n2 : " & n2 $ $ 'd+  $ $  $ $ $2'Mangle of precedent sidekX+MsgBox "Angle = " & Angle      '."Starting point in precedent vertexk* $+F  $+;Definitive ptMinX foundMsgBox "Initial point " & MinX & " is NOT on axe Y " & vbCr & "ptMinX (1) : " & ptMinX(1) & vbCr & "ptMinX (2) : " & ptMinX(2)k)Reordering the array Vert()'x $3redimension of the array with number of coordinates B along all the coordinates  B     'r(GObtaining the next on the loop (to avoid problems with vert(n > nCoord) r$ B+ xi =  B ->  n =  r F'xX( 'bMsgBox txt & vbCr & "UBound(ptsarr) - LBound(ptsarr) = " & UBound(ptsarr) & " - " & LBound(ptsarr)o'E Function to delete as eligible edges of polygons on precedent phases]xcounters]$number of edges to erase elegibility],number of repeated edges of precedent phases'Rcounter of the number of edges (also repeated) of the polygons of precedent phases'Rcounter of the number of edges (just repeated) of the polygons of precedent phases B  along the phases  B$  'adding repeated edges1MsgBox "Repedg in phase " & i & " = " & RepEdg(i)  B$ along the polygons of each phase v B $"along the edges of each polygon  '$$$iMsgBox "Phase " & phase & vbCr & "Total edges of two phases before: " & e & vbCr & "Repeated edges: " & r B   4not counting those edges repeated, just the numbered B'F +MsgBox "Erased " & i#o#E Function to delete as eligible edges of polygons on precedent phases]counters'B B$Tb B 'B #F B+o#N Function to select eligible edges of the polygon depending on some conditions; Vert: is the array with the coordinates of the new polygonS Edg: is the array with the data of the eligible edges: (nEdg, x1, y1, x2, y2, T/F)# phase: number of the current phase]number of coordinates]number of vertices]number of elements in Edg()]number of not repeated edges]]]](@Xp]])confirming if an edge is already included])confirming if an edge is already included])Setting the initial values and dimensions    ')number of coordinates '-number of vertices = number of coordinates /2    '(%number of elements in the array Edg() ' number of edges in the array Edg #MsgBox "Eligibility -------- " & vbCr & "UBound(Edg) = " & UBound(Edg) & vbCr & "LBound(Edg) = " & LBound(Edg) & vbCr & "numEdges = " & numEdges & vbCr & "nEdg = " & nEdg & vbCr & "nVert = " & nVert & vbCr & "nCoord = " & nCoord !if Edg was empty at the beggining''kBMsgBox "n = " & n & vbCr & "CHEKING THAT EDGES ARE INTRODUCED OK:"PrintArrayVariants Edg, 66Creation of a new array with the data of all the edges)Adding edges of Vert not included in Edge' B  <along all the coordinates X in Vert of the new polygon added'  %along the Edges of precedent polygons  'F  'F  'F  '  + @ K W k B$ $ B $ $ B    $ $ B    $ $ B$ $ B $ $ B    $ $ B    $ $@-The edge of vert() is already included in Edg' $  + 2Number of repeated edgesF +!2as we are adding that side, it can't be used againYMsgBox i & "-" & ((i + 1) Mod nCoord + 1) & " Repeated" & vbCr & "Repeated = " & Repeatedkxp =Including data of new not repeated edge -----CHEKKKKKKKKKKKKK  ' 9if numEdges = 0 (new array) it starts at the begining (1)YMsgBox "Adding : " & numEdges & vbCr & i & "-" & ((i + 1) Mod nCoord + 1) & " Introduced" @4<Allowing introduction of new items preserving precedent data  'F  'F  'F  'F  '  +MsgBox "nEdg = " & nedg & vbCr & "numEdg = " & numEdges & vbCr & "m = " & m & vbCr & "nX1 = " & nX1 & vbCr & "i = " & i & vbCr_"Edg(nX1) = Vert(i) -> edg( " & nX1 & " ) = Vert( " & i & " ) -> " & Edg(nX1) & " = " & Vert(i) B$ + B $ + B    $ +2-For avoiding problems at the end of the array B    $ +2-For avoiding problems at the end of the arrayT  +(Eligible: true or false. By defect: TRUEkXPUMsgBox "numEdges = " & numEdges & vbCr & "nEdg = " & nEdg & vbCr & "nVert = " & nVertWith ThisDrawing.Utilityn txt = .GetString(True, vbCr & "STOP IT NOW IF YOU WANT ") 'In order to break the procedure pressing EscapeEnd With=Chosing the vertices coordinates X,Y (+) and angle ( - or 0 ) B along the edges of the edg() B 'F  'F  'F  'F  ',Setting the angle for using it on criteria 2 $ $  ('d $ $  $ $ $2'Dangle of that edge $ $  $ $   ( '+because arctng is ambiguous in 3rd quadrant MsgBox i & " - (edg(nY2) - edg(nY1)) < 0 And (edg(nX2) - edg(nX1)) < 0" & vbCr & "angle = " & anGle * 180 / PI & vbCr & " original angle : " & vbCr & "angle = " & (anGle - PI) * 180 / PIk@k8"Imposing conditions to be eligible'9By defect it is false in order to pick only the eligibles  $F0Working only on those who were not false already2If both vertices are on the 1st quadrant, eligible $ $ $ $' $ $'k $MsgBox i & " elegible by criteria 1"dx SIf one of the vertices of the edge is on 1st quadrant and angle is - or 0, eligible" $ $ $ $ 'KMsgBox i & " elegible by criteria 2" & vbCr & "angle = " & anGle * 180 / PIkHk@k8 < And phase = N_ph Then 'add it just for the last phaseT  +DIf there are conditions to be eligible, set true/false the 6th fieldd F  +kh ` MsgBox "numEdges = " & numEdges & vbCr & "nEdg = " & nEdg & vbCr & "nVert = " & nVert & vbCr & " i = " & i & " m = " & mPrintArrayVariants edg, 6 'o "Macro for defining axes and origin]h]] point origin]]H]Height of texts "X" and "Y"Setting coordinates:+F+F+ +F+F++F +F+Set heigth of the text$' Height of texts "X" and "Y")Create layer "Axes" and set it as currentAxesA@>Axes %l (z"Changing color if the option is ON Axes %l( k Draw the lines of the axes   !%.   !%.Sets the texts of the axesX   !%.Y   !%.0 %l (zo =Macro for writing the name of the tessellation on the drawing]] point origin]P]Height of textSetting coordinates:+F +F+Set heigth of the text$' Height of text)Create layer "Axes" and set it as currentNameTessA@>NameTess %l (z$Writing the name of the tessellation    !%.0 %l (zovProcedure for doing the sequency of reflections of the polygonal sector until obtaining the circular mini-tessellation]]]0]P]p]]]A@$:finding the bounding limits of the polygon sector elements+F+F+)&setting the center point in the origin ($ ( '&5Because angle of data is not the same as global angle' $h b-MsgBox "Next angMirr = " & angMirr * 180 / PI $&+ $++Selecting the polygon sector:  A@NOAlong the selection, mirroring all its elements and finding the bounding limits  "   %(. B@   B*:3finding the corners limiting the new entity created@Updating new limits of the entities to be mirrored in next loop.$$ G$+j$$ G$+j$ $ G$ +j$ $ G$ +j8MsgBox "Minimum corner = " & minCorner(0) & ", " & minCorner(1) & vbCr & "MAXimum corner = " & MAXCorner(0) & ", " & MAXCorner(1) ' ( $ ( 'PWith ThisDrawing.UtilityE .GetString False, vbCr & "Enter to continue" ' pause for the userEnd With,,' if the selectionset was created, delete it "PolygonSector.Deletek`oX FMacro for Exploding polygons if the option ExplodePolygonsBool is trueD It would be better not to do it, but otherwise OVERKILL doesn' work _explode F_all F F B@RkhDTAKE CARE!!!! NOW IT IS SET UP FOR SPANISH, following this commands:UIndique una opcin para modificar [TErminado/Ignorar/Tolerancia/Optimizar polilneas/ZCombinar con solapamiento Parcial/Combinar de Extremo a extremo/Asociatividad] _ Dentro de Optimizar los segmentos en polilneas [ancHUra del segmento/Dividir polilnea/S/No]_P responds to previous  % -overkill F_all F FT F0.00001 FO FN FC FN FE FN FA FS FTE F B@Ri|$.$0$.$0$.$0'.dx|'.kh|i`|@vProcedure for doing the sequency of polar array of the polygonal sector until obtaining the circular mini-tessellationOIt is necessary to apply it when the tessellations have de /r30/ in their names]]]]]]A@$:finding the bounding limits of the polygon sector elementsPCenPt(0) = 0: CenPt(1) = 0: CenPt(2) = 0 'setting the center point in the originh$'02Calculating number of polygon sectors to duplicateNAlong the selection, rotating all its elements and finding the bounding limits  A@NMsgBox "Minimum corner = " & minCorner(0) & ", " & minCorner(1) & vbCr & "MAXimum corner = " & MAXCorner(0) & ", " & MAXCorner(1)NAlong the selection, rotating all its elements and finding the bounding limits  " 0 (  %4'2x@Updating new limits of the entities to be mirrored in next loop.$+$+$+$+  A@N,,' if the selectionset was created, delete it "PolygonSector.Deletekwow0VProcedure reflecting the basic poligonal module until obtaining the whole tessellationNIt defines an axis of the Mirr(3) degrees from an external point of the moduleNand finds the most exterior point intersecting with the most exterior polygon.~If the edge interesected is the most exterior, it looks for the middle of that polygon to locate a point of the mirroring axe./Otherwise, that's a point of the mirroring axe.]]]]]]8]X]x]Nreference point to do the axis perpendicular to the actual first mirroring axe]eauxiliar point for finding intersections of the axis with the different polygons of mini-tessellation]# most exterior point]0&2nd most exterior point]h#"Definitive point on the mirror axe]]]NMAXCorner, minCorner have been created in precedent procedure Mirroring_Sector  A@N"FSelection of the objects or entities to edit added to PolygonSectorSelPCenPt(0) = 0: CenPt(1) = 0: CenPt(2) = 0 'setting the center point in the origin ($ ( '&5Because angle of data is not the same as global angleUPt0 is reference point to do the axis perpendicular to the actual first mirroring axe$ $&+<$ $+<+<  ( '6FThe real axe of mirroring is the perpendicular to the one of the name.i7MsgBox "Center point = " & CenPt(0) & ", " & CenPt(1) & vbCr & "Pt0 = " & Pt0(0) & ", " & Pt0(1) & vbCr & "Mirr(3) = " & Mirr(3) & vbCr & "angMirr = " & angMirr * 180 / PI & vbCr & "angMirrPerp = " & angMirrPerp * 180 / PI' $hb$ $&+<-MISTAKE HERE!!!!!$ $+<.MISTAKE HERE!!!!!?????+< <  !%.8="Line defining the axe to work with  ( '6#FThe real axe of mirroring is the perpendicular to the one of the name.+@Most exterior point+@+@+B2nd most exterior point+B+BOAlong the selection, finding the intersections of the objects with the axe line  "  8%J'>lMsgBox "PtIntersec " & objDrawingObject.ObjectName & " = " & LBound(PtIntersec) & " - " & UBound(PtIntersec) > PtIntersec !L =  > --  > F'x B > > x B =  B$> , 'x B  G x F'xj@l MsgBox txt  (Z  (V'Just For the case of vertical mirroringVMsgBox "PtIntersec = " & PtIntersec(0) & " , " & PtIntersec(1) & " , " & PtIntersec(2)$>$$@$ QgMsgBox "Changing: " & vbCr & "MaxIntersec = " & MaxIntersec(0) & ", " & MaxIntersec(1) & " for " & PtIntersec(0) & ", " & PtIntersec(1) & vbCr & "and subMaxIntersec = " & subMaxIntersec(0) & ", " & subMaxIntersec(1) & " for " & MaxIntersec(0) & ", " & MaxIntersec(1)$@+B7$updating the 2nd most exterior point$@+B$>+@4 updating the most exterior point$>+@ki$>$$B$ $>$$@$ $>+B7$updating the 2nd most exterior point$>+Bk@h > MsgBox "PtIntersec = " & PtIntersec(0) & " , " & PtIntersec(1) & " , " & PtIntersec(2) & " -- " & PtIntersec(3) & " , " & PtIntersec(4) & " , " & PtIntersec(5)$>$$@$ >  MsMsgBox "Changing: " & vbCr & "MaxIntersec = " & MaxIntersec(0) & ", " & MaxIntersec(1) & " for " & PtIntersec(3) & ", " & PtIntersec(4) & vbCr & "and subMaxIntersec = " & subMaxIntersec(0) & ", " & subMaxIntersec(1) & " for " & MaxIntersec(0) & ", " & MaxIntersec(1)$@+B;$updating the 2nd most exterior point$@+B$>+@8 updating the most exterior point$>+@kd$>$$B$ $>$$@$ $>+B;$updating the 2nd most exterior point$>+Bk8dk0dd)For every case excepts vertical mirroring}MsgBox "angMirr = " & angMirr * 180 / PI & vbCr & "angMirrPerp = " & angMirrPerp * 180 / PI & vbCr & "c = " & c$>$$@$ QgMsgBox "Changing: " & vbCr & "MaxIntersec = " & MaxIntersec(0) & ", " & MaxIntersec(1) & " for " & PtIntersec(0) & ", " & PtIntersec(1) & vbCr & "and subMaxIntersec = " & subMaxIntersec(0) & ", " & subMaxIntersec(1) & " for " & MaxIntersec(0) & ", " & MaxIntersec(1)$@+B7$updating the 2nd most exterior point$@+B$>+@4 updating the most exterior point$>+@k`$>$$B$ $>$$@$ $>+B7$updating the 2nd most exterior point$>+Bk` > $>$$@$ MsMsgBox "Changing: " & vbCr & "MaxIntersec = " & MaxIntersec(0) & ", " & MaxIntersec(1) & " for " & PtIntersec(3) & ", " & PtIntersec(4) & vbCr & "and subMaxIntersec = " & subMaxIntersec(0) & ", " & subMaxIntersec(1) & " for " & MaxIntersec(0) & ", " & MaxIntersec(1)$@+B;$updating the 2nd most exterior point$@+B$>+@8 updating the most exterior point$>+@k]$>$$B$ $>$$@$ $>+B;$updating the 2nd most exterior point$>+Bk\k\k\ MsgBox "Maximum intersection point = " & MaxIntersec(0) & ", " & MaxIntersec(1) & vbCr & "subMaximum point = " & subMaxIntersec(0) & ", " & subMaxIntersec(1)k[[O;MsgBox "Maximum intersection point = " & MaxIntersec(0) & ", " & MaxIntersec(1) & vbCr & "subMaximum point = " & subMaxIntersec(0) & ", " & subMaxIntersec(1) & vbCr & "angMirr = " & angMirr * 180 / PI & vbCr & "angMirrPerp = " & angMirrPerp * 180 / PI & vbCr & "c = " & c$@ 6$& +$@ 6$ ++PChecking if the most exterior point on the axe is really the most exterior point4If so, the intersection of this line should be empty @  !%.:K"Line defining the axe to work with? :%N'H,KParalel line a little bit out of the minitessellation to find intersectionsZMsgBox "Elements in AxeMirrArray = " & LBound(AxeMirrArray) & " - " & UBound(AxeMirrArray)'F  " $H%J'> >(jThere is intersection with other polygons, so it is not the most exterior and there is no need of entering'FkWW F]MsgBox "NO Intersection, so it is needed to 'enter' in the polygon to move the mirroring axe"$@$B +D$@$B +D$D 6$& +$D 6$ +cMsgBox "MirrorPoint = " & MirrorPoint(0) & " , " & MirrorPoint(1) & vbCr & "MaxIntersec = " & MaxIntersec(0) & " , " & MaxIntersec(1) & vbCr & "subMaxIntersec = " & subMaxIntersec(0) & " , " & subMaxIntersec(1)dU=MsgBox "INTERSECTION, so no need to change the mirroring axe"$@+D$@+DkUZInstead of deleting the auxiliar lines, their layer will be turned off in the main programAuxLines 8(PAuxLines :(PAuxLines$H(P AuxLines %l(@d0TAuxLines %l(@kTOAlong the selection, mirroring all its elements and finding the bounding limits  " D  %(. B@pSMsgBox "Minimum corner = " & minCorner(0) & ", " & minCorner(1) & vbCr & "MAXimum corner = " & MAXCorner(0) & ", " & MAXCorner(1)  '$$G  'j8>Correcting particular case where simmetry is not in the middle ( $ ( 'R,,' if the selectionset was created, delete it "PolygonSector.DeletekQoQ]Procedure for rotating 180 the basic poligonal module until obtaining the whole tessellationGIt defines an axis of the Mirr(3) degrees from the origin of the moduleAand finds the intersection with the Nth line of the tessellation.cThat point is the closest to the rotating vertex (which will be in the center or edge of that line)Frotation will be 180, repeated around points reflected by the Mirr(2)]H]]]]( ]` !Definitive point for the rotation]  ] ]  ]!]0!]P!]p!]!]!]!]!]"]0"H"`"x""]"Nreference point to do the axis perpendicular to the actual first mirroring axe]"eauxiliar point for finding intersections of the axis with the different polygons of mini-tessellation]"0#+fauxiliar point for finding intersections of the axis: only value of coordinate X, to be ordered later.]h## most exterior point]#&2nd most exterior point]#]#]$ $]8$P$h$!!Distances to the closest vertices]$Closest vertex]$2nd closest vertexNMAXCorner, minCorner have been created in precedent procedure Mirroring_Sector  A@N"FSelection of the objects or entities to edit added to PolygonSectorSel!LOOKING FOR THE POINT OF ROTATION1Analyzing datas from the name of the tessallation$('R&Search for the first "(" in the string$ R $'^ ( ^ ( '\%5Because angle of data is not the same as global angle$$ R $d+$)'T&Search for the first ")" in the string$ T $'r#0Order of intersection of the axis with the lines}MsgBox "Mirr(3) = " & Mirr(3) & vbCr & "angRot0 = " & angRot0 & vbCr & "angRot = " & angRot & vbCr & "orderInt = " & orderInt1Creating line where the point of rotation will be  \$&+<  \$+<+<gMsgBox "CenPt point = " & CenPt(0) & ", " & CenPt(1) & vbCr & "Pt(0) point = " & Pt0(0) & ", " & Pt0(1)  < !%.89"Line defining the axe to work withJAlong the line, finding the intersections of the objects with the axe line'x'z'  "  8%J'> > x PtIntersec  !L =  > --  > F'x B > > x B =  B$> , 'x B  G x F'xj B   ' @t% B$> +t-8Array with all the values of X of the intersected points z F $t'zkEEkEE#txt2 = "IntPtOrdX = " & vbCr & txt2 MsgBox txt2-Ordering the array with all the intersections t t tA@=Finding the intersection OrdInt of the array (by values of X)'x B t t x B$t F'xPDGMsgBox "intersection OrdInt of the array (by values of X)" & vbCr & txtErasing duplicates and zeros'z' B t t B @v(% B$t +v B$t , #)For writing over the values that are zero z $v F'zkCIMsgBox "i" & " = " & i & " - IntPtOrdXaux " & c & " = " & IntPtOrdXaux(c)dB B$t B $t  ,  B $t , +)For writing over the values that are zero  'k B @vH% B$t +v z $v F'z IMsgBox "i" & " = " & i & " - IntPtOrdXaux " & c & " = " & IntPtOrdXaux(c) SMsgBox "IntPtOrdX(i) = " & IntPtOrdX(i) & " - IntPtOrdX(i-1) = " & IntPtOrdX(i - 1)k AkAA4MsgBox "Erasing duplicates and zeros:" & vbCr & txt2\Checking that there is a minimum number of intersections, bigger than the data from the user v r   ERROR FThe order of intersection is  r Fbut there are only  v intersections F in the angle  ^A@Dk?3Finding a point close to the real point of rotation/MsgBox orderInt & vbCr & IntPtOrdXaux(orderInt) r$v+T$T \$+T+T/Line crossing the element to locate it properly$T *d +V$V \$+V+V T V !%.f="Line defining the axe to work with'x * '| * '~  ".Intersection with polygons  f%J'> > objDrawingObject.Explode'=MsgBox "ObjName " & objDrawingObject.ObjectName & vbCr & "TypeName : " & TypeName(objDrawingObject) & vbCr & "UBound(objDrawingObject.Coordinates) = " & UBound(objDrawingObject.Coordinates) & vbCr & "LBound(objDrawingObject.Coordinates) = " & LBound(objDrawingObject.Coordinates) ! !Xh% B ! ! B %#+X B %#+X+X x F B = $X , $X'x$X$T $X$T  $' x FDist =  'x MsgBox txt  ~  | %/New distance is closest but with certain margin(MsgBox "New distance is the closest one"$$X  , $$X  , aif point is a different vertex%Former closest vertex to 2nd position |'~$+$+Updating closes vertex '|$X+$X+MsgBox "Dist1= " & Dist1 & vbCr & "Vert1= " & Vert1(0) & ", " & Vert1(1) & vbCr & "Dist2= " & Dist2 & vbCr & "Vert2= " & Vert2(0) & ", " & Vert2(1)k88d'New distance is between Dist1 and Dist20MsgBox "New distance is between Dist1 and Dist2"$$X  , $$X  , aif point is a different vertex '~$X+$X+MsgBox "Dist1= " & Dist1 & vbCr & "Vert1= " & Vert1(0) & ", " & Vert1(1) & vbCr & "Dist2= " & Dist2 & vbCr & "Vert2= " & Vert2(0) & ", " & Vert2(1)k`6kX6kP6H6k@686Exact rotation point | *  2the point of rotation is at a vertex (the closest)$+R$+Rd1the point of rotation is at the middle of an edge$$ +R$$ +Rk5MsgBox "Dist1= " & Dist1 & vbCr & "Vert1= " & Vert1(0) & ", " & Vert1(1) & vbCr & "Dist2= " & Dist2 & vbCr & "Vert2= " & Vert2(0) & ", " & Vert2(1)ZIn case of translation, point will be at the double of the distance following the same axe$t$R+R$R+R+Rk3@MsgBox "PtOfRotAux 0 = " & PtOfRotAux(0) & " , " & PtOfRotAux(1) R !%.h PDMODE"C@ type of point = cross surroundedPDSIZE * C@" size of pointq2[Instead of deleting the auxiliar points, their layer will be turned off in the main programAuxLines h(PAuxLines 8(PAuxLines f(P.Along the selection, rotating all its elements  " %.`$rKTF R ( `B@tKTF  R `B@n@1 `B@(1UReplicating the rotation following the reflection of the first reflection or rotation$rKTF Rotating Pth$'02Calculating number of polygon sectors to duplicate;MsgBox "Mirr(1) = " & Mirr(1) & vbCr & "NumRot = " & NumRot B 0rotating the rotation point h%.n nB@ $ ( nB@ nB@ n.h n%+R n%+R+R MsgBox "CenPt = " & CenPt(0) & ", " & CenPt(1) & " -Mirr(1) = " & -Mirr(1) & vbCr & "PtOfRotAux Rotated= " & PtOfRotAux(0) & " , " & PtOfRotAux(1)  " %.` `B@$rKTF R ( `B@tKTF  R `B@n- `B@--SFMirroring Point for rotation'  (   b$Z ^ $  ('d-Z $  ('k, AMsgBox "c = " & c & vbCr & "Next angMirr = " & angMirr * 180 / PI $&+ $++ OAlong the selection, mirroring all its elements and finding the bounding limits   h%(.l lB@ l%.h hB@ h%+R h%+R+R>MsgBox "PtOfRotAux = " & PtOfRotAux(0) & " , " & PtOfRotAux(1)  " %.` `B@$rKTF R ( `B@tKTF  R `B@n* `B@x*  '$F  'j,avoiding repeated reflections*n*,,' if the selectionset was created, delete it "PolygonSector.Deletek)o)p%Selecting the polygon sector]%]&(Dim PolygonSectorSel As AcadSelectionSet] &,)$' if the selection exists, delete itSelectSSA@ ! '' create a new selectionsetSelectSS !%V."    "B@H:1 select entities using points, from right to left "B@( highlight the selected entitiesA.GetString False, vbCr & "Enter to continue" ' pause for the user "B@) unhighlight the entities ".&qP',H',' if the selectionset was created, delete it "PolygonSectorSel.Deletek&o&8&]x&]&]&]&]' ']8']p'  *+  *+  *+  *+_layon F B@R(turning on all layer"  A@N",Selection of the objects or entities to editOAlong the selection, mirroring all its elements and finding the bounding limits-For Each objDrawingObject In PolygonSectorSel objDrawingObject.DeleteNext_erase F_w F$,$,0 F$,$,0 F F B@R_LayerP F B@R)%Updating to previous state of layers"o#'9Obtaining the corners of the box delimiting all the Edges]'number of elements in Edges()](number of edges in Edges()](    '/%number of elements in the array Edg()++++ B  B $$ G B $+j B $$ G B $+j B $$ G B $+j B $$ G B $+j!ox!0(](](Enumera los bloques existentesListSelections'B  ! !  B 'Bk BUMsgBox "Se va a borrar la seleccion " & ThisDrawing.SelectionSets.Item(nomselec).Name  !%B@/MsgBox "Se ha borrado la seleccin " & nomselecd 8MsgBox "No existe ninguna seleccin llamada " & nomselecko($0$.points in the same vertical ('$0$. G ('jd points in diagonal or horizontal$0$. $0$. $2'$0$. G  ( 'jki)])])PCenPt(0) = 0: CenPt(1) = 0: CenPt(2) = 0 'setting the center point in the origin+F+F+#&setting the center point in the origin  $'Angle =  ($A@D_ThisDrawing.SendCommand "_polygon" & vbCr & "5" & vbCr & "2,2" & vbCr & "i" & vbCr & "1" & vbCro*Rte pide que selecciones un objeto y te da las esquinas de la caja que lo contienen,funciona correctamente, incluso para bloques]x*]*]*]*( check if object was picked. You did not pick as entityA@D|k FYou selected a  !LA@DEsquinas_objeto (objEnt)   B*$+F$+F$+$+ F$+ F$+  limite inf = $ , $ , $ F F limite sup = $  , $  , $ A@Do+]x+ handle exceptions inline$check to see if layer already exists  %l.0 0  !l%V.0 0  check if obj has been set-MsgBox "Unable to Add '" & strLayerName & "'"d,MsgBox "Added Layer '" & objLayer.Name & "'"kdMsgBox "Layer already existed"kxop+AProcedure to print in a message box the data included in an arraychanging lines every n items]8,]P,'x'B B  B$$b x,  B$$'x4rounded to 4 decimalsd` B$ x, F'xd0 B$ x, T'xd x,  B$'xkkk B 'B B r  x F'x&changing lines when i is multiple of nkXP x x $d'x Getting rid of the first comma xA@Doh,AProcedure to print in a message box the data included in an arraychanging lines every n items]-] -'x'B B  x,  B$$'x(rounded to 4 decimals B 'B B r  x F'x&changing lines when i is multiple of nk x x $d'x Getting rid of the first comma xA@Do80-Attribute VB_Name = "Module2" '-!ATWERPR Application for Tessells With Edge-to- Regular Polygons dJAUTOMATIC GENER ON OF TE SSELLS FROM THEIR DENOM IN? Op ExGit 'Forcing @to dec9e variablDesUsavm emory Ba se 1 ' Setfault array subscripts+1. Pub t|` As S;'nof the N_phInteger 'cour 0numb ph Hss(10, 10) '8'Q 2D8collect9p[A[each BH")#u&2&pSver@Tices(DoIe 'Cwcoordina@N< t + c-idered+Vsnz>RepC*Sdrepe,d e1s piKShTxtSAR>pHt2(= 2IA= 2( ZoomWR 1Z,@2}yz -rn"QP Cl09qcva@ dEArSn1A'Rea#Gatpf_D2Analyz!dR{ If Not ()7) ThenASqh7dra,ХPO!t DRe_re7vet`1 Right BaLeft N`_pg ' 0&%cou&ra '@&Oi, jamcV/txt'#OriginTxT ='B>ss=w;' CalcungB(has/>3In$bM,A2)s!$I9A/"/ ' d055a5`'kA= ďGEG4B- 1 ReVl  = c~;!h 0n 3(H!p Whil@e Len( ) > 0woJdifferenm!bC1'Analyzd M1C B,7k1`>%Q> =re,vep posJB2:A t1 DL,L) r# 8'ClG#., gett1rid" 'MsgB ox "P " & &-HCLEANT= !?"Q5S$Not Iseric$L`_yFLc,11&~ ;!KWend 3A17 e qR 0oepaaGlai##b!!q/P "+o @finishoop$^Ug1O=] '< "0"#6" Ehۃj' j Ak__ %G&qCcb}SX No2B/n 1 ytGG8rGs7rHQ1ayby rotF3t? ? transKoLe l- efF@h5qU zt`UI ( 34 " VSub Private  eye_8 As]'PћduaskUhus7Vam2L[![edX'Symmetry W\pappGroup0X@/ classific^_pamns1$ModiaDim p()g  R, R, GlideBooleaP[Y!SmQIpZg` 'Sm e V#Condpkv 'd@b@onceupn;A =lxtbDO'tkCrQcy"p" 'It will( chce"c"lyAcertalcQR ~2`%s4 u96PO " \aa Uc841" I84s@cOnP0th nou6C#4Fa&j0`9: NONEA;81>TTruOc: YES?(1{>ѣfo%ye Vs $M r!Ex 2`#360"t2 /%gP-!l  End If __SRP_5 x__SRP_9 (=__SRP_8] p Select Case Mirr(1) D30:4part(2)@ = "6"H6!H9H4 I18%B2 %Else1& t xt& vbCr & "Group of Symmetry: " r1)w& 3 40extInfo3MsgBox t Sub Pr@ivate  Drawing_Ph_Polygs(numbBool As ean'Macro for d the pons-Dim i, jInt@eger nIH 'erAGs0idesBonC rad Doublep'CdistanX, YI 'CDre9lay@"SeedC8on" a@set it as current AdddL ("D%"!?ThisK.A ctiveC = IsO FNi@p1 To N_ph 'Along allCR8GQ;= irReAQPreserve RepEdg() EBL0If i > 2@+en ' wh@ore a mothanOB!ErElegics @es, B 'eAs elii0lity9C previous to"last |on`: a#j#.(i)$DM! peachcn6s(P0MMa#0#&nk[ i`mpty N@%##AD0@/K 5KA(nr n, s 'ND aaed with#recedX7 !`efiA Bor5n)axAc n"Aad#3b#ACenPt(0Ms * Sqr(@/ 6: C= / 2%т0 'ptc`@upoin snn( OM"0B! eoCęX(s @%) Tan(2@*PIMn`&'Dmmi&cceA9'mmain ver`ticalo'=d ( Si gR8adiw؁Dcircunscr@cfecyX=  X ) @((n \ Pn+t 1R )a. { b ottom ex 'dq"wgyY< ?Aٌ'"L"5%2cX 'L|efg9R-it}S Br/Y  E!wOm "BQn g 8 @r @etJ@ yc}aT>,uaI\QcViz#rAedg: OrderVexs!5TichYDӚaYsq+#‚QVari a]'!avoi"dpro`msglarra|vA^AV &o;p , ' !pET'Option cho@byuЙT`zmNp C 3HerUas (not repid)!Qa'' S g.0szļ(i ةPbl e!Aŕ s )li "oPAcadLW7i*pt@Free1( o @s 2a6T+cn̵0m wP( anGle!bEta=fIdltA D0 B |UBound(es) - Lpv) v Bb7( _,p0`8T, 'MsgBox "Finding a T in i = " & i ptFree1(0)lEdges(i - 4): 4*1 434240 'settthe first 2 points ofeligible ee J2 2e2( 1MK"F" Lat< as noFagain xit ForEnd If Next _&, ]& vbCr_3"2 ! ! If +-10 0ThenanFgZ^desfatio8anG@= -PI / b2:lse'Aptn((E2G1<))?I%))CDPdltA= * iNum 'D@miŽ,center to vertices bEtae@K(-  2 ' r; A>  Di= dblRad.2 * Sin>('B-ZW<< 0 A4= Ac?Q+>'because arctDis ambiguous3rd quadranEfI?EB CenPolThi sDraw.Utility. arPp1, fI, ) / %temporalcv tmpP]#c* 180(1["#1c`be:< YU+ " (I!)8 @J% Ag=`m,([ca+'  0*"lylin 6fRER obt@ed with funcl ygonVexs: Set oP=t4ModelSpace.AddLightWe( R(=, !g,X, [#-j2, 0aX'C.Cons"tHWid@= 0.05 'Gizva g@po los3ru@UpHdat U BoundSector)L+ 1 ReDim Puerve%C```&d*`]A4acSubA Priv %7' As Vari!c(bI@ger)ADou`'$ja#`:#=a&B!CAcadLWA8am  `  NNN't 'E 'P0D?O&O&O&O&O&ne.O&O&- O&'O&O&O&+'O&C&F/>~s%%Tg;g@0c'', OpD=pXmAT# 0)7+P$ ;denfIQv^ OrderVexs(a"oSj' Fun\on to ~a;UQdN. 1t stored#pin btw(pts@Gb g6l [{!`First< 0u vu#E-Ce{5[q~[1O"qq{S<'Fin?q9closed00;/0h)! imumkbuFt#5Y +gI}#t03#P"$opositteB18.'% pubz'=@(2p!6=+ " f defpaultx491000:[7s}X&__yDEFAULT5o11's  soE@o#D2PYd @3 X IfИ= 0 Aai>0The11Dgi $'Hb"v0!fi '>sAMxrun)/LY0"!쿵OB<7_)WwF_Ey <'g) !n?{a'Possi-ble ptMinX found( m= i 'setting the current coordinate j'MsgBox "Close@st poi\" & & " to axe Y@ is in& vbCr"_ L"(1) :_/;$2 $2)UEnd If Next  'SsdefinitiveQ aly depeng onHangofupper sidIf Not Def Then| ',(n$Mn1 = - 1  < 1$ + nC 'Obta1r„LdivisiYvoid problems with vert(0 LKn2$2$2 $ $$q$IkTO}@`Ǥ@DGLVYv)ZEn= 0 vanGZEls-Atn(( + - 1)) / G   'Vpreced{VK,A]=pbA#>X= (- 2`A#U) ModVStarŒbn`SiRex nGxǀ=Ca ):$(B+#'qp{C J"!NOT#N?M&`4]e0$Re erarray`utxts"" ReDTim s(`o,) As Dou} 'redixmenBD n8umbs For= Hloall"0n(#?+۠?>)UnŪloop (ŕn >Cpt"i) `DC$`ia6iy" ->Y" nd| PTice~s# "Ƅ݃ ?"UB(AnL g`a @SubAPriv`  Eras@eElegi`:s (edg(Integer!' FunctDdelete as elib P@polygonsA" Q&i, j@, k, mX 'cter`Ae%eq A ilityrir rw dר K e0qы(also m)efHHrjuЏf,6@!2U6 E 5r 4RepE /'adRe31fMA's0o)sa?j DN_Pol(?" ( eachs'a kygs(#)y #7q!eCg9{SP0 7WTotFtwoS s beforeC{ed@`"Qg'rer '20Zp*e`3!c#em`i *L 6# (mL"^F]a ?dbKiWJBBaB~B_A_A_AeнWA;@ QWЬDo W\hi $lйBpBooleaP@confirЩgp if @-s alreadyaXcludq@1Ex???yASt!ᯅial values and dimensions nCoord = UBound(Vert) - L 8+ 1 'number of cdinxateb~/ 2 TvicD= ? /2EdgA(edg' ) Welets in the arra$y G()Oum t / 6 dg  'MsgBox "Eligibility - " @& vbCr_h "Y3)a"-c+*n: I/F If ^=Then 'ifAX wa s empGat_begginingED%0Dc@EIfZn/W"CHEKING THAT EDGES ARE INTRODUCED OK:"@PrintA~V`arian@D, 6 @Cre at@a neBwDwith-datall;A'Add3 #Onotcl0udedAe 0 Rep@= Fals@For i51 To W-PStepƀalong a X,polygon |adCTj]' sprecedent xY nX"1`j *@f- 4: nY 3X2(2! 1cg H‰(iAc)(٠ ) OA B(i |=.(7(eModE,a 2Y2)Or Nx L8_1_ V1@cwZ@() il`ddyO [g8!4ahNTru\L(phase03 'N~rfBl aEbP! "F" '@w` sthside, it can't be us`qagain ri@"-!/ B{"e `g "Next/# a( 2In/~aj$KHFb.@h80 (rt pstar@Sw\b\ (1PtfqdQ:pVveo})bIntproduH\5ReDim Preserve@%LH ) As $^ 'Allow!_E^ items NAN'm0F N5MNmHMaNrOAPY1O4Q+m+e6q#n%C%o\S"! mi\"!iQQ! 5'"<"Z= Y`>#|" !Rb0->6&="{Y@O5Ra/U/ "F" Then 'Wo rking:on=opwho were notlalreadyP'Uboth vertices a0Be 1st quadra8nt, <;((InX1) >=@ 0 AndRnY) 2<))dK/Tr~u ?> >X+)ΏE dIf 'MsgBox i & "e by criteria 1" E} ,one ofBx]@3e isq^ a"angl- 0c7dOr d_ /wanG@"<&XoA S2"ZvbCrk\@=^&DA!* 180 / PI*MoK" pha@= 0N_ph+ 'HaddAjufolagR$uT" mzklconditp, set t-]/Ã6sfield J+ FOeNext  %-"numEdNg|(& ,n.B(VEwbfHE"c dm$mPrintArrayVaents, 6%`^SubAAvate  Draw_Axes(ColorsBool AsB ean)!a0cro 4inMaior@n Dim ax_X,YAAcadLince4e_T*varPnt0(3 s Dou 'SettcoɄin%s: %v: # #10"#gHly( !y^(B ' h@`[t*hE# / 20FCClay "B#ias c urrenaAd4dL(`ETh isJ'.Active#=@'bs`.Ch@CP(d ic]op=\ON F|*gi.r-1 <Q cl*bq-AQ,ModelSpace.( ,!p1NY/yߡ0QO #p57?8Q6(@. , >hJ !9+{Y"  O U\0"/I @NameTess(t@;StNgPt'MHw`"Q]n1ellar#;ԗ`wEJxtJ D?H?HvF FFEEf:@=B11B?`9z?pC?l>>>aR(8W/9) !./*8"*_. /*;I". /*YsMirr`ong_S or()ProceduPrrpkg sequencya)reflŠoFpolygon$alЊct`until obtav-circular m0-+PtOfQ(0 To {nUGA /iobj9Obj 1E0tgAu0edOEi@, j, cI@ntegere on1AF2NrBoungPts(bv Lim itsOf'fi"bd l2@eleme@ CenPt(0)P*@yvP8 '0o:Bq1P gi =г 2 - AQ|*#'Bexcau` datamnoP^sLvglob !1r c kDo Whic *< 360kg!᧐Mv#1pCos~(P-Ql%!Sin/'cSps.Дr0Wow M4AXCorner , min  'Along the sel@ectionrrori`all its 6menand find8jboulimPFor Each ob jDrawXObj] In Po@lygonSo0rSel2Set1Mi}ed2 =E.!(CenPt, PtOfpAxe)Hv D.@UpdateCClGetBhBox(Pto1/o2) 'zc s znew ity cre7d7'@ ofies to be in next@ loop.%Ifxo1(0) <Then=1@-1VC2> ~MŕFJ M2(BV      !"#$%&'()*+,-/0123456789:;<=>?@ABCDEFGHIJKLMNOPWXZ@ ENB'Msgg "Minimum c = " & @& ",L@& vbCr _G&"%\G(c c * 2angPI / 2 -N A?* 1 80 L@x A'With This.Util 'A(.@StFalse,E2"Entercontinue" ' paupse fau`rE@x Done: '' icQEs`qwas%Y,$ d@te `@Noty Is h\9 '}$.D If#A!SubAPrivf Fun" overkillpcs(Exploded sBo@ol As e anTMacr>oop! iqru`' It wouDldrbet,ntdo !, bFu @+rwi,OVERKILL @doesn'`rk% '$=Sen dComm"_eZV"_)'TAKE CARE! NOW IT IS SET UP FOR SPANISH,@$llocs:`(Ique una opcin`Ira modificar [TErado/Ignorar/Tolerancia/O+miz /ilneas/ `binT solapamien *Par$l/&de3tremo a `!/Asotividad] <@2> D @? los@g pol [HU[/D ir /S/No] _P r@espondprevious v8-EX8TIh0.01HmONC5-EsR"ASTF'<; >=Eq@ualPoiЄ( pt1()E`TJU J K RotaPWg_c( 'Procedu:rXd5ncy0&0arraOQZ al)c*t[u\l@tanĚcircul/i-tes[rlonP*`K_'_⡀J_P_!%_eQ3_Xq[19:ng_Module(auxL(ine \refXbasicpp[@|[wh0 Zde Lan ax["C3)Ygre`from 0ernpqt#s@% E@Dhost exterior point ersecting with the mos lygon.  'If>edg eteved isp, it looks fiddle oFatY to'cate a!AirroraxeOErwise,oat's1 Dim PtOfAxe(0 To 2) As DoubleaangM4 Perp objDrawLObjAcadEnt8ity**or i, c9Intege"r7Pt0p 'referenLce@[doka xmp7endi`cularbjactual fir@mIaA! Varia@ 'auxili9}fi@ons{A Ɲdif*F mini-tessellation Max =N Csub2ndCuP RDeuGoCAjDG GE072BCE4-9027-4F86-BAE2-EF119FD0A0D3}#1Ggram Files\Common9desk Shared\acax18enuUH 2011 Type Lib0raryC Script@ing>crip^ing]t j]420B28E718-11CF-893DRA0C9054228.Rcrrun.dll#Microsoft RuntimeUMSFormsUMSFxrms$3@%0D452EE1-E08F-101A-8-02608C4D0BB4Pxsystem32\FM20.D,LL%B OFbO/;&1?ÏA00h}#0r# 04@B845A2@40F-4D52-BE3B-0906A@53BBB1ɦUsers\Valen\AppData\Local\Temp\VBE\L.exd3!.E .`M Thi sDraw@G@T@mi1DFXaw`GF2EH1}","""+bnModule1GbnMAdnh1 2 24`!afAC_TessGbfR_T@s`!BkM2/V,/꺾(!2J222odn.mΫ3U333PRq/<4444+C--TemplateDerivBustomizD2VERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} Form_Tess Caption = "Application for Tessellations With Edge-to-Edge Regular Polygons" ClientHeight = 7092 ClientLeft = 36 ClientTop = 360 ClientWidth = 5880 StartUpPosition = 1 'Centrar en propietario TypeInfoVer = 76 End  Microsoft Forms 2.0 FormEmbedded Object9q$H (@L}(0&h08ComboBox_kUniformri02X      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~AH,{5Tahoma40(k-Uniform Tessellations (k>2) @Tahoma4,(Tessellation to Generate:v @Tahoma4H,&yuTahoma4 ( Nomenclature:@Tahoma4@ SP-ph2-ph3-...-phN / sim1 / sim25Tahoma4$(SP = Seed Polygonp5Tahoma4 ( phN = Phase N5Tahoma40( sim1 = Simetry of Polygon Sector]5Tahoma44(#sim2 = Simetry of Mini-Tessellation]5Tahoma4* Accept4 OuTahoma4 +Cancel4OuTahoma44F 0@uCheckBox1se 5Tahoma4F 0@uCheckBox1se 5Tahoma0( Numbers of edges of Seed Polygon]5Tahoma((Include referential axesg 5Tahoma+ InfoOuTahoma((Include auxiliar lineses 5Tahoma4F 0@uCheckBox1o5Tahoma4F 0@uCheckBox1o5Tahoma((Only Mini-Tessellation 5Tahoma((2-Uniform Tessellations @TahomaAH,{5Tahoma4F 0@uCheckBox1o5Tahoma$(Explode Polygones 5TahomaAH,{5Tahoma0(Uniform Tessellations (Archim.) @Tahoma,(L = SeedPolygon aligned Left]5Tahoma0(B = SeedPolygon aligned Bottom]5Tahoma0(R = SeedPolygon aligned Right]5Tahoma4F 0@uCheckBox1o5Tahoma ( Name included 5Tahoma4F 0@uCheckBox1ude5Tahoma,(Axes with different colorsg 5Tahoma (Only information 5Tahoma4F 0@uCheckBox1rma5Tahoma3 ,\ (O TessellationsDouble-Layer Gridsi%Tab with commands about tessellations)Tab for commands about Double-Layer Gridsֳ Tabulador1mm Tabulador2mm5Tahoma+* R KQltPQ%JƴS}YqUض]bڵ[+}wS$Bo2-' ~$>X_4w*}ozؾ5z+kܜGPMU12Mgz63~wmoKez̯¶ihi16[,*ʽKl/>,-5̣LNFf5I}ݺߗ]:Lk1o~gS[|evMcUmmy-ȿٳ?6Mۑ_MPL\lZwPڈˡ3}_ҫ=t>I{_k{2\3s7]]dپBcS/+'׏CmUh{]ocـݛwL?RSwb=lP\ \h6~*=ac8Ul8`vk_ingK&G;-,kCw͌7YS1?CUPn`][C>ѷTϵ9U5ؔϣ.ڙ6bMtқ3O힟KE d p-ťXmtnɯ֢ٿE{dk2N[~ֶ4?ՓVVۑl~ұqqr+2LgcNfqϲd:۾5}ey5[JJsq2)+Y.]wc9Ek·ѯ{+pǽ/hmYܧU j?ѓOzHRjAoGM.ʾk,r.mueN>UVAuP2~Mߤ,?MY2V=;*ǨYu+옏]o[8u}<>7M?WڠL:~4 kj_iʍ"=@IisuZ6?WcI)9G/gطqk7׺ϭ˷\Ìkޛ5~խ?F։ܪck ~эsmMobWi5,RoEF}*z͟9==7"~kV]NHU^t,MUگe3_K7ΥSoM { 6{($>4WYd| Wհ+DZ\=Pv۲]^7gc[XjgQ]>fM (vCf [c};e~FEv|vU]>Q:}㽶Tm%=k~+6ĔX a^^nk {zwԺf(p&Pr_g]6&TEgLamacCV?Oe/f}܋+{bhu;"jfC=je9 1.};_ezPCR0?e,doEeT^nsqC1}n~=uYY, Zú~X=Vo"Jaw[Ccc}Ugb9]g;ߍuT`=Դa= ̺2in}?[,/ʬcY}3m嵇h^]eN}4e]u?W%:xtjzN>eYExۗA gy.wf;%{goOZK3ˬǶE4{->׍l}W=2mnE9u kTm`NV[tMI)_cfC '|j3W d2컦s4ߣM^K |Seoqe{5{}s\Sٷ1̪Mջc77}~e#:vX.QVS_PfYXMuvz zj]:ja5uֿ1mn~>(XǶٵoG_w)ǭnf$[oZQ4{NsFY l k-f\H۶#R7;ѵ>ĔPO4d\=Jyȸk6ߧm-L tq/~;n;S.0scaXqk1[V?O7m{1\d\`{]N/kZM4RSne~.`=*Fb;;&m7eʉiua;ǷnۙuvC,}[ fY}B, e{k"Z[+%:B˰XȽwP2Ymy ԪѤ3:57c0.4Ch56d-E\ߴzN+4u.ѕ˪~ٌ~ro^^Wmx}kv=;/t==S f;sn-2>Zu|\NVU(f\\Ie{oUc+;Ui)OLǶm2\ FEEV~k:}w:lu&We̻hRNqmyy4?Z'2^3:'혯0Ÿo5~*5>3k+q_{]-N͛+7oz]RJp]vEKOsN6 ;*y! FﭟkeOol; ꏩttޜZ.ǿ4mh̩lefl2-XzGJpʹ_crhn&E~_Ӯ4z~=[Sڽ[/LǼPc9MۭªsX+ɪ1_fbt,ԭ`cm\|>C~F=?*,.Uuz^(2m`!SUӎ[ze}C!̫#Yw_ұ:C*vnKtł}Llqd{-IHev{ h} j)IGr21t:3Y{ewÇ fO"zUp?͚]Sen8FW*aT7o"5w~k$_dK9Ƹ>mӭ\kER.ZCw0q-c?GMV=Dzje7w'W /wLG#k~k}=~<\38Y58G#G1m~ܗ6 wc}i)gʯ~;vUn.ȹcӵz;橭}?};,D&(ukEWZ=!v;-0TUR_,+IHnMٸ}5ZEc,kM Q}=K[oZnzp63ͩ5k)Ye7UQquθoE;ec#g ׻}m}LM~ֽ5?<=Y]4Y}yluzRw:he`sxew߲{sqSG}_곁Bߵ5{I< Yu SI]?$G=~9=%ѵq=-f9{d+7 SI #=3>յѸˎ-aH`EF=Η~c}é!;ezN܅QͭԼ@hx5~4Z7W}M[cq[^CM6YQ}8YN=M졕Xje'ӱ'CY6uMؘ~$fV 7m92>ӿӱ=BtXuؽ@8\wU>džQ[WWWr?xV~?1BJjU][meۋewk,Sf3zNmGc׷B>cLYNC7~-_,Ujc}laCpcX;>O?GM~4f Awl"jhmq67efb> lѓs_n_ewu}>?Uف.wݓuYAuٝeTCcҰտ!wF>z~ L6nvnId7eȵWKibe?m]꘯VcUWQ鎨2cl ?j}[EQ=D}N,Ʋq1bzۿVV2kJ2j1f.K] }hg%K{UҲq^/v cشՐCn6ɲZ[̯BUf>+Mm,UXA- ]ng=K %'[yc9gi8l?W_d_kR>rn~EsULse5zJާײ_n]m>ie~-2qo]}K"Q^OzOΩReBM}7`] ~̢C혵??ܜ<_ZX1}Y,~ο&EWg]zxJ!/5^zޯF}_fc{hťW nKwkIMY=[>SHn5Ŵ\6W~zӮ3OPYɷ7 MBw}UTM~c][K\v7cUkn㾚__X+p,ȣd;wCo_r2+"fz.,ev1oڳ~?vUxMUʵ?}?42lmwZ8UbK\ L ծ}<|v>Z٩ j}u;)̌1u[`s` q{z~[4|-V ix ļʎ%av ~KMc\ֵkN&7YZߦzJtq+ͺʀ {{.ɾlEm4[)vC,u]e]z ۏVz-}Num=)CYخmT9Ѱ_,cks:ieJ2֗?s}2̗JcfuZk.=56| }8[62=ԷYO'ҿެk-:?Kcbmk6@?ӓoomPgFVSv5Ozo4$:[wP&7+eq{.n5Neeh}W2Yz6>ʙm* ne;.Ƽdxul6mU=jwoh}qç7WQm.ϱQ6/!y wO=LޕTu,ifcgוɲmpXgz~4!yUe՛e%Ǫ-XCh/-c~Su}_k+f.+M侭6=Mnbd<3*1fkátxj=o.hg Vw5lBJnb1 weFRM.»e?jƢ(5n{.pϯ]s}J]L9mj]޿e6+ou {!5Y^F]L\cKkkvYgR:i)WT?/2|ug,d՝sYZ ەmmc2-TfS,+&&kdUXߤNF-=g͵Y?iɧ/[ vgB6lUul"h5?O%5U=݋Se}w:~6ܯ+.]^P݅k3W_sN7WNO3r/ȷ7TV]cK}ϥlu5]N+)P܊+qukwr=OVz~xvzJu)~EumU\mo}}qҿX}xpu~Nk/ ac:b-hWǯZÀ6"ǂHIMfi?;j-peVn1!k9bΦo~#o'zױ1lx8=n9%0ʮ17ecd9m{ij?XgSԩوf}q]ps},7n2{vd[Sۅ}~U41h}mSgK7eO=*0_aSs1:mZn2{k_kY7?~}eQ~5ˋ^lwٽ]2~?Y^?ubYuyG)^[,1~U8}ZS}[L݋\!1{iʵ+Guzż1z/-ʭnt}'S:ke[ZzL+[tcpkk9C8lه9nSjm~s$kbӑmSouTA-alSV$S@FnT >QzI%>C+6KݾťݼaxI)F<4luVV0>$=;}emkDStuUd]h/#7zn~SW=UMV*T@me gȳ鯗IOElcmݵ=c_C1k=:'lE`꿰} Nztvoc7nG?KΉ$ΎqEAsql:ƹͲz_kKD;:P6;m9=ok$S+Photoshop 3.08BIM%8BIM: printOutputPstSboolInteenumInteImg printSixteenBitbool printerNameTEXTCutePDF Writer8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM' 8BIM5-8BIM8BIM8BIM8BIM08BIM- 8BIM@@8BIM8BIMWrFImage_for_AtwerpeFrnullboundsObjcRct1Top longLeftlongBtomlongrRghtlongFslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongrRghtlongFurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM $"f@$ Adobe_CMAdobed            f" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?zwN68'me-k'7nF ;MemIUOW٫/XYĀi>JƴS}YqUض]bڵ[+}wS$Bo2-' ~$>X_4w*}ozؾ5z+kܜGPMU12Mgz63~wmoKez̯¶ihi16[,*ʽKl/>,-5̣LNFf5I}ݺߗ]:Lk1o~gS[|evMcUmmy-ȿٳ?6Mۑ_MPL\lZwPڈˡ3}_ҫ=t>I{_k{2\3s7]]dپBcS/+'׏CmUh{]ocـݛwL?RSwb=lP\ \h6~*=ac8Ul8`vk_ingK&G;-,kCw͌7YS1?CUPn`][C>ѷTϵ9U5ؔϣ.ڙ6bMtқ3O힟KE d p-ťXmtnɯ֢ٿE{dk2N[~ֶ4?ՓVVۑl~ұqqr+2LgcNfqϲd:۾5}ey5[JJsq2)+Y.]wc9Ek·ѯ{+pǽ/hmYܧU j?ѓOzHRjAoGM.ʾk,r.mueN>UVAuP2~Mߤ,?MY2V=;*ǨYu+옏]o[8u}<>7M?WڠL:~4 kj_iʍ"=@IisuZ6?WcI)9G/gطqk7׺ϭ˷\Ìkޛ5~խ?F։ܪck ~эsmMobWi5,RoEF}*z͟9==7"~kV]NHU^t,MUگe3_K7ΥSoM { 6{($>4WYd| Wհ+DZ\=Pv۲]^7gc[XjgQ]>fM (vCf [c};e~FEv|vU]>Q:}㽶Tm%=k~+6ĔX a^^nk {zwԺf(p&Pr_g]6&TEgLamacCV?Oe/f}܋+{bhu;"jfC=je9 1.};_ezPCR0?e,doEeT^nsqC1}n~=uYY, Zú~X=Vo"Jaw[Ccc}Ugb9]g;ߍuT`=Դa= ̺2in}?[,/ʬcY}3m嵇h^]eN}4e]u?W%:xtjzN>eYExۗA gy.wf;%{goOZK3ˬǶE4{->׍l}W=2mnE9u kTm`NV[tMI)_cfC '|j3W d2컦s4ߣM^K |Seoqe{5{}s\Sٷ1̪Mջc77}~e#:vX.QVS_PfYXMuvz zj]:ja5uֿ1mn~>(XǶٵoG_w)ǭnf$[oZQ4{NsFY l k-f\H۶#R7;ѵ>ĔPO4d\=Jyȸk6ߧm-L tq/~;n;S.0scaXqk1[V?O7m{1\d\`{]N/kZM4RSne~.`=*Fb;;&m7eʉiua;ǷnۙuvC,}[ fY}B, e{k"Z[+%:B˰XȽwP2Ymy ԪѤ3:57c0.4Ch56d-E\ߴzN+4u.ѕ˪~ٌ~ro^^Wmx}kv=;/t==S f;sn-2>Zu|\NVU(f\\Ie{oUc+;Ui)OLǶm2\ FEEV~k:}w:lu&We̻hRNqmyy4?Z'2^3:'혯0Ÿo5~*5>3k+q_{]-N͛+7oz]RJp]vEKOsN6 ;*y! FﭟkeOol; ꏩttޜZ.ǿ4mh̩lefl2-XzGJpʹ_crhn&E~_Ӯ4z~=[Sڽ[/LǼPc9MۭªsX+ɪ1_fbt,ԭ`cm\|>C~F=?*,.Uuz^(2m`!SUӎ[ze}C!̫#Yw_ұ:C*vnKtł}Llqd{-IHev{ h} j)IGr21t:3Y{ewÇ fO"zUp?͚]Sen8FW*aT7o"5w~k$_dK9Ƹ>mӭ\kER.ZCw0q-c?GMV=Dzje7w'W /wLG#k~k}=~<\38Y58G#G1m~ܗ6 wc}i)gʯ~;vUn.ȹcӵz;橭}?};,D&(ukEWZ=!v;-0TUR_,+IHnMٸ}5ZEc,kM Q}=K[oZnzp63ͩ5k)Ye7UQquθoE;ec#g ׻}m}LM~ֽ5?<=Y]4Y}yluzRw:he`sxew߲{sqSG}_곁Bߵ5{I< Yu SI]?$G=~9=%ѵq=-f9{d+7 SI #=3>յѸˎ-aH`EF=Η~c}é!;ezN܅QͭԼ@hx5~4Z7W}M[cq[^CM6YQ}8YN=M졕Xje'ӱ'CY6uMؘ~$fV 7m92>ӿӱ=BtXuؽ@8\wU>džQ[WWWr?xV~?1BJjU][meۋewk,Sf3zNmGc׷B>cLYNC7~-_,Ujc}laCpcX;>O?GM~4f Awl"jhmq67efb> lѓs_n_ewu}>?Uف.wݓuYAuٝeTCcҰտ!wF>z~ L6nvnId7eȵWKibe?m]꘯VcUWQ鎨2cl ?j}[EQ=D}N,Ʋq1bzۿVV2kJ2j1f.K] }hg%K{UҲq^/v cشՐCn6ɲZ[̯BUf>+Mm,UXA- ]ng=K %'[yc9gi8l?W_d_kR>rn~EsULse5zJާײ_n]m>ie~-2qo]}K"Q^OzOΩReBM}7`] ~̢C혵??ܜ<_ZX1}Y,~ο&EWg]zxJ!/5^zޯF}_fc{hťW nKwkIMY=[>SHn5Ŵ\6W~zӮ3OPYɷ7 MBw}UTM~c][K\v7cUkn㾚__X+p,ȣd;wCo_r2+"fz.,ev1oڳ~?vUxMUʵ?}?42lmwZ8UbK\ L ծ}<|v>Z٩ j}u;)̌1u[`s` q{z~[4|-V ix ļʎ%av ~KMc\ֵkN&7YZߦzJtq+ͺʀ {{.ɾlEm4[)vC,u]e]z ۏVz-}Num=)CYخmT9Ѱ_,cks:ieJ2֗?s}2̗JcfuZk.=56| }8[62=ԷYO'ҿެk-:?Kcbmk6@?ӓoomPgFVSv5Ozo4$:[wP&7+eq{.n5Neeh}W2Yz6>ʙm* ne;.Ƽdxul6mU=jwoh}qç7WQm.ϱQ6/!y wO=LޕTu,ifcgוɲmpXgz~4!yUe՛e%Ǫ-XCh/-c~Su}_k+f.+M侭6=Mnbd<3*1fkátxj=o.hg Vw5lBJnb1 weFRM.»e?jƢ(5n{.pϯ]s}J]L9mj]޿e6+ou {!5Y^F]L\cKkkvYgR:i)WT?/2|ug,d՝sYZ ەmmc2-TfS,+&&kdUXߤNF-=g͵Y?iɧ/[ vgB6lUul"h5?O%5U=݋Se}w:~6ܯ+.]^P݅k3W_sN7WNO3r/ȷ7TV]cK}ϥlu5]N+)P܊+qukwr=OVz~xvzJu)~EumU\mo}}qҿX}xpu~Nk/ ac:b-hWǯZÀ6"ǂHIMfi?;j-peVn1!k9bΦo~#o'zױ1lx8=n9%0ʮ17ecd9m{ij?XgSԩوf}q]ps},7n2{vd[Sۅ}~U41h}mSgK7eO=*0_aSs1:mZn2{k_kY7?~}eQ~5ˋ^lwٽ]2~?Y^?ubYuyG)^[,1~U8}ZS}[L݋\!1{iʵ+Guzż1z/-ʭnt}'S:ke[ZzL+[tcpkk9C8lه9nSjm~s$kbӑmSouTA-alSV$S@FnT >QzI%>C+6KݾťݼaxI)F<4luVV0>$=;}emkDStuUd]h/#7zn~SW=UMV*T@me gȳ鯗IOElcmݵ=c_C1k=:'lE`꿰} Nztvoc7nG?KΉ$ΎqEAsql:ƹͲz_kKD;:P6;m9=ok$S8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM http://ns.adobe.com/xap/1.0/ ICC_PROFILEADBEprtrGRAYXYZ acspAPPLnone-ADBEcprt2descgwtpt\bkptpkTRC textCopyright 1999 Adobe Systems Incorporateddesc Dot Gain 15%XYZ -XYZ curv*NyZ1(<kB$    3 S{F!g ^ dx-U L! !"#Z$"$%&'N(()*+e,;--./0|1Z293345678x9a:L;8<%=>>?@ABCDEFGHIJKLMNOPQRSTUVXYZ"[3\F]Z^n_`abcefgnlXǾ%VdoA=-M1+lc:g4RZQ +{cg_$돖8÷wl=ӴٶWFіlW u`w||¢?% =Xq:dYF1岵YS#U5nG%kkj^ZʙZIeI$bI$Kwó#>!e&9ϳډYGﻶVգ;M6gld5~]I|F/A?c~C7;Wi퍳\Ccv~:(ZI(jdWo_lӝ qM7.ݹ˹v=CW|goݑm]6~0kr1⦁f2.6 ڛ~&Qءv gٻ~G.RQ㶶ڟ*pz2\n)Zs52G{.|KwQ_#&mےluMkQb6մS;f,1; cz=~뎯T}vRk6o\mUX)yjMqjVVUri1}2Y$i=W57lFl]3k $8|:Ix=ڙZ6(KDmOLϺ߈?,4RaG^qM5>߭ޓ쮩OL!ウ'5:.3\eu/jXmbvl_omz;emj]_{|ZYEMV6-NИ~(>'۴q_̏jɵ>YW] 5=U\e)iOg;׿Gvf,]ӽ7ML2UIZ\f/Cl56lfKGQG5<~Μ^ٻ7Knn.Sn JlVs $kxx*gYikie GDMvɮ ؇޸/TOՙXT:}շ+i)*r|SQq4U5sCKO4/O橻~8U%9/p|T-ֿ9S9tŬ'|doGޘzz-.7JVdiYϝU{͏{kvm-6|f?q_~Rݻq_aI7n+=EQMQQAO*8&$ݒGn[9~ f96jjIO'NfHZ\~碊87vܻn|tTSGjnL5"]ؽs:)}?,$ ^ѽ⿐}o~_2'ͽႳ_jDu []܆5W\ӡqz#o{wWNܟ{O]OdbwtX }#>'\M}i׵" .Y&X)2W?O'؟{ܧطN?K8{pT_>%]ڴi3Yj(qxjr9\{Y`iGK8{4cFqr[.VanoԲR6zv.Q%L(ȕMc4ðߣ_~o=8z)b`<c'n_mQ[~NJw)tgv KBkL+le|id}òw`1u6GS{2oOAj[]ifFxehhc_yO4>^u]G/fCVvhzi`insrXwꪬ{Uۓ>KڝSW}oj#{EuG͏ѕLrċ%F4єDm~FBm >SfQC^}9y_;\A:+o>?j *#7Av?~m]ɲwn Jtwide7>Cewa3jݿoMO5\bE Rg{t+w&{%*͒gUFd8ZBzڹ;`=Eޙ_>3M"|7`>=,k-c';!nϢF:)21y\M}f/'UOE_CYM"OWGYLTR*I w6ΉܸհwEc1~[z߻j{ gh, &- Rϻ.]Y\|=~EK(*)jhoy#ֲI4 j7[~S*=Hown~]!ޝղ_|>uAS"I,# =C;.lkd GO%B+ z_WuwŊ>]w.:·7Ή.]d^vWc9(q9@ O9${S>2ULo7WIGWt志_ľa5_k;bnͿ~X|Ux*Sbd*1UR<ݥ!?4uk>-۴RUMoS}I.{dd2(iq«7TUI6_ȓxSSg\ݫPW*b᧣>06kiddk+m||AT2: 3.+_EUy*j v:jɒ$c8՝݂$WaU#^[8?7.Y^٢Ƥh/iޛlmm?]גd19kbugPݛan./{lݛ;xl|ڝ3k"ڛR{qeF -֮K!;tq+c*3Z}]:=Q);Vu~;[&1AIߝ'`^1\~~f8*cVbP/.^X\bwrv^p{*ɽ6 a|;x끤PZ:x~?\{Ō-7 .)Gǃ8c6 q=_yh2G*Ll NJڸD WWRG =W?5`iG{T?hR?})e<*Klu&>{(zWj^f;i2Y d@Qpck)S~?!w Ox[W?C>wPvsnj'wv}Ë_=ˍ ?)R"ѵgZuH_UL}f:b/qCGjTT|߽~&|=&V/;뿛UCCn-*pclj ,4ZGb-U?Oǿc鿚G&鏇Wo{v6k'~4lDnC2[]Z  d/YG#;&8WN򵴲f=3X=}.`& {6m˴{F ]ET~}48rn܅6B~j|"Ր?sIKzvQwWRwwYf˴{,=R^!KE#HI#G)wwrAfvc`$g Q/|dil[wS|:j!~unD sTL[nT??,E^-A꿚ju8D|Yǻ *&~y4ʥQܨ<4tGkO"5r{~_@ f3)ڛ9lh'ObpU"hRǩAeC}[K]E@2@j'A顨E]vdMug؋i5]gv!YD>Gj(GyGn=Q}pQc`jZYub}̳1\|as*Hw/~ȾӥwNfjEmrm͜wjRKQC,^[VcV!ftI3G? u&c;_u)؝s[n~-!͑nZh21Ć}^ϮlFuOt^n>O߻!>>|oRo>_ ,bJ,I ee(~^v ~O'd0<&&imW`tck}Yd1U4[giT'o ٽ[Ɵm>JQy}'X Ulܘsۻ7PwSI]SA30t:wnt>@??mKG Ya,: ܸ'\lmոk)ĘѐO~w[ou?H8u[}۽,71{{7c>Kw)ٝrTо+ IF7u8ƍTt۽ڽݯdݽvgbn1Cnss#Ab#frSJT(!$D[oͧ>\%Iڏ'A/ͽ.ݬ$;>XЧY"c7L{po Kxpԫ~~c_ʓkkv^o+2t_$6SFv`hvxܐ&O Vg=c:c';bhvL\x\4H&l7WٛQK:|T/dj̷ߓoۃ%tQnbە{ouF\.g9%[O_Au;s͑6P>C/h'4u W!QKj+).SuuW~wWjmmG y)wglS~m^n]υۿfs%dÐ,7Jvbocl]ۖؽsTۃin$%~''L=^:())+ie I#kܘiY=eQ5䮉wft^RuQ=9Ix[<ᮥI$F[uEDutR%5M-LOE5Dx$U 0 "L-77)2N?כuolmm|_y% ,Ry_ZBКEg)|Jpcyhž-yG<-<m4H#(ԼHeD$_Uؓa"eO}vcbIˑܽeFËv'?k Oq?_z}؟?_)fg?:<GKrٴV =#HFgZP=>:/{ZQGo߽߽oZYֹ诎Iį[jųWAw{`)%3_KDjYᆞk߽ݸ(cchu6GG.OF/vfr~ICʛ*iYTu8k#X*=~G|%}>duܻchܾd!j[j,_el>3=A{d]6Q7{oR?ҿCZsyǹ33wdn~je2O1v*ݵ&)`{bۓ~חOxfkwYIQffyg`YXO?!;Le6;0ٻ%4P޵wxRl̮_n!\vJe40׾+퟇=@_XPS9~*pyf;%=sRmglxvFrMS/#>:cS"V%LWWz~juI^Wgva[arX|1;~ ~ژO!b)hVu]'A翕?n|܍TKfd趿n8*!;eMNZLu-!ڐ|Y͏{Q?d?qQ=h(2š|CEFT4D~f?Ȝϓ7 M'SvsfveV{30<͍a2X%M#rS*J:9礘5υ{C~֛u7Qhzs|ocx:iыs⒟ufr5عcₜ[3>4ssn;jmD'9ܦO10 *zw#SiVO=:ܻ9u6o9}G~nK}ŹR+~<&ثAA+/Ywd2U,{2_~[wÞ¯^1`k7q{Cq`p;;{&::y{zs]jqY tXjSTCe>tup{76Τ||]UݩГg߯޽ilG=uh QU[Uciݹ+_yퟛ"vP/ՙ̾[ \; EBN~doM vYuYuף}9]3'[h@5z*RϿ.í+{7|am_>Un))%&s7ef)R_fw3wASES ;r%H匕|dz9wunu[k)H+)*~[Q$qÚڻ UMi9Em5u$C+Kiػkpo=iݟźfYl>[go2CKEGK 5U2q#;*v=ȿ&C/>ؽ va/bOz~D{dg7GLm}@l_7XoNAAS[܅u]}yßsyPߙ=jn'6mzr;7^̧Zm6KVgREzʇJx̲; go{X05fu!SԻ#C`)l{_`͎F\#=Hk"TRR:?}8?OoGAx0+Y .o aʌvSTYcrrCWA_CY K :IX0ݾ{~v/_ge~aL6aɵeL6ي*m$Ԫ^.m4= _;w]~ܨuĝkݝ_]Zg+v.oMzwwTds$Y |5Q)!MV??6ƫGMܱ,0͹wDo܌&|>rĪYi4RT_ڷ:go7>6&ߌΧcX]U7gA4,QhB%e$ԟtv;f|U=bvw,I;S]2٢YVHhr Rlmehhx<6*> *Y<54/{{{{{>_yn߅9N_ >0۴}bq+Lp-ruonl|Bf|9-2F$hL߂=eڽi1bn;tϐ˳s}ts0{-ٯ+gkISQf u+$? u;5\]Cc~>unn~=AHDz`ž'S,xcY BOʾߝwiegk7;%~2*lFXjbF6*J*x)$}|7KL|Gvym˯7VnsGv  SOε،"S3WL|?q}oۻjN۠PZFn%iRz\nvM{9G G݂>ľ*g|t!=Ao\[Nۿ{{ݻ.$sUF6:駀K ~~u)+ ]#(6wrw /:f-E6*[6V?O7^ݻgY aVLij9כ۾ϑ_˛(hb]vWɽh+zWX_>{G|snk-Em)bqV퇿{{u|X ߟ{#su7ojNi8W*Vۙ e24x:j:zY:a4Lbz2z#xo?-~%}~-]NOW"7:?G{?WeSStwM 6XFk3;qwWWI#33W{aMTAGJ%QAE~uv^;ߪz,{o3wV&d/?/ԆhQ#p_'a7 ^*~/uL|61:ͥ=X\ksb1NZ}n[1Υt 4T|EZ4>oAt'Jj^=Z>p8{-=gu~ =Kڡ&rSd)掙s"]k3bi|쬻d2]9y;hm+FgLٛRC*&ON?^s6{w]Q+_53x*22>pvd}^|4w'xgza.Vv/~Ȃ)W[#ASȘ+0~tͣNw'!q:aC}iy-Y80-V*a>g!niq¨*Dlnڻ'-*PbnVc})ۣuo׹wܙ彷7NZ?w^y*ܛ;'grUVU$53;^q?<}?O'ؕ?SS?٭[׿;#nu~‡3笞|{#mm"-wNL.7o5U.5D)$/"* _7f6*w=bw62\J<^C:ê; 6CK˦)U:mjꬦV'U_*fy**gI$fwv$O" q?>ƌ /?5`iGrXD)$RU8ycM]WW=r e)cIb9G4npU}_}}ni0X]k*v[li)N{r}֥VG[92T]lD>ş;Q{tSqdd?gny2*V-ejY$xy[67aˊ{yɻYYl5_ooKvt_]lo=}q׿?;~Ls6`]ќ]~j*KE,sn1l1Z?^拪>&¡ܽ1=auL[;sqϗͬAq)eFY ;~cb+򘬭.KUA]`[LUJE,l"0e$dJ{{{{Y·|߹=luSSKuZ`kqw STRe(k(d1PFK.Ϻgb)dWΛ?>]U龆}۱7 ^IyjIKM&S)V[OM{bi+q(d>d|h_*䫗L>ʧPE#uZx!@8^8ebݓ|nnʗzPb28mٚX. eWˊqr9 e5D*=71u ?<ǼV36Z,W/Nȯ۔5햃 -ͽ?"cQ):||J5ڛ1oH{;>7q& ^:5ZjǾxcv.`T*~6;t?4~OlmpgkOWYqY^_ 9Hj[ Avn.[poM7gvo39Ǻfyܻp*k2MU[[U45U2;3ZqAh.>}{6?j?oMǯ'AuV /v&M);{u8Δu[hQ6L+QI~Vݳ:+tn>\6^ٸrd4uY:$# dRAAVU ,JWG{|ձ>Ī:]s[b0LMm?]$M!KYk/nU`3?)i2vW seޛSgC1{9 n򛥻c;oplx7M &{vJ'\N.bied|/{sn׽?`Pww%ٝdEkeNa>d%G}wMoѺ2h7K x;pk?9Z4!)*~"w켮g)nl9TԢi(WMF<)C /Ǐ9?">;|MW #U=+='P晲yUW#t_/-O0==g_w?^o.}Oӹgɍۛ;hw/#Z qٖ ՙZN~fi !o.O"{aYsYuͶ*ٽ]MJ|ufZJ|r*_3>N[i~= LVdwSӻ~LNKsd=v+Gۘ; &>(i)^71hgFv zZ=şڰnl6-ݻ ?ٽegiI qlvТ~Z>F|FQ2m{ؿw'L5rL̚qhIf?{Ͱ3|FwB`=;;`bwdmݟ+Bhܙ2dUy ɺw>WObjJf36#۹}=w[&J`GAkhS)1TPIto߆򯢳5 O՝s4?-ۋ~#QeozyvL}~59f/l9%j5Uy?_b.*}s'b)Oه^^uo]+ BXi筫! ?K5U]D))!y"l&_~#&GsX܆#7qRE3 Ѹx>[;hO~uvm\榨 O/VJ,j*#Yb$)= đ)"qNͮ5fݳVfJh58V.nF9 RQ<`:٘@?#сOc^q?cV 2V`lA #gՒ: تwzݫ4eM<5JJcR9Pp-`5 gsºqYǸkc۸<}24| D.ȠS.)S_]v7w1f4[G;MemJfJz=ԙ,:dR颢Vzvm~Wl.k9F%6W XT]9u-4MtՀq=?.3\uƏN59 ՉS}oxn==#25quL"xy~ m߆;{7'j|!*6'mgK'1"{ jϚo)XZT ]Vvghmovf;;ctÏgzzVsVKKYGS 4r##04Ź07&n>OM=ӴtW.N!E8 Pno[ qrn}KUWѮ.'E5do쭿=MWh줓!w][*襭mWdYHieDN -=߽w5mw ^x|oomϏ|WͣrgV&I#*H{{u+72aFUJϷAEsT7Yd'TFwlH"W{lZܽ[xըUZ؛+ BH,|Ug+{NX-[tl岳mR 2X-ÃktMO4r->~H_v_5{sAlj}齕U&m7cݕ=%y)eB2w_4?gw|tG꟎x]U^Q*Ka{kZx"g*w؃)¾ ,5χ8L v/Q2ubR5{Pÿ䁼vO~|^p;ߩs~k,Á;*3d 2͇#<͵|6m>wṋ 哧0÷qcվG?htFZxSOY Oژ_c~K-U;;GZٸޞdbm[}IA[%ܬت4TT3ST5iG8}?פ7LCٟ7cgtlx˞ܔs?(- 9,j)A%,-C;1K@訪nS=Ue&_q_ਨK*r=w?&[W9LEVVg3[uje^:b7]՝)A_:7;ev_K|]km{awN;{ bZWMPr;*zWxtBZQe|ݯ;.~=uÉ'Ӭ&̷ZuNf{Ǔ'dfqJd)1~C|{ '}:϶9{od1UžzzZ+1ykY=S_OSc*zY'=11 6G{A_] Kulb((O]95VajFȾhN)nIUfFY\ee$2 e -p} ꧦjbigX $#UPK\q6ktoV gnӑ;{6aKF76G$bmXbLlAkR'A7?Op?0yN?݅wy;mtpI"dZ&u5Ug[Ӫn U5]mUfG-y3O+[ p4ӁO׀OױK8fsXјdۻ[)&:VOmW5=%<*jĕT Gw!W ,}.: jWR5=D1ywZ((&I%WKɃOB*#I>?!IM]A]M5u dURVRUDTUSN E5D.QՕՈ oew-4S12=sY ̵o}[1X ͹}흇ܛJ::IvbZ:pnL|zƟ{f5;znճߧwo綦~w7il͡L;5|~*ύUZain#v4OH|s2y ϴG9؟:\I&-1KE%DQUQYˤ)lXOkO_]Oe YXX pG2o!d/vhje[-K !WOM!#?h{KX)#E.{G KMOL6ym/֕{5}ջlm؝ygo86u ^3CIY4Ցut0g.`m ]FsvGg|--͸+1\&.M䨩(~G//v6=̏s{rƼ}.'Ws՘ giǭ&n:ߴ%J,d_|VSvsfY"oLjߔ178Vd>Cm3Mh=&z:LTɯk_-A6gnwAϕ;z0 0wc{;Nϴ3WI{{Lh΋'ebhvWB,^u|ߞ1UtOdqVR+qbk*`I2P[3fuCtZ*mݽyaiT5ԵQUpR(DZ3;xd {Sah㱷^{{ &c6ݥ]_W`6DKAI xۛ]>35arpRFJZzZx9YHWÎT5QJc6o_{?AGf9'|奇:quSY⥥SWWZGM|x/ ݩ;_p|Wci{{mu +IvFܱm,BK]$ow%o}u???gtI?ʳpW'Ux?l|=a CWY:oVc5m OSǿ{{?iK~c,]]%ew[]nKv^+@䨾J|an*7sÈd2Tg:#_vmgN|'s ԟ:p5߱7ݻhO)tvgUg,gi.~2;kct򓰰(gwygmTaJ1?uqjOP]c<Obs]ͷw96gYJ.۹=\U3AQ,R e } Mf;nIW`qvXmi)+dw~7 +A7eTDJڞNꍯO`sv~VLV;GmL23Gq 6OuQEܸ߰[W_/iTQQQ+l?k^?Q>4{vWv'̎3/U"?stZ{+;&IݻQu'A)bn7~ȣ}Ϲ>H4 ϸy?ݽ ~h폲ޙ .%2{d֬41-l핳lW_-vn6[;;gnݵ͹`pXF4TG-4PDhM{{ͫE_wVtCAb2ψ7N؊ ֿ)4wϒY kgp2{|miieLW*{{=vN'?9{; JIU6,VꮌIr4GI?K:__gpڿzۦy=tҬ4ָiESqd*I5J,Bb(ol*l'̝ڻת͘޹Vsv|˺Ee~~;SMwۙ=۽Vyff!PZ Ȳ<~>EN%݇R08"F')<=\W@RH$qwGƏ8?3y:uV2%U?|`pUutckwWoٻ=ڻn{'tak*1bpm&Hjrx|>&HYH w~oO ~ulVNs+ur<[31C6gyQn M[D' c9 sF19YCCʮ;fO7'Ύ0z8zjJwm89+0YWC&xSvKxꬓeq[o`ۏCq9`URl4Kvhj!-cE;=.ÐH q8{)`yk-YMb14U9NDjʩR8FwbOcuNo rTG~_1u`s-iwsv.ꆷrmm^/zŎX*/Yo=Mf+ʿ H|Mѻ3}f7OJϓ{+:7%E6=[W36~ܔ{EUGZq[}r)}q[P~?ެԘߟ!,;xd~3d*rٛs `{}c?;)7^55 uN1U񈫬CO>wFXh:~ΐO ڣzQdgMx_hlVXVB( D|Φ 'ut4])wWV Ww&4$x" H#[-?ueۓ>I=e@|&`fݿIl=?fܣuܕQ63 s1ٜv;1rT,^SW v;%:* WU)cfH2>t<-kkCgξ n]ž|3=Zi drkW1UvL>KI3 d"'}t =&CoHnlɮ 5:=ոMi(t12%_ɓkӽ_w">?wO'VarpW콵ؘ|'QU##%~{{XK0xT폙0v&:eڽ'[r9fL,r bi i+߽߽g} z_;w|;\G݅6ѯFHYټnQH2,?~~y q힜wnܟ;WM]-P->|IKcejwWqb`YFC1~~~~v*6>{6[־m w3k˯ŞC^zp"ړݛrweo _WnͥmˀSiX\)K~{ޱ8ٙ޿744|ް7UTPb3_#jgIEԭ,֒6mX7U(vJS O]|VYMW%.9صx [ګSiJ!(o6?yw]# /}W,nܿ&;x|)6vkvE~mG ;rz}u=uTKCoM,b4_͟ܘ(~,lNqe|cD{𞿓=q9/?΍٘X:sOrw=#d#=>m415>BJj-y!U?ɏufds;vZw_} !vU7FޚnN*{%{v}cvtGdR Isfv\ln eEVqa4y<}M,2k>kg;e/L0mBd3 .wІ]mo93 581WO6>Ul >>|wi4Cˮ?V)͹*ǿdvt{*:cnZ'Q@$hmc~ni>K:97qĭM;Ƿ7f} og>m6s3{J.L}7;xK5wL5k>dv9ݻ}}R=OrxD17g ]_aᕪw_v ћ%ncqn\fC5ꖢyf}^vg¾ힺl}*6'kkm '`{ug1nhq{bFG:JZzIxk7nkG=n?-G*ݻ۱Tϐ_7 }ই'Ss`)6NK1нD]_m[؁?y?OvF{Wy|QG6¾\J)W~vn'4q拾ĻtMGLwP4{wn y0T*gɝ{[t`6Rݧ:襁"hzרc`hv]ur9,>۴Ql"Lm]LTħko;' BC߽8 !E%,;׸:!'}4K:,| Vߣ`~?!K8[7U*dIxUH~MߜbOՉMSS: %+'8 *e&:Zy**OC4M2WJQ7q?}X_x5iGтA?~쾃1muTtcv8MOM&v6d(HgMOB=}ڸlz3)2;yn aܸw]vb؝[f4gGKP.*銞cv'AGb1f:,~;CtT44T5%%4KQFhT#ɀn,FKo N7;kp&b)b2tdYLutSQd1 9)bvVRuWl Y,|>ڸӹW~'{ˬOuLk|WX/џ1.gO gn>=;=[ٻk>šEe!1c+e dqKMS UIT//ֿp-=Lu߮缾Dv->]61Y7Z!`hieG]ӛ{~|#0{o[,>إ]?+!s{.}Ѡ1mYPS/_/߽DycYvTDE,B,lvC|m]ݷ6 IU+~Zo WH{]GC}m塊e7 luY3TMKUNaVH -Srncָ\}FK%ۋ-akQ͇)#dS+\=|*_ ÿ]e~~1K87[+;om-{)pyj%d?<'6j;wwF{>2[& g?_ˎ-1dj_v>VC0.zʧWyuX2g-{OHw5X6PY?~E@dkMz;O{u 9P,& SD Y_v/CmO~ߓ dU;'?݅\tT\^ WӬuY+=˚)`<K~\#ߘ+߇=m |e_nUlÇx o7Mw<(sTUF)6T._=( tv&m2ٌ.7VO)W49]SOhs/6 |NXqPu=Xi\'_ck=}^/-RϏx)+ ⫢QdE*G ?iߎ7۳IwcucveŰۣs]ŚV=M=\Tu1ߕ5"Ruš돏I2ql>>+EQĐ,WS0WbXLP2+*VEu'y  _}K8i?ƌ/o˴z}M:+U&>zmM>R?cZeMFF>nJ3Q5k${OztI>oPƾ+읱 `w`ÄwELSS 5:Zv {nSژ##vn/ـ!q+Ia~Jz\ԝizd~덳#g⩰ona0qڊi'GgI&Y`<O}8OOj,l?t M/Fos巷ˏ准g6Cxg|ۦ]Ƀ{<}vk\(6smc(*en|v9V6^|qO|/jSOz#ϊ>9{oO{/kn< 7'39iN3jg%Tw?wȟ[vV:zw!A,;0eme)'uosmbpY,vWYS<,0I|lͻWCuݫ=7]ɷ1%L3 ٛ/ ̜tSERfR I$T6P5{;g͟6ef?7toK|_eŜt3dn\EE|sgq\ 5V=uޡ?Yϔs~as[W>!^܉^.a:m2#8`!(X&yDڿOiemz<'HO~wUUf:+5RN:y(iFk' =޺V om#=G{6-6G kR b{XwlV `(EST}{ >}&ܻ}nY|_"ACIMMIC#X:|v'aT44tA?N_33Эݹ['WSlvN35NQv^BIJ7#SRH~߿&팇~}ѿϢ~}YWWv&mlle_}o=o~uvug;Ϭgo;ݽU?56x;!>5QmCU5E,&J:j58LG?^%_oS#C6>_qQ>cGU!LwK_o V*i:l*%UINڏjSIJlN v7ğ7݃Iw_m [Cһ筪Rn[P"I''glnݭ(\=#6EgǹDwm,*o*%L?_ ~DžsIQ_oq?|{g{nIg@R+SȨДZL~~~c>_9䲒`3zR5fip]ٛcbe#YY1gPby?/{Ltx:lwfvT檃#|wg5K9ܸ"i*4~nNO=`YLk!E(az܎O#S)|7bgl>!) z-{xL_E3&~nskfbdBhoGcnMͱ>޻+pv>{ke Ͷ76e;nq5lw h)#Y#uu_wDQu=M̽0 {X^gw`lN2}8M\w D\YJZ*ʃ>|='|#yo{G#zG=_$Jϖ;>]Ѻ߯jmy࣢HeiJRb{/u}+{'_ ;f¯fuYh^#QQ hU*H?,5?k M8ȬIY۟ S L=[A;= v"2[[]%L BAP;:^3{#~Sn.^H TkOKIQr"IOiu6W+qCv¯E*k 8MuuͷZzlv'@OnѼR%ã+)$madee AY0> /~?p4}3Gob5+!\&YrմV'#+$AI 4ҺEjA>/E~򯵱=;/`7O>mܥ.]VՉaY8n+2MCWMEU2\_-_w7cJܙzTPM1E?[؝?{8E`NA߷\ڻjM.{#e;vfqsj=19ù.T08 "jʩ|uh8>[tW8VKGSGu1"?3%vgS7Dnmv"sTS*0;].UsU﾿6ٸn/_g4/?&/ɾ7RxjDηf4 `cp {>{59# 1ž%|wjl+QYXFF_%"4f!?˫1lcp|:w ո:ڦL};Z(+kGg6-G,e0[pnh|іȢ=6l/gŬ_a~zədݛxvzlgv& 2x^X\:\n|&E~gǞ/nlŪoydz#65K&9~2)>ڻ!;k,EzJ]WhUz{ Xp}-; ;0fe NwD LͭEK}Hq82qZSov-^&ޝۿ߄;h*ؽM=#ٛlufߝj}2PVԈ*ac1?. dަ3?w/? :",}݇duSrvGXsݍysyҡj e6_5I|nmNOt8pXIuwCQM[;|ff=-p'f8JJ5{{?d*_/o~`/QV濔z2h7 O71ͯQ+lUV1L>\5}M -6.=ͣga~%5ync( ^Um3կƏ[.˽w%\؝[%=oVfl[kqM":av^I-[ۯ[w:z২o읉1Ru%Ҍ̊ {{tc7WA_[engjZѱkMٟXr߆"1 t[[Yjk3WV-UemeT=U]]T$553$I$q߽wA?xl=Mc>Sul鲒CG6 wa#ۤlvLJOڟ%U}ݱ iݏ7aē7xu[E~f#'CT|YM.N|=KrgMK;kEs<[~-%d>8g`nkktnS23~ClfZUzӳw[&3vx} RUiicUuo1\?P}~^o#Iߑ$>RSf(g%rL0Ƞ4=GYS[*@dgCVXaTfZvNopm,+rLgl<-\Umul&L5̶6zj msem̞ҤW^;ei{g{x&)ܻc~eUOP52NJΦ§[|&6q,Mؚ[pn\A<,C3G8QURDsiM w}-fG?zF44A ɇβJg9\?LF[fErGrA;WwgQżq; Q)w̠l(4(ZuM$ hʮ޸Lپz9ԛ~l~{i\av>>ܕG, -<}q!*_vlMcK%&)DXq,\uG+/SS 6$SFʎ8*WVЋ4mFh41hM{YƎVp. iGngpe+#b!-vFY֒<ݥd!o "dK01.7Ndݕzgjֺ@7o>k~>B$m3-5~EI5[޺EUwfܝmM]v|d_Z齿<;:AKM5eqɐZjgi =j8lӥT\'͈Mɱ6*%B'QԐvf-bOowN~ZNϐm/ULWXx\N-e^v<EAM=.Ruzib) XgUWh)VIb*{qOxOcEwv?C >,w_3꟟}׻rT{6c}a{Hqg8_>OT|.̪݁>xb)+v;f~璔}X̆"e_wO /r|).mڛdKfԛk%;߫Cmz}źk6>.ygj5Ex"׭M$߽P; W2vFp9ݝ5=2gr{kkl틺xg(|V zHj53KMMsKk~(_]?y}w]I>;lbCO{/唻{z˿:w6P?wwN/;v{w/ٻ;6C Cf7km4Emݷ`qX``B*K޻ЙCm,vG^ol|-כ>8n'a}q|$m.&۱k%),lPVeE0Mxf?ez1cM^ݘ k2eښIXѽ~|wT߽$͵qtnlbu||F/;oZ'`wO:[G-kAU 1M e߽߽,ɿm~A1Uy.9|6^SjFgeQ.JPaW!GAETI\~ >4|xQUSrn߸cn {SscriM*`꤅ޫ#YGzJi7E6_?%S𻠷Wg{y'~oW᪻1Gv&f;smʺVR?O-;{xQlI}mcԵU[aɑZz ԫjz4ʥk~/=~N|} F_6cTNw%Ff:1\>逸]=OPoL)KSX%h'vWD:7}3Uo?{ b7|E]]I>o7\ښ*Uf<| i>W;3Gc))q{g\=>fl-*]v-  zkj)_ QYM(m˫3rMo#wC]yG[-aj)2TtZmq2\A>~uG Hsk3x䤨$>'+azΑO,UctQ$4y N^[r fLd#(SHBP]14j ~ݽ~@خW~clS;SsV?Pr4?uLƟUo]͖ҟ0>T3S}`J~؃'D|,4XS1HIQN#eKZ}/#J/[Sɠfcܛ*1jS؝,EJ4^poo?Gɹw{#Gbgj6FKIOH \^5.%* _UO5-T3STM%=E=Do  E4R)VVw ޟ6~ToFY|#{ +:i'zxޮ-%NM)E,s?`|N(;Ez-?{tQTASKwŋVM>ZNWqrۇ;_SuNC-^G+!_U)JʹGo1>=߽hS}t~??#'wghveF?;/>݊'UH[/y vcR4mb <}mR?ر8%7}"0Oe"zg{KgX9HRn>2Tnds#<]}mf[;fl&c+3Y3!UCU!N)L\E>b(!WǓ-:V8 ҽ>ה0TVijvC1L\nt`1tYpX\"#rEQ)Im5Tʦv]=AWG{jH}U5v^;PY)h2JV1]c`Blݫ૪SBS~Rc6JE4u7,a)GÄ8-7}ݱ6_hoMSqn 0s38L5^3)xx EnU Mss}6G46ܿ# XT[V2"3u{f f</i2]}ޛ7^^ܘ}屷vd^:vOY1MOSO*07 ێ}V>o}v_ۋU:}޼뜟(G/ƞ[-ٻ~?L9z]4; 1[3EU\ߏ7_:޿uoNun vuj?5U9ڊ܍Mvc9+rLB'TVOU<8#p ?/48MAv?wKLkCldiv{o{- 5~OntT}1j=d(145Lu7#6㧦$,;*I޿:k>c'+(07udKMfX5jWg|9ڿ>ƪw/XpC/viAG]'Y4OKSUc|{rqamo[|oK7#wIa_kf⿗MrY˻l/qaOEr{=RnRd~of*^nt4P)z{~Z,/vy~'d|ϒTNz?hbj;!y`is5Sj=s5EM,^ö&s> |]ۿ6;x67^AUgYk.nc{ٴK5u63#:~||fdzqX> z=? >5RoHWnܞ|=~ޕۋ{&sseʆ:GFD߽r. +|{+rKނd [2'ga7?DBRUaSn騢g3d齥>Z|N9oǹuKVME5_1N7vOW2IIGUےyҐ/Ɵ)W_|kɸ_vn_Ot[_ jZi+4THD gʏ1ͮIٌŞڹ?_-wJ{ZWrTc6M֐O;Jhpno(!w|NYʟ]Ln T6q[j⦭TMz+N!U>WuSz+væg#vbع\(6V K7I7^ꯏ>;5M>5w 6K;ٓu&SᄏavEZdbc*%VWП:j|Yǜ/ߖ#+oI;Uz dl^+1 !v @o3{fWu1Oo_~$vѪ#z/Omơlh+fYen޿)Ư˃F0_{;eU97fLo|uALOAx_otoe-:-Fwm9[;0`nx% rw'cb6齁7i޽Aio! jgw9-ixVj3~8(_o'zkܝН TfoUV*ʤĒ3ÎG`Q]+P=8_C3FoZ"zEj~~G?l?=1~?m}weG1/܄xW_+>Sb"! ;~3f Vf2;iT&4` q0}bq? Jo}D:#Oo[1نu]a$Y Qdi7nd|Zy֣N_~ϱK8X_5)Gj-Ë+_8Y*jw&PB&oa)6cAc> =xJo}F0a)G<A}z}؝Tx A>}  >]V9ӻ9wNi"_)5Mv|e>>][.?e%Fޟǹ6; q&|~?nʹ6611'go,~#:[_5=>sṋ__[WSO^[%mϺeܝݛ6jv&O!|A1VT4߽Gez[f|Mjne7a+o4;{ۧ?羢͙ ܏^fcmvޫDkцxeH冢PI Lb9VK Z|ooiE5NL~H6K%W%NΆTm-l{n*KޭVam!|ܹ?Ggߪ>bWcGv>ݦs:vw8NU'hIY_Lz9*4G!wK[^U6M?d.g0Ǻ?9貸 U5OR#fp+AVLO=$ $$rI>e!OR+Ozueb#UdZM)`.Ows)5QrtRU P L"ϋ9I^4 6}ߘjb+%ihv}wi9}Ÿ62u[~5-dM̓n/Po۸Y ԛ_6k>m2h, r ,\6ѮnWog"!xc4>_31_:{G>- au?΁۝XL}ov'uubT6m;^ sC-5o󪗱6ٿ$>s O2~Eo%ON=A.FJ v2{4Mk$?14}l|ژ|p*wFQF,1qB]*%)V_[Estus?*4y2>o]%cF]{*YJ$ 'XGf}_dVUVOIuixM]ѵp8Ո*ɅWTGT=ىV?o=ٴ$;ffs~|W;Ȟd+W͓OGd⧟~~{4%|--^teM73;SRoL^i1(mU3ɊX꿌3|返#v_ :2;Ӣz· :rWf:ce)/^6fZ̆f?mp<_-8黳kA9y1_幹+ž1;Ǟ9[z!!O-_K>"g嶿m3m~6#iM޽ٯ˦Od0V|81ƞt%[ KWkN>Ԧ<ר]ݵ3I_GTԔY om;#a) ŌP^$2]Sf-'6~%g}{>=WX0u~KwUlϕ[Stg(!ܙ\+yVӐV0bo]\٬pb nG}Hci#:2{aɝ8$ײSȱ$~}rG│>_[@xvqvZ6>NU1xm>%(k;ǵjf`GucPqĄLJOj{pߣ`S~?#W%l=Y1y @6ڸ<ɛҍNߖ?DZK8ߏcV=x_sihf^Ԧxivn8f@?\t5R@΀X#8_l7 0)GxŜ5?mSS?T?h{qO6gG.`2|ݝWd]7¾^?u7blܕ?qOY3/&:7q䦄@3/+?7Ok-!o(*))E:3*q3.lO3ogM//;&0J5CHcdZŚ1rS߂#GS)|Mk6ՖDKz'{ao22 I5-C2|v?h'@1OOǮٛצ{cEQ=vӴ}s#Vۇ' ߙMXϺF9cy/#{˯vw7x-޿!GܻdcrdTWfi.]?]nE&t[`{GEc$aP‘bG{8z'~oS7#}_ع _ 6~[;܎}߸0J,<7D Tof^f$mJW:m0?K_ZO}> xo`|?^ch4[>ۓnPЈ# :otF* BeOa]^ww?;jZ:67{f)lQvGkuo]n;0Y<8LMODhLWfN7o쏓>>PMub{K*=߽s,ȝqh?[܂Io_Jqgs|n6ݟqaOC_q}q븷{gmRFgznN-;Nl[qef|qjzU4#P/`=n-ŌO $*KXZzoͼ=~AOeS~l,-c)y((c_~$uOvVޔ]2g67W%-E}RⱐTU=>;G=]\D4tL R:GN4˧7hɿ>FG_?9k{S *#;#ƭf:wxV =;m߃iҚyW2~)/^w鼲< :{);'M' OYd2Uo=EusJ ـG{cf*k0=ֻ UTZ$U H_߽g_.#~tw!n٩*0?3a\~j j婋9xsٖiI?Olg̯;7_kY{=cem.3(h.]򵛏uOMT-ıP_O+B,4;vn=·SrG~+D/Pdf0G1ǬIQb1Q Doc6exz*wFSz'9|`;lnـpyjjJLܙz豕tYGW ihjijTddtu  ??P1MOz ԫڸ_0;mc|gvvoau]x'*CMڒOd9* ߖ=wel3Mv#GWPm.}cxvMOUUEGUO[=EDw|_.O?u߹~lϒPo=x Y7'_C7&¬ya/Jοة7wȏ姿U;סKQزe+[ zv܆ccm+ y]N?{UExXI`}'g?g;8]ߝ;ߣ-ܝɼv7?#t>6Oul+zo\|ûyt?#^[bs6鞺{b~ԃqmM5U*K$a%ֵ=7:-G56,HUż'-DU=lA!E) RKE)$r#tt`XAϱs M8Ȇ7)`lύ:^54Wn|-F L"Wk ~ј_5`iGՁOƼ /~ΪvOkU3b2 PF5W$irYf/`~=l/oc.q?Jo}F/aiG߱_Ox{q0~?%b<Oۏ f1Xl.>-ʔXf6Jʉ Z:XZIUE$=7omOf|}2M "]:saf~8=݂ *?~z(߉?`|?:[e^ΤΡ؝Ihs# \r{`sOn:"h+SCofGj ?esDoehG߿Z<*,2ߠۛ_B<|xၔdfo䒣`-XnHi`zc̑Rm.Gm2G-VCKD…Ưo'No?g`4SnOzQEv7IzFBy(!hBz^'|do"XmCW]=G`eTU}F)M,U'qS9A֗YʫGw9ɴ:'w_-N5qtU|mNJ5MVklԘ5[{;+~&='UuR=逤?nz|vxL+3]d3S]bd灩d)˗|%O5hO!ʔϳd$;56%KqSRXQP{{OǸWWpLu_{{>clQo w~̚^ 2u;kHq] 2d3eɤ=qzwTvl}՞hg`ٍNda x$1VdbVe WjON`{l7//Nn CƮ={[hw~'sekيܰl O~_/~l>tVs/ M_DwZs;h&GfliYcyG [FV9 ?ۻb䨷>0vg_{Ȯ6Bיuu72fpH|~B{>fyݥ{czS>_>S|ߵA| 퐍Ds-JQp4YLC!D`/6aWj>8oy0SS廻sbxL=kw?oҮ']D={n^g+Zcovt#h-~vg/ ;so\;o?OVJuU].SwQdyjGǿ{{:GvZw_V{K/>oqwfXz)#fCwo;?c۽]_ Wƌoq)OmUڽWλnowLn۵#eSp\TwgV7_M>u/MSݿ{Cn^_=ߓ%MsT_W\ᅭN3?+ٳv2=3c#ٿ97u6ǁA`sm,՞/ne +YO3|C8=ՔW_Wdp{l|w4YMF~ۙl4tbfhqƢ^Nڻpvcn7VJ/7&=VC)U;=D?E**Cyl|?ox쎠U;Ojɻr߻a^Ϯfvfl-ucmfPTQ!9;5qnq~OS݇~C.=Y&(WporavmJ}f x7tyLml7;p =CǺ Ӡ}U7_a*>%E,k_Im?_~muGln0~')KE]}lwJ쪌~s7vv*9gO7Žͺ`^?I6>c|cX2H[5;sRwbN& 9_K&J ͋Ǔn)>"b0XUٳQq0tSH1J9N*$o%D1nw8v6?VѦ_ Лw"#ܹF~jmrj1V*TM #1kA]]nB;&=yqQKUYi6^pਢUW:qe}^N;bkg_[se͆nZt{7Nn URUPQ5i`\5]EbzZ|f{0-sX XRjA HY0{Xbpf1WEUJM*i怛[%D$045`iA?Mڙ=ӊ3=>;sJϹM(4`Pe}-}1)GOb=}b~*-?4=OIq?oJ|[rQьvQIBmTJj-tSN ů%tqm:yX6:R5_Bad}߽oڛ|to=+zZ-׽7nګI`yb w@YT 'S_|vmwwjf%{Kq9f***6ݐ{E3|{g0書J]%vO/S:5xCANۏO{?L83wwm׳?orkgh({S*E^gnih;"jid목S~jvWvv}_gv؛،;n3 Ѻ_6+\s)<–8U.ohg>[7nV%vf.nzK?%⺫ۢ5 h$Mo?_1GvZ´m7q6#%=#1/Li1Fg]V{vgS;;[5{m屹*>wCf|t V[zj$h&]YAꠗFۻ?̯z'vil'.[nu8m˅ {ONer >\f)w%cqə}?]/~1 ˬ /;sh˶S Mvgok7&&N#Cw?55 mCwivbwobN.MÒ{znzrYǸ2ӵEvG!W)JFb%XTB ߽ݜ|h]gvGǭu} >w=}Nu){6*XI;k&xᱵtWω}$_Yx7'fcb<~1srg47_RWd6Dȹ\6u33M9Q_CMCRzM|"dss!O _z%[kp[s91[6+SK8ѓfQ#7!h)߽]1ۛ;;׫`+{eOAE=۫lbPrٜT/--LRSF r#2=y;ܿ&z,eע?O]u긷R-^qvamVڝV7'I-X̑Ǽ50Q5U]TTTL8i4O4AfbvaB};G5{}U?n|NY-w~{Cx^}k ۪<)i 0]?W6c]1z wÊ]_+'kVvjlS=Dotu Zb1R}~8U:q|ߘ]qwӸ̆sen~=YY,]KKU حuq|t|W'nm0k{! ՝Mjyu{#gZ!YYW9D~cNoP;bbۓYٝςY[nSz״Non,8r\M!u6gĞ+ .b:e|W_N?,HdvFG+O;/'kl,dϻv-v'~qnv'x*LO.eMN:lx~Pmw~t_(YrWWUdu9BzBj깞wzgGfwv$I>ظ.WOĜL [ݶ|+? jqw>JttĦv_l^ݝc5uFW5 Q)1g'0ÓBTVEUNN0]~o?}ͣ{:\yJ>By MK ##r$pĀn%M._[$!_:}n aI+deU%"+,{F>S.mqh頎GX#4+44aLA ??9ឲQ**M*fIP4ٴqDZj\"d?3"+1I;_rJlew$r{^*j'6 sG=sO,MtfuV9U.Yibi+u8H0_jEbZMV&>`gs<O^,%7}#'صOx?G?^ļT?Ob66~GvuU[~ |ci~Oq C_U `bA@t/9Z1daSJ|m_{% ;v:>yf;;vܹݫ6㣬mU4 {{sOuퟍF]{v6~cye1OC䫨:XeWG W';%՗z|1_Ɲ6ܸ<_m>z$|v^V<夦jmɨTLP>gO"7ɏ3{|%j<62L[+5US<&k/u f<:)ygz{yۛ9wu팾Ko] VTc,#3RKUOzyuxXGnsm׿̃6[augsm9(!#Y&}cyl6S,2d18+bǿ{z}ື:Ӱ;wG?]un}L>Cqfm zy>ގYLq >*3Isd?{{1_ v/;w]vL>/iGruG~Sqgo k-9r_-;w{:{wk ;K13OIG7kz.RY|(s[g>X|tsn#w=zer=ޛ,ld|ЦRs'ʾٿ>~;,]QC_?Fsu.Y7Pݙu5~ޚ C4 CA~v(^Qc;+f4[׺>NǙ+%5uCwVTmE*N*cib*iU] * gZb砠js>Sm|aڐA{ct⦉#@Q17i'7{cm Wzo7]0i1t8Φ [f(y"\S: +[Wew|nt^ٟ(bzvfF~^ 6)Nݝq9XooQ(p+k#Q U3/|j*ҿև9" }CMOCA v&5d' 65J7G˯;qc7<>=O{p͹[-vϒyVnM_/_-N);;x-Fj\fKksRzm{]T )TARbLtF^=7aߔ|?w/.?xlZ؜cQ. Sbho &N*djN='=}}GwXؒnor;WvdxL3s=ME,=qK$eX&nM{7 SwV׽YA]ѵ{aT]]o일Ynk#Lx:JAz[n_;x/ÝKm\Vs":;4 ݙ{]S7fBpx)g^ظL.T^|uf? A,=uF%;Ww[&_zX료G=߽[-Zowt <~NBi>u)fn<|;d}ٴw~f EV kjq)]|0&{>OQǰrsf6ݟSQf;t;x]0crr{7xyhjKIJ}8~?kl?{p~?{0~?;@zaeTujLSMSլ;mY]A>ut䒗<")WGm7{/bˌ꼦Nzc)f6O"{umɛuPbjtSX5Ss CVe2J\v3!WLt4tQWYWS*qmziljIEpGQ%@ |sK8ue9k`45W5FA<`( AXX>Ƭ /~?}|~e)i'bvwTVu{;02U[xTTMQN~۵UPW&(j%4&Jxwh]C;G+PXs{vщ/wD1ǴS ģ䣝ё{{==I۽[VO7.)6wtmij䪬W6wT2*٪2 l%7}#ߣ L+=XOyG?8;3 }|;s`{;m͕ߙn[O=.bq{'YSAA 䒋ťd؆D)Ib'Y"9:IJnA 7{Gf?ٸSMI%vPV z\F bxq?l8sZqf2!>\tOMm. z:V?gWZ/g qkqӯ_{a5W~φA#^Δѧ{#{ `l&VgPURRj&y*ҏ ~uOĞ%+C?`_'ؼze;[X,8&oMN]}^~"S,"jLXbsu-=|*SCKWES@nßdg^|H*>(gkݟ_Ϗ9ncxn񧶳N]/rg*0}{'76ٹT$M[umvޛzn 6;i;unո4}Ve;jjeHFvU7%̌__/3arۛp_˭6NoQ+p̶_ܼTmڰmX|E54j =ù)6/;gnL}0?ZH1x}wg_o4ue*4;,X#ED#?>wWi_^'N|hq4~v/gAwnٌ~en [%67.*k ݱv/t=6o o'_w`2tۻUIn<&f*Ji%0n?۝7򻴶ŏy=-g{Q6~iarxۘMø(~JবLWp#Sqr ]6G)EotMs++0 6hrXJ 5`UUBiX`[߽o?;ciЛsw&,yI8?<6gfGf U߽Spm<Y[Nza[6>)'&'޼>EæwџoN9Oqvnry[pojܦfp.: 5~i3"'ߍ;Rvv|`vm]Vorݸ&I$**f1RRCS[SMM5b}[߽#47l/n򛼳'_&~J|̓,716Vu7lm<66c `l(R9L3VfuߝIٻrg?Xoɰ7GmonLkRQI%N+1A4$.SR;! QݰwFeylv{on,Fg019.[=5~/-zj$h&]YA6h_?)o+ϲjv,d: *iA+SޝcW*}n,bjZ#=;?b-[wcԽuitmnn#784VO!#[GANVRew|LFt}-ݛ~l:~-ifmzbXHֳt/姡UTM- S/1q{޷G{)~? Vrn{ILHjqIembQiiM;)M\zGƝIS|n׃Xƾ5ٛ!eN&jrru57:p:bgVuO3T7nz~=7P0>qes{vsu%^pE^ޗ!|_)w.Uj&m}|}oS*j~{;'ebvUf7 jh}ɷ&za|vX*YݛCrc%-.YOYc,]ݺ>0=.7nKvRÉ}+f`bvn:e'{2m˜]Gj:R .Woѭ\QZjxZ~c?zn}>žZu̢to]嗣<U(-Mu5O,qh7ڿw/e}WAG Wy67{$J=7 h*pL5M$4?=3?.M/սM9:i AwKA~^U ǺlĪaёO?WDP67u˼ǟų65]GwOVi؝9=뵪qۋun6o˙S*i,Fv$p|_"~~*sODuUTIOIٻ)pV |zNH?G?L k|@{?3~#>Kq~.nIy*iJ5JP=g(sUL5vln!_Ȯx)c R|-YJzBv]]c"_;&8߅]e1 n{ou}b[IAj,Qjz/'~w^װzvd>>]]]_4S6W7}ߏ뼮&=gRUTPt??%39-ƞXz89KwWvoʰ;t2IZ@M!(I~nmZ6O?f9$W~Ϗf]FMF^9*KY)*C+)! A؟u~lOblSQwvh`R3kc76ewxBN{’?cM| tkd|ݝ۵)OIHsT5[?S b!_[5S.`?O?3?ߍO?>Y%g؝Os|{ߑ6=3vf }=rGmܘTRVc]jG?6|\6A.oc;9z}&>y VUF׫b驂/`v7`vi{sϕܻ߰7>oynÔs%NK9wvK3j$̟$6Y|CjzV>tϞ ]m8M|F 1*y6^>ۙ6VCR(4>|#0cp8|T9g~E*l-{**]{qqۗ=BB<-$^ɟK3uGjvif^>] K7&{g-~۸/îUTŷ)[ .V㠙U~p^;ڻt)㆖\fX)]-= RS gnwb r9΄~g8ݧ˚G0rQgh-еxmzl2o@Zfvq_j`sn v255/SdkdXY]@{}߽a+AnE_ʜjԜc8Z]6]ԝw=ӊ-k5F `xjh))hfxIWXPARC,'^6]u>om0}? v]C_$ >x>x &zJ(YL4Ut *~wqW*}M=<>OG+ۙN|}OVKm@t`RDٺjz  SӞ[wγ{wSػw1V1ZLF;~!*Z:zh%Snn޲Wyؿ^O۷6)[QS VRo?}jpU:ͼ2Npv)kCCj~o쿄}]>.;O;`m^6;˸v>8X姞3\|_+6mv[||? >6'WQm}_uv$SX0)۴tM`MRƆZ?[{+ӴuY#v>!>ڕ݉{v|` 7YQNa|g>dW2wꯎ+&sƾt@쌝m%j6\!zԡ;1Ydj䐧rO?}̏7>g/dew.?kd1xZL{jL3hm(ܹ΋ 2Y֞ODZ#ءO>W|݇ld~ace(E5LVo.m-E*j&!S =|"X~ʪ]Xou&rp`6:;0ݧx7Y\* bJ9YGP oLŎܻõScfVe0}ә TUvY+v18hIk4"O9*= Ia,[H5|.mjfBh0,=Sl ܋EYje8X$RKs ~QtWc_IuuǼR-Vc[~SWvnf &&h2c8Rh(v坶Ɍ~[i(ٸŷz?賸 q) i^nKioݩ/#:/[s~Jv~J>eg͸W͙}.Ҍ$xͿaWOm8Jz:jjJJxiia(০8 ccP?#w@S|?=^}v]ѽӃu>:1؟Nki9x+sJUKLS,]O)7O;߲c0SlPS|[ٸ/SrwKhExd=U0Ϝ=۷`|_C{7 .Ѱp5 un_l2`h#1W[;6__"^؝[GȮvqG8ɎӬ ;]rf3)5lht\У1*n_puV͒{G#UQ%]]zPlnȣX2I;.Xeo dmm+8 vDwď=LFJ>1NƼx0)A9_Σ7Fsvu}1xzd| o)c^dbQkYirB=/ۻ'QQ+23QcwcO RKW3Lϋ9υ_5NUPhӥ|ݫWr`r[bTun45Ɵ=sYѷΏGĮ9-SA>tWmtΟ}MsR-?v>:p䶝o/W:6Uml<3Si1=^?/w{߉{7Ä́QV;[_3ۋ{^n`qv$囊\tӷ袦1߽ݡ%䛤Ĭno= [?3{ln ttnMu=uh*+RUE Sa9N|U{/xba6Os#/z݉0f6fЃs*io>kJ?Sk[o? wi}=VKƚ):ٛ[|vM\Mؙ*ƥ1KU|#bg';] g|}W:]FwOVvFwڿ`wp[涪Dew6SXzZCQt'(́4bp?z^Ttz{>NSӅ DaX ՝ޕ_/ޛk{ߴnoy4ؾ{v9rG0ryZCas[j&+KGSOj..s JST(IsEؿ>No=>{|y쯄{۬wS՛wX^h],1XS!]T!ۋ+=K;_ow`YtG['Mՙ^OsbgMp.ynUlc[P<C2 &_-?nߛ7)Q ܕSU`tQiz~lGMcvJzuRn W mQ,Iy=ѷBg>NIr2$KI*ݳݻvvbodk] VeӋ0ԯM)₞*jH!(bDTl,oi{m䪰ۃn(3XL 1\eLU5YMSH>'nI[I^7gŊ#9abm%K[@V/i*_훕.g-5Pqyy.$ƒhLفo Ւ'9*u诣i,I ,R?Zʒ|H`6m5;,쩩X$Ӧ3%I&%3xDƺE#'}&aǗR`iG{TOc6 ~=8Jo}Fݽ4oeoEC۔s$_o ܻrDMI Ȋ9gM,ewa|(ퟑ=݉51>LtfaoSɸ;?^O%3;5AܘE*݂b"=XO׵ _ښ5Ҁ{|5n4>9N+juOlvEfl.o^[ *ij( <_ers]>ntWvm'jG>%|q,I;s _=-rzl𮣘IuJ$`v;_ot|;_v|ޘ6+ ҇ Bbh ᯭuɸ2_(8f;/nGF՟vb8}ؙ [/Xo*l]->/=EN;'x9VG ?Wvs C13V%OLꅃh||#3ɶ;LlY|m}n50S1u+a.^;Wl>no-ɲţ7\_w?v]=_וֹGk)_lYf* ]K u?n18ǔe7wu'';g|oL|8L_d۵tc. ~:B{k#{wq독ǯh6fk~߻^qGbtwd UAWC&xɏ{m7 N˺fVwo=KNQgppm:iv:d#LyH#JЗ{{{{؛{`Rg]?]]_;n?Gn&6} L*Ծ.iBU5~a>ڙd;6j =хOҴsPhto ?{6{Cr|K p T00?% GY4m!6NbY%k{o>Z.wlq{kesϖvg?'fMLKR1DkdV>[uy/߇¹H~{:woȨr98H6i߯l|5b]??_Jkn~ I~Bnzo큺&'Y1ٱR2RcJ=WbuZ ?;=htLy_PdӴV=.nMf1殎 U-eXƪʈUAffceUQrcE~kv؝ϜͻgK_b}7Hڿt2۴YV#vqgVdڭ55{s NJ=~#E^_2>~^ Z\yuGl[פ>@u^vkrtGfc ]itUpqO_MG]~fw.'~2|zڵ;'q0¹kL vZm0dng$U&)hִ63LMϑNGh6氽J}~TrOrY\bӚjm>T_G~odo*s)iWؽDտ.K.-ÝE;C;ULn:JPG?ob[`L.؛ql߷k״sY=Y.aaz,.},nl!}WGyX:OE[tIVv?mjn-f𬩦[Fdi* sAF:/Wvt}]J^ܽwOs|ڝYA/nBcyr[Sxb6e|(vn疻=ܶW'[B8}obpb O:k}#voj}s˻v:|M5\f;(hbn.#UTd4GI0, /ocNq?>ǍJDȫuLڭe+y/tIasׁBe$4!-C$u8|qUph%O&eU o4. vnoeQ&18i)ZZ<-:Wcd1 H%3 }me~?5.-ӝC{kel-^w?pJDSR@/6C+d^hY~ۿ4;e\V|@ӑpGJx;~rgz򋾻; TEN[g dmpB7>?'~92cϿ_3zSmc. jPB}սw9,bW(0ԩ\2辟_?ϺkpF}]0X*yr˛T_sѴtj6+fm4+-.AgB?{fvϤvm&n]o_\Ҥlx0;OMOi(j|em44F;?>Ho_S763] >6%.#e&?%Dun{+uK 馗/.cq#u^K_bY+̭Y>/)2mk6Ω#> uSS5Ubu>3ύcWF}dkϕkhha'}U<ln|7Bu>U6G!@e;Wּ->ٿcUWFV\>'yyEWZ,"ò:g+"ٻ.+Y?{d=Q=+/}“]~c|pY<ٍ}ΌRFbՏ.}w{{{{oiKZv:j~6)[czT6gȮߧ?&i*(d9 {(RfLIjI~wcϫW~#ω;C;>֫U-M}U?O]8O0u]jW6 dc25{k]6kv~M;oi>JGx}Gj(XٝRXǰ_/cvg'o0xvG;SZZ5G]qiۆX([WOTyW:}m~pGfɊLď2~)TǢ|wX;ܤC`MM M=־(2Xy{~1IY pT{{:,VzW9]U)=Hȫ|>Iw?îMô#W^{x|n-k!{sct+!W2tsV&)1R7u2TWb|I3KRrdݩR-o 6O/fcI"mݷ[wDDWTwɿ#~fvCQQ(n}j`ck`J\8jzl>"K5T:4/~7޼?G+MOvwge6mKv|<k!ԙe!0]Mǣ}6쭆ntNST6O71NkyĘco)j3aސUVS_6F ՝Y_ 1agO]QZywڿ%7u{tNqW VRWZ,Mj>+<ɟ1~'d6n۲mݩ.fh/ؽZٻ#LWmAK@r+|=?~?[ Mq=xJk}#TߣqbaiwU=5nݺ^d2ۻdkV7jxHebu1IE l@eE]nlɘzZ\#Q:<"ت$ &I#)X{#nQG|kQ_OQ2+'Gn0ѴusĴT4ȴ0@ۓƪ$]'Z?K8_k]mӎZK:CHf5cs PԚ7Ve,7F LW^ c|Vao<uOQS]C,qmij2uw^l63!ML[q?ة?Ou:q]eL/ad>BV(9 _j^ArxOSKk0c'[r;K`nYxw}4Tͧ[nf)⩊0̋"#pqj`OňaaHV}˽}~s|yû[w)onEv݉U{[)&l^ۻ۷5\P㠭Ye~fTWSinM㺻T??=;'|On횭v⨇v~uATam`7nɨc_ufl6O{;hSo}'a554Qvn-$ SSocR:M{nbݻg|4u]ӳحͷ3s"^/9d)F E+>_?S/E>LqMSDxO_ !Ϳ7`Q*2 K,tA]+Wh||/glngk~񏣶ո|4ʷX-n<6ćs. iyHE%=+IKIR-χ0woA9>Zev}Zt'\\WF=~;!枖)kvnzU߽׃{&ۛj{X()Xv.ܓo}l0>/[R$CYTSV@Ѩ_7^wySY_;ɑfz!psw 䍪101՟jtmt^EO>Sbvܽ{V!jqUQѴ(q{GXVyK; 339'>N믛=w/ ρ*L$QOĞc풊;pA;ƖhQ}ҿ{{{Ln :3Ҭ.鍳_%q;wck2 JSd<h7vd0Ra?#oIIDd0͍MʹI[~pQ=C QRF}gJNyNY+"hmuݎ$8Ivp=$k<8#{{l_ ~|>)p;G8\\]d1YZ,DmlA@;sw ޠ^_(_>.wDv]o/ޓT={mLFY1a)2ao7F=߽Ν>O| 3ޖw՛f卮vF?woC6Udkjk! cw_|qzvd䪨6袃gsY|Fh(qX=TO#z R6$']t?sK~.ʼ3Ogely]+mlPdt9ܠ59Jx=_ƿ}'ۮ]wYW):ߺ0g5ݫCS׽O6v*Kڛ'M4dhiR3'{utG>8r59n,]s홻r*+4ԘYD~]:-Zo%7}#T'ˁ7?}.85υ\jH>ʣ+IV U+h.>2yd|İgK?TEI)9ZxX@vfHOcVq?=X_ƌ/ob>3X,1AWbTx̅<*fXVI#b6E˘ ·v'v|UxzLcv ,YQo}ckը;GALUX)i\42s}V{/ߗOKʼn-=h uGgV.oahbD|f9醞g"_l$l#/3c|>4;c0y,O]SGXlC{ǣ;z7:6`RF c-$eBVB8{34qO K 2"$RDxZ9Ո* ?Ioٱ1={z#c/FZ-ƾ5[fO+._[eM;~(v]|uaO7 -uwqӛ)ڹMGownSkd3ݵ>nƯYjj(=3 XI|5_zRE?ƚ<wnr?˧mP*(pD[b]ze5m:cȾn۸zb0=ջجFal30y* D&kib?g~_nyXk"~|j/Kn,t1=7ݻ3kmZoX4Xhe5 :Oz=fSƛʦy+fɊ &AdHҸWR'zw{g .{3w{ʯܘ=났y. [{;& QCSVm?(kI2&w^d~>|z6}N=3Rϱv~o_K3qrV Ͷ:;{e&.쎝4 ՛s XRn-f) A2O? pnm~LnTf!2d&k|* RRU Z~%3}=_{-,_&zoGGם.=1٩h0{mxEA1^c=/n_{wH;ÎԔ ~M6s ٟ">5l&͒S4yys~~~r}[|85T-$w^IMCO쟐[gt㦫| zu6z¦%!S]eVw&9ZݹVJZ_!41$'K߽ݞ%k?`pNK>{>sY껯0TCUWz'A-;sl|+vGrg~?xjۻy`>cgjfb {=?~c|+n3ݽYt55*=OGOI54f:=Yi3Y_>ZT#Cc~e{  xظ?VJ`O'b{{{{OV^?_Jxuo%rӝ;uVM᩷lg`-\} ȠQz'h`{W[4!C=8o;{;/N쮔Kٚ/ys,BNyk+#>0T|+D9_p7z*R.O]hW?1KgöBx~^K,[_1?~C+|CL|?`wr-?W8VwFIyl7ߚ6<wZl,ǜ˾]Ի:>S(&->S6Fsۺ E%N' O^ Z |잹T]SN'󏺺e5/sl۞*:_tvFJ?f0$;y+#41sSj!nMΔy7AX{qP~oË_ؙ<Oo0bǟ%19,֬oQ 6ە]Le>koJ+y8i) ~ }-_S~?3s}ٝ m]Y. ̕;(0IG 65&ϐ%j2Ѡ3)뮲Uۻwtk x\^&޹D(<`I\S+D9pXMv8^n-iRZʰ9b&XZXJBzR_4~9V`Qda$#]=@U"H֌7$V?K8p4}*okoj .&_-*o 4u|.n fWisIz<Vu=Ge7VQo{g;ܻ]mLUOQ䷿BEMPS ktf}^Bxve{#e_7"-٦]јj8* 7޹E <QDizо||unwM&?+_9,'}wV;ic:>C!6WlI7g) 2$ς} xO[mv?OQj_9{3=oۗ.k.]m>ob*AV5KpMolg,M[u `rG?7{bTdkK~|loL>^@YlcScwSwuaZw^lܦL-K1&9Gb'i)઀cI~ӛxmN;˂ٛcm{te({kjmMn-˸y)| E5U]UDOO쪤D~j?':wd6ܟKwv d0U{?)󧾱=W+JJML\^Ƌifri=m7zK/ӽG]hOϫ۽ۻ͔n-=wV::*V15 jc)g _~h|޻'O7iT|ZK=_4TT?̍Ѳ:svqՕ{_-TRjZzX7]kr{j)ڏ5sy]xrj wx&ԫ:b݅.?ؿ#ҡx>׭ܟ)>X;7J|i cW͹7=ܛnQm\VBަ !1=V>%NU-+Ì~8;Ov[K9T|^ڔ-E}M9\-\RW2Н_{;=rZq_tU|jq|FFUWTQO 螉pŎ_n[¯lw홒oC]Q>NMT\vӭTG'ڻMG{i.[kplgi0ۙ>[of)-K[EU U41R|߿r {V^ܛ+Nߧ۔={S[-9xb㨢gP uY6]|箶 6gqñԸlvAwrRQ*KW,9g뿜7Fݛ7]^F/k|^WmlIV#릢b [__{~m~;rytM}QН~(hqunEIs ]L:HG./&_WNXrZ_{۸>˟I2RĒ>(;n㯟hnv쮟 ]af?pX:7,]ֽ3_TKI,PH gmy,Q'=oESGYS龎㏬1bndI AI'aJ^ISC&64=ܹ{?qI4²`(&nckgs u.:z̍-,fhZnvg{|sf*ÑzE7 s8#JhAc_y4iG}FV P$ eH=SŎ I^<2IL^pu1 4?_cF qOl}C ݉,t.'!o04<#u-~xif' FdcO{z.Xݩn][3ft2xhn/3d&/ᬗ.o2|Ƀ_R˻qhdmusfbNdNJ-8l^WH;?~px|:WLM Pjj^ ` #2u#+E;%N{'tS"驷 kti◽>:vd+E6sMjrxӴsKE3SWGrߕ򎷧^䯪NfO70+b%H 8޿f5O[r, E %},4j]vڻ jv{'e6;isj=1}Q0[iHEEU aWwwP|ѽ[S:qI{z`3tV1IO0Qp}6C_Nc2TVRM LJ{ϻܓ| ~S*M9rI{۽ܙǔu?ɜM?Uŭ'ړ_&>Kٛgv6[w^{y1hoM}f*>m,%Un#9ΓSUSM,̤|7{W-[?f;+tU읅nAcV`0ѐMVJb Qz?waQ]S|tf()a*KmvN4*džfRVe<`)^8+|އ8bN4 ?$imYr8ߕkmV`r41O78C>$*#߽8l__[birX6z7#Cퟌ;{zowGyȈV*U9<~.-ܬ`$ajQs#/_5_^8`.K_6&ˤVo2+zcඖ^zU_>J|u=msCK)??gčw/9; f_Oufed/[m|x\>BN]琏mQRd4y8stoa h-j>f9}=M4)hh28.L~,g?Y$O?Pz||V|xwuwvf}w;FMyͣ]k&b1tSK,TWnߟ kn^ݟ9~pu~뽳o:ƣOigܻ/QTpuU akOM";f|Dd_?R}ٟ®ޕ;"i]Q49- r|YΠ/o_䣱vnBj7Mddi~gmoylLMi H3vڛ~\3[Zuoz=; A,oܡb{ zw?Y=d{j|=[p|ܸ߿p?ŵ~Cvy뽩O\&:*|㢮'Ru%z߇N꼵mdCXC?ʐ !k2GÚb6ٗ1=~jxX}C,\Ip%7}#0{ ]ra>ISNr_{qrYr~Td;G^[om#MWW7uMYGKcH坥q0X/ַ]y-\<2PUlFc[`-՛}:Yv>Td;\bcY*m NcΆpTn=ݜ\]F]5 >XV=]#3sS>K!+WJ)\G_z|}?n閮^g6wU?U=>J9붎lݬ~l.rQSCRIEG$_ίhkhbX7e#OA]].ݽGT(fJc y'x|V˗7/ZvOVog3N^̃7f]sT=򷲶H3pY92'ܷP7^/THu.܋huwPM֝yeo콓ۛkr{1-#rVWUWU:j&gyE~ %1؜ &O䱹 xk(24=e uBIOWEWO#G,R+G$lURG|>WSvO`o,jI݅E#2M_ˋtnxrsfU K2r5Bo;g{sg&?zߛt^q ]}iljͲ7a!ɔp]joۛvS[ f~[-Ÿ6w̍f>pE~?R̆HQ߿ncj l83/No ONn<_3-ݷs=Y̆֬|bKS--{{{]nw:].ۿ~%콑ڻ#~M?|}讱 p[z o^O]VV7]!o}|G׳~:|BX{+-ceTMok⯲i{/i'nuW\-g[e"6vB]]|x,eQEZ|e=r󙯕+{iTt2s6zjM靏MOUYqp]L@C~Yљ2YH#~^V{_g\{]18/^/O|=.R~#s}^zst**i߽oEֿ%hBAڹKh#zM{:+jnŇ^g)0z=^b`?n0_JwWVힲuO{O8zzmي{mJouVmZ읳Kkṃoᥫz|rScc鯗ohb/ ϬwnSnr䶦b\g*p^:Zi~Hex\N{c0wV)ĞMt_E7imEin U%$Zx[bc;~m3L,?t U_wK[=]VO3?;8̭ZT;㡤y`u,Ly{/;*hZ{W0ݕS ?^+¼#EuDb=/Ͼ<|.|e{>Xm9>V7ZMػS~w|=3Mja*85UzqYLS%k=}f+/c򘬦>JJnJ8jkjxTY"J{{{q>nyͫ?RChdj!l>ܝبl>^HJ_9c%(}߽Qr?[w윧[!꭫|h]X:JM8t]͆}c?dS*ZP Qx.=ب?OO7OxqTS?ovHzbW?GѵAY8Π۵n)rYxʉe a)Gǂ}H3yN?сAk?ϱK8{4(>n-nx\-աhg:K)5)HEt`Ρgzuwf[{twuIFܙ<%vmm-sPVTDRl||̌>ǧsm-Qc `䶞ݹi bMW؏Ez+hl{jZ@qY^_19~-b/]Mlb{[v?Lq3` ܘ^WV;+e7jllBY z6hիo/ur|Kn\&om7ocW:wk隥PnErMI4:k7e jTٙhrg;W> FRVI{ײxq2=v[6Wlciѩvڢlf)i:.؏kZO?M̦f|J; 7Y6}Cb(qcsv:c&z%}M-sm:6.|5)j1v߯oA߁##]ovokؼ'FsyM͊嶦;qA;VwŌ4LA̧Q=;Etl9.n۟9W[)-{Ǭ%=wv[EE,OzCO FO<αC 1)y%G*),ĀGBo-wc}jo+qTo)Zo=[oa>a.}{ n|?q$xb\ts,f#_g;#~bLw'o]m֡1UohSkvغcmzoݟO6+]ǡNݽ[~.oΟ_XϾ0=}Sf_l C➾(j Gov \E~Y]Gޕ=sA0llweꙒVnI @ic߽߽? g{:G`)p9Z]՝ ,RTGxMwqi-]T򡚢h) USNn˯n|^ٳG7N|xozQlˍ-.᰿[8Qbf;w lLf m2e/d1Xko A6* ]A[O2xr#Uᒪ߽|IVS?7>fcs?IwȌKmlXUf.eVc%[m6~vY<\pU=s5Lm~f)z+ZO?p?vgj:+SGYݽvj{!_bvVς,/&.olON$nǝ {n<,Î`M7MM2Z*Jlw 𛤶gŞUқgٟ>vfX)E;eQm{"|aer;բ3&Җh.;-{q߽?j ߄[c&Wib)_n= Z<~פ uJxiU_>v?ʭ(lhln-e`0m?ڜ~7oCjvnwcb`;W`ah``rk+bR*}Djq}rOz͟#믈+׭b}ej-vݻK+IHvMM-HO-%rNDх\?bN&}?Ox{oi'8 ik(.;SQ!y7.;q-&:,).Ĭ[p~?1K8[ρCՁOƬ /~?{4߱K8 iTS8)iF?" 'UUۋf7=锊( +5N]ՔC*A<>?X[,|tߣ]q A>9_bqᅩwɐ~9Z-UuXnC'09Z]|k>#~*wBVqg+wbD8%c*&Ev_o6'to?}A7Ftvo\(;vakk7e&3 :muo2{˩OZoں(s[+uTSCT4UU4=V:-EEϰxkk[vǮЋ K=o׽13ο~ǹ1 v;-}ɺd=ؼ*SA40?57?sOO[˳ͥmyγ|;o s+ۗrUdXݱ?ʌEE-{u7'9ΐR6o'm{wn. u< 'cyXCHp~,_1S|F]Al۬Z #^mŸ(N_lNu.؟=Lm~fҬ1"S@dgmv5{+~=wOn<򓤳 ; !2S'WDmnU,xˆ|3ewex~X˂ό_"0:u^9_al  W`^J*맯U0C $I $$xzܝFZ5wL/~b$v o?[g[1x-S6ڪL50 M-6:^sa ڛgb}f{{ ~X\vڛSkmm6oqbhᥢ*zZh(QT .m?ǽ:!C(_?'6^jyVmezozv csy\Gї?>Yݽ'wk5Vۻ;Pf8i(qe GoIMbvGMCG 4ē~=|_;7eNU8v8joݓY=m?#f*C%˥:%e$ȡ}ۗe{濶q:>|l5._{Y!f[om_"Ж ô1Tqيvr )f|eh1LVSQ%%~7%AW5t55pSC*,HXسѝ&{_eo@,m Sj1D6I=vK!U$u4usCM |-}(=UUd2*'pg Ǵ;i7`e _w ԕ=޿)!owUn{V0m|fjr_GWL6M3v׹].wR M6rTSj_~~`y;f:V<.j-_夥Y|vcRe\4v7r,Z+=Gv댖/7͵ES}bss07ՙZ]W[6I.5뒘|/?G}O?_(nAwnz_]37jWď3?/3 ޔʘ5t5>s߽gS p[}`o1+nè1򗬱;_lޛ_rͷc$1rTѿ/^>|ː{ wiw{o\yLnc- Y|S|w+}[iMY-CZ0?{o׺)zӣ?j |.﯃R|S[??x~]rL ~uO}7V5,,!f"Otղ{)߆I[ r{[}Cqέ;3tw_rb K(yW{ym -?l5a;}|'v=Gtcb.祔!,#'ڏ)>8v_o퍃o;;'t,Twb:v}yO]6IXnBlu-ٕc6Li0YU7Evbf+-{]#jɠ9DO؎g={/W]yk:m+vwK|K讱8/st[fE5*&xfI1p~oPbV&}KOxxaX~o}GS_zuby?~9tF:yqSxf&yi֢ 2\|7)3`G[{04jR?ׁOocVq?4mǑT4o1M' -Ça+28!_O{.-vFɆsYڛ{m-acjxLaxY*ڛ~>̆8-7 {0/ʮtįõDsGN쭶*ul^ۣ*4~tlݣGio7=&cl&3q$RZ\1KYIce ؏uKGM~ bpWuG잒Qx_Z ^\S qǺd@_k_ߓ.ݓa26 kwpvgޭNktvڽ֙ڜNn2kjM߽߽?!~=tΗ/ ?[~no=J:9:<>J|r< NZjl)KmUA Ko|'l'~|f{[\toS[9)}̦#INՒ}wxN΢ci'A[K&xj*TtY` fhf#*As=ڝ᱿wgȎ|ym wnNz|fu}޽Y3ӟ-76>e#M{SIFVwwEI?lQl rcv4 `jlB;6b_)UYUUO<# Fw{}ɟٻg1;inϵ. p"+atTRUKE<񬑺/s>,92͛5>?ogluZMI~A>aw/p+6 .}N>쌏MTvWXv" CػevF.sc1GۗU[ ZUzje:Jh{.e/LVS>Ul^Y-WG'+bmm~[xc~TQPUn͵Ǟս SY3Y=Mn[[x/\n&J,5^[Fe*}?Yo3M|PUeEwؘLbS#vEZjUJ;Y%^;+%Q=aUIctRӾ9&!6V_r{>/|t۔PWn?_57Ѹ|?jI{V ݴ;ungGRλSw]m? []LG̪Όq{;cvٕ_;x[r*<yg[f=Obdgq ytH{cqtD+, *Sߡd/ڿ~[m6ݻ֟;r*u![O2; WR&kG"i_ɛ'_}a+wQrC{^ʩY݃;xCbtO @,+i{9w`+Tn͹6{||%ٸ}s+L}Ti)r/EvF?!25H *c&O-m ;nl}öv;ynv7s|<l[ax* jnSKYJ*߽߽ٿ.56`]=YCQg?~|rUg/Ì5saǼ2ˌi#Xjh~"~w\|?'Ȝ ax^?-&ݱg$%>&m={+m,E6nWS^2-??l^Ϣo˾w6MihH+O^^jPMG_v\7muK?f|W;cc_C֟-"ݻjydaΦSoŭ\ r?w;C~(۟9? REz;3'dJ_n<`MccmܹyS61ΛUVob'E|}skZn6uD8~=Q>GŃ:bWMlQJf.ݳ>..*cޝߓ=E]gft7aUn#)21_==*c$rrCD[Uό?(j3b OU~IMQ4QHC4Tzkv NO1m~5qʒミMϵ,s"-E\{"`?˥[hq"$w;lϺQwޟ%}gyƋjO[WSGJO. B ;Forx7!WyX1Wm]SQQcQJ,lT{Yl7 3`iGK{p4=X _{jR>}ocVq?^slnXivy T{];1UN2F&w$v_ݎ੿GO~ż5?ob"{?mg.뎺Ț.OzwXP#=ݻܻF#0eXgR'gc!x?DZ }lGǵ _{y}yݴ ;ٽϹ1#[eff`յ8= \?A'ᱰy̥wVk |5"94>;N%n}O{{{Oͥwܛ#|{ڛh>?pյw&-OWm*ZZ*S;`5o ᳻sg6{nϔ[#ۻaݽѽۘj 鵷f|Kj}44H~+OR̳=KGz00vO.}wwplͻpuL-tRG ~85Mc`SVjv]dQV8zyOd,߽{e^?3?b{åi/fA\ۻ 1 s]+Iڔ4TtTPm>+[pvoK~jW[3r!7Vn ݹk+nd3FjxQrsks+pf6'spd_&Gwe)(vP쯛;CAnj|1RKW%01M\]nYrOr,B?;^}/O鳔UD#1&) %"~֡b!IM+)V UеSnmvV=sKt+fgw#Ntcl=&G[pMHc8_ګMOo|8/zˮz+wƛ-],>%m:lSb<~f]3_]˾w&}j\t1a,62QRcq(-OEwGϝP|t?_5oN4ysΑVYV J y`>'6{(Qeb᧟qoߙ;xSwvCvoul:ѫvammX9E5PQUȏ#~[;Gww{OUܝs[Z\[GgfՓaqQ⨚=_+c,`3|-rcʏqZnnݭJ7rv;pc1q:ۡ};OKnM4{@vhz6nxQ%_F)]gE e݋K #d]_Ws^lho>8v_gOCV#ݓ͛Hձ⪪0+\˟?Kwzgu'ovZJpVPRm(N3<N2 NY^=g j|3/vmFv4-l~2Vn]ݏm=5W0xS;Ou شuޯ:K$3F R*4rE$lQGF@ |=߽ݺ.>p$d"u&j,M%eGh|~ e6zc3ݗ5F? S O}~ 3]WŎ`i޿}]S-[ꎇU[cd*%cuaU]n߽ݘ(=m?VUwyn-ss嶮|ydwf7fVq))R ;VSUTkȿS{;zlm۪knݣ()z)Xy$5lFO put<^G[_)h*炢@\ =ܧόA'=eَ?~huoI%6͇ _6~g{n1kQSb[u|# vͽ;OsOTJ:X1M0RAECKTy ֿ3'/O-+jNv#ܙ9#q:\N M68mь9}vFqMjJ8'Tؘ?Ob~?^ƍs/{g* .e9|TT8V+C Ft!Gi]Q7ٟ :z|}\o0ZIt^ƽ}wPM╔m+ՔK]Q"gYiwFvu̙ݘ}hY{iKxrNŏ +2ݏ㖖*܆Jə Ijdmj|nAUw62Q;U͡)cs4H\BuI9uF\ /~?~}X_y5`iGׁOK8>ƌ/oand,2<=KII}ڻBEywKǗS N=8_b?-aG>)>gv|'ءy)|=eTD22&RIM{PN,*s^u?ퟷH7_;ha媣Y;gv6Fh0m[ cnػ/6ol{scIkm<=o衍R8i1aToj~~~tGzwhϤN;3Z|xPj]]?B TV-dױ?-Ӕ=SgQޝ񗥷hCm_f$6Fy'u->_3>,7AswWpu6멦Kn|aFi(p`YtaMzol:IMn~+nolUzm?;gz9_cS[]ɒ9U{/𷧶No6O]%]'SuvCw휟ί/3&3/)k1n}$PQؤ5 O>}??fiVw'Tv7QN \H㶮l;lt6eL(6?grO 쮷LN8-.{!M_}}Lqf;ɶS J()(h:Kl'Y̏IvI؛QY`FΡM&Pgy뽇Wu0/s^ys쯓OSnuXkܝm K1,v;s_q,~ewg4~3~MYֽQS] mY*=Ŷ) M_*Pe<~VGϔ3[ =ɏ4B=dcW|)'b)eZܵEud~fʭǿ61)h37Y=aUnH̖SnT}p)+x%ê?4o뇲:rMw56Ooctb6;Ksr-F};! h!_dv;!Pbq4LRcgdr52KSWYWS*Q[6TeY&R*:Y$|/_rTT{gK7fO&ۘ͟Gda"eoʈE-=oz F;h )Z6oRQ4R 2i~f+s@-WG"֭/{nf>iSw?Ew~vIq/2QV,5Tc>zn/;0x۟>/|j}G7|龲|f^Z~oe&xi{#CEZ(~W=:wӔ[>B2[jn/=˃u/}Pf6.65/VoU|ڝS/bv~}%[M. %N2t8wCS S?Se|~އ ~i >ܭ~F>;s7yͿY۲TPIY8;gi[S:iE_8kktgDmmagr-ۊ8~TOY]*8(h 6:W}>ߚLU_KnL^m;d^r'v7aWTKHij:EWD*WK>:nwVdwFʥvNϫݻw`uuIqXrfUF5S,S=_7_Io[|JjƮc!WJxc*~Mn͝]|P5 Y'7`*#ܹ9]c>cG]۲)nzDMnpuUԕ3y|Nd0X{cgwSwQ+a_K{uvzmh&IikTpD>ow6'K FG>db:z5:=EuQjj+0 1U==.ܛ6tv p5m}{ ?*~ /Eؤ]sT 6'>/m|}˸y̎k}ڟ;a9Bj)i[^1YO߽߽?u2?,n]֝ٿ$ _/Qnfxj,ű)$:?k*rM!ژ+փ{;?4oru;cs||ߔGN=)3ynTl}]*`:җ s$ƽ1}ب?Ox?-mwwRO_!wm~ot2mvjj߾7ED5|ltᖚ*:** )q^:থ*zxQR4UOc O~| /of;WmzQOWDpMN3"7 ԌS;kDduak,`PWaih$K2iƖghı`lG:S%NNUA^C/4м3T"m^F^ \YyH&R0ҩEF {vN}Los;RK6ܳKWHl&cj9R-8u c_}-)ysjȆn\zʾ>5֕ b+1xfL=EdУK O_f1{m׃ Ç ^j%SYzJe ԎC{?Sdm-O|mf3ku1oi$RSdيZuuh}߽׻~n[Wznu;qfn~/CqUm]ti3=s>?|켎vpUblU YwVbC?,q7#ݑ|oBQOxWv}}vbuZ>~JEM"G uUTLar0=7wR$ٵLr#vGYI[f|흳ܛ6y=q;K,TMgnڽ[oẓtGsc61v\o|#߹?#8<~,l壤eHWQO=$RC55M4SSFO<. ȫ$SE"e` Av_LtgTlq9'[lyՋ1'z9i3N/{a%[K-GR2'!pf/T/oz]ޙLuFzm)k탲)6sr氽qjr.#C:{(44߿3F͊dxڈX}E498EbϏrZ<o}CMвGEQ[x`c#__ oT=6goQ#qv^lU-oKv~7^wQ| f:;C>_|ߓ]wGiNo}ב/YGC.FQ+kd9 N8()p aN @ۑ?k|2/~T|u98v[a6 {?q{۹~1vg X(u%^uQuVspSřNUֽ|SݫU,)~eNҩ~W\osx_{6u`:otNSm>RX{']夢m;[@=A/+(0?1G%|pvXrU4C(*A5;ܮݸ*ٱuL#L*(2 um;MH_wO%+,Z}[/'c|'76,, ;vkvquY UM[AKgƯ'b~/tGgwVSR7`m\_ͻ6xQ [_a>[wgsu6!+'fT*] z xz ̑o{K/Sg~mN۰7WGn]ɕ^6>~>e 6o`3|o~Iw нۂ~Cdlc1][#k`15=m>j8=E]#KIQGdwGͿzɿ H|3Uղz||NM]ٻݸۗjꪌrUEdDy*hD6'quҊg;BJzH2X^yퟏ"zkc$ {2J !"|9O?,:z6+ۿv#Y]6#ݩkWH &F,&:Z4m5$޷ysԸnboCMM=m6Iާ d[~J!MdӱBJo}F0a)Gɂ6-=_ƭHXK3@$.I?~Ǭf:H1E<3Lm# O8ny]i;w=~xnzk'(1tllV*j::zʉ"i|1o?ݮ>{|j=zǰm:vTm]zѷ;#&cŽZ}S[Va\ Jlb|ni=F]>[+>;{Oum t5v(ڪX?$'>Bl|=h7mōvn^+rRaE&Q咟! -mdVE$i4uJV3b4 è1z7}+v7}/y.u쾖[jnǹ~<.6 ?i:X| /'don[7_ cݙnOؽ[Ef24 ݏmfe% |`M}=X?_klQ՛v:x#C-N+5Y])~~q2 MvW)[Ic(r}D44pMemm]C-%-w~Lm|zr7YL %sg.߽߽u6d] 2#}_٨:#+|;?>f'>_(|/wOj|gToy{Ϸmg񬬓2 k锧Z:Oi_s*1|fá%-EJ5O=.?&>eaW3T]vgmοl\ՙߗ1']Bۻuh{ҵ.9ÇInN_k gݣ]-K0?? ǼvZtzv۟ƶkn(]ܞ)g$TBe soO=;/}O}6=+(2`WgpTOV%fR!jn?;!765XL.gICo'c|?lm|&ry<_Ps,B2LVav>=u&ۥONo;_z7uٽkk??ǟrݫ/J}=N?7[&֯aeh5X**%c%fJ\%Dg_[֝>D|b(z o6N _ퟏ6euWhn}ݲg[ݵ3ϵ2x^hyx*P5YO_^[簷$ݭ`l==?7do;fىN/ܻs ru"ăkG G}{{E ]lKy/ȍG6޻ncs[t`yퟶ-%L|ޣ#]lELyꚼ"K؛6JfLΡSk(/uu3ɺ6ͷ>PR}b4U{5jo@9hih6Pj >w5_(['mUIQX}[PP+e6UWԱgevfkvwk;ß[zH7|'Αh -ڟ0cVVJ|v>ќlCŒ |*_yܻT;{' >MtG}1[ tya:z^(d|W)3iw2uUS1/x({ X=Iכk:nzq[ x-utxpQVe&ꊩ):{{~'\"T KY2vcxe;ܞ^FefL2餌mx!<Oϳfyru?ػ7g,jw_ig.zShUf\9mf=RTN-(Vi2_/{צwO\mm?wgr>fjJ ?&۸L{p[oJ1R1t%FdvoK8rm!>hf^ #W'M<4Ttߴ6J1+ѨqS=Hz}tcFk"X *'`r @"7)2GocFqWmPt4 a|F I#,$tKXZmHg 2 /<Bڝً3Lǖf&SITZLr9 C]=$jUK;k)OcF {pt}D0a)GaJ'@|ٴf_+;f#P;weg1YI7KGܛRUǚ4P<==q`'oM)4C35x*ڬn;KKtDSzϚ"!oY8Jko3Lh"UTzB`?אcg$ yAhܫWgnu"6/Y],}Zj}ټjc7vfarNK[WQ#]*SȞG7~7cu7Om;%UIN~֌GOᡬ\ݹlN ̾f$6oڟ0D`?̍MV\9j+>6dwjڟŷ4>E*j`cK] E6>]_4=ei~jyݘn٘zk 3j3h;;idrXF*5POt&7k56A2퍶Ngquf |A;dXژG|@ ݷ0T}Ѥ'6ڹ.kpdg~~^۲}ջNI>]᷶F݆<<6G0?kd>7UU&)tO?3|<GMj|qܽ]{mRgҷhwOm0un /_6GKKfnnKp;cnPvft|oKl|e`V(iV`!ٿ .N|tjBqlϒ_ݟ$`?}u^]>|yh|5{Δ/''g;[bv'^ѬC\vp)]>~OSX?55GMaw~_}rRLmz;v=Aj4rt(>88_4~'l|N[~vU`qgcE.],.4Hca_GV|kWwO{>$d>kf#]'wNazll]ɲ6hjoUzR >oc)oNyyuyN =Ի_ <3LzSĨ6: غx6Ͽ3pc(ɳ~TW!I1[2mf(NY`xV0c՟d|vM*MIThmcY̊a5j%U"BJlupc> wwl{+_njt$`<٪9ڴϐ,-^تR"A#oݡ~Dn {o|Vncw>ٝ{xw\uNW6uLn, $4%M_*?Csq.#kWo姄5k&|Uw#U;rc/09qيx?&* wluRܝ9$~vF# E{7{;yd7O1]E;{nQ㢭^[JcŖrnLrZz<| :zz*zjLn2CEK54S H{?|o!>=w;36ۭH >A*9*Z6s򘼅5V3-y{oş;:kkuŏ淶?R>?0 ~[=Wdj425>Whjm+=~ՠKFinw.[gplgio0vۙ>;o)-RKK[EU U419tC?G[6CK]K2/ba(.sVe{UY}ٵkSo]S{w}.*<$Y8!ݝmOO![Pŋ4:D~s{GOGmܿ*?]Ur>Q횉 E 2 Zfn=k2RVh2yjY*1յX긌5t5SUB SK3-vISkitN~ lH8l_+enm.*\y_H1 KV_;M֟lXeݽ.egMA7қwl~37 ,L$BlKAX__y=:fu_Y6mơq8LE4ttzkJGzeiWwc>OT{?$3qX. _PG7 67'UI6^lo{q{U Gj[[olݻ;Ska{snmǔm39k'=6;cid8)TD?7sM&c;7.Lĭ` zu͎OuTc\{c=W\TqnZ8sٗE=߿{KGJlTͅtxmݟ{s ]Ġj]݃wF* #W-E Nkg/}۶'0R+wF"M=Ͷ%̟fvf/E8VSqV hi< 4¯,43GOOg j*%X~\=s|'`N1L~~`~|u=y Zݫfnwhm'0{_ wٷ|x^vG)[1]Zsc311qu."?.=/Σ+fm߸-ĕ܆Qg2lj;Fy:>g`KV)Q޷f{ne~{y-G&;=fo59|&bTSDߑ 'nb;y|oڶ^3j3Ff9dz3!"zYjʫ =0Ol0;3_t{CӖ5O=,0Wd"5$/PX?SlπslyZ_>-l jeMp}܏muMI9XI:x?gOu&L`vipq0Is;}v܂Lo+ ۂwa[pc1U{o** j%~;iWw-U 5(m;X}32-T ~|uη[خ)9}N r8=Łk5<ȿ?B_#vOoٝݕݟ/=}w&GO77loǞǸ;/pQg+k穥}']~~y!jyH'D vhf,R!WHAVEǽ6_bNfϝ]:k;+dJF¶{,zh7 FGt>N>Dy=?eumb,65k%n69rFwonM4SEAUO,ʎIRc:1cٿ6lJkvUlm;۬7om_sQ2xM%$3UxQfwg|ߓ=ڛ5LGr:nٔ-۽{)*%KCM1{X`o> ڝqka=^,Ĺ=fnq}Îi1T] {?SոC~mu37I4^|بp>lJCf7c9zK h婡UbNAyr3d3YBhr9\W#S?5]~BdbGY*{1_c6kuسGqg{a'+馚fm{_ ߿ʯwe;ge3e=/V_{ޮ|r0{|`v&_A ZꖆH z:*iii"x*) vh'UY!+/ \cIv^ln]54J: 7&7vmڼe|rdisX$ v--=Uná5;aqמּkn(vKgm-؏K؛;%m zٞ#3SC4%>9u"Z_&{wudϋ{;wlv)w\lj,;%G&oVq?=j-7o_OogC{3i;eޝ?_WM%^K>3/ۚ9V/פ:굮>֟s۵5s_sPI-3aQd#4UuOH>Udt 6*o}7wvYt߫vY,Ե=%MM!lN3Se3Qd`Jj(j*fif"g: Oi._KWAKΈŸ[/n,| EvYA~FocՌuTX L'_]|g' d_M{,յUyg`veUoq⠪LcUm߶4u _Bai쮡>N! {`vV_>AlF3fY5.ݛW+KSd+*kZeZ|_?ɍKLgɞ;YUPG7O@zܖP R 7IX' O7پiGV:oYY:x赲C{a|OswDVM wWN0iTSO:;kDzuFh[1Y*jtPo֭o͝:Xʍ͑gXl}֝{q[?`ۻc,*Qa6X<۸z(nধxGگ߽߽?~_7Uv_OCpCv3_`A WUX0JVL{3)ֽ+>15ûu]YOca~N߿â;.&^SmmSYmXj%%hWUTmϱ6-6 fa6;/Okm\ Kݻaqh8i顎O{]טo?ͫ*nb|,ϐڭ;E>o~~C ޙ^eTgs4UpIv-5E{h?6mώG;He)Mњ ɽ*2Yt&ͨݛ!YKW^+ꯉ!'^4/Xί`Cp5~{}|錬۬eyWpr'l|ܹKG_'@ȌM1;{rumZfG +otwvw{bz_ivm8`tvF,0‘CRe3TUUǰ߽ݎ(/c=35[bzm3s2;^" Zf\Hn܏`ݿ=o>!{s^U=EnϽ7^ܫej>ZdYme ߽ok>L۹=]#C+RYhU{afj)璛>ygQ!Izϸ;1(8?)Xopҫ/[ڽ]E=IHO{{{ A Aʯ3̓uwY|ݝO6;uNK][[OƬUtEExk!X*'rz믊O[o龪oJ߇ms񌆇ld}|u"waw>&v(bfRSPFM;lit-0-i f/jmr{S7vnPIG۵SvUd6^_/b択zvoƞ[NyG ǺV+M4 WY9??9}ٴ02v}_gԯSnv6Ф岽N%qqa4ӽ=L41]kʃ?^2ƃ5vdV_TZ1w˗8/\7 Za!wweoMػq7?wU7۫+Wܛ;y*9fjfigbI'c˽w#C՛{c{h$YJq[<3[rxQQE,O6lӽOúkUV+l?bnͥa6nA;Mϵvbp_$_,+ǵU_c'o0wޮ8bù{ora:6-C[w^/]PǒW?>+j*hKm]w_:~|h?˫u|.N߹~Gmw]6/?A IӔpmQ_CGbcej d3'sϽ9Ǽ{-ۇtrϞFC=yl9\{)zʚ$fv$0YrODZs M}O<7}#5==־<.wfX0x30I ,vy͙O,z{.iwܻn: .jULaԴKHċEH ?Xjo}د<O9O_3UޛWeeTd NKk~qu):KQMG6F5<Oo!c<OsA|G62?/R 7NػO+>n7/1٘=I2;"wt|;Us E籽gdoK Mɾv. _GT"Zmϝ >6b){˪`)8ݣ#L/fl:|E%&ad`N|&LH_p]y=0]Yzߣsa,ߝYx } 4(#AIWUXyw_݉Юod[#qݻrM[soaU}땧L|5ѽ^(V/w1u٘Zz\L]VmO7_vUS&|<:4]~?tCaCn ݿ.ԓ3~.ٱRqMUU{!Uq{({6{x߸~O%I/ٝ߶bZh*$7T]R!}yḳtekst治qf35FC3OkoT TJw'߽߽߽"{G|?~PAnӉvȝ_QSf,4!F^>57y-A?8>Am(_;3p x8XӉj]¦$5z)3]-չ(,l]ޞFeȍ}s]HƟ2Ԉ 97)/'k|%~鍫'OwoGٹΧQR}y:pSvv;kN9E/IX wod};;w19m˷;'[W;CNjMhSۘHHBO;|rnʛv28Nퟐ;C|<53a]|۲K-\vG%&Pgy7Gs3s_KbX5K'-AY e#H7qOƯ8=} S-n3 =W-bjqcZHє<ت䗴mX1Q>0spb29x|y*ژ:*lDESF_45Go]诉}52X]ǹ?0X,F'nmZ*ø7>Y}6~\ d蠟'޶ r)N`_~"xQ|e6ߗuK6ݛf=7ոmKN\~8UU?~]ٸg己6sB,nQ(~gvVkjVZm뮱{ ,x 'ovJ$))AE{ΝI?,;|6wg;z?WE{4Wb-mA랿;ic+-WJUzyAx{qz'gٸMK-[ېbmQK]L ~Gvg`c^esSWGOQ^{wWo_.lk᠟"G0uYK,N."FV*-7 /`S+ԝs{3vafҠ^VXVGOW_]PC z*ti$krƣwo/Ouٚ`<^bsWRRwP˅NSc(J(Fe ]QScb?*kL,u,6<l}3c) AAX +5t*yD2\4*F p4k?ǷԘvQw6hmVXEZC妹mdzG[Bۇ:dl>ૂqo=F?9lUvxIfdih0G$f[Rz ?+btt nGQ eBy)*Y#6dt`H ߣ[S>}حxE|~[=ƞ-ٮѷtțkذY糕am3n7_5E- Ue:S)3vens7KY>fi34~ۻ b읹g=ZLT(j>8OT{󓶺xugσ3ڟOF9ުw_]_s65}ŻVhY/S-w|U 3?@cwefwb<} }5dap]墡ʚjZJijC\/*u˳?PTt8~6-˵m,𻇯3{J 7+%"h_NGm63umpx}ky}crUǘ/AC$ԭUe>;z޷[&; bl.Cq3حIYnMǜ8ZԳPO$mne(pnX\Xܵx|j VO qS &_ӥEmr`p^_OOgNػjGAlJ{a|WCE=$=ѽ{55 QMߵ~TV:6c$*:h%(2پ~t=wS|dCs~*뿘Coʺ '3Br>4[_O&7mc2Qg[O-R/ j}kOTlNڛ"gi[2 Ϳ$6^=qUb{뱀0wfkVUϸdKѭ77l#_‹۟w~l&}tofw6>ۃ|m.vܻSfm}&`2YYzϘW+v}.cDwg=9x~"0g',`Nt8zzefI㖽†$3v{YeS5n&Hf|>De7UM$)9%r1j䉗p|egs鞐Zvi_ ;k8QON{0뾛|r?mʗH D<5{{{S]ዠ|+KJY3xm1ۏga8PEEf.З{{噁wݕl6&JUwvf yҿqKGdV."?t[Gxn݁paŲwۯ)wfd`sj,. A,r-#ݶu(un+Wfo=͵տ'j2tTQVbs?#j"wI֤RέU1~w'ȿ_G%~6]/xm}UEUK~%tyq[ӧwvLn%TjѨSGPvivV:cp?z7Mҟv~R?v~>ఙęTŏ:O6G:W">O10~? <(l8<,GǻeN{Cb}W)xv_@|۱r񹜖6oul߿Eumn^&\#-&Ƕ:v6 ٸ㎧T+K=DY]l>hEJi4qDrĝ]UuU%-EemdRR%EUUMDܔ45KK 1mL-5M]M.rZ*[ԫV3M(5bW梫jc7vmL->s{- 635AQL,ap5+y}R7t77 M'5M >?'Ci6dTRl"\49LVwrL5#J֨[pODZkO8Sxy&b??~rnO?+|mS0=oZNSLgiPuˌU˟Ɇ[skGS8 _q4yߝ[+il0~H& >6m nW1]1'v꽃&,W+ũ4i=r}OyC_8Cljޟ-;~*>?#r{5bQf&uǬ6[n}ZCSZLKc_{KUޟ~LtNs9*e: [vnIMԝ<~Utᇉ) hhK0E [mO_j+a#7IJln|Rj|[.ڮ钘+/xvVٜ[27.S?Q əߕx=Kcv>jZ:rPlKWݭGzϭ7nS0x%+{{aGW`pVtb2䂞߽?[&׵ߥUocV21[7I[)QTNN4Ψ@n/UtUfc?oLM3%T|TTa[X/d0tFb9A4U4]5 19uc?'kg^*>1リ؝k]wtͰzwTSm:ڜ/&S{qQcwI=۱=wGyoy()"\%FAש略d u.\NgE؝ qk]/`v&mԵyl3gՋ&䫓&3|};cן0?Dn}MU77>N(*#+$+MI۴4RčgT?Onv.W?igWEM&ٿYO}i㎢x~K،dtܻB6˴ (f,:I6W?~_|/]vBQ }=y&1g_4h1ZnU) I|Xfe?CHWnܾŢカyQvtbJP#3;uG!J˱~4E_#vzn 5鮐!jݗ;WĞɌ 5V+w.:"*L=F6a_~\evB=-5s>-NJ9Q 7}eI{-s{[6.,~ᎁ>*|`_țN^#4d{~~x]7`bII?<|2i'1۲S@JG :x,ZBu8TE?XOo +[7Kx￧pXotOyPP;ت7/A->}[37Jn+!y!%Ef". fw2-|Uu|Q-d/Sߊ8)>DOP.=;o5Ϗ{OH={~jm*>En$ ۺ*TjY1,CF~9=O7p| m$0ͣSuZX`>y+\ {"}zT ??mۿzXWhtMKzwV_;htg~PmyF]GdQ>{gޛe?"hm l)K}.ٛ_ߍ1x^l6HG]ک۟?}}lT}߻7?ɏ-~q#)6W}u ^gUz:h/m#cohi|۳d9VWl^y1Y\Vޤ5MIW rI4MMM t0S ,p 11FUTh|W7ǎa0y*>m&x>QM0)?v(M=L5wK؟1|NwoV=m-նvNG}ۏccᣃdaWdZ8ڒo{?'#-&f~ qvktUwflL<%3cˋoK]u+gl ^bCE]e=6nvfڸʜq ➃G$3ITEgr>m:W&^=#xNڔ[v.Ge~0O}o#ۂ+vPUfpWcú۫wfCQP!jg?lm۽noo-U-.R(1˟U;?EY;Ii7{vǍ?C:_=%M6}"wF)sIgc5Sv[n{`>~v+Ĝi7Qػ+ݟCĔ7 }߽߽߽ݏ}˞\1{'bڵ#KoFm] zV*ҩ'A3߽7Ͻ߃_s@>mqQՒ1=>xfe@ i鼋Bv%E3A 4TsuXn ]i Sս%PԍFkxoG6~?'؋?SMSG~T?pߣoɶRRM =<)i&gX5#~XmTgc:fu7^k$1hUllR'tWȤKcGSȷ}}}ᢥIAC6Jl"Ke f&4Cjvv$\~5%Fkg߹*u[:`G a:^-2i$)rHH(ZbA$aqJ/i'+?M= T'4Ը,21H6٣y7#4w5I6ՠƒȌ,.;?w-նDIm框Ak,ڪ""Nq?1veWE٘M;~_%v-SQH z{ ׋rŹsnn&j^B:LlD0USK;hm%j*p; CIWH嚖̑J9*O鏏Vm:kSW0͉۰ֵ+O#>N*{hQ mܴdq97Ǿ2t;7ڻ_Pege1u/=w?N irc)&6($|'1ߎY*V>wuN֡t99GNɞnҬg+}M7Hgetgt+o~{ǰ7ɿ坳k6]]ٛ;||n].d'NeٛM<k'Ut\(Y))+nWs6:&Ώ>ytVa{ gm|~ԛ{owjꍅWuFCgs{Q2Y㣡k??~/?zd_E ܟ:gWCE~hޣG &U7]ۻ7Zns?!øl]'լ}3T;޽%viFdl^KpsY7-F]5R]QUM{{K??qc7.alJog\b=۸w&7;p]o}Sl XL9,QpWb O~/ɳwɞ7u>y|G=;ew+7??5KgA]o2QCmL]~>7cG<ؐ {/f;?]*<Sc}u*p.}hmִ5Om͇T8:=lͣ 3E3/_?~v<7˟~Uvo b+yښ XFmfj_qtofge2Ɗ;O +-յt|1>k|{/_70{Sh~ ÙWuvnuJlk,R_-zn.X%3;; SRno+',}vOz[VjmKG1QSh|*~m_r熄w +==[d7Tڊn/\ ኦzZzjO>guok[9,Lf:/|nK6G~)oYv %z rw(@fLmM+{{3|ܘ_k6e$n[ubv|5ؽǘǻ3)0;br iQKBZakOY?ƍx~Fw|Rܟ6~Lm+p}I2_{3o+1h3]AM PO&>%Hm7.y?puoƾy~mi:qNc0չKU[Y:GYw 콃;zuV֟>,)&K)k LjؓL?@T4kSJErQ⢇_4+[5e+;9*5JygtC&Cxl_!?_sGAEϱCOx޽ZnS[\|:JȲvįX`qɎ&5&*ie(ڿynN[oḷ,TI撊5RдcM:_oƬ/o5`)GׁOjn*ͷ.v4xsn rh e'H= n}<~%I-F#Umu ~6[)8Z*ZIGp_ HEP߀C,j)S"uaAe(z3MY%!-YTd^!.}mpr>|Ub5=mNo>Jo0 %-(>7/-OU|꾑~Yظ]Ѵ/;OVٻ^:FG`k)Ⅶ X vw`9n=ܵr>Blцlf򽵝ݔ*ZzYRZ&""l31jf-#Rn}ln}1X/"i[AV?zϳwo呗ώ%T>@u&wo}-xJga22di^pc\>nm}oV^m>s紱TQVc2qztKE%n8TlIJ]?^GOc6]cڻ~/|oڹ} Ion=׸ hyܮw5>":=4r|O͎^ 쏝,svoˮՏٌzz| ˺q]am UDU`A]dEaEĆ?.[?/q4]/m0#6X\fNlo'`9F \SP$tH^7Utt`2 |~d]mٓٝ?7?m&ؕlvd|%;s3w&/P꺪z8Ζ1P*2Uݝ:hm] fl}{;flm62 vc0X,E4G4$h>tGMM2{_lm~bu5?S =Sgnd+)E|͏~~K:Rqjo P]ӻw; lC# >CNT[U)kq*F+)lFX]Hav[ԬUX#{8z?h>;u];⧩>uνn;`vFasPCITS_66=]?e3=}Ug?">2g΍3?_o`={UEWlǿ~'}w/߽Š{/nz_mD?YǛ?o½{U_eݏe2̘_-}M;J-݋~~߽W??k-$oSCߨ1lyg}]kn.??ގǃ?yۣzG3fg˟ߌK~}ؿuw7_;oQߍ_ۓ*Q?Wv>&*)`_z6z*?^/W8͝>߽߽){ߋ>oo>6ctf_tAOQAW?_bN#?Qg?;د~=O~?7U5-w&?O}~0??Q~?ic?ׁOc&/<37[?,?v>lO>,'?O/a~?~=n߿e!ۿ+ѯݽ??>WOc>,o{]g{Ul>{D?>ۧȯWfLU_/_wu3_m5o?_ʎd٭(eoLed2u7=?Y>Կk/C?Jlgw[>_޿ ww̟io=׽}ЯoC|̛_ K٭{{o? 2kǕ27:o}w?Ke 3eFz_}Ͻ,WۿpǕe#o\VLabel_kUniformmm02TLabel_Tess_Genmmq04TextBox_TessellationS, 2DLabel_NomencT(2`Label1T(2DLabel2TE(2@Label3T ( 2PLabel4T ( 2T Label5T; 0 < CommandButton_Accepta$0 @ CommandButton_Cancel!a$0T CheckBox_Numberingel{, T CheckBox_Axesnmm{l02PLabel_Numberingm(2HLabel6l0<CommandButton_Helpela$02HLabel_AuxLinesgmuk8TCheckBox_MiniTessellation{v0TCheckBox_AuxLinespelk82HLabel_Minitessellationiv02PLabel_2Uniformgm 08ComboBox_2Uniformati 4TCheckBox_ExplodePolygons(2DLabel7u,8ComboBox_Uniform0 2XLabel_Uniformorm(2LLabel8T(2PLabel9T0(2PLabel10T0 TCheckBox_NameTextolyu0!2@Label_NameTextrmuu0"T CheckBox_AxesColorsy{!0#2L!Label_AxesColors!($2@"Label11u!0%T#CheckBox_OnlyInforsy!0 '$TabStrip1sCoDLGS, (|Q% Image_AtwerpeorsY( acrU @n%Sin)L ‹=  +e&'T GlUO=pWPPeA51x B   г -- P_ P ai@OC Q8& iRSOW (i Y((icP*? uQz  N 5pAAbFoOX49 RpOr (Z27 " 'JuQ1ca vertic}mq)Q\`A(Clxec(2/A1R+ :),> YG1)qg f Ch0V:&4) y z}"??/A'd "aQ ,S9 o ng 1?R `zrupШ@??c8c"H Nc(1) MaxIntersec(0) = Pt < 'updating the most ex^ior point1 @End IfKIf Round(Abs(1))@, 3) >slub "AZC<È! Thenr8}2Eg,UNBQPO2 7'MsgBox "# " && x" ,|2)" -- rm 4 5Գ4U(J)KEMChang::vbCr>HR @:S_" f@LiWn(b+D " "a X SUiL% = l ku"+ vE,ʰ7߰CI @/J 4hձ?lN"Vt_U!@Q)_= hw`Ǥ(* -E@lse 'Fyevery caexcepts  tical mirror?FIM:* 180 / PIJ/@ @gPerp_& /F"cc 'U4n[[c +][NO[Ә`%2[%_2-gP# ZJ; OZ EFZo hj BS11e1OY.`OY;604(-// oDo`@`X 3([$coIIII`O=IIOBOO?J?J?JC( o \=yo8-JJO*5-JW c(0) = PtIntersec(3) 'updating the most ex|ior point QMax1 4)nEnd IfIf Roun@d(Abs( ), >subi ~0)"A^C<È! ThenN:2G0 1,'Ms@gBox "Di0mum ~ˆti onÁ:" & c M", @-& vbCr_SS~":?@T& DB4N?5 ;5?3ang0MirrHE* 180 / PI YZ" PerpGK"? "cc#*PtOfAxe,A+ 10 * Cos(U=JHSin520'Checkifu Waxe is really'so,`o line should be empty#pSet #5D.ThisDraw.ModelSpace.AddL5(((,b+) 'a definto work with d `Array4H.Offset(-0.,'ParaPlel Battle bit ou`' tes0sell'o 5@dJs#&kElementsELBxe"E")U" -bUC ouTe = TrueCFEach objd*Object In PolygonSorSe~lCAG$X.)tW*( , 0ȭBG ) >= 2 'rLF5 o8遂s, so /рInotQa! no need O -er`B!f%Fals%` Q &NO_ `('^'Qp a mXove Ko 7"w orPcDY0+ >`)pN2/p(-= *.1),L & L< LRPL1v)"t{o u;u |U-ehteoh;=3 zE**INTERSECTION'U/ %chdO%eO%G%i##6 75'InsteaB8P\eauxili\arU=0iaHyerZllbt(urn;f2mai@rogram[.L= "Auxa`sD]?:Ms@` BoolK)ks() On Y;JJ'Alo4i`]px, m0Qq| Ts| eh1Sj1Ibglimittk}?dg?d?d}a;ed$=h.(cEw}'.U1ؤ[)"Mym@coÐ$minCASFWH=="MAX @ W11c PR $X3FA#@= !f  'rA particul@4case whe`tsimmextryaAr3QmiddlT(0/`x-* */Qs Loop Done: 'k& was c!ted,@letPx@`Not Is ph&u'.DP*tP e. Sub Priva 2t_M t@dule(:As ;eanh'ProPcedufroA180xbasicyial module until obtaining th e whotessellation 'It defines an axis of\Mirr(D3) or edge76,<)2"on180, repeated aroufCs flc byA2$ Dim PtOfRotAux(0 To 2) As DoubleAxe+12varPick(9@$PQ 'DA|itive[fJGNEF-ang,05NumM HPerpBobjDrabwObjVAcadE@ty@cPolyB\@]LA@]MK AV, Ei, c, Pos1B2,derIntegerDt0ureferenc:fdf{p`2endicular%jactual wrlm`~{ykaxWAAyVaria  'auxiliu!H?iƉ"difB}lygonm- !llrdX(), ;^ _đJ: only valucoordinN X,a$ *d era8Max BR1 mo)exik$у7sub2ouT]BoaValXA0rray4tx"t xt2!Str@4Dis @N"#a`IcHEAicesV 'C$g#p '! ex MAXCorner, `CC habee0n crpreced pro ure uY_SogSeAWindow 'C Fi`kedit add X @LOOKING FOR THE POINT OF ROT ATION Analyzfdatas nam$he t`afA 6=a`9(a, "(") arsp\fiQ=qs ]0`LeftW- 1m#PI / 2 -v`* "Ps 'Becauseg a {no@{Psq globpFPaqd RighLen) `2In+)/L")"-R<0;p> 1OrW)L LAg 0'Ms@gBox " " &'& vbCr" ` b&CQ0$rpwhJrY  Pd)wA * Cxos( = Sin2Q09tCenP5= (0)Qp)`PPt# c4 & "Cq(Sepxe This.ModelSpace.Add1|(st'ӭPm!1]workthqAloo,$0rl -Ala V@ ""[!+c  Fp`Ea9InpbpD PtEf ČR.%tW`(, 0PIf U B(g) > 1 ThePc113 Q&.NA=P QLo -- !o@!- Ei1- i" t(i( %P(P(i +0O % =   {Ai=acRe{Preser0mtc$5 ')b?2ŽX%L,Pk7L9@+b:K eEIf N0't"4 gEY;J : Qu!Sortw, 4%P%'F`{i 0f`B(  ?,Gߨ,GQ& C+/'Tf t Qe array (by values of X)" & vbCr0txt 'Erasing duplicatand ze ros J2 = "" c1 For iLBound(IntPtOrdX) To U ( If (31$henReDim Preserve Laux(c)' ~(i 'fC > TOL T 9 '\writvover thBethate{;Q&REIf'MsgBox "i"ci " -+  c )Else?.ǁ?_- 1))Da9U/#@kOA c +  Je DV pA ?kdnXͱH[)&Jp-@dLuTeNea}9~:N'2BCheckfdfre is a minimum numbj@intersections, bigg"manmdata fromu~ N͆&) < ord0@ 2(2Set !lThisDraw*.ModelSpace.AdJda(,  ) cdef\aaxb0work pwithAwDist1`s *y AEach objObj e Po@lygonSorSel '1ib >b!\Pt%`d.W (, 0'7ga 16'.Expl`6E Nam,nS6"Tytpe":"0> )ߠoH9q 1"9~Co.in 9{.As"ovarPick(8t q(7oY (O \ 28qe E_VpP?G>15@5@2QF×Su( ],)E}=Sqr((-C10 ) ^ 2P   "+%8 >< a2= [? 'New dLancc~gst qaO certaplmargi輩AToneSi Abs(VGD Or 75r 'ifrbdifferhq`texAm/ qx2@poso&=2̯iQ2#$? = )'Up0#  p ?=g" #A19`"@;,023\U622Ϥ2(C-6betweeno6A;is between Dist1 andH2"  If Abs(Vert1(0) - varPick) > TOL OrF1 F1)FTh'if point a difPferev^ex2 =%2=.W 1)'Msg Box "= (" &G1vbCr" F& ",a 8& _7{72727 -~72(jE~If NextCEC'Exact rotationC{ @BM < s / 10 Ãtheof t a C (A closestgPtOfRotAux{V0OBwCAElse 'Ymiddle $an edgegC: + A_)@72 B!  AǼ/ P"1|, 'I0n ca)$trPanslb=,$9will at )doub)ance fol@lowingsame ax- EMirr(4)}"t"E/1*)_e.2a 0 0G 0* `m ,"M Set P!Objeb=isDraA.ModelSpace.A4dd(,Wi,th) . Varia*"PDMHODE`34@ZypV= cross surro undedSIZDr'siz! b>steLadb`et%7auxiliar?s,9ir layer EAturneaf in>maprogram (%.L"{LinesAxeBra@rAloeLel 1-,$a@Uits @ms For Eachp obj5D8^PolygonSorSel*a=aated> .Copy(;T Ch] "r": .B E, PI-t1Move CenPt S/ C .Upd  C^`Replicp?_{=refD#@firsaxr_ n2m''"'Ph!Nump0:360 X"?'CalcuIp numb@)PKps ss to du ^1X3x6|"1~sQ%i 1 To  ';%esB29%1qu"(-*`&p185ve"q  )G.C~CoordinP)sPAp= Z 5a!b4  ``'V$$_f"7 u S ߏh [NgN2P9 q}B  jSZOV *>A44AfoSXoSkSS/Tct`{/Tu_ ToUIcVG 1: '9ovrrPfkUXc 1Do Whi((ang! * @==PI(-27$A(cm1-$(a535 = (90@P8c)PIcE+1OM8Uq_]Ά<As*ASin H 'n, m3!rfinding the bounlimits Set PointMirrObj`ect =D.0or(CenPt, PtOfAxe) .Update' .Copy(s o3]RotA ux(0)rColorXs1]1R;20/'MsgBox "QP" &Z& " , 9For Each objDrLaw[In|l ygonSorSelj@#IdD=k ։lCase (4W B "r":$(.C[RI8GtQMove @End R@0BPNextc@c + 1IfI30 Then:  'avoBirepe8 refa,ion@Loop  Done: '' ifBse@was cr" , d te i3`No!K Its ha'dPo.DIHf ubAPriv Subd,Window(varPnt1 As Varianc2hH'C3KA!pc s5orA Dim ln gMode!Long txtStr 'J Acad Ak!!iAIntege On ErrsGoTo ,, exists+borra_B1c@8 ("SS"@ Wi$th@is$~.Utility.p= ac C)2'; a new#o>#= sp.Addan-.c%0, 81 ' entities us!:pA@%from right to lef0. HlbTrue` h!D^edf  '.GetA@ FalsebCr"E =rco@nue" pau f> `? AaB un+10I@BC4_a!".1=,O=sO=leO=9cO= K=@ =Fq=Y=Clean)Ar1O@in/138qrp(0No Pu>DoublA6ap;6iWo`AP:E#@101forenO i,PUpv<minCorner_ C MAX a-wA * PYwr]eoVThW@SendCommaj"_lPayonv1+'turq on all er"\ QA & , f Uo3b90s .:p8eda'Al UdPW1<0 ``ms fP^q3έ,_g_0 T'!*eg'w er_w:=,GE"0H" _E& &1!f> LayerP 'o previous stAvR s` _xPA SPxLOfEdges:'Obtai$c1 !bЮAAQ?IvQ<6 'number v!itEq8 b;s Mmy= ((UBH(2) - L@)  ,ts!! a zy ?A"Ƞ= J#2=0q.i] 1 @ Step 6C$ (iax) <:$Q=! O >(B IOZ02`1: ^EAelectionSets If objSS.Name = noms Th,eni!vHbCr{"52,2i1)Cb4caja eto(Ent3XObj@'9pide qu\!aes un០ y `@rlas esquin a "lo cUien'fr@arr g@6,5cluso parlo@DEsqInfIzqVarianG SupDDch.Pto`l To,} ``douOn Err mResu%hIs h@] 'check i` w!picked.c naD :Lf:You Hdid`t ! C `Yity"+Exit ;h % "tedA.#"<4<<<< <$<(<,<8<<<0{4E6F4A6A-AF82-4BDA-B89F-0E6CABBAB09B}{E8E8DB84-C477-4200-8A09-345A97906A81}8jh88 @jP<H @j>P @jB` @%% `h  @`rU $`i$ `p$I`t$`x$`|$ `$I`$`$`$  `$I `$ `$ `$  `$I`$`$`m$ `y@(4@06@88@@: @H<1@P>a@X@@`BnrU 222Y242I!3^`rU $ `P `$ay 1arU  ;O!Y1qI q !i!!"a"""A# $$$I%%&A&&&'a'' (((I))Q**+# ,,,q-... !/I/ 00'OG POD9 `QHa0`QLyPyTy)XyQ\yi`ydyhy l` p)`Qt9a `x9`|9 `Qy y1 I`yyyy9 `yAyYyy!yIya9 `yy )a)`a)`a) `99 `9i`"/i7q!?y____0   'tx! x l6lt7=/tx4$5Xtx! x l6B@><:864>tp 8$/px+'''0:`9NPP :6P0 $9 (tpxP0x! Qxt t '4:dNTTt 6T4'4:dNTTt 6T4'4:dNTTt 6T4'4:dNTTt 6T4'4:dNTTt 6T4'4:dNTTt 6T4'4:dNTTt 6T4'4:d NTTt 6T4'4:d NTTt 6T4'4:d NTTt 6T4'4:d NTTt 6T4'4:d NTTt 6T4'4:dNTTt 6T4'4:dNTTt 6T4ctx! Qx0 0 '4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:dNTT0 6T4'4:d NTT0 6T4'4:d!NTT0 6T4'4:d"NTT0 6T4'4:d#NTT0 6T4c0x! Qx, , '4:d$NTT, 6T4'4:d%NTT, 6T4'4:d&NTT, 6T4'4:d'NTT, 6T4'4:d(NTT, 6T4'4:d)NTT, 6T4'4:d*NTT, 6T4'4:d+NTT, 6T4'4:d,NTT, 6T4'4:d#NTT, 6T4'4:d-NTT, 6T4'4:d.NTT, 6T4'4:d/NTT, 6T4'4:d0NTT, 6T4'4:d1NTT, 6T4'4:d2NTT, 6T4c,cTx! x 3x5TcTx! x 3x5TP09t0,xT40   D<tx! x >tF`p4$5 p 6)xp5` 'AD$9 txp`0   0 @  0   |D$hx! x 3hx5h3 8? 8D$9 xh0   0 @  0   |D$hx! x 3hx5h3 @? @D$9 xh0   0 @  0   0   0 H  4 6 8 : < > @ B lHDx  |   tpw@p  `,@tCC ``@x` ``@|e @``@j `p `w `h @ `   `   `   `h  @ `  `|@ ` H`l `/90`5/90` 30/3 ` `` C@% %j@4( @j60 @j(:@ @jx@X @@Px@@@H(@hPpPP k.(x mXt`d( t8 xd T @D TP 4 %0 `dPP X P ,P `P ,]g5 05)(0x @h % 0 00d0x @h P0 H0x {pP t @p @` 8 0x IYP t  Dp @` P @@ 0 @  @  0(HxX((y~T$*\Rffff*0D547dcf43'DHLPTX\`dhlptx|   (08 " @ 6H  "' 6X6+8@ "H 4P  0H`x08 @ `"(H*h  8Ph &8&X&"4(0P"p(*&"8` h x "  >< " > <@ X "` >h <  "       "     ( 0 8 @ "H  $P  ` h  p x  "        "       "   0 8 @ H P "X  $`  p x    "       "     "  ( @ H " P @X    f   0~(   " L  f "] ] @] ] h] (] P] ] x/Showing the form for generate the tessellations B@oh !d B@ !d        A@ d+Please, introduce a valid tessellation nameA@Dko@.Editing the options that appear in the comobox C@Clearing the listAdding items to the list 3-3/30/60C@({ 4-4/45/90C@6-6/30C@--------------------C@ 6-3-6/30/30C@ 6-4-3/30/30C@ 12-0,4/30/30C@ 4-3-3-4/90/90C@ 12-0,3/30/60C@ 8-0,4/45/90C@ F4-3/90/r15(2)4C@4-3,3-4,3/r90/r75(2)C@os6-3-3,3/r60/r41(2)C@ 4-3/90/r15(2)C@q C@Clearing the listAdding items to the list6-3-3/30/r46(3)C@ 6-3-3/30/60C@4-3,4-3,3-3,3/90/r23(4)C@ 4-3-3-3/90/90C@ 3-4-3/30/30C@12-3,4-3/30/30C@3-6-3/30/r30(2)C@6-3,6-3,3/90/r19(2)C@ 4L-3,3-3,4,3-4,3,3,4-0,3,4/90/90C@ 6-4-3-3/30/30C@4LB-3,4-3/90/r28(2)C@4-4,4-3,4-3,3/90/r7(3)C@ 6-4-3,3/30/30C@ 6-3,6/90/90C@ 12-0,3/45/90C@ 6-4-3,4/30/30C@ 6-3,4/90/90C@6-3,4/90/r70(2)C@ 12-6,4/30/60C@6-4-3,4-6/30/60C@q8 C@Clearing the list--- 2 TYPES OF VERTICES ----C@6-3-3-3/30/r71(4)C@3-4,3-3,3,3,4/90/90C@--- 3 TYPES OF VERTICES ----C@12-3,3,4-4,3,0,3/r90/r84(2)C@12-3,4,3,4-3,3,3,3/90/90C@)6-4,4-3,3,3,3-0,0,4,3,4-0,3,3,6-0,4/90/90C@4-3,3-3,4-4,3,3-0,3,4,3/90/90C@3-4-3,4-3,3,3/30/60C@6-4-3,4-6/30/60C@4-3,3-3,4-3,3/r90/r75(3)C@--- 7-UNIFORM ----C@12-6,4,3,3-0,3,0,3,4/90/r50(3)C@--- NOT FOUND ANYWHERE ELSE ---C@ Refer12-0,3,3,4-0,4,3-0,12/90/90C@"4-3,3-4,3-0,3/r90/r15(3)C@s carpq ( que h (athop8Action to do when choosing an option of ComboBox_Ex_Tessr !d !( Auto8Action to do when choosing an option of ComboBox_Ex_Tessnu !d !(o8Action to do when choosing an option of ComboBox_Ex_Tessua !d !(S.o8@ !bujo a'd'ko !lo hag'd'ko !>Ms'd'kox !o" ( un di'd@'k0o(@ !.,'d'ko !incluy'd'ko !al com'd'kpoh !dibujo'd@'k0o(@ B@ subcagoTestLaunchBrowserDialogTestGetRemoteFileA@o:For opening the web page information in an Autocad browser]]]0^http://www.tensegridad.es/Publications/Generation_and_nomenclature_of_tessellations_110326.htm' !    -Information about Generation of TessellationsSelect ContractCADDgroup7'ThqPoHHEFor opening the web page information in an the default user's browseres q]]^http://www.tensegridad.es/Publications/Generation_and_nomenclature_of_tessellations_110326.htm'LoShell.Application$. 4  B@.o0(Attribute VB_Name = "Form_Tess" " Bas0{4E6F4A6A-AF82-4BDA-B89F-0E6CABBAB09B}{E8E8DB84-C477-4200-8A09-345A97906A81} dGlobalSpaco False Cr@eatablPredeclaDIdTru BE`xpose0TemplateDerivCus tomizD Public miniBo@ol As eannumb Paxes A ColorauxLin lodePolygonCbText"OnlyInfoASub Show_() 'ing the f gen,er\Bt@el_i& . End wPiACommandButton_Accept_CckIf 5x. <> "" Thei GHid@GD-%, , , {, v, _?Eu, Pq, ll, IhEMsgBox "Ple{, introdu@oa v alid 1 nϠ`vA0IfL1 1User"'Act iv3?Edit1?optA<>at appearb@comoboxACWith :bMx_UniFC!.Cr '!e listG'Add!itemsX tob K.@I "3-3/3p0/60$b 4-4/45/96-6`-6-3 6-4#3s12-0,4@ 4`;B 8B !90/r15(2)4@,3-4,3/r!7!!36 41 !C$TG#AH2IaI I9(r468(3)fM3,#%A %23(4s :3 S-]G#1 r304,1r19s4L-P 0P ,0Q? /_ <4LB10801 7oB0(pA_7RC2o f $5/3dd);w !_;/r7T`6A't #oqL7P4Yk4Ye_2 `Q 2 TYPES OF VERTICR/38m "`b.r710E` & /13 2+*K84_&`--q0_"->30V\A1305] %$,/5UQP Q=_!_!?21E]Oa7-UNIFOunti @8`B b mm)~bjec)th F 0e%`j los H 8 %%i"para`ns Re pue s% t no de refe`B`v`xivo  ""0 @PPo]0 iB s an%`Fo0 8"" utoC% ~Pa% d Se%`B\CAB 835 A2 Modifi `Ref X x if0 dihiBp@0 py~T  R RX $ R 60 Th P 4 ZH "  \ ^8 .NF(Fp,  (>H6  TH  J 0 N8 . 2X   (  n 8 DX  > $ z 4  6   R $x  . 6      (  @  H   X  6H ( (  ( (8@ `px     0 , Z X@  .   6 ( 0 :@   " ZX ` " h dp   (D Vh 2  B   `( (    0@  .Pf   8 X`x      "  8    (@ BX 8  , \8l   8 H  "P dX  H 8 P `x    6 P  ` pK---------------------------------------------------------------------------K MACROS FOR BATCHING MANY FILES AND DOING THE SAME OPERATION TO ALL OF THEM =  ORIGINALLY DESIGNED FOR CHEPO -K---------------------------------------------------------------------------.Forcing to declare variables for saving memoryM The first step is to establish a reference to the Scripting runtime library.I In VBA, go to the Tools menu, choose References, and scroll to and check- the entry for "Microsoft Scripting Runtime".T Next, declare a module-level variable named FSO of type Scripting.FileSystemObject.]@ Funciona correctamenteV Esta macro coge todos los archivos .dwg de la carpeta en la que est el dibujo actualX y los abre uno a uno para insertarle todas las Referencias Externas que se especifique.]` nombre del archivo de referencia]x@Almacena la ruta del directorio en el que est el archivo activo]]7Nombre del arhivo en que se va recorriendo con la macro]7Nombre del arhivo en que se va recorriendo con la macro]]]0]P]h]]]list of folders and subfolders]For the trials in Valen6C:\Users\Valen\Dibujos_AutoCad\Proyecto_Chepo\Carpeta1'8-C:\Users\Valen\Dibujos_AutoCad\Proyecto_Chepo':~Path_Folder = "C:\Documents and Settings\ospite.DAPP\Documenti\CABO BOLADO SERGIO\11-335 Aurelia Bis\08-542 Modifiche Sett 11"MPath_XRef = "L:\Proj\2008\08-542\eng\work\Tavole Work\RIFERIMENTI\rilievo_2D"Rilievo_2D_04-2010.dwg'<Tracciato Esecutivo.dwg'>   6Esta macro coge todos los archivos .dwg de la carpeta F 8 Fuas como todas las subcarpetas includas en ella, los abre uno a uno para insertarle todas las Referencias Externas : F < F > FDy les aplica un color de visualizacin para cada Referencia Externa.$D'$ 8'" "$H'@(9Lista todas las carpetas y subcarpetas que hay en docpath J L N '&> Define los botones._Esta aplicacin se ejecutar con los archivos de Autocad de todas las subcarpetas que hay en : F " FDesea continuar? &$D'$ $ P El usuario eligi el botn No.ghd  El usuario eligi el botn S.k8hCierra el dibujo actual para que al abrirlo de nuevo no lo haga dos veces y lo haga como de solo lectura_close F B@R>MsgBox "Comprobar que ha cerrado el dibujo que estaba abierto"8Abre un dibujo nuevo pq si no el ThisDrawing no funciona T!V.,("acadiso.dwt")sNo s por qu pero si no se incluye una MsgBox despus de esta orden, abre el archivo original como solo lectura ?*Comprobar que ha creado nuevo dibujo vacoA@D0Ahora itera por todas las carpetas y subcarpetas B @ B$@'" "\*.dwg$~'(,)para listar slo archivos dwg del docPathArchivo = docPath & "\" & Arch(para recorrer el directorio archivos dwg (b#Bucle para recorrer los directorios ('*d "\ ('*k MsgBox "Arch: " & Arch & vbCr & "Archivo:" & Archivo & vbCr & "ThisDrawing.FullName:" & ThisDrawing.FullName & vbCr & "Son iguales?" * !X!TB@ Qaqu ejecuta las rdenes que se mandarn a cada uno de los archivos de la carpeta 0Dettaching all existing XRefs with the same name !Looking for XRef already existing 4 !Z4 iterate layers 4!\!Comparing the names of the blocks < 4! ^ 4B@`k > 4! ^ 4B@`kk 4 Attaching the Xrefs-attach F :\ < Fa F0,0,0 F1 F1 F0 F B@R-attach F :\ > Fa F0,0,0 F1 F1 F0 F B@R &Changing colors of layers of each Xref TracciatoA@b.;Cambia todas las capas que empiecen por Tracciato a color 7RilievoA@b.;Cambia todas las capas que empiecen por Rilievo a color 253_qsave B@R (ThisDrawing.SendCommand "_close " & vbCr B@B ~'((Obtiene siguiente entrada del directorio B0Parece que todo se ha realizado correctamente...A@D _closeall B@Ro`  TracciatoA@b&;Cambia todas las capas que empiecen por Tracciato a color 7RilievoA@b&;Cambia todas las capas que empiecen por Rilievo a color 253o ]Cambia el color a las capas que empiecen con el texto name_layer, aplicndoles el color_layer]] h'j 0 !l( iterate layers 0! j$ h ^[comparing names of layers-layer FC F f F 0! F B@Ri change colork8 0 F B@Rpara que termine la orden bieno ]X]p)R This is a Scripting.Folder object representing the folder named in TopFolderName.]]]] "'n<<< CHANGE TO YOUR FOLDER .k n %z.p'B !counter of folders and subfolderst('Originally, it was something like this:XListSubFolders OfFolder:=TopFolderObj, FoldersSubfolders:=FoldersSubfolders, i:=iI simplified it for this: p t BA@|(Total number of folders and subfolders: BA@D'x v t x F v$t'x v xA@D t'Hi8 2 This lists all subfolders of the OfFolder object.]] t'MsgBox "j = " & j ~! +t<FoldersSubfolders = FoldersSubfolders & vbCr & OfFolder.Path B 'B t @tH1MsgBox "Current folder : " & vbCr & OfFolder.Path&''''''''''''''''''''''''''''''''''''''V Here's the recursive part. For each subfolder of OfFolder, the procedure calls itself  ~! ^ListSubFolders OfFolder:=SubFolder, ' FoldersSubfolders:=FoldersSubfolders, i:=i  t BA@| o0] This procedure is independent and lists the subfolders in a folder, but no nested subfolders]]]]]]@C:\Users\Valen\Dibujos_AutoCad'3ENTER YOUR START FOLDER HERE  %z.p  !A@ B 'B  @ ! B+  F !' .optional, I supposeTotal sub folders in  :  BA@D A@DoAttribute VB_Name = "Module1" '-G MACROS FOR BATCHINGNY FILES AND DOTHE SAME OPERATION TO ALL OF MM@ORIGINY DESIGNEDZCHEPO J Option Explicit 'Forcing to declare variables for savmemory  YThe first step isestish a reference tScri<3 runtili@brary.'InA, goTools menu, choose R)s, and scro llcheckAentry/"Mi sofTt R "Next,>a m-levelFB n@d FSO of type.FileSy@BmObjectA Dim AsX ASPrivaSub Insert_@:X_with_Colors()6Funcna corr@$nteAE@^X ma:g\dos larchiv.dwg 9 larpe ta enAque @n @;djo actua*lybun Apara iB*arlBa@ EhiExtern@oesp`ecifiG GA'@ H@'nomAd@#.A-iadocPath Al enaaruAdi%orio`  @$ conAOpcsM@sgBox1A( N, a v_A4iendo2,3  3 m !N AcadDocuftc objLayerFBlockECa+_FoldSb3HX=K __1W2MListOfC c\ 'l@mfesC~ubiI`ger"V  aia`len IC:\U@ms\V\D_s_AutoCad\Proy lo_Chepo\C#fa?@j6#Setts\ospite.DAPP\Ei\CABO BOLADO SERGIO\11-335 Aurelia Bis\08-542. n 1b L:Aj\2008\eng\work\Tavo{WaRIFERIMENTI\rilievo_2D@> "Rf_04-2010 2Traccia`Esecuta8 Aq@p(" 0sSQ{i,1 To UBound(B/q1u3= (i83⚠irH`6"\ 7"*Qb") 'RZA!s)d`l1N3 'j ;sR{@!r3& 'DPo Wh ! <> "" 'Bucx0/)?a By" ߱B!c "t/Q1AochCF:!QXQ? Brs7awing.FullName:" & ThisDr XvbCr"Son iguales?"   rApplication.Documents.Open Ar`chivo v 'aqu ejecuta las rdenes que se mandarn a cada uno de los a^srpeta _ q DettaLng all exist XRefs with tfh= n Lookfor"ready$ FE7 objBlock In s ' iteratmayeLrs"cIf!.IsV#en'ComparVh2s ofB7b"0 =P Str(_1_1,G!A, @vbTexte)$EB.@b@F0End If)2?)>)/NJO5K8'AƧmXrKSend^p "-aDPathnA\H9`}ah"0, 10%?y? '2??r+@'Changaccolorcl"oAd.e!v!/cae_"_ 7, "Tracciato" 'Cambia tod`cap empiecp`f! 7~ 253 Riliev g $& k J_qsPave ̿'c6 C!Dir 'Obti s radel directorni' pBqic MsgBox "PaebE 8oha lizado cor nte...# !!Sub Priva #FJ()%MMM?N o&/-/-r o&3[o a(y5Asrteger,Rx6`St!mP-77cPtWo, ando@ uQ DimZLqA MA lengUu I!P = Len(P  B",pLeft(k2.T, ^){h #'c Qc)o/mThQa@"CI&¦* C '#"@7Zs$tr8qm'0a#=ermin oQ bC(*Func L`_F_SF(do>cat 'A TopFolderC7rObjcrip.s i SLa HpresN՜fc2,d i i.C3sSubs()O m iA+ k_1txt?q= '<<< CHANGE TO YOUR FOL8DERsS,FSO Is Not:hT(1Set = NewileSystem@" =.Get^( p9Acig1i(ou=rၤ !sReo1:'OriЇa$y, wUsomeClike`is:3'( TH Of:=) ,| _ @ :f=.:=6pQ'I`um@Qfie`%t Q0 |  vTotal numbes: CDa'=\ "taSkT o (UBd()DQfG(kFk: SA@~(E5 +(6@,  <QT<'@&is lists all subfolders of the OfF@ object. $Dim SubPAs Scrip`ting.& Tj DInteger2U j = UBound(Bs`)&'Ms@gBox "/"0 & j7(j)U.PathI & vb,Cr4#ii H+ 1,RePreserve )(s#vCur rent :n |Kr'" @Here'sr@ecursi0part.@2r eachGF, procedure cs itselfForL EǏIn.Fs 'L :=, _ N_:=, i:=i HpNextGELnd AP@rivate (' ThGUindepe@aCHin aċ, but no nesteda$UFStNew F ileSy@mOB#c$Pycg&${i* Fs()Str@G `txtSF  cs zp"C:\U@ns\Valen\Dibujos_AutoCad" 'ENTER YOUR START FOLD HEREE!@Set FS=@.Get ( t~0S^ R^DoEv~`'),hia.Name-#0= f_# al*Noth)/NJO5K8'AƧmXrKSend^p "-aDPathnA\H9`}ah"0, 10%?y? '2??r+@'Changaccolorcl"oAd.e!v!/cae_"_ 7, "Tracciato" 'Cambia tod`cap empiecp`f! 7~ 253 Riliev g $& k J_qsPave ̿'c6 C!Dir 'Obti s radel directorni' pBqic MsgBox "PaebE 8oha lizado cor nte...# !!Sub Priva #FJ()%MMM?N o&/-/-r o&3[o a(y5Asrteger,Rx6`St!mP-77cPtWo, ando@ uQ DimZLqA MA lengUu I!P = Len(P  B",pLeft(k2.T, ^){h #'c Qc)o/mThQa@"CI&¦* C '#"@7Zs$tr8qm'0a#=ermin oQ bC(*Func L`_F_SF(do>cat 'A TopFolderC7rObjcrip.s i SLa HpresN՜fc2,d i i.C3sSubs()O m iA+ k_1txt?q= '<<< CHANGE TO YOUR FOL8DERsS,FSO Is Not:hT(1Set = NewileSystem@" =.Get^( p9Acig1i(ou=rၤ !sReo1:'OriЇa$y, wUsomeClike`is:3'( TH Of:=) ,| _ @ :f=.:=6pQ'I`um@Qfie`%t Q0 |  vTotal numbes: CDa'=\ "taSkT o (UBd()DQfG(kFk: SA@~(E5 +(6@,  <QT<'@&is lists all subfolders of the OfF@ object. $Dim SubPAs Scrip`ting.& Tj DInteger2U j = UBound(Bs`)&'Ms@gBox "/"0 & j7(j)U.PathI & vb,Cr4#ii H+ 1,RePreserve )(s#vCur rent :n |Kr'" @Here'sr@ecursi0part.@2r eachGF, procedure cs itselfForL EǏIn.Fs 'L :=, _ N_:=, i:=i HpNextGELnd AP@rivate (' ThGUindepe@aCHin aċ, but no nesteda$UFStNew F ileSy@mOB#c$Pycg&${i* Fs()Str@G `txtSF  cs zp"C:\U@ns\Valen\Dibujos_AutoCad" 'ENTER YOUR START FOLD HEREE!@Set FS=@.Get ( t~0S^ R^DoEv~`'),hia.Name-#0= f_# al*Noth\pZBS.>x\pZBS.>A+@ď B:ME(SLSS6"N0{D70E31AD-2614-49F2-B0FC-ACA781D81F3E} (%H` % %`h8@0y~T$*\Rffff*0@547dc7c64xAttribute VB_Name = "ThisDrawing" Bas0{D70E31AD-2614-49F2-B0FC-ACA781D81F3E} |@GlobalSpacFalse dCreatablPredeHclaIdTru BExposeTemplateDerivBustomizD2RemoveDuplicatePointsFindDuplicatePointsDeleteDuplicatePoints $$ SelectionSet1 point $ entities selected[P`hRemoveDuplicatePointsFindDuplicatePointsDeleteDuplicatePoints $$ SelectionSet1 point $ entities selected[