[Insight-users] Monomodality Registration with IsoC3D and CT Images

Anonymous User anonymous @ anonymous
Thu, 28 Aug 2003 10:57:53 +0200 (CEST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime at docserver . cac . washington . edu for more info.

--1552035453-2094202827-1062061028=:2300
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine . LNX . 4 . 53 . 0308281057371 . 2300 at mempc046 . mem . unibe . ch>


Hello,

Last week, I had problems with a registration application I was trying to
create based on the help of the ITK Software Guide, the registration
examples as well as the online doc.

I am trying to create a registration app using a Euler3DTransform with a
Regular Step Gradient Optimizer and Mutual Information Metric.  I have
since simplified my program as not to use the Multi Resolution
Registration process.

The images I use are IsoC3D Images or CT Images of 156x156x156 pixels with
a pixel spacing of 0.474mm.  Three basic test cases are
done: a registration of the base image to itself, a registration of the based
image to a modified self ( -3mm in x, 3 degrees in z) as
well as registration of the based image to a modified self ( -5 mm in
x, 2 mm in y, -11 degrees in x, -11 degrees in z ).  For each of these
test cases, the optimizer scales have been modified in order to find an
optimal solution which is yet to be found.

Some people have suggested to use the latest CVS check out, which I will
do as soon as next week.  I have also tried a variety of combinations of
other transforms (Affine), optmizers (One Plus One) and metric (Mattes
Mutual Information) to evaluate what component might be deficient.

I have attached a file containing my test results.

Here are some code snippets in order to better understand my problem:

/*--------------------------------------------------------------------*/

  //Mutual Information Type
  MetricType::Pointer         metric        = MetricType::New();
  //Euler 3D Transform Type
  TransformType::Pointer      transform     = TransformType::New();
  //Regular Step Gradient Descent
  OptimizerType::Pointer      optimizer     = OptimizerType::New();
  InterpolatorType::Pointer   interpolator  = InterpolatorType::New();
  //Image Registration Method
  RegistrationType::Pointer   registration  = RegistrationType::New();

  (...)

  optimizer->SetScales(optimizerScales);
  metric->SetNumberOfSpatialSamples(atol(TestParameters[8]);

  //MutualInformation needs to be maximised
  optimizer->MaximizeOn();

  registration->SetMetric( metric );
  registration->SetOptimizer( optimizer );
  registration->SetTransform( transform );
  registration->SetInterpolator( interpolator );

  //I set the Nb of Iteration, the Max nb of Step and Min nb of Steps
  //in the Registration Interface as done in the ITK Software Guide p. 260

  (...)

  //Image File Reader
  fixedImageReader->SetFileName(  TestParameters[0] );
  movingImageReader->SetFileName( TestParameters[1] );

  fixedImageReader->Update();
  movingImageReader->Update();

  (...)

  //Cast Image Filter
  fixedCaster->SetInput(fixedImageReader->GetOutput());
  movingCaster->SetInput(movingImageReader->GetOutput());

  fixedCaster->Update();
  movingCaster->Update();

  (...)

  //Change Information Image Filter
  fixedcenterer->SetInput(fixedCaster->GetOutput());
  movingcenterer->SetInput(movingCaster->GetOutput());

  fixedcenterer->CenterImageOn();
  movingcenterer->CenterImageOn();

  fixedcenterer->Update();
  movingcenterer->Update();

  (...)

  //Calculated with a MinMaxImageCalculator as fixedSd=0.4*(max-min)+min
  metric->SetFixedImageStandardDeviation(fixedSd);
  metric->SetMovingImageStandardDeviation(fixedMd);

  (...)

  registration->SetFixedImage( fixedcenterer->GetOutput() );
  registration->SetMovingImage( movingcenterer->GetOutput() );
  registration->SetFixedImageRegion(
  fixedcenterer->GetOutput()->GetBufferedRegion() );

  (...)

  //No Initial Rotation or Translation
  registration->SetInitialTransformParameters( initialParameters );

  (...)

  //Set a Command Iteration Update as well as a Registration Interface

  try
    {
      registration->StartRegistration();
    }
  catch( itk::ExceptionObject & err )
    {
    //Error handling
    (...)
    }

  //Print Final Parameters
  (...)

  //Resample
  resample->SetTransform( finalTransform );
  resample->SetInput( movingImage );
  resample->SetSize( fixedImage->GetLargestPossibleRegion().GetSize() );
  resample->SetOutputOrigin(  fixedImage->GetOrigin() );
  resample->SetOutputSpacing( fixedImage->GetSpacing() );
  resample->SetDefaultPixelValue( 0 );
  resample->Update();

  //Write Output
  (...)

/*--------------------------------------------------------------*/

Thanks in advance for your help,

Anonymous User
--1552035453-2094202827-1062061028=:2300
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=ITK_TestSummary
Content-Transfer-Encoding: BASE64
Content-ID: <Pine . LNX . 4 . 53 . 0308281057080 . 2300 at mempc046 . mem . unibe . ch>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME=ITK_TestSummary

VGVzdCBTdW1tYXJ5IGZvciBJVEsgMS4yIGltcGxlbWVudGF0aW9ucyBSZWdp
c3RyYXRpb24gd2l0aA0KDQoxKSBNdWx0aSBSZXNvbHV0aW9uIEV1bGVyM0Qg
VHJhbnNmb3JtLCBSZWd1bGFyIFN0ZXAgR3JhZGllbnQgT3B0aW1pemVyLCBN
dXR1YWwgSW5mb3JtYXRpb24NCjIpIE11bHRpIFJlc29sdXRpb24gRXVsZXIz
RCBUcmFuc2Zvcm0sIFJlZ3VsYXIgU3RlcCBHcmFkaWVudCBPcHRpbWl6ZXIs
IE1hdHRlcyBNdXR1YWwgSW5mb3JtYXRpb24NCjMpIE11bHRpIFJlc29sdXRp
b24gRXVsZXIzRCBUcmFuc2Zvcm0sIE9uZSBQbHVzIE9uZSBPcHRpbWl6ZXIs
IE11dHVhbCBJbmZvcm1hdGlvbg0KNCkgTXVsdGkgUmVzb2x1dGlvbiBFdWxl
cjNEIFRyYW5zZm9ybSwgT25lIFBsdXMgT25lIE9wdGltaXplciwgTWF0dGVz
IE11dHVhbCBJbmZvcm1hdGlvbg0KDQpUZXN0IFN1bW1hcnkgZm9yIElUSyBp
bXBsZW1lbnRhdGlvbnMgb2YgUmVnaXN0cmF0aW9uIHdpdGgNCg0KNSkgTm9u
IE11bHRpIFJlc29sdXRpb24gRXVsZXIzRCBUcmFuc2Zvcm0sIE9uZSBQbHVz
IE9uZSBPcHRpbWl6ZXIsIE1hdHRlcyBNdXR1YWwgSW5mb3JtYXRpb24NCjYp
IE5vbiBNdWx0aSBSZXNvbHV0aW9uIEV1bGVyM0QgVHJhbnNmb3JtLCBPbmUg
UGx1cyBPbmUgT3B0aW1pemVyLCBNdXR1YWwgSW5mb3JtYXRpb24NCg0KTk9U
RTogdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGZpbGUgaXMgdGhlIGJhc2UgaW1h
Z2UsIHRoZSBuYW1lIG9mIHRoZSBzZWNvbmQgaXMgY29uc3RydWN0ZWQNCmFz
IHRvIHRlbGwgd2hhdCB0aGUgZmluYWwgcmVzdWx0IHNob3VsZCBiZSBFeDog
dHg9LTMgdHk9MCB0ej0wIHJ4PTAgcnk9KzMgcno9KzExIC0+IElzb19tM3Aw
cDBwMHAzcDExLmltZw0KDQpUaGUgaW1hZ2VzIHRoYXQgd2VyZSB1c2VkIGFy
ZSBJU09DM0QgSW1hZ2VzIG9mIHRoZSB2ZXJ0ZWJyYS4NCg0KKioqKiogMSkg
TXVsdGkgUmVzIEV1bGVyM0QgVHJhbnNmb3JtLCBSZWd1bGFyIFN0ZXAgR3Jh
ZGllbnQgT3B0aW1pemVyLCBNdXR1YWwgSW5mb3JtYXRpb24gKioqKioNCg0K
IC0tIFRFU1QgIzEgLS0NCkltYWdlIDE6IElzby5pbWcNCkltYWdlIDI6IElz
by5pbWcNCkltYWdlIFN0YW5kYXJkIERldmlhdGlvbjogMC40DQpTdGVwIExl
bmdodDogNA0KTmIgb2YgU3RlcHM6IDUNCk51bWJlciBvZiBJdGVyYXRpb25z
OiAxMDANClNwYXRpYWwgU2FtcGxlcyBOdW1iZXI6IDEwMA0KUmVzb2x1dGlv
biBMZXZlbHM6IDMNCkluaXRpYWwgUm90YXRpb246IDAsMCwwDQpJbml0aWFs
IFRyYW5zbGF0aW9uOiAwLDAsMA0KT3B0aW1pemVyIFJvdGF0aW9uIFNjYWxl
OiAxMDAwDQpPcHRpbWl6ZXIgVHJhbnNsYXRpb24gU2NhbGU6IDAuMDUNCg0K
UmVzdWx0cyA9DQogIHR4ID0gLTAuOTI3MjENCiAgdHkgPSAwLjc2NDE3Ng0K
ICB0eiA9IC0wLjAyMDU2MTYNCiAgcnggPSAwLjE0MDI1Mg0KICByeSA9IDAu
MjkxMTc3DQogIHJ6ID0gLTAuMTMwMDY5DQoNCiAgTWV0cmljIHZhbHVlICA9
IDQuOTMzMDVlLTA1DQoNCiAtLSBURVNUICMyIC0tDQpJbWFnZSAxOiBJc28u
aW1nDQpJbWFnZSAyOiBJc29fbTNwMHAwcDBwMG0zLmltZw0KSW1hZ2UgU3Rh
bmRhcmQgRGV2aWF0aW9uOiAwLjQNClN0ZXAgTGVuZ2h0OiA0DQpOYiBvZiBT
dGVwczogNQ0KTnVtYmVyIG9mIEl0ZXJhdGlvbnM6IDEwMA0KU3BhdGlhbCBT
YW1wbGVzIE51bWJlcjogMTAwDQpSZXNvbHV0aW9uIExldmVsczogMw0KSW5p
dGlhbCBSb3RhdGlvbjogMCwwLDANCkluaXRpYWwgVHJhbnNsYXRpb246IDAs
MCwwDQpPcHRpbWl6ZXIgUm90YXRpb24gU2NhbGU6IDEwMDANCk9wdGltaXpl
ciBUcmFuc2xhdGlvbiBTY2FsZTogMC4wNQ0KDQpSZXN1bHRzID0NCiAgdHgg
PSAtMi42NjQ5OQ0KICB0eSA9IC0xLjUwNDQ0DQogIHR6ID0gMC43NDM4NjIN
CiAgcnggPSAtMC4wNjk4ODQNCiAgcnkgPSAtMC42NDI2MjINCiAgcnogPSAw
LjE1NDgxNQ0KDQogIE1ldHJpYyB2YWx1ZSAgPSAwLjAwMTI3ODI3DQoNCiAt
LSBURVNUICMzIC0tDQpJbWFnZSAxOiBJc28uaW1nDQpJbWFnZSAyOiBJc29f
bTVwMnAwcDExcDBtMTEuaW1nDQpJbWFnZSBTdGFuZGFyZCBEZXZpYXRpb246
IDAuNA0KU3RlcCBMZW5naHQ6IDQNCk5iIG9mIFN0ZXBzOiA1DQpOdW1iZXIg
b2YgSXRlcmF0aW9uczogMTAwDQpTcGF0aWFsIFNhbXBsZXMgTnVtYmVyOiAx
MDANClJlc29sdXRpb24gTGV2ZWxzOiAzDQpJbml0aWFsIFJvdGF0aW9uOiAw
LDAsMA0KSW5pdGlhbCBUcmFuc2xhdGlvbjogMCwwLDANCk9wdGltaXplciBS
b3RhdGlvbiBTY2FsZTogMTAwMA0KT3B0aW1pemVyIFRyYW5zbGF0aW9uIFNj
YWxlOiAwLjA1DQoNClJlc3VsdHMgPQ0KICB0eCA9IDAuOTU0NTE0DQogIHR5
ID0gMC41NzUwNDYNCiAgdHogPSAtMC4zNzIyNTcNCiAgcnggPSAtMC4wMDI1
OTU2Ng0KICByeSA9IDAuMDUwNTY2Mg0KICByeiA9IDAuMDY4MzExNA0KDQog
IE1ldHJpYyB2YWx1ZSAgPSAtNi40MTE2MmUtMDUNCg0KQ29uY2x1c2lvbjog
SW1hZ2VzIGRpZCBub3Qgc2VlbSB0byByZWdpc3RyZXIuICBEaWQgYWxzbyBv
dGhlcnMgdGVzdHMgYnkgdmFyeWluZw0KdGhlIG9wdGltaXphdGlvbiBzY2Fs
ZXMgd2hpY2ggZGlkIG5vdCBnZW5lcmF0ZSBiZXR0ZXIgcmVzdWx0cyBhbmQg
aGFkIHRvIGJlIGFkYXB0ZWQNCmRpZmZyZW50bHkgZm9yIGVhY2ggaW1hZ2Ug
aW4gb3JkZXIgdG8gZ2V0IHNvbWV3aGF0IG9mIGEgYmV0dGVyIHJlc3VsdC4N
Cg0KKioqKiogMikgTXVsdGkgUmVzIEV1bGVyM0QgVHJhbnNmb3JtLCBSZWd1
bGFyIFN0ZXAgR3JhZGllbnQgT3B0aW1pemVyLCBNYXR0ZXMgTXV0dWFsIElu
Zm9ybWF0aW9uICoqKioqDQoNCiAtLSBURVNUICMxIC0tDQpJbWFnZSAxOiBJ
c28uaW1nDQpJbWFnZSAyOiBJc28uaW1nDQpOdW1iZXIgb2YgSGlzdG9ncmFt
IGJpbnM6IDUwDQpTdGVwIExlbmdodDogNA0KTmIgb2YgU3RlcHM6IDUNCk51
bWJlciBvZiBJdGVyYXRpb25zOiAzNQ0KU3BhdGlhbCBTYW1wbGVzIE51bWJl
cjogMzYwMDANClJlc29sdXRpb24gTGV2ZWxzOiAzDQpJbml0aWFsIFJvdGF0
aW9uOiAwLDAsMA0KSW5pdGlhbCBUcmFuc2xhdGlvbjogMCwwLDANCk9wdGlt
aXplciBSb3RhdGlvbiBTY2FsZTogMTAwMA0KT3B0aW1pemVyIFRyYW5zbGF0
aW9uIFNjYWxlOiAwLjA1DQoNClJlc3VsdHMgPQ0KICB0eCA9IDAuMDczODcy
NQ0KICB0eSA9IC0wLjA2Njc3NjYNCiAgdHogPSAtMC4yMDA4OTUNCiAgcngg
PSAtMS4wMjc5NQ0KICByeSA9IC0yLjU2MDAzDQogIHJ6ID0gMC45ODA2MQ0K
DQogIE1ldHJpYyB2YWx1ZSAgPSAtMC41MTU4MDMNCg0KIC0tIFRFU1QgIzIg
LS0NCkltYWdlIDE6IElzby5pbWcNCkltYWdlIDI6IElzb19tM3AwcDBwMHAw
bTMuaW1nDQpOdW1iZXIgb2YgSGlzdG9ncmFtIGJpbnM6IDUwDQpTdGVwIExl
bmdodDogNA0KTmIgb2YgU3RlcHM6IDUNCk51bWJlciBvZiBJdGVyYXRpb25z
OiAzNQ0KU3BhdGlhbCBTYW1wbGVzIE51bWJlcjogMzYwMDANClJlc29sdXRp
b24gTGV2ZWxzOiAzDQpJbml0aWFsIFJvdGF0aW9uOiAwLDAsMA0KSW5pdGlh
bCBUcmFuc2xhdGlvbjogMCwwLDANCk9wdGltaXplciBSb3RhdGlvbiBTY2Fs
ZTogMTAwMA0KT3B0aW1pemVyIFRyYW5zbGF0aW9uIFNjYWxlOiAwLjA1DQoN
ClJlc3VsdHMgPQ0KICB0eCA9IC0zLjIxMzMNCiAgdHkgPSAtMC45MTk5NjQN
CiAgdHogPSAwLjAyOTU4NzINCiAgcnggPSAwLjMzNjYzOA0KICByeSA9IC0w
LjU1MDM4Mw0KICByeiA9IDMuODkyMTkNCg0KICBNZXRyaWMgdmFsdWUgID0g
LTAuMzUzMzkNCg0KIC0tIFRFU1QgIzMgLS0NCkltYWdlIDE6IElzby5pbWcN
CkltYWdlIDI6IElzb19tNXAycDBwMTFwMG0xMS5pbWcNCk51bWJlciBvZiBI
aXN0b2dyYW0gYmluczogNTANClN0ZXAgTGVuZ2h0OiA0DQpOYiBvZiBTdGVw
czogNQ0KTnVtYmVyIG9mIEl0ZXJhdGlvbnM6IDM1DQpTcGF0aWFsIFNhbXBs
ZXMgTnVtYmVyOiAzNjAwMA0KUmVzb2x1dGlvbiBMZXZlbHM6IDMNCkluaXRp
YWwgUm90YXRpb246IDAsMCwwDQpJbml0aWFsIFRyYW5zbGF0aW9uOiAwLDAs
MA0KT3B0aW1pemVyIFJvdGF0aW9uIFNjYWxlOiAxMDAwDQpPcHRpbWl6ZXIg
VHJhbnNsYXRpb24gU2NhbGU6IDAuMDUNCg0KUmVzdWx0cyA9DQogIHR4ID0g
LTUuNzU4NTkNCiAgdHkgPSAtMS45MTMyNQ0KICB0eiA9IC0wLjkxNjA5Mg0K
ICByeCA9IC0zLjI5NjINCiAgcnkgPSAtMC42NjE4NDENCiAgcnogPSAxLjUz
NTExDQoNCiAgTWV0cmljIHZhbHVlICA9IC0wLjExNjkzOQ0KDQpDb25jbHVz
aW9uczogc2FtZSBhcyBhYm92ZQ0KDQoqKioqKiAzKSBNdWx0aSBSZXMgRXVs
ZXIzRCBUcmFuc2Zvcm0sIE9uZSBQbHVzIE9uZSBPcHRpbWl6ZXIsIE11dHVh
bCBJbmZvcm1hdGlvbiAqKioqKg0KDQogLS0gVEVTVCAjMSAtLQ0KSW1hZ2Ug
MTogSXNvLmltZw0KSW1hZ2UgMjogSXNvLmltZw0KSW1hZ2UgU3RhbmRhcmQg
RGV2aWF0aW9uOiAwLjQNCkdyb3d0aCBGYWN0b3I6IDEuMDENCkluaXRpYWwg
UmFkaXVzOiA1DQpOdW1iZXIgb2YgSXRlcmF0aW9uczogMTAwDQpTcGF0aWFs
IFNhbXBsZXMgTnVtYmVyOiAxMDANClJlc29sdXRpb24gTGV2ZWxzOiAzDQpJ
bml0aWFsIFJvdGF0aW9uOiAwLDAsMA0KSW5pdGlhbCBUcmFuc2xhdGlvbjog
MCwwLDANCk9wdGltaXplciBSb3RhdGlvbiBTY2FsZTogMQ0KT3B0aW1pemVy
IFRyYW5zbGF0aW9uIFNjYWxlOiAxDQoNClJlc3VsdHMgPSBHT09EIFJFU1VM
VFMhIQ0KICByeCA9IDANCiAgcnkgPSAwDQogIHJ6ID0gMA0KICB0eCA9IDAN
CiAgdHkgPSAwDQogIHR6ID0gMA0KDQogIE1ldHJpYyB2YWx1ZSAgPSAwLjAw
MjMwNjk5DQoNCiAtLSBURVNUICMyIC0tDQpJbWFnZSAxOiBJc28uaW1nDQpJ
bWFnZSAyOiBJc29fbTNwMHAwcDBwMG0zLmltZw0KSW1hZ2UgU3RhbmRhcmQg
RGV2aWF0aW9uOiAwLjQNCkdyb3d0aCBGYWN0b3I6IDEuMDENCkluaXRpYWwg
UmFkaXVzOiA1DQpOdW1iZXIgb2YgSXRlcmF0aW9uczogMTAwDQpTcGF0aWFs
IFNhbXBsZXMgTnVtYmVyOiAxMDANClJlc29sdXRpb24gTGV2ZWxzOiAzDQpJ
bml0aWFsIFJvdGF0aW9uOiAwLDAsMA0KSW5pdGlhbCBUcmFuc2xhdGlvbjog
MCwwLDANCk9wdGltaXplciBSb3RhdGlvbiBTY2FsZTogNzUwDQpPcHRpbWl6
ZXIgVHJhbnNsYXRpb24gU2NhbGU6IDAuNg0KDQpSZXN1bHRzID0NCiAgdHgg
PSA1LjAyODg5DQogIHR5ID0gLTUuODA4NDQNCiAgdHogPSAtMzQuMzA2OA0K
ICByeCA9IDAuNTczNjA0DQogIHJ5ID0gMC42OTk1MDUNCiAgcnogPSAtMC44
MjM1MDUNCg0KICBNZXRyaWMgdmFsdWUgID0gMC4wMDI3ODk4Nw0KDQpOdW1i
ZXIgb2YgSXRlcmF0aW9uczogMTAwMA0KUmVzdWx0cyA9DQogIHR4ID0gLTEw
LjQzMQ0KICB0eSA9IDMuNDk5MDMNCiAgdHogPSAyOS4zNjkxDQogIHJ4ID0g
MS4wNjY1Mw0KICByeSA9IC0xLjQxODE5DQogIHJ6ID0gMC44MTk3NjcNCg0K
ICBNZXRyaWMgdmFsdWUgID0gMC4wMDI3MDQ2Mw0KDQogLS0gVEVTVCAjMyAt
LQ0KSW1hZ2UgMTogSXNvLmltZw0KSW1hZ2UgMjogSXNvX20zcDBwMHAwcDBt
My5pbWcNCkltYWdlIFN0YW5kYXJkIERldmlhdGlvbjogMC40DQpHcm93dGgg
RmFjdG9yOiAxLjAxDQpJbml0aWFsIFJhZGl1czogNQ0KTnVtYmVyIG9mIEl0
ZXJhdGlvbnM6IDUwMA0KU3BhdGlhbCBTYW1wbGVzIE51bWJlcjogMTAwDQpS
ZXNvbHV0aW9uIExldmVsczogMw0KSW5pdGlhbCBSb3RhdGlvbjogMCwwLDAN
CkluaXRpYWwgVHJhbnNsYXRpb246IDAsMCwwDQpPcHRpbWl6ZXIgUm90YXRp
b24gU2NhbGU6IDYwMA0KT3B0aW1pemVyIFRyYW5zbGF0aW9uIFNjYWxlOiAw
LjYNCg0KUmVzdWx0cyA9DQogIHR4ID0gLTQuNTk4NzMNCiAgdHkgPSAtMTEu
MjYxNw0KICB0eiA9IDguNzI1NjQNCiAgcnggPSAzLjcyNDk3DQogIHJ5ID0g
MC40NjU2OTINCiAgcnogPSAtMi4zNjU4Mw0KDQogIE1ldHJpYyB2YWx1ZSAg
PSAwLjAwMjE3NzY2DQoNCiAtLSBURVNUICM0IC0tDQpJbWFnZSAxOiBJc28u
aW1nDQpJbWFnZSAyOiBJc29fbTNwMHAwcDBwMG0zLmltZw0KSW1hZ2UgU3Rh
bmRhcmQgRGV2aWF0aW9uOiAwLjQNCkdyb3d0aCBGYWN0b3I6IDEuMDENCklu
aXRpYWwgUmFkaXVzOiA1DQpOdW1iZXIgb2YgSXRlcmF0aW9uczogMTAwDQpT
cGF0aWFsIFNhbXBsZXMgTnVtYmVyOiAxMDANClJlc29sdXRpb24gTGV2ZWxz
OiAzDQpJbml0aWFsIFJvdGF0aW9uOiAwLDAsMA0KSW5pdGlhbCBUcmFuc2xh
dGlvbjogMCwwLDANCk9wdGltaXplciBSb3RhdGlvbiBTY2FsZTogNTAwDQpP
cHRpbWl6ZXIgVHJhbnNsYXRpb24gU2NhbGU6IDAuNg0KDQpSZXN1bHRzID0N
CiAgdHggPSAtMS4wODY5NA0KICB0eSA9IDAuNTgwNjgzDQogIHR6ID0gLTEz
LjkxODENCiAgcnggPSAtMy41OTQ1Ng0KICByeSA9IC0xLjkxMTUyDQogIHJ6
ID0gMS45NjE5Mw0KDQogIE1ldHJpYyB2YWx1ZSAgPSAwLjAwMzgyNzkzDQoN
CiAtLSBURVNUICM1IC0tDQpJbWFnZSAxOiBJc28uaW1nDQpJbWFnZSAyOiBJ
c29fbTVwMnAwcDExcDBtMTEuaW1nDQpJbWFnZSBTdGFuZGFyZCBEZXZpYXRp
b246IDAuNA0KR3Jvd3RoIEZhY3RvcjogMS4wMQ0KSW5pdGlhbCBSYWRpdXM6
IDUNCk51bWJlciBvZiBJdGVyYXRpb25zOiAxMDANClNwYXRpYWwgU2FtcGxl
cyBOdW1iZXI6IDEwMA0KUmVzb2x1dGlvbiBMZXZlbHM6IDMNCkluaXRpYWwg
Um90YXRpb246IDAsMCwwDQpJbml0aWFsIFRyYW5zbGF0aW9uOiAwLDAsMA0K
T3B0aW1pemVyIFJvdGF0aW9uIFNjYWxlOiA0NTANCk9wdGltaXplciBUcmFu
c2xhdGlvbiBTY2FsZTogMC41NQ0KDQpSZXN1bHRzID0NCiAgdHggPSAyLjc4
NTI0DQogIHR5ID0gMS42NTc0Ng0KICB0eiA9IC0xMS43MTgyDQogIHJ4ID0g
LTAuNjk1NTYxDQogIHJ5ID0gMC4wMTA5MDgxDQogIHJ6ID0gLTIuNzExNTkN
Cg0KICBNZXRyaWMgdmFsdWUgID0gMC4wMDA3MTk2NDYNCg0KQ29uY2x1c2lv
bnM6IHNhbWUgYXMgYWJvdmUNCg0KKioqKiogNCkgTXVsdGkgUmVzIEV1bGVy
M0QgVHJhbnNmb3JtLCBPbmUgUGx1cyBPbmUgT3B0aW1pemVyLCBNYXR0ZXMg
TXV0dWFsIEluZm9ybWF0aW9uICoqKioqDQoNCiAtLSBURVNUICMxIC0tDQpJ
bWFnZSAxOiBJc28uaW1nDQpJbWFnZSAyOiBJc28uaW1nDQpOdW1iZXIgb2Yg
SGlzdG9ncmFtIEJpbnM6IDUwDQpHcm93dGggRmFjdG9yOiAxLjAxDQpJbml0
aWFsIFJhZGl1czogNQ0KTnVtYmVyIG9mIEl0ZXJhdGlvbnM6IDM1DQpTcGF0
aWFsIFNhbXBsZXMgTnVtYmVyOiAzNjAwMA0KUmVzb2x1dGlvbiBMZXZlbHM6
IDMNCkluaXRpYWwgUm90YXRpb246IDAsMCwwDQpJbml0aWFsIFRyYW5zbGF0
aW9uOiAwLDAsMA0KT3B0aW1pemVyIFJvdGF0aW9uIFNjYWxlOiAxDQpPcHRp
bWl6ZXIgVHJhbnNsYXRpb24gU2NhbGU6IDENCg0KUmVzdWx0cyA9DQogIHR4
ID0gMA0KICB0eSA9IDANCiAgdHogPSAwDQogIHJ4ID0gMA0KICByeSA9IDAN
CiAgcnogPSAwDQoNCiAgTWV0cmljIHZhbHVlICA9IC0wLjk1Mjc2Nw0KDQog
LS0gVEVTVCAjMiAtLQ0KSW1hZ2UgMTogSXNvLmltZw0KSW1hZ2UgMjogSXNv
X20zcDBwMHAwcDBtMy5pbWcNCk51bWJlciBvZiBIaXN0b2dyYW0gQmluczog
NTANCkdyb3d0aCBGYWN0b3I6IDEuMDENCkluaXRpYWwgUmFkaXVzOiA1DQpO
dW1iZXIgb2YgSXRlcmF0aW9uczogMzUNClNwYXRpYWwgU2FtcGxlcyBOdW1i
ZXI6IDM2MDAwDQpSZXNvbHV0aW9uIExldmVsczogMw0KSW5pdGlhbCBSb3Rh
dGlvbjogMCwwLDANCkluaXRpYWwgVHJhbnNsYXRpb246IDAsMCwwDQpPcHRp
bWl6ZXIgUm90YXRpb24gU2NhbGU6IDUwMA0KT3B0aW1pemVyIFRyYW5zbGF0
aW9uIFNjYWxlOiAwLjYNCg0KUmVzdWx0cyA9DQogIHR4ID0gLTMuMTk4NjQN
CiAgdHkgPSAyLjEwMjgNCiAgdHogPSAxLjA4NzUyDQogIHJ4ID0gMC4zOTA1
NjINCiAgcnkgPSAwLjAxMjYzNjkNCiAgcnogPSAtMC45NDM2NTENCg0KICBN
ZXRyaWMgdmFsdWUgID0gLTAuMzA5NTg1DQoNClJlc3VsdHMgPQ0KICB0eCA9
IC0yLjg2NjI4DQogIHR5ID0gLTEuMTk3NjYNCiAgdHogPSAwLjE5ODE1MQ0K
ICByeCA9IC0wLjExNTI3NA0KICByeSA9IC0wLjk3MTA3NA0KICByeiA9IDAu
MjAyNjMxDQoNCiAgTWV0cmljIHZhbHVlICA9IC0wLjQ1NDMxDQoNCiAtLSBU
RVNUICMzIC0tDQpJbWFnZSAxOiBJc28uaW1nDQpJbWFnZSAyOiBJc29fbTNw
MHAwcDBwMG0zLmltZw0KTnVtYmVyIG9mIEhpc3RvZ3JhbSBCaW5zOiA1MA0K
R3Jvd3RoIEZhY3RvcjogMS4wMQ0KSW5pdGlhbCBSYWRpdXM6IDUNCk51bWJl
ciBvZiBJdGVyYXRpb25zOiAzNQ0KU3BhdGlhbCBTYW1wbGVzIE51bWJlcjog
MzYwMDANClJlc29sdXRpb24gTGV2ZWxzOiAzDQpJbml0aWFsIFJvdGF0aW9u
OiAwLDAsMA0KSW5pdGlhbCBUcmFuc2xhdGlvbjogMCwwLDANCk9wdGltaXpl
ciBSb3RhdGlvbiBTY2FsZTogNjAwDQpPcHRpbWl6ZXIgVHJhbnNsYXRpb24g
U2NhbGU6IDAuNg0KDQpSZXN1bHRzID0NCiAgdHggPSAtMi42OTQxOQ0KICB0
eSA9IDAuNTU4NDE3DQogIHR6ID0gLTQuNTM5MjQNCiAgcnggPSAtMC4wNTA0
OTc2DQogIHJ5ID0gMC41MDE1MTYNCiAgcnogPSAwLjA3Mzc0NzQNCg0KICBN
ZXRyaWMgdmFsdWUgID0gLTAuMjU0NDM0DQoNCiAtLSBURVNUICM0IC0tDQpJ
bWFnZSAxOiBJc28uaW1nDQpJbWFnZSAyOiBJc29fbTVwMnAwcDExcDBtMTEu
aW1nDQpOdW1iZXIgb2YgSGlzdG9ncmFtIEJpbnM6IDUwDQpHcm93dGggRmFj
dG9yOiAxLjAxDQpJbml0aWFsIFJhZGl1czogNQ0KTnVtYmVyIG9mIEl0ZXJh
dGlvbnM6IDM1DQpTcGF0aWFsIFNhbXBsZXMgTnVtYmVyOiAzNjAwMA0KUmVz
b2x1dGlvbiBMZXZlbHM6IDMNCkluaXRpYWwgUm90YXRpb246IDAsMCwwDQpJ
bml0aWFsIFRyYW5zbGF0aW9uOiAwLDAsMA0KT3B0aW1pemVyIFJvdGF0aW9u
IFNjYWxlOiA0NjUNCk9wdGltaXplciBUcmFuc2xhdGlvbiBTY2FsZTogMC42
Mw0KDQpSZXN1bHRzID0NCiAgcnggPSAwLjE5Mjc0Nw0KICByeSA9IDAuODEx
MDk4DQogIHJ6ID0gLTIuNjAzMDENCiAgdHggPSAtNC42MjgxOQ0KICB0eSA9
IC0zLjk4OTM3DQogIHR6ID0gLTQuODkxMjgNCiAgTWV0cmljIHZhbHVlICA9
IC0wLjEzNTE0NA0KDQpDb25jbHVzaW9uczogc2FtZSBhcyBhYm92ZQ0KDQoq
KioqKiA1KSBOb24gTXVsdGkgUmVzIEV1bGVyM0QgVHJhbnNmb3JtLCBPbmUg
UGx1cyBPbmUgT3B0aW1pemVyLCBNdXR1YWwgSW5mb3JtYXRpb24gKioqKioN
Cg0KIC0tIFRFU1QgIzEgLS0NCkltYWdlIDE6IElzby5pbWcNCkltYWdlIDI6
IElzby5pbWcNCkltYWdlIFN0YW5kYXJkIERldmlhdGlvbjogMC40DQpHcm93
dGggRmFjdG9yOiAxLjAxDQpJbml0aWFsIFJhZGl1czogNQ0KTnVtYmVyIG9m
IEl0ZXJhdGlvbnM6IDEwMA0KU3BhdGlhbCBTYW1wbGVzIE51bWJlcjogMTAw
DQpJbml0aWFsIFJvdGF0aW9uOiAwLDAsMA0KSW5pdGlhbCBUcmFuc2xhdGlv
bjogMCwwLDANCk9wdGltaXplciBSb3RhdGlvbiBTY2FsZTogMQ0KT3B0aW1p
emVyIFRyYW5zbGF0aW9uIFNjYWxlOiAxDQoNClJlc3VsdHMgPQ0KICB0eCA9
IDANCiAgdHkgPSAwDQogIHR6ID0gMA0KICByeCA9IDANCiAgcnkgPSAwDQog
IHJ6ID0gMA0KDQogIE1ldHJpYyB2YWx1ZSAgPSAwLjAwMjE3NDg3DQoNCiAt
LSBURVNUICMyIC0tDQpJbWFnZSAxOiBJc28uaW1nDQpJbWFnZSAyOiBJc29f
bTNwMHAwcDBwMG0zLmltZw0KSW1hZ2UgU3RhbmRhcmQgRGV2aWF0aW9uOiAw
LjQNCkdyb3d0aCBGYWN0b3I6IDEuMDENCkluaXRpYWwgUmFkaXVzOiA1DQpO
dW1iZXIgb2YgSXRlcmF0aW9uczogMTAwDQpTcGF0aWFsIFNhbXBsZXMgTnVt
YmVyOiAxMDANCkluaXRpYWwgUm90YXRpb246IDAsMCwwDQpJbml0aWFsIFRy
YW5zbGF0aW9uOiAwLDAsMA0KT3B0aW1pemVyIFJvdGF0aW9uIFNjYWxlOiA1
MDANCk9wdGltaXplciBUcmFuc2xhdGlvbiBTY2FsZTogMC42DQoNClJlc3Vs
dHMgPQ0KICB0eCA9IC0wLjIxNTIwMg0KICB0eSA9IDIuNzQxODMNCiAgdHog
PSAyMS44OTQzDQogIHJ4ID0gMC42MjcxNTINCiAgcnkgPSAtMC43NTY1MjIN
CiAgcnogPSAtMS45MjQ2Nw0KDQogIE1ldHJpYyB2YWx1ZSAgPSAwLjAwMTQx
ODIyDQoNCiAtLSBURVNUICMzIC0tDQpJbWFnZSAxOiBJc28uaW1nDQpJbWFn
ZSAyOiBJc29fbTNwMHAwcDBwMG0zLmltZw0KSW1hZ2UgU3RhbmRhcmQgRGV2
aWF0aW9uOiAwLjQNCkdyb3d0aCBGYWN0b3I6IDEuMDENCkluaXRpYWwgUmFk
aXVzOiA1DQpOdW1iZXIgb2YgSXRlcmF0aW9uczogMTAwDQpTcGF0aWFsIFNh
bXBsZXMgTnVtYmVyOiAxMDANCkluaXRpYWwgUm90YXRpb246IDAsMCwwDQpJ
bml0aWFsIFRyYW5zbGF0aW9uOiAwLDAsMA0KT3B0aW1pemVyIFJvdGF0aW9u
IFNjYWxlOiA2MDANCk9wdGltaXplciBUcmFuc2xhdGlvbiBTY2FsZTogMC42
DQoNClJlc3VsdHMgPQ0KICB0eCA9IDYuNTM3NTQNCiAgdHkgPSAtNDMuNzM4
MQ0KICB0eiA9IC0zMi45NDg3DQogIHJ4ID0gLTEuNDM3NQ0KICByeSA9IDEu
ODMxMTMNCiAgcnogPSAwLjU5Njg4Mg0KDQogIE1ldHJpYyB2YWx1ZSAgPSAw
LjAwMDM0MDg4Mw0KDQogLS0gVEVTVCAjNCAtLQ0KSW1hZ2UgMTogSXNvLmlt
Zw0KSW1hZ2UgMjogSXNvX201cDJwMHAxMXAwbTExLmltZw0KSW1hZ2UgU3Rh
bmRhcmQgRGV2aWF0aW9uOiAwLjQNCkdyb3d0aCBGYWN0b3I6IDEuMDENCklu
aXRpYWwgUmFkaXVzOiA1DQpOdW1iZXIgb2YgSXRlcmF0aW9uczogMTAwDQpT
cGF0aWFsIFNhbXBsZXMgTnVtYmVyOiAxMDANCkluaXRpYWwgUm90YXRpb246
IDAsMCwwDQpJbml0aWFsIFRyYW5zbGF0aW9uOiAwLDAsMA0KT3B0aW1pemVy
IFJvdGF0aW9uIFNjYWxlOiA0NjUNCk9wdGltaXplciBUcmFuc2xhdGlvbiBT
Y2FsZTogMC42Mw0KDQpSZXN1bHRzID0NCiAgdHggPSA3LjA4NjQ2DQogIHR5
ID0gLTUuMzQ2NjENCiAgdHogPSA0LjY0NA0KICByeCA9IDAuMjQ2MzA4DQog
IHJ5ID0gMC42OTkxMDgNCiAgcnogPSAtMi45NDgyMw0KDQogIE1ldHJpYyB2
YWx1ZSAgPSAwLjAwMTQzMjYyDQoNCiBDb25jbHVzaW9uczogc2FtZSBhcyBh
Ym92ZQ0KDQoqKioqKiA2KSBOb24gTXVsdGkgUmVzIEV1bGVyM0QgVHJhbnNm
b3JtLCBPbmUgUGx1cyBPbmUgT3B0aW1pemVyLCBNYXR0ZXMgTXV0dWFsIElu
Zm9ybWF0aW9uICoqKioqDQoNCiAtLSBURVNUICMxIC0tDQpJbWFnZSAxOiBJ
c28uaW1nDQpJbWFnZSAyOiBJc28uaW1nDQpOdW1iZXIgb2YgSGlzdG9ncmFt
IEJpbnM6IDUwDQpHcm93dGggRmFjdG9yOiAxLjAxDQpJbml0aWFsIFJhZGl1
czogNQ0KTnVtYmVyIG9mIEl0ZXJhdGlvbnM6IDEwMA0KU3BhdGlhbCBTYW1w
bGVzIE51bWJlcjogMTAwDQpJbml0aWFsIFJvdGF0aW9uOiAwLDAsMA0KSW5p
dGlhbCBUcmFuc2xhdGlvbjogMCwwLDANCk9wdGltaXplciBSb3RhdGlvbiBT
Y2FsZTogMQ0KT3B0aW1pemVyIFRyYW5zbGF0aW9uIFNjYWxlOiAxDQoNClJl
c3VsdHMgPSBHT09EIFJFU1VMVFMhIQ0KICB0eCA9IDANCiAgdHkgPSAwDQog
IHR6ID0gMA0KICByeCA9IDANCiAgcnkgPSAwDQogIHJ6ID0gMA0KDQogIE1l
dHJpYyB2YWx1ZSAgPSAtMC45MTk5MTgNCg0KIC0tIFRFU1QgIzIgLS0NCklt
YWdlIDE6IElzby5pbWcNCkltYWdlIDI6IElzb19tM3AwcDBwMHAwbTMuaW1n
DQpOdW1iZXIgb2YgSGlzdG9ncmFtIEJpbnM6IDUwDQpHcm93dGggRmFjdG9y
OiAxLjAxDQpJbml0aWFsIFJhZGl1czogNQ0KTnVtYmVyIG9mIEl0ZXJhdGlv
bnM6IDM1DQpTcGF0aWFsIFNhbXBsZXMgTnVtYmVyOiAzNjAwMA0KSW5pdGlh
bCBSb3RhdGlvbjogMCwwLDANCkluaXRpYWwgVHJhbnNsYXRpb246IDAsMCww
DQpPcHRpbWl6ZXIgUm90YXRpb24gU2NhbGU6IDUwMA0KT3B0aW1pemVyIFRy
YW5zbGF0aW9uIFNjYWxlOiAwLjYNCg0KUmVzdWx0cyA9DQogIHR4ID0gLTEu
MzE1NjYNCiAgdHkgPSAwLjgyMjk0OA0KICB0eiA9IC0xLjA2MTY4DQogIHJ4
ID0gMC4xODg4OTENCiAgcnkgPSAtMC4wMjE2NDMyDQogIHJ6ID0gLTAuMDIz
ODE5Mw0KDQogIE1ldHJpYyB2YWx1ZSAgPSAtMC4xODUwMzMNCg0KIC0tIFRF
U1QjIDMgLS0NCkltYWdlIDE6IElzby5pbWcNCkltYWdlIDI6IElzb19tM3Aw
cDBwMHAwbTMuaW1nDQpOdW1iZXIgb2YgSGlzdG9ncmFtIEJpbnM6IDUwDQpH
cm93dGggRmFjdG9yOiAxLjAxDQpJbml0aWFsIFJhZGl1czogNQ0KTnVtYmVy
IG9mIEl0ZXJhdGlvbnM6IDUwMA0KU3BhdGlhbCBTYW1wbGVzIE51bWJlcjog
MzYwMDANCkluaXRpYWwgUm90YXRpb246IDAsMCwwDQpJbml0aWFsIFRyYW5z
bGF0aW9uOiAwLDAsMA0KT3B0aW1pemVyIFJvdGF0aW9uIFNjYWxlOiA3NQ0K
T3B0aW1pemVyIFRyYW5zbGF0aW9uIFNjYWxlOiAwLjUNCg0KUmVzdWx0cyA9
DQogIHJ4ID0gLTIuMzA1ODUNCiAgcnkgPSAtMi4wMDEwOA0KICByeiA9IC00
Ljc5NTkxDQogIHR4ID0gLTQuMTU2MjcNCiAgdHkgPSAtMS4xMzYzMg0KICB0
eiA9IC0yLjA5ODk4DQogIE1ldHJpYyB2YWx1ZSAgPSAtMC4xNzYxMzYNCg0K
ICAgLS0gVEVTVCMgNCAtLQ0KSW1hZ2UgMTogSXNvLmltZw0KSW1hZ2UgMjog
SXNvX20zcDBwMHAwcDBtMy5pbWcNCk51bWJlciBvZiBIaXN0b2dyYW0gQmlu
czogNTANCkdyb3d0aCBGYWN0b3I6IDEuMDENCkluaXRpYWwgUmFkaXVzOiA1
DQpOdW1iZXIgb2YgSXRlcmF0aW9uczogNTAwDQpTcGF0aWFsIFNhbXBsZXMg
TnVtYmVyOiAzNjAwMA0KSW5pdGlhbCBSb3RhdGlvbjogMCwwLDANCkluaXRp
YWwgVHJhbnNsYXRpb246IDAsMCwwDQpPcHRpbWl6ZXIgUm90YXRpb24gU2Nh
bGU6IDEwMA0KT3B0aW1pemVyIFRyYW5zbGF0aW9uIFNjYWxlOiAwLjU1DQoN
ClJlc3VsdHMgPQ0KICB0eCA9IC00LjA3NzAxDQogIHR5ID0gLTEuMDQxOTEN
CiAgdHogPSAxLjMzMTI0DQogIHJ4ID0gMS43Mjk4Mg0KICByeSA9IDEuMzQx
MDENCiAgcnogPSAtMC4wMDQ3OTQ4NQ0KDQogIE1ldHJpYyB2YWx1ZSAgPSAt
MC4yNTU2OTcNCg0KIC0tIFRFU1QgIzUgLS0NCkltYWdlIDE6IElzby5pbWcN
CkltYWdlIDI6IElzb19tNXAycDBwMTFwMG0xMS5pbWcNCk51bWJlciBvZiBI
aXN0b2dyYW0gQmluczogNTANCkdyb3d0aCBGYWN0b3I6IDEuMDENCkluaXRp
YWwgUmFkaXVzOiA1DQpOdW1iZXIgb2YgSXRlcmF0aW9uczogMzUNClNwYXRp
YWwgU2FtcGxlcyBOdW1iZXI6IDM2MDAwDQpJbml0aWFsIFJvdGF0aW9uOiAw
LDAsMA0KSW5pdGlhbCBUcmFuc2xhdGlvbjogMCwwLDANCk9wdGltaXplciBS
b3RhdGlvbiBTY2FsZTogNDUwDQpPcHRpbWl6ZXIgVHJhbnNsYXRpb24gU2Nh
bGU6IDAuNTUNCg0KUmVzdWx0cyA9DQogIHR4ID0gLTYuOTc0MDUNCiAgdHkg
PSAtMS4xMjk5DQogIHR6ID0gOC4xNDg2Ng0KICByeCA9IDEuNTE3NTQNCiAg
cnkgPSAtMi4xMDgxNg0KICByeiA9IDAuNjM2OTcxDQoNCiAgTWV0cmljIHZh
bHVlICA9IC0wLjA3MTcxNjUNCg0KQ29uY2x1c2lvbnM6IHNhbWUgYXMgYWJv
dmUNCg==

--1552035453-2094202827-1062061028=:2300--