awk '{if($1=="FILE:"){name=$2;max_order=0;npun=0;li=0}
      if($1=="max_order="){max_order=$2}
      if($1=="punctures.size()="){npun=$2}
      if($1=="puncture:"){
        li=li+1;x[li]=$4;y[li]=$5;z[li]=$6;
        getline;
        if($1=="loop"){sp="L;";sp=sp""$3;sp=sp";";sp=sp""$5;sp=sp";"}
                  else{sp="D;";sp=sp""$4;sp=sp";";sp=sp""$6;sp=sp";"}
        s1[li]=sp;sp="";
        getline;w[li]=NF/5;getline;getline
        if($3=="loop"){sp="L;";sp=sp""$5;sp=sp";";sp=sp""$6;sp=sp";"}else{
        if($3=="ds"){sp="D;";sp=sp""$5;sp=sp";";sp=sp""$6;sp=sp";"}else{
        if($3=="ss"){sp="S;";sp=sp""$5;sp=sp";";sp=sp""$6;sp=sp";"}
                                                                     }
                                                                       }
        s2[li]=sp;sp=""
                         }
     if($1=="END"){
       if(li>0){
#      for(i=1;i<=li; i++){printf "%-30s %s %s\n",name,s1[i],s2[i]}
      count=1;
      para[count]=s1[1]"_"s2[1];l1[count]=1;l2[count]=0;
      for(i=2;i<=li;i++){ok=1
        for(j=1; j<i; j++){if((s1[i]==s1[j])&&(s2[i]==s2[j])){l1[count]=l1[count]+1;ok=0;break}else{
                           if((s1[i]==s2[j])&&(s2[i]==s1[j])){l2[count]=l2[count]+1;ok=0;break}
                                                                                             }
                          }
      if(ok==1){count=count+1;para[count]=s1[i]"_"s2[i];l1[count]=1;l2[count]=0}
                        }
      for(i=1; i<=count; i++){printf "%-30s %-20s %2d %2d ",name,para[i],l1[i],l2[i]
      split(para[i],A,"_");split(A[1],A1,";");split(A[2],A2,";");
# A1[3]++;A2[3]++;
      printf "order: %d-%d ",A1[2],A2[2]
      if(l2[i]%2==0){
      if(l2[i]==0){
        if(A2[1]=="S"){ss=A1[1]"(";ss=ss""A2[1];st=A1[1]""A1[3];st=st"(";st=st""A2[1];st=st""A2[3];
           for(k=1;k<l1[i]-l2[i];k++){ss=ss".";st=st"."};ss=ss")";st=st")";printf " %-10s %-15s",ss,st}else{
        if(l2[i]%2==0){ss=A1[1]"(";ss=ss""A2[1];st=A1[1]""A1[3];st=st"(";st=st""A2[1];st=st""A2[3];
            for(k=2;k<l1[i]-l2[i];k++){ss=ss".";st=st".";};ss=ss")";st=st")";printf " %-10s %-15s",ss,st
                      }
                                                                                                        }
                  }else{ss=A1[1]"(";ss=ss""A2[1];ss=ss")+";ss=ss""A2[1];ss=ss"(";ss=ss""A1[1];ss=ss")";
      st=A1[1]""A1[3];st=st"(";st=st""A2[1];st=st""A2[3];st=st")+";st=st""A2[1];st=st""A2[3];st=st"(";st=st""A1[1];st=st""A1[3];st=st")";
      if((l1[i]==2)&&(l2[i]==2)){printf " %-10s %-15s",ss,st;}
                       }
                    }else{ss=A1[1]"&";ss=ss""A2[1];st=A1[1]""A1[3];st=st"&";st=st""A2[1];st=st""A2[3];
     if((l1[i]==1)&&(l2[i]==1)){printf " %-10s %-15s",ss,st;}else{
     ss=A1[1];st=A1[1]""A1[3];
     for(k=1;k<l1[i];k++){ss=ss".";st=st"."};ss=ss"&";st=st"&";ss=ss""A2[1];st=st""A2[1];st=st""A2[3]; for(k=1;k<l2[i];k++){ss=ss".";st=st"."}
                                printf " %-10s %-15s",ss,st;
                                                                 }
                         }
                   printf"\n"}
                 } }
     }' $1
