Hierarchies and trees are a challenge in SQL. 
This is an example of a very simple tree
/col>/col>/>/col>/>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/col>/>/col>/>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/col>/>/col>/>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>
| Parent ID 
 | ID 
 | Name 
 | 
| 
 | 0001 
 | Earth 
 | 
| 0001 
 | 0002 
 | EU 
 | 
| 0001 
 | 0003 
 | USA 
 | 
| 0002 
 | 0004 
 | UK 
 | 
| 0002 
 | 0005 
 | France 
 | 
| 0004 
 | 0006 
 | England 
 | 
| 0006 
 | 0007 
 | Yorkshire 
 | 
This looks like 
Earth
  EU
    France
    UK
      England
        Yorkshire
  USA
The table structure above will work very well in most cases. It's very easy to select the parent of an item and select the children of an item. You can easily add new items or delete items. You get problems when you need to find things like all the decedents of an item.
You can use CTE (common table expressions) but under heavy load and with lots of data it just does not work.
We looked at the nested model. This does not work with simple deletes and inserts. (
http://www.developersdex.com/gurus/articles/112.asp )
The final approach we took was to add an incremental number to our table and a row path column. As follows :
Row bitint
RowPath varbinary(160)
When we generate the rowpath we pad it with zeros so each row number starts at the same place. We do not use delimiters we used fixed spaces.
This is a simple representation of how the table will look. This is simple as I am just padding the rowpath with 2 zeros (not 16). 
/col>/col>/>/col>/>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/col>/>/col>/>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/col>/>/col>/>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/col>/>/col>/>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/col>/>/col>/>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/col>/>/>>/>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>>/>
| Row 
 | Parent ID 
 | ID 
 | Name 
 | RowPath 
 | 
| 1 
 | 
 | 0001 
 | Earth 
 | 01 
 | 
| 2 
 | 0001 
 | 0002 
 | EU 
 | 0102 
 | 
| 3 
 | 0001 
 | 0003 
 | USA 
 | 0103 
 | 
| 4 
 | 0002 
 | 0004 
 | UK 
 | 010204 
 | 
| 5 
 | 0002 
 | 0005 
 | France 
 | 010205 
 | 
| 6 
 | 0004 
 | 0006 
 | England 
 | 01020406 
 | 
| 7 
 | 0006 
 | 0007 
 | Yorkshire 
 | 0102040607 
 | 
This is an example of how the data looks in SQL with it padded with 16 zeros.
0x0000000000000795
0x00000000000007950000000000000796
0x0000000000000797
0x00000000000007970000000000000798
0x000000000000079700000000000007980000000000000799
0x00000000000007970000000000000798000000000000079A
0x00000000000007970000000000000798000000000000079B
To get the child items, then we need to run the following SQL : 
@path is the path that we need to find the child items from
@pathplusone is our path plus one, see the function below for how to increment this.
Select Name from Table where RowPath > @path and RowPath < @pathplusone
We increment the path with the following SQL
CREATE FUNCTION [dbo].[IncrementRowPath]
(
    @VarBinary VARBINARY(160) = 0x0000000000000000
)
RETURNS VARBINARY(160)
AS
BEGIN
    DECLARE @Result    VARBINARY(160)
    -- If the data is the wrong size.
    IF(@VarBinary IS NULL OR DATALENGTH(@VarBinary) % 8 != 0)
        SET @Result = 0x0000000000000000
    -- Increment the last 8 byte segment.
    ELSE
    BEGIN
        DECLARE @LastSegment BIGINT
        SET @LastSegment = CAST(SUBSTRING(@VarBinary, DATALENGTH(@VarBinary) - 7, 8) AS BIGINT)
        SET @Result = SUBSTRING(@VarBinary, 1, DATALENGTH(@VarBinary) - 8) + CONVERT(VARBINARY(8), @LastSegment + 1)
    END
    RETURN @Result
END
I hope this helps you out with trees.
The only issue is that you need and index on rowpath, this index is going to be large, but in our testing and our live implementations it's not caused an issue.
 
This is really really great!!!! I had to stumble across something like the first exmaple in the past, it works, however, this is much much better.
ReplyDelete