digraph G {
	graph [bgcolor=black];	/* set background */
	edge [color=white];
	graph[page="8.5,11",size="7.5,7",ratio=fill,center=1];
	node[style=filled,label=""];
	subgraph ds3CTP {
		rank = same;
		node[shape=box,color=green];
		ds3CTP_1_1;
		ds3CTP_1_2;
		ds3CTP_5_1;
		ds3CTP_5_2;
	}
	subgraph t3TTP {
		rank = same;
		node[shape=invtriangle,color=red];
		t3TTP_1_1;
		t3TTP_5_2;
	}
	subgraph vc3TTP {
		rank = same;
		node[shape=invtriangle,color=red];
		vc3TTP_1_2;
		vc3TTP_5_1;
	}
	subgraph fabric {
		rank = same;
		node[shape=hexagon,color=blue];
		fabric_1_2;
		fabric_4_1;
		fabric_5_1;
	}
	subgraph xp {
		rank = same;
		node[shape=diamond,color=blue];
		xp_1_2;
		xp_4_1;
		xp_5_1;
	}
	subgraph au3CTP {
		rank = same;
		node[shape=box,color=green];
		au3CTP_1_2;
		au3CTP_4_1;
		au3CTP_4_2;
		au3CTP_5_1;
	}
	subgraph aug {
		rank = same;
		node[shape=invtrapezium,color=pink];
		aug_1_2;
		aug_4_1;
		aug_4_2;
		aug_5_1;
	}
	subgraph protectionTTP {
		rank = same;
		node[shape=invtriangle,color=red];
		prTTP_1_2;
		prTTP_4_1;
		prTTP_4_2;
		prTTP_5_1;
	}
	subgraph protectionGroup {
		rank = same;
		node[shape=hexagon,color=blue];
		pg_1_2;
		pg_4_1;
		pg_4_2;
		pg_5_1;
	}
	subgraph protectionUnit {
		rank = same;
		node[shape=diamond,color=blue];
		pu_1_2;
		pu_4_1;
		pu_4_2;
		pu_5_1;
	}
	subgraph protectionCTP {
		node[shape=box,color=green];
		prCTP_1_2;
		prCTP_4_1;
		prCTP_4_2;
		prCTP_5_1;
	}
	subgraph msTTP {
		rank = same;
		node[shape=invtriangle,color=red];
		msTTP_1_2;
		msTTP_4_1;
		msTTP_4_2;
		msTTP_5_1;
	}
	subgraph msCTP {
		rank = same;
		node[shape=box,color=green];
		msCTP_1_2;
		msCTP_3_1;
		msCTP_3_2;
		msCTP_4_1;
		msCTP_4_2;
		msCTP_5_1;
	}
	subgraph rsTTP {
		rank = same;
		node[shape=invtriangle,color=red];
		rsTTP_1_2;
		rsTTP_3_1;
		rsTTP_3_2;
		rsTTP_4_1;
		rsTTP_4_2;
		rsTTP_5_1;
	}
	subgraph rsCTP {
		rank = same;
		node[shape=box,color=green];
		rsCTP_1_2;
		rsCTP_2_1;
		rsCTP_2_2;
		rsCTP_3_1;
		rsCTP_3_2;
		rsCTP_4_1;
		rsCTP_4_2;
		rsCTP_5_1;
	}
	subgraph spiTTP {
		rank = same;
		node[shape=invtriangle,color=red];
		spiTTP_1_2;
		spiTTP_2_1;
		spiTTP_2_2;
		spiTTP_3_1;
		spiTTP_3_2;
		spiTTP_4_1;
		spiTTP_4_2;
		spiTTP_5_1;
	}
	subgraph me {
		rank = same;
		node[shape=box,peripheries=2];
		me_1;
		me_2;
		me_3;
		me_4;
		me_5;
	}
	subgraph client_server {
		edge[style=dotted,dir=none,weight=100];
		ds3CTP_1_1->t3TTP_1_1;
		ds3CTP_1_2->vc3TTP_1_2;
		au3CTP_1_2->aug_1_2->prTTP_1_2;
		prCTP_1_2->msTTP_1_2;
		msCTP_1_2->rsTTP_1_2;
		rsCTP_1_2->spiTTP_1_2;
		rsCTP_2_1->spiTTP_2_1;
		rsCTP_2_2->spiTTP_2_2;
		msCTP_3_1->rsTTP_3_1;
		rsCTP_3_1->spiTTP_3_1;
		msCTP_3_2->rsTTP_3_2;
		rsCTP_3_2->spiTTP_3_2;
		au3CTP_4_1->aug_4_1->prTTP_4_1;
		prCTP_4_1->msTTP_4_1;
		msCTP_4_1->rsTTP_4_1;
		rsCTP_4_1->spiTTP_4_1;
		au3CTP_4_2->aug_4_2->prTTP_4_2;
		prCTP_4_2->msTTP_4_2;
		msCTP_4_2->rsTTP_4_2;
		rsCTP_4_2->spiTTP_4_2;
		ds3CTP_5_1->vc3TTP_5_1;
		au3CTP_5_1->aug_5_1->prTTP_5_1;
		prCTP_5_1->msTTP_5_1;
		msCTP_5_1->rsTTP_5_1;
		rsCTP_5_1->spiTTP_5_1;
		ds3CTP_5_2->t3TTP_5_2;
	}
	subgraph trail {
		edge[style=dashed,dir=none];
		vc3TTP_1_2->vc3TTP_5_1;
		prTTP_1_2->prTTP_4_1;
		prTTP_4_2->prTTP_5_1;
		msTTP_1_2->msTTP_4_1;
		msTTP_4_2->msTTP_5_1;
		rsTTP_1_2->rsTTP_3_1;
		rsTTP_3_2->rsTTP_4_1;
		rsTTP_4_2->rsTTP_5_1;
		spiTTP_1_2->spiTTP_2_1;
		spiTTP_2_2->spiTTP_3_1;
		spiTTP_3_2->spiTTP_4_1;
		spiTTP_4_2->spiTTP_5_1;
	}
	subgraph contain {
		pu_1_2->pg_1_2;
		pu_4_1->pg_4_1;
		pu_4_2->pg_4_2;
		pu_5_1->pg_5_1;
		xp_1_2->fabric_1_2;
		xp_4_1->fabric_4_1;
		xp_5_1->fabric_5_1;
		fabric_1_2->me_1;
		fabric_4_1->me_4;
		fabric_5_1->me_5;
		pg_1_2->me_1;
		pg_4_1->me_4;
		pg_4_2->me_4;
		pg_5_1->me_5;
		t3TTP_1_1->me_1;
		t3TTP_5_2->me_5;
		vc3TTP_1_2->me_1;
		vc3TTP_5_1->me_5;
		prTTP_1_2->me_1;
		prTTP_4_1->me_4;
		prTTP_4_2->me_4;
		prTTP_5_1->me_5;
		msTTP_1_2->me_1;
		msTTP_4_1->me_4;
		msTTP_4_2->me_4;
		msTTP_5_1->me_5;
		rsTTP_1_2->me_1;
		rsTTP_3_1->me_3;
		rsTTP_3_2->me_3;
		rsTTP_4_1->me_4;
		rsTTP_4_2->me_4;
		rsTTP_5_1->me_5;
		spiTTP_1_2->me_1;
		spiTTP_2_1->me_2;
		spiTTP_2_2->me_2;
		spiTTP_3_1->me_3;
		spiTTP_3_2->me_3;
		spiTTP_4_1->me_4;
		spiTTP_4_2->me_4;
		spiTTP_5_1->me_5;
	}
	subgraph connectedBy {
		vc3TTP_1_2->fabric_1_2;
		au3CTP_1_2->fabric_1_2;
		au3CTP_4_1->fabric_4_1;
		au3CTP_4_2->fabric_4_1;
		vc3TTP_5_1->fabric_5_1;
		au3CTP_5_1->fabric_5_1;
		prTTP_1_2->pg_1_2;
		prTTP_4_1->pg_4_1;
		prTTP_4_2->pg_4_2;
		prTTP_5_1->pg_5_1;
		prCTP_1_2->pg_1_2;
		prCTP_4_1->pg_4_1;
		prCTP_4_2->pg_4_2;
		prCTP_5_1->pg_5_1;
	}
	subgraph crossConnection {
		edge[style=dotted,dir=none];
		vc3TTP_1_2->xp_1_2->au3CTP_1_2;
		prTTP_1_2->pu_1_2->prCTP_1_2;
		prTTP_4_1->pu_4_1->prCTP_4_1;
		au3CTP_4_1->xp_4_1->au3CTP_4_2;
		prTTP_4_2->pu_4_2->prCTP_4_2;
		prTTP_5_1->pu_5_1->prCTP_5_1;
		vc3TTP_5_1->xp_5_1->au3CTP_5_1;
	}
	subgraph bindingConnection {
		edge[style=bold,dir=none,weight=100];
		ds3CTP_1_1->ds3CTP_1_2;
		vc3TTP_1_2->au3CTP_1_2;
		prTTP_1_2->prCTP_1_2;
		msTTP_1_2->msCTP_1_2;
		rsTTP_1_2->rsCTP_1_2;
		rsCTP_2_1->rsCTP_2_2;
		rsTTP_3_1->rsCTP_3_1;
		msCTP_3_1->msCTP_3_2;
		rsTTP_3_2->rsCTP_3_2;
		prTTP_4_1->prCTP_4_1;
		msTTP_4_1->msCTP_4_1;
		rsTTP_4_1->rsCTP_4_1;
		au3CTP_4_1->au3CTP_4_2;
		prTTP_4_2->prCTP_4_2;
		msTTP_4_2->msCTP_4_2;
		rsTTP_4_2->rsCTP_4_2;
		prTTP_5_1->prCTP_5_1;
		msTTP_5_1->msCTP_5_1;
		rsTTP_5_1->rsCTP_5_1;
		ds3CTP_5_1->ds3CTP_5_2;
		vc3TTP_5_1->au3CTP_5_1;
	}
}
