ROOT logo
//////////////////////////////////////////////////////////////////////////////
//
// $Id: $
//
//*-- Author  : S. Lebedev
//
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////////////////
//
//  HRich700RingFinderHough
//
//
//////////////////////////////////////////////////////////////////////////////

#include "hrich700ringfinderhough.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hcategory.h"
#include "hevent.h"
#include "hlinearcatiter.h"
#include "hmatrixcatiter.h"
#include "hruntimedb.h"
#include "hparset.h"
#include "hrichdetector.h"
#include "hgeantdef.h"
#include "richdef.h"
#include "hrichcal.h"
#include "hrichcalsim.h"
#include "hrichhit.h"
#include "hrichhitsim.h"
#include "hrich700digipar.h"
#include "hrich700ringfinderpar.h"
#include "hrich700ringfittercop.h"


#include "TSystem.h"
#include "TMath.h"

#include <iostream>
#include <cmath>
#include <set>
#include <algorithm>
#include <iostream>

using std::cout;
using std::endl;
using std::vector;
using std::set;
using std::sort;

ClassImp(HRich700RingFinderHough)

    HRich700RingFinderHough::HRich700RingFinderHough(const Text_t* name,const Text_t* title ):
HReconstructor(name,title),
fNofParts(0),

    fMaxDistance(0.f),
    fMinDistance(0.f),
    fMinDistanceSq(0.f),
    fMaxDistanceSq(0.f),

    fMinRadius(0.f),
    fMaxRadius(0.f),

    fDx(0.f),
    fDy(0.f),
    fDr(0.f),
    fNofBinsX(0),
    fNofBinsY(0),
    fNofBinsXY(0),

    fHTCut(0),

    fNofBinsR(0),
    fHTCutR(0),

    fMinNofHitsInArea(0),

    fUsedHitsAllCut(0.0),

    fRmsCoeffCOP(0.f),
    fMaxCutCOP(0.f),

    fCurMinX(0.f),
    fCurMinY(0.f),


    fData(),
    fHist(),
    fHistR(),
    fHitInd()

{
}

HRich700RingFinderHough::~HRich700RingFinderHough()
{

}

Bool_t HRich700RingFinderHough::init()
{

    HRichDetector* pRichDet = static_cast<HRichDetector*>(gHades->getSetup()->getDetector("Rich"));
    if (pRichDet == NULL) {
	Warning("init", "No RICH detector in setup!");
    }

    fIsSimulation = kFALSE;
    if(gHades->getCurrentEvent()->getCategory(catGeantKine)) fIsSimulation = kTRUE;



    fCatRichCal = gHades->getCurrentEvent()->getCategory(catRichCal);
    if (NULL == fCatRichCal) {
	Warning("init", "No category catRichCal found!");
    }

    fCatRichHit = gHades->getCurrentEvent()->getCategory(catRichHit);
    if (NULL == fCatRichHit) {
	if(pRichDet) {

	    if(fIsSimulation) { fCatRichHit = pRichDet->buildLinearCat("HRichHitSim", 10); }
	    else              { fCatRichHit = pRichDet->buildLinearCat("HRichHit"   , 10); }

	    if (NULL == fCatRichHit) {
		Error("init", "Cannot create category catRichHit!");
	    } else {
		gHades->getCurrentEvent()->addCategory(catRichHit, fCatRichHit, "Rich");
	    }
	}
    } else {
	Error("init", "No category catRichHit found");
    }

    fDigiPar = (HRich700DigiPar*) gHades->getRuntimeDb()->getContainer("Rich700DigiPar");
    if(!fDigiPar) {
	Error("init", "Can not retrieve HRich700DigiPar");
        return kFALSE;
    }

    fRingPar = (HRich700RingFinderPar*) gHades->getRuntimeDb()->getContainer("Rich700RingFinderPar");
    if(!fRingPar) {
	Error("init", "Can not retrieve HRich700RingFinderPar");
        return kFALSE;
    }

    return kTRUE;

}


Bool_t HRich700RingFinderHough::reinit()
{
    setParameters();
    fHist  .resize(fNofBinsXY);
    fHistR .resize(fNofBinsR);
    fHitInd.resize(fNofParts);
    return kTRUE;
}


Int_t HRich700RingFinderHough::execute()
{
    fEventNum++;
    processEvent();
    return 0;
}


void HRich700RingFinderHough::processEvent()
{

    if(!fCatRichCal || !fCatRichHit) return; // nothing to do
    fData.clear();                           // clean up

    Int_t nofRichCals = fCatRichCal->getEntries();
    for (Int_t iC = 0; iC < nofRichCals; iC++) {
	HRichCalSim* richCal = static_cast<HRichCalSim*>(fCatRichCal->getObject(iC));
	if (NULL == richCal) continue;

	Int_t loc[3];
	loc[0] = richCal->getSector();
	loc[1] = richCal->getCol();
	loc[2] = richCal->getRow();
	pair<Double_t, Double_t> xy = fDigiPar->getXY(loc);

	HRich700HoughHit houghHit;
	houghHit.fX = xy.first;
	houghHit.fY = xy.second;
	houghHit.fX2plusY2 = houghHit.fX * houghHit.fX + houghHit.fY * houghHit.fY;
	houghHit.fId = iC;
	houghHit.fIsUsed = kFALSE;
	fData.push_back(houghHit);
    }

    if (fData.size() > MAX_NOF_HITS) {
	Warning("processEvent()","Number of hits is more than %i. Skipped!",MAX_NOF_HITS);
    } else {
	std::sort(fData.begin(), fData.end(), HRich700HoughHitCmpUp());
	HoughTransformReconstruction();
    }
}

void HRich700RingFinderHough::setParameters()
{
    fMaxDistance      = fRingPar->getMaxDistance();
    fMinDistance      = fRingPar->getMinDistance();
    fMinDistanceSq    = fMinDistance*fMinDistance;
    fMaxDistanceSq    = fMaxDistance*fMaxDistance;

    fMinRadius        = fRingPar->getMinRadius();
    fMaxRadius        = fRingPar->getMaxRadius();

    fHTCut            = (UShort_t)fRingPar->getHTCut();
    fHTCutR           = (UShort_t)fRingPar->getHTCutR();
    fMinNofHitsInArea = (UShort_t)fRingPar->getMinNofHitsInArea();

    fNofBinsX         = (UShort_t)fRingPar->getNofBinsX();
    fNofBinsY         = (UShort_t)fRingPar->getNofBinsY();
    fNofBinsR         = (UShort_t)fRingPar->getNofBinsR();

    fRmsCoeffCOP      = fRingPar->getRmsCoeffCOP();
    fMaxCutCOP        = fRingPar->getMaxCutCOP();

    fUsedHitsAllCut   = fRingPar->getUsedHitsAllCut();

    fNofParts         = (UShort_t)fRingPar->getNofParts();
    fDx               = 2.f * fMaxDistance / (Float_t)fNofBinsX;
    fDy               = 2.f * fMaxDistance / (Float_t)fNofBinsY;
    fDr               = fMaxRadius / (Float_t)fNofBinsR;
    fNofBinsXY        = fNofBinsX * fNofBinsY;
}

void HRich700RingFinderHough::HoughTransformReconstruction()
{
    fFoundRings.clear();
    Int_t indmin, indmax;
    UInt_t size = fData.size();
    for (UInt_t iHit = 0; iHit < size; iHit++){
	if (fData[iHit].fIsUsed == kTRUE) continue;

	fCurMinX = fData[iHit].fX - fMaxDistance;
	fCurMinY = fData[iHit].fY - fMaxDistance;

	DefineLocalAreaAndHits(fData[iHit].fX, fData[iHit].fY , &indmin, &indmax);
	HoughTransform(indmin, indmax);
	FindPeak(indmin, indmax);
    }

}

void HRich700RingFinderHough::DefineLocalAreaAndHits(Float_t x0,
						     Float_t y0,
						     Int_t *indmin,
						     Int_t *indmax)
{
    // Find hits in a local area.
    // x0 X coordinate of the local area center.
    // y0 Y coordinate of the local area center.
    // indmin Minimum index of the hit in local area.
    // indmax Maximum index of the hit in local area.

    HRich700HoughHit mpnt;
    vector<HRich700HoughHit>::iterator itmin, itmax;

    //find all hits which are in the corridor
    mpnt.fX = x0 - fMaxDistance;
    itmin = std::lower_bound(fData.begin(), fData.end(), mpnt, HRich700HoughHitCmpUp());

    mpnt.fX = x0 + fMaxDistance;
    itmax = std::lower_bound(fData.begin(), fData.end(), mpnt, HRich700HoughHitCmpUp()) - 1;

    *indmin = itmin - fData.begin();
    *indmax = itmax - fData.begin();

    Int_t arSize = *indmax - *indmin + 1;
    if (arSize <= fMinNofHitsInArea) return;

    for (UShort_t i = 0; i < fNofParts; i++){
	fHitInd[i].clear();
	fHitInd[i].reserve( (*indmax-*indmin) / fNofParts);
    }

    UShort_t indmin1 = (UShort_t)(*indmin);
    UShort_t indmax1 = (UShort_t)(*indmax);

    for (UShort_t i = indmin1; i <= indmax1; i++) {
	if (fData[i].fIsUsed == kTRUE) continue;
	Float_t ry = y0 - fData[i].fY;
	if (fabs(ry) > fMaxDistance) continue;
	Float_t rx = x0 - fData[i].fX;
	Float_t d = rx * rx + ry * ry;
	if (d > fMaxDistanceSq) continue;
	fHitInd[i % fNofParts].push_back(i);
    }

    for (UShort_t j = 0; j < fNofBinsXY; j++){
	fHist[j] = 0;
    }

    for (UShort_t k = 0; k < fNofBinsR; k++) {
	fHistR[k] = 0;
    }
}

void HRich700RingFinderHough::HoughTransform(UShort_t indmin,UShort_t indmax)
{
   // Run HoughTransformGroup for each group of hits.
   // indmin Minimum index of the hit in local area.
   // indmax Maximum index of the hit in local area.

    for (Int_t iPart = 0; iPart < fNofParts; iPart++){
	HoughTransformGroup(indmin, indmax, iPart);
    }//iPart
}

void HRich700RingFinderHough::HoughTransformGroup(UShort_t indmin,
						  UShort_t indmax,
						  Int_t iPart)
{
    //  Main procedure for Hough Transform.
    // indmin Minimum index of the hit in local area.
    // indmax Maximum index of the hit in local area.
    // iPart Index of the hit group.


    UShort_t nofHits = fHitInd[iPart].size();
    Float_t xcs, ycs; // xcs = xc - fCurMinX
    Float_t dx = 1.0f/fDx, dy = 1.0f/fDy, dr = 1.0f/fDr;

    vector<HRich700HoughHit> data;
    data.resize(nofHits);
    for (Int_t i = 0; i < nofHits; i++){
	data[i] = fData[ fHitInd[iPart][i] ];
    }

    typedef vector<HRich700HoughHit>::iterator iH;

    for (iH iHit1 = data.begin(); iHit1 != data.end(); iHit1++) {
	Float_t iH1X = iHit1->fX;
	Float_t iH1Y = iHit1->fY;

	for (iH iHit2 = iHit1 + 1; iHit2 != data.end(); iHit2++) {
	    Float_t iH2X = iHit2->fX;
	    Float_t iH2Y = iHit2->fY;

	    Float_t rx0 = iH1X - iH2X;//rx12
	    Float_t ry0 = iH1Y- iH2Y;//ry12
	    Float_t r12 = rx0 * rx0 + ry0 * ry0;
	    if (r12 < fMinDistanceSq || r12 > fMaxDistanceSq)	continue;

	    Float_t t10 = iHit1->fX2plusY2 - iHit2->fX2plusY2;
	    for (iH iHit3 = iHit2 + 1; iHit3 != data.end(); iHit3++) {
		Float_t iH3X = iHit3->fX;
		Float_t iH3Y = iHit3->fY;

		Float_t rx1 = iH1X - iH3X;//rx13
		Float_t ry1 = iH1Y - iH3Y;//ry13
		Float_t r13 = rx1 * rx1 + ry1 * ry1;
		if (r13 < fMinDistanceSq || r13 > fMaxDistanceSq)continue;

		Float_t rx2 = iH2X - iH3X;//rx23
		Float_t ry2 = iH2Y - iH3Y;//ry23
		Float_t r23 = rx2 * rx2 + ry2 * ry2;
		if (r23	< fMinDistanceSq || r23 > fMaxDistanceSq)continue;

		Float_t det = rx2*ry0 - rx0*ry2;
		if (det == 0.0f) continue;
		Float_t t19 = 0.5f / det;
		Float_t t5 = iHit2->fX2plusY2 - iHit3->fX2plusY2;

		Float_t xc = (t5 * ry0 - t10 * ry2) * t19;
		xcs = xc - fCurMinX;
		Int_t intX = Int_t( xcs *dx);
		if (intX < 0 || intX >= fNofBinsX ) continue;

		Float_t yc = (t10 * rx2 - t5 * rx0) * t19;
		ycs = yc - fCurMinY;
		Int_t intY = Int_t( ycs *dy);
		if (intY < 0 || intY >= fNofBinsY ) continue;

		//radius calculation
		Float_t t6 = iH1X - xc;
		Float_t t7 = iH1Y - yc;
		//if (t6 > fMaxRadius || t7 > fMaxRadius) continue;
		Float_t r = sqrt(t6 * t6 + t7 * t7);
		//if (r < fMinRadius) continue;
		Int_t intR = Int_t(r *dr);
		if (intR < 0 || intR >= fNofBinsR) continue;

		fHist[intX * fNofBinsX + intY]++;
		fHistR[intR]++;
	    }// iHit1
	}// iHit2
    }// iHit3
    //hitIndPart.clear();
}

void HRich700RingFinderHough::FindPeak(Int_t indmin, Int_t indmax)
{
    // Find peak in the HT histograms.
    // indmin Minimum index of the hit in local area.
    // indmax Maximum index of the hit in local area.

    // Find MAX bin R and compare it with CUT
    Int_t maxBinR = -1, maxR = -1;
    UInt_t size = fHistR.size();
    for (UInt_t k = 0; k < size; k++){
	if (fHistR[k] > maxBinR){
	    maxBinR = fHistR[k];
	    maxR = k;
	}
    }
    if (maxBinR < fHTCutR) return;

    // Find MAX bin XY and compare it with CUT
    Int_t maxBinXY = -1, maxXY = -1;
    size = fHist.size();
    for (UInt_t k = 0; k < size; k++){
	if (fHist[k] > maxBinXY){
	    maxBinXY = fHist[k];
	    maxXY = k;
	}
    }
    if (maxBinXY < fHTCut) return;

    HRich700Ring ring1;

    // Find Preliminary Xc, Yc, R
    Float_t xc, yc, r;
    Float_t rx, ry, dr;
    xc = (maxXY / fNofBinsX + 0.5f)* fDx + fCurMinX;
    yc = (maxXY % fNofBinsX + 0.5f)* fDy + fCurMinY;
    r = (maxR + 0.5f) * fDr;
    for (Int_t j = indmin; j < indmax + 1; j++) {
	rx = fData[j].fX - xc;
	ry = fData[j].fY - yc;

	dr = fabs(sqrt(rx * rx + ry * ry) - r);
	if (dr > 10.) continue;
	HRich700Hit hit1;
	hit1.fX = fData[j].fX;
	hit1.fY = fData[j].fY;
	ring1.fHits.push_back(hit1);
    }

    if (ring1.fHits.size() < 5) {
	return;
    }

    HRich700RingFitterCOP::FitRing(&ring1);

    Float_t drCOPCut = fRmsCoeffCOP * sqrt(ring1.fCircleChi2 / ring1.fHits.size());
    if (drCOPCut > fMaxCutCOP)	drCOPCut = fMaxCutCOP;

    xc = ring1.fCircleXCenter;
    yc = ring1.fCircleYCenter;
    r = ring1.fCircleRadius;

    HRich700Ring ring2;
    for (Int_t j = indmin; j < indmax + 1; j++) {
	rx = fData[j].fX - xc;
	ry = fData[j].fY - yc;

	dr = fabs(sqrt(rx * rx + ry * ry) - r);
	if (dr > drCOPCut) continue;
	HRich700Hit hit1;
	hit1.fX = fData[j].fX;
	hit1.fY = fData[j].fY;
	hit1.fId = fData[j].fId;
	ring2.fHits.push_back(hit1);
    }

    if (ring2.fHits.size() < 5) {
	return;
    }

    HRich700RingFitterCOP::FitRing(&ring2);

    RemoveHitsOfFoundRing(indmin, indmax, &ring2);

    AddRing(&ring2);
}

void HRich700RingFinderHough::RemoveHitsOfFoundRing(Int_t indmin, Int_t indmax, HRich700Ring* ring)
{
    // Set fIsUsed flag to true for hits attached to the ring.
    // indmin Minimum index of the hit in local area.
    // indmax Maximum index of the hit in local area.
    // ring Found ring.

    for (UInt_t iH = 0; iH < ring->fHits.size(); iH++) {
	for (Int_t j = indmin; j < indmax + 1; j++) {
	    if (ring->fHits[iH].fX == fData[j].fX && ring->fHits[iH].fY == fData[j].fY){
		fData[j].fIsUsed = kTRUE;
	    }
	}
    }
}

void HRich700RingFinderHough::AddRing(HRich700Ring* ring)
{
    HRich700RingFitterCOP::FitRing(ring);

    HLocation loc;
    loc.set(1, 1);
    HRichHitSim* hitS=0;
    HRichHit* hit = (HRichHit*)fCatRichHit->getNewSlot(loc);
    //          new (hit) HRichHit
    if(fIsSimulation) {
    	hit = new (hit) HRichHitSim();
    	hitS = (HRichHitSim*) hit;
    } else {
	       hit = new (hit) HRichHit();
    }
    if (NULL != hit) {

	Float_t x = ring->fCircleXCenter;
	Float_t y = ring->fCircleYCenter;
        Float_t theta,phi;
	//----------------------------------------------------------------------------------
        hit->nSector               = fDigiPar->getInterpolatedSectorThetaPhi(x,y,theta,phi);
        hit->fTheta                = theta;
        hit->fPhi                  = phi;
	hit->fRich700NofRichCals   = ring->fHits.size();
	hit->fRich700CircleCenterX = ring->fCircleXCenter;
	hit->fRich700CircleCenterY = ring->fCircleYCenter;
	hit->fRich700CircleRadius  = ring->fCircleRadius;
	hit->fRich700CircleChi2    = ring->fCircleChi2;

    for (UInt_t iC = 0; iC < ring->fHits.size(); iC++) {
        if (iC >= NMAXCALSPERRING) break;
        hit->fRich700CalIds[iC] = ring->fHits[iC].fId;
    }

	hit->setXY(x,y);
        Int_t pmtID = fDigiPar->getPMTId(x,y);
	if(pmtID!=-1){

	    HRich700PmtData* data = fDigiPar->getPMTData(pmtID);
	    if(data){
		hit->setRingCenterX(data->fIndX);
		hit->setRingCenterY(data->fIndY);
		hit->setLabXYZ     (x,y,data->fZ);
	    }
	} else {
	    hit->setLabXYZ(x,y,-1000);
	}


	if(hitS){
           // assign MC information
	    Int_t trackIds[3];
	    Int_t weights[3];
	    RecoToMc(ring, trackIds, weights);

	    hitS->track1 = trackIds[0];
	    hitS->track2 = trackIds[1];
	    hitS->track3 = trackIds[2];

	    hitS->weigTrack1 = weights[0];
	    hitS->weigTrack2 = weights[1];
	    hitS->weigTrack3 = weights[2];
	}
    }
}

void HRich700RingFinderHough::RingSelection()
{
    Int_t nofRings = fFoundRings.size();
    sort(fFoundRings.begin(), fFoundRings.end(), HRich700RingComparatorMore());
    set<UShort_t> usedHitsAll;
    vector<UShort_t> goodRingIndex;
    goodRingIndex.reserve(nofRings);

    for (Int_t iRing = 0; iRing < nofRings; iRing++){
	fFoundRings[iRing].fIsGood = kFALSE;
	Int_t nofHits = fFoundRings[iRing].fHits.size();
	Bool_t isGoodRingAll = kTRUE;
	Int_t nofUsedHitsAll = 0;
	for(Int_t iHit = 0; iHit < nofHits; iHit++){
	    set<UShort_t>::iterator it = usedHitsAll.find(fFoundRings[iRing].fHits[iHit].fId);
	    if(it != usedHitsAll.end()){
		nofUsedHitsAll++;
	    }
	}
	if ((Float_t)nofUsedHitsAll/(Float_t)nofHits > fUsedHitsAllCut){
	    isGoodRingAll = kFALSE;
	}

	if (isGoodRingAll){
	    fFoundRings[iRing].fIsGood = kTRUE;
	    goodRingIndex.push_back(iRing);
	    for(Int_t iHit = 0; iHit < nofHits; iHit++){
		usedHitsAll.insert(fFoundRings[iRing].fHits[iHit].fId);
	    }
	}// isGoodRing
    }// iRing

    usedHitsAll.clear();
    goodRingIndex.clear();
}

void HRich700RingFinderHough::RecoToMc(const HRich700Ring* ring,
				       Int_t* trackIds,
				       Int_t* weights)
{
    map<Int_t, Int_t> trackIdMap;
    for (UInt_t iH = 0; iH < ring->fHits.size(); iH++) {
	Int_t calId = ring->fHits[iH].fId;
	HRichCalSim* richCal = static_cast<HRichCalSim*>(fCatRichCal->getObject(calId));
	if (NULL == richCal) continue;
	Int_t nofTrackIds = richCal->getNofTrackIds();

	for (Int_t iT = 0; iT < nofTrackIds; iT++) {
	    Int_t trackId = richCal->getTrackId(iT);
	    trackIdMap[trackId]++;
	}
    }

    Int_t maxTrackId = 0;
    Int_t maxNofHits = 0;
    for(map<Int_t, Int_t>::iterator it = trackIdMap.begin(); it != trackIdMap.end(); it++) {
	Int_t trackId = it->first;
	Int_t nofHits = it->second;
	if (nofHits > maxNofHits) {
	    maxTrackId = trackId;
	    maxNofHits = nofHits;
	}
    }

    trackIds[0] = maxTrackId;
    trackIds[1] = -1;
    trackIds[2] = -1;

    weights[0] = maxNofHits ;
    weights[1] = 0;
    weights[2] = 0;
}


Bool_t HRich700RingFinderHough::finalize()
{
    return kTRUE;
}
 hrich700ringfinderhough.cc:1
 hrich700ringfinderhough.cc:2
 hrich700ringfinderhough.cc:3
 hrich700ringfinderhough.cc:4
 hrich700ringfinderhough.cc:5
 hrich700ringfinderhough.cc:6
 hrich700ringfinderhough.cc:7
 hrich700ringfinderhough.cc:8
 hrich700ringfinderhough.cc:9
 hrich700ringfinderhough.cc:10
 hrich700ringfinderhough.cc:11
 hrich700ringfinderhough.cc:12
 hrich700ringfinderhough.cc:13
 hrich700ringfinderhough.cc:14
 hrich700ringfinderhough.cc:15
 hrich700ringfinderhough.cc:16
 hrich700ringfinderhough.cc:17
 hrich700ringfinderhough.cc:18
 hrich700ringfinderhough.cc:19
 hrich700ringfinderhough.cc:20
 hrich700ringfinderhough.cc:21
 hrich700ringfinderhough.cc:22
 hrich700ringfinderhough.cc:23
 hrich700ringfinderhough.cc:24
 hrich700ringfinderhough.cc:25
 hrich700ringfinderhough.cc:26
 hrich700ringfinderhough.cc:27
 hrich700ringfinderhough.cc:28
 hrich700ringfinderhough.cc:29
 hrich700ringfinderhough.cc:30
 hrich700ringfinderhough.cc:31
 hrich700ringfinderhough.cc:32
 hrich700ringfinderhough.cc:33
 hrich700ringfinderhough.cc:34
 hrich700ringfinderhough.cc:35
 hrich700ringfinderhough.cc:36
 hrich700ringfinderhough.cc:37
 hrich700ringfinderhough.cc:38
 hrich700ringfinderhough.cc:39
 hrich700ringfinderhough.cc:40
 hrich700ringfinderhough.cc:41
 hrich700ringfinderhough.cc:42
 hrich700ringfinderhough.cc:43
 hrich700ringfinderhough.cc:44
 hrich700ringfinderhough.cc:45
 hrich700ringfinderhough.cc:46
 hrich700ringfinderhough.cc:47
 hrich700ringfinderhough.cc:48
 hrich700ringfinderhough.cc:49
 hrich700ringfinderhough.cc:50
 hrich700ringfinderhough.cc:51
 hrich700ringfinderhough.cc:52
 hrich700ringfinderhough.cc:53
 hrich700ringfinderhough.cc:54
 hrich700ringfinderhough.cc:55
 hrich700ringfinderhough.cc:56
 hrich700ringfinderhough.cc:57
 hrich700ringfinderhough.cc:58
 hrich700ringfinderhough.cc:59
 hrich700ringfinderhough.cc:60
 hrich700ringfinderhough.cc:61
 hrich700ringfinderhough.cc:62
 hrich700ringfinderhough.cc:63
 hrich700ringfinderhough.cc:64
 hrich700ringfinderhough.cc:65
 hrich700ringfinderhough.cc:66
 hrich700ringfinderhough.cc:67
 hrich700ringfinderhough.cc:68
 hrich700ringfinderhough.cc:69
 hrich700ringfinderhough.cc:70
 hrich700ringfinderhough.cc:71
 hrich700ringfinderhough.cc:72
 hrich700ringfinderhough.cc:73
 hrich700ringfinderhough.cc:74
 hrich700ringfinderhough.cc:75
 hrich700ringfinderhough.cc:76
 hrich700ringfinderhough.cc:77
 hrich700ringfinderhough.cc:78
 hrich700ringfinderhough.cc:79
 hrich700ringfinderhough.cc:80
 hrich700ringfinderhough.cc:81
 hrich700ringfinderhough.cc:82
 hrich700ringfinderhough.cc:83
 hrich700ringfinderhough.cc:84
 hrich700ringfinderhough.cc:85
 hrich700ringfinderhough.cc:86
 hrich700ringfinderhough.cc:87
 hrich700ringfinderhough.cc:88
 hrich700ringfinderhough.cc:89
 hrich700ringfinderhough.cc:90
 hrich700ringfinderhough.cc:91
 hrich700ringfinderhough.cc:92
 hrich700ringfinderhough.cc:93
 hrich700ringfinderhough.cc:94
 hrich700ringfinderhough.cc:95
 hrich700ringfinderhough.cc:96
 hrich700ringfinderhough.cc:97
 hrich700ringfinderhough.cc:98
 hrich700ringfinderhough.cc:99
 hrich700ringfinderhough.cc:100
 hrich700ringfinderhough.cc:101
 hrich700ringfinderhough.cc:102
 hrich700ringfinderhough.cc:103
 hrich700ringfinderhough.cc:104
 hrich700ringfinderhough.cc:105
 hrich700ringfinderhough.cc:106
 hrich700ringfinderhough.cc:107
 hrich700ringfinderhough.cc:108
 hrich700ringfinderhough.cc:109
 hrich700ringfinderhough.cc:110
 hrich700ringfinderhough.cc:111
 hrich700ringfinderhough.cc:112
 hrich700ringfinderhough.cc:113
 hrich700ringfinderhough.cc:114
 hrich700ringfinderhough.cc:115
 hrich700ringfinderhough.cc:116
 hrich700ringfinderhough.cc:117
 hrich700ringfinderhough.cc:118
 hrich700ringfinderhough.cc:119
 hrich700ringfinderhough.cc:120
 hrich700ringfinderhough.cc:121
 hrich700ringfinderhough.cc:122
 hrich700ringfinderhough.cc:123
 hrich700ringfinderhough.cc:124
 hrich700ringfinderhough.cc:125
 hrich700ringfinderhough.cc:126
 hrich700ringfinderhough.cc:127
 hrich700ringfinderhough.cc:128
 hrich700ringfinderhough.cc:129
 hrich700ringfinderhough.cc:130
 hrich700ringfinderhough.cc:131
 hrich700ringfinderhough.cc:132
 hrich700ringfinderhough.cc:133
 hrich700ringfinderhough.cc:134
 hrich700ringfinderhough.cc:135
 hrich700ringfinderhough.cc:136
 hrich700ringfinderhough.cc:137
 hrich700ringfinderhough.cc:138
 hrich700ringfinderhough.cc:139
 hrich700ringfinderhough.cc:140
 hrich700ringfinderhough.cc:141
 hrich700ringfinderhough.cc:142
 hrich700ringfinderhough.cc:143
 hrich700ringfinderhough.cc:144
 hrich700ringfinderhough.cc:145
 hrich700ringfinderhough.cc:146
 hrich700ringfinderhough.cc:147
 hrich700ringfinderhough.cc:148
 hrich700ringfinderhough.cc:149
 hrich700ringfinderhough.cc:150
 hrich700ringfinderhough.cc:151
 hrich700ringfinderhough.cc:152
 hrich700ringfinderhough.cc:153
 hrich700ringfinderhough.cc:154
 hrich700ringfinderhough.cc:155
 hrich700ringfinderhough.cc:156
 hrich700ringfinderhough.cc:157
 hrich700ringfinderhough.cc:158
 hrich700ringfinderhough.cc:159
 hrich700ringfinderhough.cc:160
 hrich700ringfinderhough.cc:161
 hrich700ringfinderhough.cc:162
 hrich700ringfinderhough.cc:163
 hrich700ringfinderhough.cc:164
 hrich700ringfinderhough.cc:165
 hrich700ringfinderhough.cc:166
 hrich700ringfinderhough.cc:167
 hrich700ringfinderhough.cc:168
 hrich700ringfinderhough.cc:169
 hrich700ringfinderhough.cc:170
 hrich700ringfinderhough.cc:171
 hrich700ringfinderhough.cc:172
 hrich700ringfinderhough.cc:173
 hrich700ringfinderhough.cc:174
 hrich700ringfinderhough.cc:175
 hrich700ringfinderhough.cc:176
 hrich700ringfinderhough.cc:177
 hrich700ringfinderhough.cc:178
 hrich700ringfinderhough.cc:179
 hrich700ringfinderhough.cc:180
 hrich700ringfinderhough.cc:181
 hrich700ringfinderhough.cc:182
 hrich700ringfinderhough.cc:183
 hrich700ringfinderhough.cc:184
 hrich700ringfinderhough.cc:185
 hrich700ringfinderhough.cc:186
 hrich700ringfinderhough.cc:187
 hrich700ringfinderhough.cc:188
 hrich700ringfinderhough.cc:189
 hrich700ringfinderhough.cc:190
 hrich700ringfinderhough.cc:191
 hrich700ringfinderhough.cc:192
 hrich700ringfinderhough.cc:193
 hrich700ringfinderhough.cc:194
 hrich700ringfinderhough.cc:195
 hrich700ringfinderhough.cc:196
 hrich700ringfinderhough.cc:197
 hrich700ringfinderhough.cc:198
 hrich700ringfinderhough.cc:199
 hrich700ringfinderhough.cc:200
 hrich700ringfinderhough.cc:201
 hrich700ringfinderhough.cc:202
 hrich700ringfinderhough.cc:203
 hrich700ringfinderhough.cc:204
 hrich700ringfinderhough.cc:205
 hrich700ringfinderhough.cc:206
 hrich700ringfinderhough.cc:207
 hrich700ringfinderhough.cc:208
 hrich700ringfinderhough.cc:209
 hrich700ringfinderhough.cc:210
 hrich700ringfinderhough.cc:211
 hrich700ringfinderhough.cc:212
 hrich700ringfinderhough.cc:213
 hrich700ringfinderhough.cc:214
 hrich700ringfinderhough.cc:215
 hrich700ringfinderhough.cc:216
 hrich700ringfinderhough.cc:217
 hrich700ringfinderhough.cc:218
 hrich700ringfinderhough.cc:219
 hrich700ringfinderhough.cc:220
 hrich700ringfinderhough.cc:221
 hrich700ringfinderhough.cc:222
 hrich700ringfinderhough.cc:223
 hrich700ringfinderhough.cc:224
 hrich700ringfinderhough.cc:225
 hrich700ringfinderhough.cc:226
 hrich700ringfinderhough.cc:227
 hrich700ringfinderhough.cc:228
 hrich700ringfinderhough.cc:229
 hrich700ringfinderhough.cc:230
 hrich700ringfinderhough.cc:231
 hrich700ringfinderhough.cc:232
 hrich700ringfinderhough.cc:233
 hrich700ringfinderhough.cc:234
 hrich700ringfinderhough.cc:235
 hrich700ringfinderhough.cc:236
 hrich700ringfinderhough.cc:237
 hrich700ringfinderhough.cc:238
 hrich700ringfinderhough.cc:239
 hrich700ringfinderhough.cc:240
 hrich700ringfinderhough.cc:241
 hrich700ringfinderhough.cc:242
 hrich700ringfinderhough.cc:243
 hrich700ringfinderhough.cc:244
 hrich700ringfinderhough.cc:245
 hrich700ringfinderhough.cc:246
 hrich700ringfinderhough.cc:247
 hrich700ringfinderhough.cc:248
 hrich700ringfinderhough.cc:249
 hrich700ringfinderhough.cc:250
 hrich700ringfinderhough.cc:251
 hrich700ringfinderhough.cc:252
 hrich700ringfinderhough.cc:253
 hrich700ringfinderhough.cc:254
 hrich700ringfinderhough.cc:255
 hrich700ringfinderhough.cc:256
 hrich700ringfinderhough.cc:257
 hrich700ringfinderhough.cc:258
 hrich700ringfinderhough.cc:259
 hrich700ringfinderhough.cc:260
 hrich700ringfinderhough.cc:261
 hrich700ringfinderhough.cc:262
 hrich700ringfinderhough.cc:263
 hrich700ringfinderhough.cc:264
 hrich700ringfinderhough.cc:265
 hrich700ringfinderhough.cc:266
 hrich700ringfinderhough.cc:267
 hrich700ringfinderhough.cc:268
 hrich700ringfinderhough.cc:269
 hrich700ringfinderhough.cc:270
 hrich700ringfinderhough.cc:271
 hrich700ringfinderhough.cc:272
 hrich700ringfinderhough.cc:273
 hrich700ringfinderhough.cc:274
 hrich700ringfinderhough.cc:275
 hrich700ringfinderhough.cc:276
 hrich700ringfinderhough.cc:277
 hrich700ringfinderhough.cc:278
 hrich700ringfinderhough.cc:279
 hrich700ringfinderhough.cc:280
 hrich700ringfinderhough.cc:281
 hrich700ringfinderhough.cc:282
 hrich700ringfinderhough.cc:283
 hrich700ringfinderhough.cc:284
 hrich700ringfinderhough.cc:285
 hrich700ringfinderhough.cc:286
 hrich700ringfinderhough.cc:287
 hrich700ringfinderhough.cc:288
 hrich700ringfinderhough.cc:289
 hrich700ringfinderhough.cc:290
 hrich700ringfinderhough.cc:291
 hrich700ringfinderhough.cc:292
 hrich700ringfinderhough.cc:293
 hrich700ringfinderhough.cc:294
 hrich700ringfinderhough.cc:295
 hrich700ringfinderhough.cc:296
 hrich700ringfinderhough.cc:297
 hrich700ringfinderhough.cc:298
 hrich700ringfinderhough.cc:299
 hrich700ringfinderhough.cc:300
 hrich700ringfinderhough.cc:301
 hrich700ringfinderhough.cc:302
 hrich700ringfinderhough.cc:303
 hrich700ringfinderhough.cc:304
 hrich700ringfinderhough.cc:305
 hrich700ringfinderhough.cc:306
 hrich700ringfinderhough.cc:307
 hrich700ringfinderhough.cc:308
 hrich700ringfinderhough.cc:309
 hrich700ringfinderhough.cc:310
 hrich700ringfinderhough.cc:311
 hrich700ringfinderhough.cc:312
 hrich700ringfinderhough.cc:313
 hrich700ringfinderhough.cc:314
 hrich700ringfinderhough.cc:315
 hrich700ringfinderhough.cc:316
 hrich700ringfinderhough.cc:317
 hrich700ringfinderhough.cc:318
 hrich700ringfinderhough.cc:319
 hrich700ringfinderhough.cc:320
 hrich700ringfinderhough.cc:321
 hrich700ringfinderhough.cc:322
 hrich700ringfinderhough.cc:323
 hrich700ringfinderhough.cc:324
 hrich700ringfinderhough.cc:325
 hrich700ringfinderhough.cc:326
 hrich700ringfinderhough.cc:327
 hrich700ringfinderhough.cc:328
 hrich700ringfinderhough.cc:329
 hrich700ringfinderhough.cc:330
 hrich700ringfinderhough.cc:331
 hrich700ringfinderhough.cc:332
 hrich700ringfinderhough.cc:333
 hrich700ringfinderhough.cc:334
 hrich700ringfinderhough.cc:335
 hrich700ringfinderhough.cc:336
 hrich700ringfinderhough.cc:337
 hrich700ringfinderhough.cc:338
 hrich700ringfinderhough.cc:339
 hrich700ringfinderhough.cc:340
 hrich700ringfinderhough.cc:341
 hrich700ringfinderhough.cc:342
 hrich700ringfinderhough.cc:343
 hrich700ringfinderhough.cc:344
 hrich700ringfinderhough.cc:345
 hrich700ringfinderhough.cc:346
 hrich700ringfinderhough.cc:347
 hrich700ringfinderhough.cc:348
 hrich700ringfinderhough.cc:349
 hrich700ringfinderhough.cc:350
 hrich700ringfinderhough.cc:351
 hrich700ringfinderhough.cc:352
 hrich700ringfinderhough.cc:353
 hrich700ringfinderhough.cc:354
 hrich700ringfinderhough.cc:355
 hrich700ringfinderhough.cc:356
 hrich700ringfinderhough.cc:357
 hrich700ringfinderhough.cc:358
 hrich700ringfinderhough.cc:359
 hrich700ringfinderhough.cc:360
 hrich700ringfinderhough.cc:361
 hrich700ringfinderhough.cc:362
 hrich700ringfinderhough.cc:363
 hrich700ringfinderhough.cc:364
 hrich700ringfinderhough.cc:365
 hrich700ringfinderhough.cc:366
 hrich700ringfinderhough.cc:367
 hrich700ringfinderhough.cc:368
 hrich700ringfinderhough.cc:369
 hrich700ringfinderhough.cc:370
 hrich700ringfinderhough.cc:371
 hrich700ringfinderhough.cc:372
 hrich700ringfinderhough.cc:373
 hrich700ringfinderhough.cc:374
 hrich700ringfinderhough.cc:375
 hrich700ringfinderhough.cc:376
 hrich700ringfinderhough.cc:377
 hrich700ringfinderhough.cc:378
 hrich700ringfinderhough.cc:379
 hrich700ringfinderhough.cc:380
 hrich700ringfinderhough.cc:381
 hrich700ringfinderhough.cc:382
 hrich700ringfinderhough.cc:383
 hrich700ringfinderhough.cc:384
 hrich700ringfinderhough.cc:385
 hrich700ringfinderhough.cc:386
 hrich700ringfinderhough.cc:387
 hrich700ringfinderhough.cc:388
 hrich700ringfinderhough.cc:389
 hrich700ringfinderhough.cc:390
 hrich700ringfinderhough.cc:391
 hrich700ringfinderhough.cc:392
 hrich700ringfinderhough.cc:393
 hrich700ringfinderhough.cc:394
 hrich700ringfinderhough.cc:395
 hrich700ringfinderhough.cc:396
 hrich700ringfinderhough.cc:397
 hrich700ringfinderhough.cc:398
 hrich700ringfinderhough.cc:399
 hrich700ringfinderhough.cc:400
 hrich700ringfinderhough.cc:401
 hrich700ringfinderhough.cc:402
 hrich700ringfinderhough.cc:403
 hrich700ringfinderhough.cc:404
 hrich700ringfinderhough.cc:405
 hrich700ringfinderhough.cc:406
 hrich700ringfinderhough.cc:407
 hrich700ringfinderhough.cc:408
 hrich700ringfinderhough.cc:409
 hrich700ringfinderhough.cc:410
 hrich700ringfinderhough.cc:411
 hrich700ringfinderhough.cc:412
 hrich700ringfinderhough.cc:413
 hrich700ringfinderhough.cc:414
 hrich700ringfinderhough.cc:415
 hrich700ringfinderhough.cc:416
 hrich700ringfinderhough.cc:417
 hrich700ringfinderhough.cc:418
 hrich700ringfinderhough.cc:419
 hrich700ringfinderhough.cc:420
 hrich700ringfinderhough.cc:421
 hrich700ringfinderhough.cc:422
 hrich700ringfinderhough.cc:423
 hrich700ringfinderhough.cc:424
 hrich700ringfinderhough.cc:425
 hrich700ringfinderhough.cc:426
 hrich700ringfinderhough.cc:427
 hrich700ringfinderhough.cc:428
 hrich700ringfinderhough.cc:429
 hrich700ringfinderhough.cc:430
 hrich700ringfinderhough.cc:431
 hrich700ringfinderhough.cc:432
 hrich700ringfinderhough.cc:433
 hrich700ringfinderhough.cc:434
 hrich700ringfinderhough.cc:435
 hrich700ringfinderhough.cc:436
 hrich700ringfinderhough.cc:437
 hrich700ringfinderhough.cc:438
 hrich700ringfinderhough.cc:439
 hrich700ringfinderhough.cc:440
 hrich700ringfinderhough.cc:441
 hrich700ringfinderhough.cc:442
 hrich700ringfinderhough.cc:443
 hrich700ringfinderhough.cc:444
 hrich700ringfinderhough.cc:445
 hrich700ringfinderhough.cc:446
 hrich700ringfinderhough.cc:447
 hrich700ringfinderhough.cc:448
 hrich700ringfinderhough.cc:449
 hrich700ringfinderhough.cc:450
 hrich700ringfinderhough.cc:451
 hrich700ringfinderhough.cc:452
 hrich700ringfinderhough.cc:453
 hrich700ringfinderhough.cc:454
 hrich700ringfinderhough.cc:455
 hrich700ringfinderhough.cc:456
 hrich700ringfinderhough.cc:457
 hrich700ringfinderhough.cc:458
 hrich700ringfinderhough.cc:459
 hrich700ringfinderhough.cc:460
 hrich700ringfinderhough.cc:461
 hrich700ringfinderhough.cc:462
 hrich700ringfinderhough.cc:463
 hrich700ringfinderhough.cc:464
 hrich700ringfinderhough.cc:465
 hrich700ringfinderhough.cc:466
 hrich700ringfinderhough.cc:467
 hrich700ringfinderhough.cc:468
 hrich700ringfinderhough.cc:469
 hrich700ringfinderhough.cc:470
 hrich700ringfinderhough.cc:471
 hrich700ringfinderhough.cc:472
 hrich700ringfinderhough.cc:473
 hrich700ringfinderhough.cc:474
 hrich700ringfinderhough.cc:475
 hrich700ringfinderhough.cc:476
 hrich700ringfinderhough.cc:477
 hrich700ringfinderhough.cc:478
 hrich700ringfinderhough.cc:479
 hrich700ringfinderhough.cc:480
 hrich700ringfinderhough.cc:481
 hrich700ringfinderhough.cc:482
 hrich700ringfinderhough.cc:483
 hrich700ringfinderhough.cc:484
 hrich700ringfinderhough.cc:485
 hrich700ringfinderhough.cc:486
 hrich700ringfinderhough.cc:487
 hrich700ringfinderhough.cc:488
 hrich700ringfinderhough.cc:489
 hrich700ringfinderhough.cc:490
 hrich700ringfinderhough.cc:491
 hrich700ringfinderhough.cc:492
 hrich700ringfinderhough.cc:493
 hrich700ringfinderhough.cc:494
 hrich700ringfinderhough.cc:495
 hrich700ringfinderhough.cc:496
 hrich700ringfinderhough.cc:497
 hrich700ringfinderhough.cc:498
 hrich700ringfinderhough.cc:499
 hrich700ringfinderhough.cc:500
 hrich700ringfinderhough.cc:501
 hrich700ringfinderhough.cc:502
 hrich700ringfinderhough.cc:503
 hrich700ringfinderhough.cc:504
 hrich700ringfinderhough.cc:505
 hrich700ringfinderhough.cc:506
 hrich700ringfinderhough.cc:507
 hrich700ringfinderhough.cc:508
 hrich700ringfinderhough.cc:509
 hrich700ringfinderhough.cc:510
 hrich700ringfinderhough.cc:511
 hrich700ringfinderhough.cc:512
 hrich700ringfinderhough.cc:513
 hrich700ringfinderhough.cc:514
 hrich700ringfinderhough.cc:515
 hrich700ringfinderhough.cc:516
 hrich700ringfinderhough.cc:517
 hrich700ringfinderhough.cc:518
 hrich700ringfinderhough.cc:519
 hrich700ringfinderhough.cc:520
 hrich700ringfinderhough.cc:521
 hrich700ringfinderhough.cc:522
 hrich700ringfinderhough.cc:523
 hrich700ringfinderhough.cc:524
 hrich700ringfinderhough.cc:525
 hrich700ringfinderhough.cc:526
 hrich700ringfinderhough.cc:527
 hrich700ringfinderhough.cc:528
 hrich700ringfinderhough.cc:529
 hrich700ringfinderhough.cc:530
 hrich700ringfinderhough.cc:531
 hrich700ringfinderhough.cc:532
 hrich700ringfinderhough.cc:533
 hrich700ringfinderhough.cc:534
 hrich700ringfinderhough.cc:535
 hrich700ringfinderhough.cc:536
 hrich700ringfinderhough.cc:537
 hrich700ringfinderhough.cc:538
 hrich700ringfinderhough.cc:539
 hrich700ringfinderhough.cc:540
 hrich700ringfinderhough.cc:541
 hrich700ringfinderhough.cc:542
 hrich700ringfinderhough.cc:543
 hrich700ringfinderhough.cc:544
 hrich700ringfinderhough.cc:545
 hrich700ringfinderhough.cc:546
 hrich700ringfinderhough.cc:547
 hrich700ringfinderhough.cc:548
 hrich700ringfinderhough.cc:549
 hrich700ringfinderhough.cc:550
 hrich700ringfinderhough.cc:551
 hrich700ringfinderhough.cc:552
 hrich700ringfinderhough.cc:553
 hrich700ringfinderhough.cc:554
 hrich700ringfinderhough.cc:555
 hrich700ringfinderhough.cc:556
 hrich700ringfinderhough.cc:557
 hrich700ringfinderhough.cc:558
 hrich700ringfinderhough.cc:559
 hrich700ringfinderhough.cc:560
 hrich700ringfinderhough.cc:561
 hrich700ringfinderhough.cc:562
 hrich700ringfinderhough.cc:563
 hrich700ringfinderhough.cc:564
 hrich700ringfinderhough.cc:565
 hrich700ringfinderhough.cc:566
 hrich700ringfinderhough.cc:567
 hrich700ringfinderhough.cc:568
 hrich700ringfinderhough.cc:569
 hrich700ringfinderhough.cc:570
 hrich700ringfinderhough.cc:571
 hrich700ringfinderhough.cc:572
 hrich700ringfinderhough.cc:573
 hrich700ringfinderhough.cc:574
 hrich700ringfinderhough.cc:575
 hrich700ringfinderhough.cc:576
 hrich700ringfinderhough.cc:577
 hrich700ringfinderhough.cc:578
 hrich700ringfinderhough.cc:579
 hrich700ringfinderhough.cc:580
 hrich700ringfinderhough.cc:581
 hrich700ringfinderhough.cc:582
 hrich700ringfinderhough.cc:583
 hrich700ringfinderhough.cc:584
 hrich700ringfinderhough.cc:585
 hrich700ringfinderhough.cc:586
 hrich700ringfinderhough.cc:587
 hrich700ringfinderhough.cc:588
 hrich700ringfinderhough.cc:589
 hrich700ringfinderhough.cc:590
 hrich700ringfinderhough.cc:591
 hrich700ringfinderhough.cc:592
 hrich700ringfinderhough.cc:593
 hrich700ringfinderhough.cc:594
 hrich700ringfinderhough.cc:595
 hrich700ringfinderhough.cc:596
 hrich700ringfinderhough.cc:597
 hrich700ringfinderhough.cc:598
 hrich700ringfinderhough.cc:599
 hrich700ringfinderhough.cc:600
 hrich700ringfinderhough.cc:601
 hrich700ringfinderhough.cc:602
 hrich700ringfinderhough.cc:603
 hrich700ringfinderhough.cc:604
 hrich700ringfinderhough.cc:605
 hrich700ringfinderhough.cc:606
 hrich700ringfinderhough.cc:607
 hrich700ringfinderhough.cc:608
 hrich700ringfinderhough.cc:609
 hrich700ringfinderhough.cc:610
 hrich700ringfinderhough.cc:611
 hrich700ringfinderhough.cc:612
 hrich700ringfinderhough.cc:613
 hrich700ringfinderhough.cc:614
 hrich700ringfinderhough.cc:615
 hrich700ringfinderhough.cc:616
 hrich700ringfinderhough.cc:617
 hrich700ringfinderhough.cc:618
 hrich700ringfinderhough.cc:619
 hrich700ringfinderhough.cc:620
 hrich700ringfinderhough.cc:621
 hrich700ringfinderhough.cc:622
 hrich700ringfinderhough.cc:623
 hrich700ringfinderhough.cc:624
 hrich700ringfinderhough.cc:625
 hrich700ringfinderhough.cc:626
 hrich700ringfinderhough.cc:627
 hrich700ringfinderhough.cc:628
 hrich700ringfinderhough.cc:629
 hrich700ringfinderhough.cc:630
 hrich700ringfinderhough.cc:631
 hrich700ringfinderhough.cc:632
 hrich700ringfinderhough.cc:633
 hrich700ringfinderhough.cc:634
 hrich700ringfinderhough.cc:635
 hrich700ringfinderhough.cc:636
 hrich700ringfinderhough.cc:637
 hrich700ringfinderhough.cc:638
 hrich700ringfinderhough.cc:639
 hrich700ringfinderhough.cc:640
 hrich700ringfinderhough.cc:641
 hrich700ringfinderhough.cc:642
 hrich700ringfinderhough.cc:643
 hrich700ringfinderhough.cc:644
 hrich700ringfinderhough.cc:645
 hrich700ringfinderhough.cc:646
 hrich700ringfinderhough.cc:647