#####################################
#  Eclipse¿Í CVSÅëÇÑ Team Project ÁøÇà                        # 
#####################################

ÀÛ¼ºÀÚ : ÀåÇüÈ­(hhjang97@venus.uos.ac.kr)
ÀÛ¼ºÀÏ : 2005. 08. 03 
¼öÁ¤ÀÏ : 

¿øº» : ÀÎÅÍ³Ý ¾îµò°¡¿¡¼­ ÁÖ¿ö ¿ÔÀ½
¼³¸í :


################################# ################################# #################################

¢Ì CVS & Eclipse ¿¬µ¿ ÀÛ¾÷Çϱâ
   - Eclipse³»¿¡ CVS Ŭ¶óÀ̾ðÆ® ³»ÀåµÇ¾î ÀÖÀ½

1. CVS RepositoryÀÇ µî·Ï
   - [Window --> Open Perspective --> CVS Repository Exploring] ¼±ÅÃÇÑ ÈÄ [Add CVS Repository...]À» Ŭ¸¯ÇÕ´Ï´Ù.
   - Host: 192.168.1.11
   - Repository path: D:\CVSRepository
   - User: cvsid
   - Password: dev1001
   - Connection Type: pserver
   - use port: 2401

 

2. eclipse·Î importÇϱâ
   - CVS ¼­¹ö·Î ¿Ã¸®´Â °ÍÀ» ¸»ÇÑ´Ù.
   - [File --> New --> Java Project]¸¦ ¼±ÅÃÇÕ´Ï´Ù.
   - Project name: cvsTest·Î ÁöÁ¤ÇÕ´Ï´Ù.
   - cvsTest¸¦ ¼±ÅÃÇÏ°í [New --> class]¸¦ ¼±ÅÃÇÕ´Ï´Ù.
   - Package: cvsTest
   - Name: HelloCVS
   - public static void main()¼±ÅÃÇÏ°í Finish¸¦ ¼±ÅÃÇÕ´Ï´Ù.
   - ¾Æ·¡ÀÇ ¼Ò½º¸¦ ÀÔ·ÂÇÕ´Ï´Ù.

package cvsTest;

public class HelloCVS {

 public static void main(String[] args) {
  System.out.println("192.168.1.11¿¡¼­ ¼öÁ¤µÈ ¼Ò½ºÀÔ´Ï´Ù. - ¿Õ´«ÀÌ");
 }
}

- ¼Ò½º ÀÔ·ÂÀÌ ÀüºÎ ³¡³ª¸é ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÏ°í [Team -- Shsre Project]¸¦ ¼±ÅÃÇÕ´Ï´Ù.
- ±âÁ¸¿¡ µî·ÏµÈ Repository¸¦ »ç¿ëÇϱâ·Î ÇÕ´Ï´Ù.
- module¸íÀ» ÀÔ·ÂÇÏ´Â È­¸éÀÌ ³ª¿À´Âµ¥ "Use project name as module name"À» ¼±ÅÃÇÕ´Ï´Ù.
  ÀÌ ¼±ÅÃÀº ÇÁ·ÎÁ§Æ® À̸§°ú ¸ðµâÀ̸§À» °°°Ô ÇÏ°Ú´Ù´Â °ÍÀÔ´Ï´Ù.[Finish] ¹öÆ°À» Ŭ¸¯Çϸé 󸮰¡ ¿Ï·áµË´Ï´Ù.
- CVS Repository Exploring Perspective¸¦ ¼±ÅÃÇÏ°í ´ÙÀ½À» Ŭ¸¯ÇÕ´Ï´Ù.
- [HEAD]³ëµå¿¡ º¸¸é cvsTest¶õ ÇÁ·ÎÁ§Æ®°¡ µî·ÏµÈ °ÍÀÌ º¸ÀÔ´Ï´Ù. º¸ÀÌÁö ¾ÊÀ¸¸é [Refresh View]¸¦ ¼±ÅÃÇÕ´Ï´Ù.

 

   
¢Ì Update(down)
   - Update´Â ¼­¹ö¿¡¼­ ÃÖ½ÅÀÇ ¼Ò½º¸¦ °¡Á®¿À´Â °ÍÀ» ¸»ÇÑ´Ù.
   - [Team --> Update]¸Þ´º¸¦ ¼±ÅÃÇÏ¸é ¹ß»ýÇÏ´Â »óȲ
     . ¼Ò½º Ãæµ¹ÀÌ ¾øÀ» ¶§: ·ÎÄÿ¡ ÀÖ´Â ¼Ò½º°¡ º¯°æµÇÁö ¾ÊÀº »óȲÀ¸·Î, ÆÄÀÏÀÌ ÀÚµ¿À¸·Î CVS¼­¹öÀÇ ³»¿ëÀ¸·Î º¯°æµÈ´Ù.
     . ÀÚµ¿ º´ÇÕ(merge)ÀÌ ¹ß»ýÇÒ ¶§: µ¿½Ã¿¡ °°Àº ¸®ºñÀü(revision)ÀÇ asciiÆÄÀÏÀ» commitÇÏ·Á ÇÒ ¶§ ¼­·Î º¯°æÇÑ ³»¿ëÀÌ
       ´Ù¸¥ ÁÙÀÇ °ÍÀ» °íÄ£ °æ¿ì ÀÚµ¿À¸·Î º´ÇյȴÙ.
     . ºñ º´ÇÕ Ãæµ¹ÀÌ ¹ß»ýÇÒ ¶§: µ¿½Ã¿¡ °°Àº ¸®ºñÀü(revision)ÀÇ asciiÆÄÀÏÀ» commitÇÏ·Á ÇÒ ¶§ °°Àº ÁÙÀÇ ³»¿ëÀ» °íÄ£
       °æ¿ì¿¡ ÀÚµ¿À¸·Î º´ÇÕµÇÁö ¾Ê°í Ãæµ¹ÀÌ ¹ß»ýÇß´Ù´Â ¸Þ¼¼Áö°¡ Ãâ·ÂµÈ´Ù.

1. [Team --> Update]¸Þ´º¸¦ ¼±ÅÃÇؼ­ ¹ß»ýÇÏ´Â »óȲÀÇ Ã³¸®
   - ¼Ò½º ºñ Ãæµ¹, ÀÚµ¿ º´ÇÕ »óȲ: ¾Æ¹«·± ¿¡·¯ ¸Þ¼¼Á¦ ¾ø´Â ÀϹÝÀûÀÎ update°¡ ¹ß»ýÇÑ´Ù. 
   - ºñ º´ÇÕ Ãæµ¹ »óȲ(°°Àº ÁÙÀÇ ¼Ò½º¸¦ 2°÷À̻󿡼­ ¼öÁ¤ÇÑ °æ¿ì)
     . ASCII: ·ÎÄà ¸®¼Ò½º°¡ CVS ¸¶Å©¾÷ ÅؽºÆ®¸¦ »ç¿ëÇÏ¿© º´ÇÕ
     . binary: ·ÎÄà ¸®¼Ò½º°¡ ".#'ÆÄÀÏ·Î º¯°æµÇ¸é¼­ ¼­¹ö·ÎºÎÅÍ ÆÄÀÏÀ» ´Ù¿î·ÎµåÇÑ´Ù. ÀÌ ¶§´Â ¼öÁ¤µÈ ºÎºÐÀ» Àç ÆíÁýÇÑ´Ù.


2. [Window --> Show View --> Synchronize]¸¦ ¼±ÅÃÇϸé È­¸é ÇÏ´Ü¿¡ "Synchronize View"È­¸éÀÌ Ãâ·ÂµË´Ï´Ù.
   ¼±ÅÃÇÑ ¼Ò½º¸¦ Ŭ¸¯ÇÏ°í [Team --> Synchronize with Repository]¸¦ ¼±ÅÃÇÕ´Ï´Ù.
   "Update"¸¦ À§ÇØ ¸ðµå¸¦ "Incomming Mode"·Î º¯°æÇÕ´Ï´Ù.
   Update¹æ¹ýÀº 2°¡Áö·Î ³ª´©¾î Áý´Ï´Ù.
   - Update from Repository: ºñ Ãæµ¹ »óȲÀÇ ¼Ò½ºÀÎ °æ¿ì updateµÈ´Ù.
   - Override and Update: ÀÚµ¿º´ÇÕ°ú ºñº´ÇÕÀÎ °æ¿ì¿¡ »ç¿ëÇÏ´Â ¸Þ´º·Î ´ÙÀ̾ó·Î±×â¿¡ ÀÚµ¿À¸·Î º´ÇÕÇÒÁö ¾Æ´Ï¸é
     µ¤¾î¾²±â ÇÒÁöÀÇ ¿©ºÎ¸¦ ¹¯´Â´Ù. ÀÚµ¿À¸·Î º´ÇÕÀ» ¼±ÅÃÇÏ¸é ¼Ò½º°¡ ÀÚµ¿À¸·Î º´ÇÕµÇ¾î ·ÎÄüҽº°¡ º¯°æµÇ°í, µ¤¾î¾²±â¸¦
     ¼±ÅÃÇÏ¸é ·ÎÄà ¼Ò½º°¡ ¸ðµÎ ¼­¹öÀÇ ¼Ò½º·Î ´ëüµÊÀ¸·Î ÁÖÀÇÇØ¾ß ÇÑ´Ù.

 


¢Ì »õ·Î¿î °³¹ßÀÚ°¡ Ãß°¡µÇ´Â °æ¿ì

1. CVS RepositoryÀÇ µî·Ï
   - [Window --> Open Perspective --> CVS Repository Exploring] ¼±ÅÃÇÑ ÈÄ [Add CVS Repository...]À» Ŭ¸¯ÇÕ´Ï´Ù.
   - Host: 192.168.1.11
   - Repository path: D:\CVSRepository
   - User: cvsid
   - Password: dev1001
   - Connection Type: pserver
   - use port: 2401


1. [CVS Repository Exploring Perspective]¿¡¼­ [HEAD]³ëµå¿¡¼­ ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÏ°í [Check Out As Project]¸¦ Ŭ¸¯ÇÕ´Ï´Ù.
   ¿©±â¼­´Â cvsTest¸¦ ´ë»óÀ¸·Î ÇÕ´Ï´Ù.
   . CheckoutÀº ¼­¹ö¿¡ ÀÖ´Â ÆÄÀÏÀ» Local·Î °¡Á®¿À´Â ÀÛ¾÷ÀÌ´Ù.
   . »õ·Î¿î °³¹ßÀÚ°¡ °³¹ß¿¡ Âü¿©ÇÒ °æ¿ì, ¸Ç óÀ½ Local PC¿¡ ±×µ¿¾È ÀÛ¾÷ÇÑ ¼Ò½º¸¦
     ¹Þ¾Æ¿Ã ¶§ óÀ½ ½ÇÇàÇÑ´Ù.


2. Àá½Ã ÈÄ D:\eclipse2\workspace\cvsTestÆú´õ°¡ »ý¼ºµÇ°í ¼Ò½º°¡ ´Ù¿îµË´Ï´Ù. ÀÛ¾÷À» ½ÃÀÛÇÕ´Ï´Ù.

 


¢Ì ¼Ò½º¸¦ ¼öÁ¤ÇÑ ÈÄ commit½ÇÇàÇϱâ
   - ¼öÁ¤ÇÑ ¼Ò½º¸¦ CVS¼­¹ö·Î Àü¼ÛÇؼ­ ´Ù¸¥ ÆÀ¿ø°ú °øÀ¯ÇÏ´Â ±â´ÉÀÔ´Ï´Ù.

1. [Team --> Commit]¸¦ ¼±ÅÃÇÕ´Ï´Ù.
   - commit½Ã¿¡ commit comment¸¦ ´Þ¾ÆµÎ¸é ÁÁ½À´Ï´Ù.
   - commit½Ã ¹ß»ýÇÏ´Â Ãæµ¹À» ÃÖ¼ÒÈ­Çϱâ À§ÇØ Ç×»ó ÃÖ½ÅÀÇ ¼Ò½º·Î ¾÷µ¥ÀÌÆ®ÇÏ¿´´Ù°¡ ¼öÁ¤ÇÏ¿© commitÇÑ´Ù.
   - ¼Ò½º¸¦ ¼öÁ¤ÇϱâÀü¿¡ Ç×»ó update¸¦ ¸ÕÀú ÇÑÈÄ commitÀ» ¼öÇàÇÑ´Ù.
   - ¸¸¾à »õ·Î¿î ÆÄÀÏÀ̶ó¸é 'Add to CVS Version Control'âÀÌ ¶ß¸ç'Add'ÇØÁÖ¸éµÈ´Ù.
 

2. [Team --> Synchronize View]¿¡¼­ 'Outgoing mode'·Î ¼±ÅÃÇÏ°í [commit]À» ¼±ÅÃÇÕ´Ï´Ù.


3. 'commit'Àü¿¡ ¼Ò½º¸¦ ºñ±³Çغ¸°í ½ÍÀ¸¸é [Show Content Comparison]À» Ŭ¸¯ÇÕ´Ï´Ù.
   ¼Ò½º¸¦ ºñ±³Çؼ­ ¼öÁ¤ÇÑ ÈÄ 'commit'À» ½ÇÇàÇÕ´Ï´Ù.


4. Ãæµ¹»óȲ¿¡¼­ update(down)¸¦ ½ÇÇàÇÏ¸é ¾Æ·¡¿Í °°Àº ¼Ò½º°¡ º¸ÀÔ´Ï´Ù.

package cvsTest;

public class HelloCVS {

 public static void main(String[] args) {
  System.out.println("eclipse 10:18");
<<<<<<< HelloCVS.java
  System.out.println("eclipse2 10:46");
  System.out.println("eclipse 10:47");  
=======
  System.out.println("eclipse2 10:46");
  System.out.println("eclipse2 10:48");
>>>>>>> 1.4
 }
}


'======='ºÎºÐÀ» ±âÁØÀ¸·Î À­ ºÎºÐÀº ÇöÀç ÆíÁý±âÀÇ ¼Ò½ºÀÌ°í ¾Æ·¡ÂÊÀº ¼­¹ö¿¡¼­ µé¾î¿Â ¼Ò½ºÀÔ´Ï´Ù.
¼Ò½º¸¦ ¾Æ·¡¿Í °°ÀÌ ÆíÁýÇÕ´Ï´Ù.

package cvsTest;

public class HelloCVS {

 public static void main(String[] args) {
  System.out.println("eclipse 10:18");
  System.out.println("eclipse2 10:46");
  System.out.println("eclipse2 10:48");
  System.out.println("eclipse 10:56");  
  
 }
}


[commit]À» ½ÇÇàÇÏ¸é ¼Ò½º°¡ ¼­¹ö¿¡ ¹Ý¿µµË´Ï´Ù.

 


¢Ì Delete

1. ·ÎÄà ÆÄÀÏÀÇ »èÁ¦
   - ÆÄÀÏÀ» ¼±ÅÃÇÏ°í [delete]¸¦ ÇÕ´Ï´Ù. ·ÎÄÃÀº Áö¿öÁöÁö¸¸ ¼­¹ö´Â Áö¿öÁöÁö ¾Ê½À´Ï´Ù.


2. ¼­¹ö¿¡ ÀÖ´Â ÆÄÀÏÀÇ »èÁ¦
   - ¼­¹öÀÇ ÆÄÀÏÀ» »èÁ¦ÇÏ·Á¸é ÇÁ·ÎÁ§Æ®³ª Æú´õ¸¦ ¼±ÅÃÇÏ°í [commit]À» Ŭ¸¯ÇÕ´Ï´Ù.
   - ÀÌ °æ¿ì ´Ù¸¥ °³¹ßÀÚ°¡ [update]¸í·ÉÀ» »ç¿ëÇϸé ÀÛ¾÷ÇÏ´ø ÆÄÀÏÀÌ »èÁ¦µÊÀ¸·Î ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. 


3. º¹¿ø
   - ÀÌ·¸°Ô »èÁ¦µÈ ÆÄÀÏÀ» º¹¿øÇÏ·Á¸é [Team --> Restore From Repository]À» Ŭ¸¯ÇÕ´Ï´Ù. ´ÙÀ̾ó·Î±×°¡ º¸ÀÔ´Ï´Ù.
   - º¹¿øÇÏ°í ½ÍÀº ÆÄÀÏÀ» ¼±ÅÃÇÏ°í ³»¿ëÀ» È®ÀÎ ÇÑ ÈÄ º¹¿øÇÕ´Ï´Ù.

 


¢Ì Source Conflict ÇØ°áÇϱâ

1. ¼­¹ö·Î commit½Ã Ãæµ¹À» ¾Ë°ÔµÇ´Â °æ¿ì´Â °°Àº ¼Ò½º¸¦ 2°÷ À̻󿡼­ update ¹Þ¾Æ °¢°¢ÀÇ ÇÁ·Î±×·¡¸Ó°¡ ¼Ò½º¸¦ ¼öÁ¤ÇÏ°í
   'Commit'ÇÏ´Â °úÁ¤¿¡¼­ ¹ß»ýÇÏ°Ô µÈ´Ù.
   ÀÌ ¶§ ÇÑ °³¹ßÀÚ´Â commitÀÌ ÀÌ·ç¾îÁö³ª ´ÙÀ½ °³¹ßÀÚ´Â commitÇÏ·Á¸é Ãæµ¹ÀÌ ¹ß»ýÇÑ´Ù.

¿øº»¼Ò½º:¿øº» ¼Ò½º¸¦ 2¸íÀÇ °³¹ßÀÚ°¡ °¢°¢ update(Down)¹Þ½À´Ï´Ù.
package cvsTest;

public class HelloCVS {

 public static void main(String[] args) {
  System.out.println("eclipse 10:18");
  System.out.println("eclipse2 10:46");
  System.out.println("eclipse2 10:48");
  System.out.println("eclipse 10:56");  
  
 }
}

 

°³¹ßÀÚ A: commitÀÌ Á¤»óÀûÀ¸·Î ÀÌ·ç¾î Áý´Ï´Ù.

package cvsTest;

public class HelloCVS {

 public static void main(String[] args) {
  System.out.println("eclipse 10:18");
  System.out.println("eclipse2 10:46");
  System.out.println("eclipse2 10:48");
  System.out.println("eclipse 10:56");  
  System.out.println("eclipse2 11:33");  
 }
}

 

°³¹ßÀÚ B: commitÇÏ·Á°í Çϸé Ãæµ¹ÀÌ ¹ß»ýÇÕ´Ï´Ù.
package cvsTest;

public class HelloCVS {

 public static void main(String[] args) {
  System.out.println("eclipse 10:18");
  System.out.println("eclipse2 10:46");
  System.out.println("eclipse2 10:48");
  System.out.println("eclipse 10:56");  
  System.out.println("eclipse 11:32");  
  
 }
}

 

À§¿Í °°ÀÌ Ãæµ¹ÀÌ ¹ß»ýÇÑ °æ¿ì [Team --> Synchronize with Repository]¸¦ Ŭ¸¯ÇÕ´Ï´Ù.
±×·¯¸é Synchronize View¿¡ Ãæµ¹ ¸ð¾çÀÇ »¡°£»ö ¾ÆÀÌÄÜÀÌ Ãâ·ÂµË´Ï´Ù.
Ãæµ¹ÀÌ ³ª´Â ÆÄÀÏÀ» ¼±ÅÃÇÏ°í [Show Content Comparison]À» Ŭ¸¯ÇÕ´Ï´Ù.
±×·¯¸é Ãæµ¹³ª´Â ¼Ò½º°¡ ¼­·Î ºñ±³µÇ¾î Ãâ·ÂÀÌ µË´Ï´Ù.


2. Ãæµ¹ ¹ß»ý½Ã »ç¿ëÇÒ¼ö ÀÖ´Â Åø¹ÙÀÇ ±â´ÉÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
   - Show Ancestor Panel: ÇöÀç º¸ÀÌ°í ÀÖ´Â È­¸éÀÔ´Ï´Ù.

   - Three way compare: Ãæµ¹ÀÌ ³­ ¼Ò½º¸¦ ±âº»À¸·Î 
     . Ãæµ¹ÀÌ ³ªÁö ¾ÊÀº ¹öÀü
     . ¸ÕÀú commitµÈ ¼Ò½º
     . ·ÎÄÿ¡¼­ commitÇÏ·Á´Â ¼Ò½º¸¦ º¸¿©ÁÝ´Ï´Ù.

   - Two way compare: Ãæµ¹³­ ¾ç ¼Ò½º¸¸ º¸¿©ÁÝ´Ï´Ù.

   - Copy whole document Left to Right: ¿ÞÂÊ ÆгÎÀÇ Àüü ¼Ò½º¸¦ ¿À¸¥ÂÊ ÆгηΠº¹»çÇÕ´Ï´Ù.
   
   - Copy whole document Right to Left: ¿À¸¥ÂÊ ÆгÎÀÇ Àüü ¼Ò½º¸¦ ¿ÞÂÊ ÆгηΠº¹»çÇÕ´Ï´Ù.

   - Copy current change from Left to Right: ¿ÞÂÊ Æгο¡¼­ º¯°æµÈ ºÎºÐ¸¸À» ¿À¸¥ÂÊ ÆгηΠº¹»çÇÑ´Ù.

   - Copy current change from Right to Left: ¿À¸¥ÂÊ Æгο¡¼­ ¿ÞÂÊ ÆгηΠº¯°æµÈ ºÎºÐ¸¸À» º¹»çÇÑ´Ù.

   - Select Next Difference: ¾çÂÊ ¼Ò½º°¡ ´Ù¸¥ ´ÙÀ½ ºÎºÐÀ¸·Î À̵¿ÇÏ¿© ¼±ÅÃÇÑ´Ù.

   - Select Previous Difference: ¾çÂÊ ¼Ò½º°¡ ´Ù¸¥ ÀÌÀüºÎºÐÀ¸·Î À̵¿ÇÏ¿© ¼±ÅÃÇÑ´Ù.

 

3. Ãæµ¹ÀÇ ÇØ°á¹æ¹ý
   - ¼­¹öÀÇ ¼Ò½º·Î ·ÎÄÃÀÇ ¼Ò½º¸¦ ±³Á¦ÇÑ´Ù.
   - ·ÎÄÃÀÇ ¼Ò½º·Î ¼­¹öÀÇ ¼Ò½º¸¦ ±³Ã¼ÇÑ´Ù.
   - ·ÎÄðú ¼­¹öÀÇ ¼Ò½º¸¦ º´ÇÕÇÑ´Ù.
   - Mode¸¦ Incoming/Outgoing Mode·Î ÀüȯÇÕ´Ï´Ù.

     System.out.println("eclipse 11:32"); ¿ÞÂÊ Æгο¡ ¹®ÀåÀ» Ãß°¡ÇÏ°í
     
     [Override and Commit...] À» Ŭ¸¯ÇÕ´Ï´Ù.
  
     º¯°æµÈ ¼Ò¸¦ ¹Ý¿µÇÒ°ÍÀÎÁö ¹¯´Â â¿¡¼­ [YES]¸¦ Ŭ¸¯ÇÕ´Ï´Ù.
     ¼­¹ö¿¡ ¸±¸®ÁîÇÒ °ÍÀÎÁö ¹¯´Â â¿¡¼­ [YES]¸¦ Ŭ¸¯ÇÕ´Ï´Ù.
     
   


¢Ì Branching
   - ¿øº» ¼Ò½º¸¦ º¸Á¸Çϸç ÆÐÄ¡¹öÀüÀ» Á¦ÀÛÇҽÿ¡ »ç¿ëÇÑ´Ù.

1. [Team --> Branch...]À» Ŭ¸¯ÇÑ´Ù.
   - Branch Name: HelloCVS
   - Version Name: Root_HelloCVS_1


 

¢Ì Tagging
   - ¼Ò½ºÀÇ ¹öÀü »ý¼º
   - ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÏ°í [Team --> Tag as Version]À» Ŭ¸¯ÇÑ´Ù.
   - ¿­¸° â¿¡¼­ [Details]À» ¼±ÅÃÇϸé Æ÷ÇԵǴ Branch°¡ º¸ÀÌ°Ô µË´Ï´Ù.
   - Ãß°¡°¡ ¿Ï·áµÇ¸é CVS Repository¿¡ Versions¿¡ Ãß°¡µÈ°ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.


 

¢Ì Merging
   - Branch¸¦ ÅëÇØ ¼öÁ¤µÈ ¼Ò½º¸¦ ¿øº» ¹öÀü¿¡ º´ÇÕÇÑ´Ù.
 


#################################
# 
#################################