From: <fxc...@gm...> - 2007-09-26 11:34:47
|
Hi, I have had a bug report from people who tested my gfortran binaries for mingw-w64 that the float variants of math functions aren't working properly. The proper report that was sent to me has this example: C:\gfortran\test\single_bug>type table.f90 program table real x integer i write(*,*) ' x sin(x) cos(x) tan(x)' do i = 0, 10 x = i write(*,*) x, sin(x), cos(x), tan(x) end do end program table C:\gfortran\test\single_bug>c:\gfortran\win64\bin\x86_64-pc-mingw32-gfortran table.f90 -o table C:\gfortran\test\single_bug>table x sin(x) cos(x) tan(x) 0.000000 0.000000 0.000000 0.000000 1.000000 1.000000 1.000000 1.000000 2.000000 2.0000 2.0000 2.0000 3.000000 3.0000 3.0000 3.0000 4.000000 4.0000 4.0000 4.0000 5.000000 5.0000 5.0000 5.0000 6.000000 6.0000 6.0000 6.0000 7.000000 7.0000 7.0000 7.0000 8.000000 8.0000 8.0000 8.0000 9.000000 9.0000 9.0000 9.0000 10.00000 10.0000 10.0000 10.0000 Indeed, there is a difference between a C function that calls sinf(): #include <math.h> float foo(float *x) { return sinf(*x); } which is compiled into: _foo: LFB47: pushq %rbp LCFI0: movq %rsp, %rbp LCFI1: subq $32, %rsp LCFI2: movq %rcx, 16(%rbp) movq 16(%rbp), %rax movss (%rax), %xmm0 call _sinf leave ret and the equivalent Fortran function: real function foo(x) real x foo = sin(x) end function foo that is compiled into: _foo_: LFB2: pushq %rbp LCFI0: movq %rsp, %rbp LCFI1: subq $64, %rsp LCFI2: movq %rcx, 16(%rbp) movq 16(%rbp), %rax movss (%rax), %xmm0 call _sinf movss %xmm0, -4(%rbp) movl -4(%rbp), %eax movl %eax, -20(%rbp) movss -20(%rbp), %xmm0 leave ret (Notice the extra lines between the call to _sinf and the leave.) Does that ring a bell for anyone? FX PS: As it looks like a compiler bug, I've filed it as GCC PR33561 (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33561). |
From: Kai T. <Kai...@on...> - 2007-09-26 14:28:56
|
PiBIaSwNCj4gDQo+IEkgaGF2ZSBoYWQgYSBidWcgcmVwb3J0IGZyb20gcGVvcGxlIHdobyB0ZXN0 ZWQgbXkgZ2ZvcnRyYW4gYmluYXJpZXMNCj4gZm9yIG1pbmd3LXc2NCB0aGF0IHRoZSBmbG9hdCB2 YXJpYW50cyBvZiBtYXRoIGZ1bmN0aW9ucyBhcmVuJ3Qgd29ya2luZw0KPiBwcm9wZXJseS4gVGhl IHByb3BlciByZXBvcnQgdGhhdCB3YXMgc2VudCB0byBtZSBoYXMgdGhpcyBleGFtcGxlOg0KPiAN Cj4gQzpcZ2ZvcnRyYW5cdGVzdFxzaW5nbGVfYnVnPnR5cGUgdGFibGUuZjkwDQo+IHByb2dyYW0g dGFibGUNCj4gICByZWFsIHgNCj4gICBpbnRlZ2VyIGkNCj4gICB3cml0ZSgqLCopICcgICB4ICAg ICBzaW4oeCkgICAgY29zKHgpICAgdGFuKHgpJw0KPiAgIGRvIGkgPSAwLCAxMA0KPiAgICAgIHgg PSBpDQo+ICAgICAgd3JpdGUoKiwqKSB4LCBzaW4oeCksIGNvcyh4KSwgdGFuKHgpDQo+ICAgZW5k IGRvDQo+IGVuZCBwcm9ncmFtIHRhYmxlDQo+IA0KPiANCkM6XGdmb3J0cmFuXHRlc3Rcc2luZ2xl X2J1Zz5jOlxnZm9ydHJhblx3aW42NFxiaW5ceDg2XzY0LXBjLW1pbmd3MzItZ2ZvcnRyYW4NCj4g dGFibGUuZjkwIC1vIHRhYmxlDQo+IA0KPiBDOlxnZm9ydHJhblx0ZXN0XHNpbmdsZV9idWc+dGFi bGUNCj4gICAgeCAgICAgc2luKHgpICAgIGNvcyh4KSAgIHRhbih4KQ0KPiAgIDAuMDAwMDAwICAg ICAgIDAuMDAwMDAwICAgICAgIDAuMDAwMDAwICAgICAgIDAuMDAwMDAwDQo+ICAgMS4wMDAwMDAg ICAgICAgMS4wMDAwMDAgICAgICAgMS4wMDAwMDAgICAgICAgMS4wMDAwMDANCj4gICAyLjAwMDAw MCAgICAgICAgIDIuMDAwMCAgICAgICAgIDIuMDAwMCAgICAgICAgIDIuMDAwMA0KPiAgIDMuMDAw MDAwICAgICAgICAgMy4wMDAwICAgICAgICAgMy4wMDAwICAgICAgICAgMy4wMDAwDQo+ICAgNC4w MDAwMDAgICAgICAgICA0LjAwMDAgICAgICAgICA0LjAwMDAgICAgICAgICA0LjAwMDANCj4gICA1 LjAwMDAwMCAgICAgICAgIDUuMDAwMCAgICAgICAgIDUuMDAwMCAgICAgICAgIDUuMDAwMA0KPiAg IDYuMDAwMDAwICAgICAgICAgNi4wMDAwICAgICAgICAgNi4wMDAwICAgICAgICAgNi4wMDAwDQo+ ICAgNy4wMDAwMDAgICAgICAgICA3LjAwMDAgICAgICAgICA3LjAwMDAgICAgICAgICA3LjAwMDAN Cj4gICA4LjAwMDAwMCAgICAgICAgIDguMDAwMCAgICAgICAgIDguMDAwMCAgICAgICAgIDguMDAw MA0KPiAgIDkuMDAwMDAwICAgICAgICAgOS4wMDAwICAgICAgICAgOS4wMDAwICAgICAgICAgOS4w MDAwDQo+ICAgMTAuMDAwMDAgICAgICAgIDEwLjAwMDAgICAgICAgIDEwLjAwMDAgICAgICAgIDEw LjAwMDANCj4gDQo+IA0KPiBJbmRlZWQsIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIGEg QyBmdW5jdGlvbiB0aGF0IGNhbGxzIHNpbmYoKToNCj4gDQo+ICNpbmNsdWRlIDxtYXRoLmg+DQo+ IGZsb2F0IGZvbyhmbG9hdCAqeCkgeyByZXR1cm4gc2luZigqeCk7IH0NCj4gDQo+IHdoaWNoIGlz IGNvbXBpbGVkIGludG86DQo+IA0KPiBfZm9vOg0KPiBMRkI0NzoNCj4gICAgICAgICBwdXNocSAg ICVyYnANCj4gTENGSTA6DQo+ICAgICAgICAgbW92cSAgICAlcnNwLCAlcmJwDQo+IExDRkkxOg0K PiAgICAgICAgIHN1YnEgICAgJDMyLCAlcnNwDQo+IExDRkkyOg0KPiAgICAgICAgIG1vdnEgICAg JXJjeCwgMTYoJXJicCkNCj4gICAgICAgICBtb3ZxICAgIDE2KCVyYnApLCAlcmF4DQo+ICAgICAg ICAgbW92c3MgICAoJXJheCksICV4bW0wDQo+ICAgICAgICAgY2FsbCAgICBfc2luZg0KPiAgICAg ICAgIGxlYXZlDQo+ICAgICAgICAgcmV0DQo+IA0KPiBhbmQgdGhlIGVxdWl2YWxlbnQgRm9ydHJh biBmdW5jdGlvbjoNCj4gDQo+ICAgcmVhbCBmdW5jdGlvbiBmb28oeCkNCj4gICAgIHJlYWwgeA0K PiAgICAgZm9vID0gc2luKHgpDQo+ICAgZW5kIGZ1bmN0aW9uIGZvbw0KPiANCj4gdGhhdCBpcyBj b21waWxlZCBpbnRvOg0KPiANCj4gDQo+IF9mb29fOg0KPiBMRkIyOg0KPiAgICAgICAgIHB1c2hx ICAgJXJicA0KPiBMQ0ZJMDoNCj4gICAgICAgICBtb3ZxICAgICVyc3AsICVyYnANCj4gTENGSTE6 DQo+ICAgICAgICAgc3VicSAgICAkNjQsICVyc3ANCj4gTENGSTI6DQo+ICAgICAgICAgbW92cSAg ICAlcmN4LCAxNiglcmJwKQ0KPiAgICAgICAgIG1vdnEgICAgMTYoJXJicCksICVyYXgNCj4gICAg ICAgICBtb3ZzcyAgICglcmF4KSwgJXhtbTANCj4gICAgICAgICBjYWxsICAgIF9zaW5mDQo+ICAg ICAgICAgbW92c3MgICAleG1tMCwgLTQoJXJicCkNCj4gICAgICAgICBtb3ZsICAgIC00KCVyYnAp LCAlZWF4DQo+ICAgICAgICAgbW92bCAgICAlZWF4LCAtMjAoJXJicCkNCj4gICAgICAgICBtb3Zz cyAgIC0yMCglcmJwKSwgJXhtbTANCj4gICAgICAgICBsZWF2ZQ0KPiAgICAgICAgIHJldA0KPiAN Cj4gKE5vdGljZSB0aGUgZXh0cmEgbGluZXMgYmV0d2VlbiB0aGUgY2FsbCB0byBfc2luZiBhbmQg dGhlIGxlYXZlLikgRG9lcw0KPiB0aGF0IHJpbmcgYSBiZWxsIGZvciBhbnlvbmU/DQo+IA0KPiBG WA0KPiANCj4gDQo+IFBTOiBBcyBpdCBsb29rcyBsaWtlIGEgY29tcGlsZXIgYnVnLCBJJ3ZlIGZp bGVkIGl0IGFzIEdDQyBQUjMzNTYxDQoNCk5vLCBpdCBpc24ndCAoYmVzaWRlIHRoZSBzdHJhbmdl IHZhcmlhYmxlIG1vdmVtZW50IGZvciBmb3J0YW4pLg0KVGhlIG1hdGggZnVuY3Rpb25zIGFyZSBj dXJyZW50bHkgaW5jb21wbGV0ZSBpbXBsZW1lbnRlZC4gSSBjb3JyZWN0ZWQgdG9kYXkgDQpzb21l IG9mIHRoZW0gKGFzIHNpbmYsIGNvc2YsIHRhbmYsIGNlaWxmKSwgYnV0IHRoZXJlIGFyZSBzdGls bCBzb21lIG5vdCANCmNvcnJlY3QuIFRoZSBmdW5jdGlvbnMgYXJlIHRha2VuIGZyb20gdGhlIDMy LWJpdCBtaW5ndyBidXQgdGhlIGFzc2VtYmxlIA0KZnVuY3Rpb25zICguUykgYXJlbid0IHBvcnRl ZCB0byB0aGUgY2FsbGluZyBjb252ZW50aW9uIG9mIGFtZDY0LW1pbmd3Lg0KDQpTbyBtYXkgdHJ5 IHRoZSBjdXJyZW50IHN2biBvZiBtaW5ndy13NjQgZm9yIHlvdXIgdGVzdC1jYXNlLiBUaGlzIGZ1 bmN0aW9ucyANCnNob3VsZCBub3cgd29yayBjb3JyZWN0IChBRkFJIHRlc3RlZCB0aGVtKS4NCg0K DQpDaGVlcnMsDQogaS5BLiBLYWkgVGlldHoNCg0KQlRXOiBNYXkgc29tZWJvZHkgd2FudCB0byB2 b2x1bnRlZXIgdG8gcG9ydCB0aGUgb3RoZXIgZnVuY3Rpb25zID8gV291bGQgYmUgDQpncmVhdCA7 KQ0KDQp8ICAoXF8vKSAgVGhpcyBpcyBCdW5ueS4gQ29weSBhbmQgcGFzdGUgQnVubnkNCnwgKD0n Lic9KSBpbnRvIHlvdXIgc2lnbmF0dXJlIHRvIGhlbHAgaGltIGdhaW4NCnwgKCIpXygiKSB3b3Js ZCBkb21pbmF0aW9uLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgT25l VmlzaW9uIFNvZnR3YXJlIEVudHdpY2tsdW5ncyBHbWJIICYgQ28uIEtHDQogIERyLi1MZW8tUml0 dGVyLVN0cmHDn2UgOSAtIDkzMDQ5IFJlZ2Vuc2J1cmcNCiAgVGVsOiArNDkuKDApOTQxLjc4MDA0 LjAgLSBGYXg6ICs0OS4oMCk5NDEuNzgwMDQuNDg5IC0gd3d3Lk9uZVZpc2lvbi5jb20NCiAgQ29t bWVyemJhbmsgUmVnZW5zYnVyZyAtIEJMWiA3NTAgNDAwIDYyIC0gS29udG8gNjAxMTA1MA0KICBI YW5kZWxzcmVnaXN0ZXI6IEhSQSA2NzQ0LCBBbXRzZ2VyaWNodCBSZWdlbnNidXJnDQogIEtvbXBs ZW1lbnTDpHJpbjogT25lVmlzaW9uIFNvZnR3YXJlIEVudHdpY2tsdW5ncyBWZXJ3YWx0dW5ncyBH bWJIDQogIERyLi1MZW8tUml0dGVyLVN0cmHDn2UgOSDigJMgOTMwNDkgUmVnZW5zYnVyZw0KICBI YW5kZWxzcmVnaXN0ZXI6IEhSQiA4OTMyLCBBbXRzZ2VyaWNodCBSZWdlbnNidXJnIC0gR2VzY2jD pGZ0c2bDvGhyZXI6IA0KVWxyaWtlIETDtmhsZXIsIE1hbnVlbGEgS2x1Z2VyDQoNCg== |
From: <fxc...@gm...> - 2007-09-26 15:03:58
|
Hi Kai, First, thanks for fixing this. > The math functions are currently incomplete implemented. I corrected today > some of them (as sinf, cosf, tanf, ceilf), but there are still some not > correct. The functions are taken from the 32-bit mingw but the assemble > functions (.S) aren't ported to the calling convention of amd64-mingw. I wonder: how do one know which are fine and which aren't? Would it be possible to simply not compile (or comment out) the functions that aren't functional? After all, it would be better for the user to know what's working and not working than to silently get wrong results. FX |
From: Kai T. <Kai...@on...> - 2007-09-27 08:09:40
|
SGkgRlgsDQoNCiJGcmFuw6dvaXMtWGF2aWVyIENvdWRlcnQiIHdyb3RlIG9uIDI2LjA5LjIwMDcg MTc6MDM6NTM6DQoNCj4gPiBUaGUgbWF0aCBmdW5jdGlvbnMgYXJlIGN1cnJlbnRseSBpbmNvbXBs ZXRlIGltcGxlbWVudGVkLiBJIGNvcnJlY3RlZCANCnRvZGF5DQo+ID4gc29tZSBvZiB0aGVtIChh cyBzaW5mLCBjb3NmLCB0YW5mLCBjZWlsZiksIGJ1dCB0aGVyZSBhcmUgc3RpbGwgc29tZSANCm5v dA0KPiA+IGNvcnJlY3QuIFRoZSBmdW5jdGlvbnMgYXJlIHRha2VuIGZyb20gdGhlIDMyLWJpdCBt aW5ndyBidXQgdGhlIA0KYXNzZW1ibGUNCj4gPiBmdW5jdGlvbnMgKC5TKSBhcmVuJ3QgcG9ydGVk IHRvIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gb2YgYW1kNjQtbWluZ3cuDQo+IA0KPiBJIHdvbmRl cjogaG93IGRvIG9uZSBrbm93IHdoaWNoIGFyZSBmaW5lIGFuZCB3aGljaCBhcmVuJ3Q/IFdvdWxk IGl0IGJlDQo+IHBvc3NpYmxlIHRvIHNpbXBseSBub3QgY29tcGlsZSAob3IgY29tbWVudCBvdXQp IHRoZSBmdW5jdGlvbnMgdGhhdA0KPiBhcmVuJ3QgZnVuY3Rpb25hbD8gQWZ0ZXIgYWxsLCBpdCB3 b3VsZCBiZSBiZXR0ZXIgZm9yIHRoZSB1c2VyIHRvIGtub3cNCj4gd2hhdCdzIHdvcmtpbmcgYW5k IG5vdCB3b3JraW5nIHRoYW4gdG8gc2lsZW50bHkgZ2V0IHdyb25nIHJlc3VsdHMuDQoNClllcywg bWF5IHlvdSBhcmUgcmlnaHQgYW5kIG1heSBJIHdhcyB3cm9uZy4gSSBkZWNlaWRlZCB0byBsZXQg dGhlIA0KKCp3cm9uZyopIG1hdGgtc3ltYm9scyBhY3RpdmUgZm9yIHRlc3QtY2FzZSAoeW91IGFy ZSBhYmxlIHRvIGJ1aWxkIGUuZy4gDQpsaWJnZm9ydGFuKS4gSSB3cm90ZSBhbHJlYWR5IGFuIGJ1 ZyByZXBvcnQgKCMxNzc3NjcyKSwgd2hpY2ggd2FzIGNsb3NlZCBieSANCnRoZSBTRiBidWctdHJh Y2tlciA6KA0KSSB3aWxsIHdvcmsgZm9yIHRoaXMgc3ViamVjdCB0b2RheSBhbmQgdHJ5IHRvIGNv cnJlY3QgdGhlbSBhbGwuIFRoZSBtYXRoLmggDQpmaWxlIG5lZWRzIGNvcnJlY3Rpb25zLCB0b28u IFRoZSBmbG9hdCBmdW5jdGlvbnMgYW5kIHRoZSAibG9uZyBkb3VibGUiIA0KZnVuY3Rpb25zIGFy ZSBjdXJyZW50bHkgYWZmZWN0ZWQuIEZvciBtb3N0IG9mIHRoZW0gaXMgYW4gaW5saW5lIG1ldGhv ZCBpbiANCm1hdGguaCwgd2hpY2ggaXNuJ3QgdXNlZCBpbiBhbGwgY2FzZXMuIFRoZSAibG9uZyBk b3VibGUiIHN1cHBvcnQgaXMgaW4gTVMgDQp3b3JsZCBhbiBlcXVpdmFsZW50IHRvIHRoZSAiZG91 YmxlIiBzdXBwb3J0LCBidXQgZm9yIGdjYyB0aGUgcHJlY2lzaW9uIG9mIA0KdGhpcyB0eXBlcyBp cyBkaWZmZXJlbnQuDQoNClRoYW5rIHlvdSBmb3IgeW91ciBwYXRpZW50IGFuZCBjaGVlcnMsDQog aS5BLiBLYWkgVGlldHoNCg0KfCAgKFxfLykgIFRoaXMgaXMgQnVubnkuIENvcHkgYW5kIHBhc3Rl IEJ1bm55DQp8ICg9Jy4nPSkgaW50byB5b3VyIHNpZ25hdHVyZSB0byBoZWxwIGhpbSBnYWluDQp8 ICgiKV8oIikgd29ybGQgZG9taW5hdGlvbi4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQogIE9uZVZpc2lvbiBTb2Z0d2FyZSBFbnR3aWNrbHVuZ3MgR21iSCAmIENvLiBLRw0K ICBEci4tTGVvLVJpdHRlci1TdHJhw59lIDkgLSA5MzA0OSBSZWdlbnNidXJnDQogIFRlbDogKzQ5 LigwKTk0MS43ODAwNC4wIC0gRmF4OiArNDkuKDApOTQxLjc4MDA0LjQ4OSAtIHd3dy5PbmVWaXNp b24uY29tDQogIENvbW1lcnpiYW5rIFJlZ2Vuc2J1cmcgLSBCTFogNzUwIDQwMCA2MiAtIEtvbnRv IDYwMTEwNTANCiAgSGFuZGVsc3JlZ2lzdGVyOiBIUkEgNjc0NCwgQW10c2dlcmljaHQgUmVnZW5z YnVyZw0KICBLb21wbGVtZW50w6RyaW46IE9uZVZpc2lvbiBTb2Z0d2FyZSBFbnR3aWNrbHVuZ3Mg VmVyd2FsdHVuZ3MgR21iSA0KICBEci4tTGVvLVJpdHRlci1TdHJhw59lIDkg4oCTIDkzMDQ5IFJl Z2Vuc2J1cmcNCiAgSGFuZGVsc3JlZ2lzdGVyOiBIUkIgODkzMiwgQW10c2dlcmljaHQgUmVnZW5z YnVyZyAtIEdlc2Now6RmdHNmw7xocmVyOiANClVscmlrZSBEw7ZobGVyLCBNYW51ZWxhIEtsdWdl cg0KDQo= |
From: Kai T. <Kai...@on...> - 2007-09-27 13:14:19
|
SGkgRlgsDQoNCj4gSSB3b25kZXI6IGhvdyBkbyBvbmUga25vdyB3aGljaCBhcmUgZmluZSBhbmQg d2hpY2ggYXJlbid0PyBXb3VsZCBpdCBiZQ0KPiBwb3NzaWJsZSB0byBzaW1wbHkgbm90IGNvbXBp bGUgKG9yIGNvbW1lbnQgb3V0KSB0aGUgZnVuY3Rpb25zIHRoYXQNCj4gYXJlbid0IGZ1bmN0aW9u YWw/IEFmdGVyIGFsbCwgaXQgd291bGQgYmUgYmV0dGVyIGZvciB0aGUgdXNlciB0byBrbm93DQo+ IHdoYXQncyB3b3JraW5nIGFuZCBub3Qgd29ya2luZyB0aGFuIHRvIHNpbGVudGx5IGdldCB3cm9u ZyByZXN1bHRzLg0KDQpJIGZpeGVkIHRoZSBjb21wbGV0ZSBzdGFuZGFyZCBtYXRoIHBhcnQgb2Yg Y3J0LiBUaGUgY2hhbmdlcyBpbiBtYXRoLmggdG8gDQpwcmV2ZW50IG9mIHVzZSBvZiAoKndyb25n KikgaW5saW5lIG1ldGhvZHMgaXMgcGVuZGluZywgYnV0IEkgd2lsbCBjb21wbGV0ZSANCml0IGxh dGVzdCB0b21vcnJvdy4gTWF5IHlvdSBjb3VsZCB0ZXN0IHRoZSBtYXRoIGZ1bmN0aW9ucyBieSBm b3J0YW4gPw0KDQpDaGVlcnMsDQogaS5BLiBLYWkgVGlldHoNCg0KfCAgKFxfLykgIFRoaXMgaXMg QnVubnkuIENvcHkgYW5kIHBhc3RlIEJ1bm55DQp8ICg9Jy4nPSkgaW50byB5b3VyIHNpZ25hdHVy ZSB0byBoZWxwIGhpbSBnYWluDQp8ICgiKV8oIikgd29ybGQgZG9taW5hdGlvbi4NCg0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIE9uZVZpc2lvbiBTb2Z0d2FyZSBFbnR3aWNr bHVuZ3MgR21iSCAmIENvLiBLRw0KICBEci4tTGVvLVJpdHRlci1TdHJhw59lIDkgLSA5MzA0OSBS ZWdlbnNidXJnDQogIFRlbDogKzQ5LigwKTk0MS43ODAwNC4wIC0gRmF4OiArNDkuKDApOTQxLjc4 MDA0LjQ4OSAtIHd3dy5PbmVWaXNpb24uY29tDQogIENvbW1lcnpiYW5rIFJlZ2Vuc2J1cmcgLSBC TFogNzUwIDQwMCA2MiAtIEtvbnRvIDYwMTEwNTANCiAgSGFuZGVsc3JlZ2lzdGVyOiBIUkEgNjc0 NCwgQW10c2dlcmljaHQgUmVnZW5zYnVyZw0KICBLb21wbGVtZW50w6RyaW46IE9uZVZpc2lvbiBT b2Z0d2FyZSBFbnR3aWNrbHVuZ3MgVmVyd2FsdHVuZ3MgR21iSA0KICBEci4tTGVvLVJpdHRlci1T dHJhw59lIDkg4oCTIDkzMDQ5IFJlZ2Vuc2J1cmcNCiAgSGFuZGVsc3JlZ2lzdGVyOiBIUkIgODkz MiwgQW10c2dlcmljaHQgUmVnZW5zYnVyZyAtIEdlc2Now6RmdHNmw7xocmVyOiANClVscmlrZSBE w7ZobGVyLCBNYW51ZWxhIEtsdWdlcg0KDQo= |