Re: [testdrivendevelopment] "bottom-up" TDD and common behaviors

"Daniel Olewski" <[email protected]> Fri, 6 Dec 2019 00:32:54 +0000
Newsgroups gmane.comp.programming.test-driven-development
Message-ID <[email protected]>
--_000_F84835A61CF1469E8BE4E990F9451F27msncom_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

QWxsIGZyYW1ld29ya3MgY2hhbmdlIGV2ZW50dWFsbHksIG9yIHN0b3Agd29ya2luZyB3aGVuIHNh
eSBPUyB2ZXJzaW9uIGlzIHVwZGF0ZWQuIE1hbnkgb2YgdXMgaGF2ZSBsZWFybmVkIHRoYXQgdGhl
IGhhcmQgd2F5IOKApiAuDQpJbnZlbnRpbmcgYSBuZXcgUkRCTVMgaW50ZXJmYWNlIOKAkyB0aGF0
IG1lYW5zIGxlYWtpbmcgUkRCTVMgd29ybGQgaW50byB5b3VyIGFwcGxpY2F0aW9uIGRvbWFpbi4g
QW5kIHBlcmhhcHMgYWxzbyBpbXBsaWVzIHRoZSBiaWdnZXIgd29yayBvZiBjb3ZlcmluZyBhbGwg
b2YgUkRCTVMgZnVuY3Rpb25hbGl0eS4gV2hlbiB3ZSB1c2UgUkRCTVMgaXTigJlzIGp1c3QgZm9y
IHN0b3JhZ2Ugb2YgZGF0YSDigKYgdG9kYXkuIFRvbW9ycm93IGl0IGNhbiBiZSBhIGJsb2IgaW4g
dGhlIGNsb3VkLCBuZXh0IHllYXIgaXQgd2lsbCBiZSBzb21ldGhpbmcgZGlmZmVyZW50LiBJIGRv
IHdhbnQgbXkgY29kZSB0byBiZSBmbGV4aWJsZSBmb3IgYWxsIHRob3NlLiBPbmUgd2F5IHRvIGRv
IHRoYXQgaXMgdG8gaXNvbGF0ZSBvbiB0aGUgZWRnZSBvZiBob3cgdGhlIGFwcCBkb21haW4gbG9n
aWMgdXNlcyB0aGUgc3RvcmFnZS4gVGhpbmsgYGVtcGxveWVlX3N0b3JhZ2Uuc3RvcmVfZW1wbG95
ZWUoKWAgdnMgYHJkYm1zLmluc2VydF9yZWNvcmQoKWAuIEEgbnVhbmNlLCBidXQgYW4gaW1wb3J0
YW50IG9uZSBJTU8uIE9uY2Ugd2UgaGF2ZSB0aGF0IOKAkyB0aGUgYXBwIHdvbuKAmXQgY2FyZSBo
b3cgdGhlIHN0b3JhZ2UgaXMgaW1wbGVtZW50ZWQgYW5kIGEgc2ltcGxlIOKAmGluLW1lbW9yeSBl
bXBsb3llZSBzdG9yYWdl4oCZIG9yIOKAmGxvY2FsLWZpbGUgZW1wbG95ZWUgc3RvcmFnZeKAmSB3
aWxsIHN1ZmZpY2UgZm9yIHVuaXQgb3Igc29tZSBpbnRlZ3JhdGlvbiB0ZXN0aW5nIC4uDQoNCkZy
b206IDx0ZXN0ZHJpdmVuZGV2ZWxvcG1lbnRAZ3JvdXBzLmlvPiBvbiBiZWhhbGYgb2YgQnJpYW4g
TWFyaWNrIDxtYXJpY2tAZXhhbXBsZXIuY29tPg0KUmVwbHktVG86ICJ0ZXN0ZHJpdmVuZGV2ZWxv
cG1lbnRAZ3JvdXBzLmlvIiA8dGVzdGRyaXZlbmRldmVsb3BtZW50QGdyb3Vwcy5pbz4NCkRhdGU6
IFRodXJzZGF5LCBEZWNlbWJlciA1LCAyMDE5IGF0IDQ6MjEgUE0NClRvOiAidGVzdGRyaXZlbmRl
dmVsb3BtZW50QGdyb3Vwcy5pbyIgPHRlc3Rkcml2ZW5kZXZlbG9wbWVudEBncm91cHMuaW8+DQpT
dWJqZWN0OiBSZTogW3Rlc3Rkcml2ZW5kZXZlbG9wbWVudF0gImJvdHRvbS11cCIgVEREIGFuZCBj
b21tb24gYmVoYXZpb3JzDQoNClRoYXQgcmFpc2VzIGFuIGludGVyZXN0aW5nIGdlbmVyYWwgcXVl
c3Rpb24uDQoNCiJUaGUgdGVjaG5vbG9neSIgaXMgYSB3ZWIgZnJhbWV3b3JrIGFuZCBpdHMgbGlu
a2VkIGRhdGFiYXNlIGZyYW1ld29yay4NCg0KVGhlIHJpc2sgb2YgdGhvc2UgY2hhbmdpbmcgaW4g
YSB3YXkgdGhhdCBicmVha3MgYSBsb3Qgb2Ygb2xkIGNvZGUgaXMgcHJldHR5IHNtYWxsLiBIb3cg
bXVjaCBlZmZvcnQgc2hvdWxkIHdlIHNwZW5kIGluc3VsYXRpbmcgb3VyIGNvZGUgYWdhaW5zdCBs
b3ctcHJvYmFiaWxpdHkgZXZlbnRzPw0KDQpJc29sYXRpbmcgbXkgY29kZSBmcm9tIEVjdG8gd291
bGQgaW4gZWZmZWN0IG1lYW4gaW52ZW50aW5nIGEgKm5ldyogaW50ZXJmYWNlIHRvIGEgUkRCTVMu
IERvZXMgaXQgcmVhbGx5IHNlZW0gbGlrZWx5IHRoYXQgSeKAmWxsIGRvIHRoYXQgYmV0dGVyIHRo
YW4gdGhlIEVjdG8gZGVzaWduZXJzPw0KDQpQLlMuIEkgbmVlZCB0byBzcGVuZCBzb21lIHRpbWUg
dGhpbmtpbmcgYWJvdXQgaG93IEZQIGlkZWFzIGFuZCBPTyBpZGVhcyBwbGF5IHRvZ2V0aGVyLiBN
eSBvcGluaW9uIGhhcyBiZWVuIHRoYXQsIGxlYXZpbmcgYXNpZGUgaW5oZXJpdGFuY2UsIHR5cGlj
YWwgRlAgbGFuZ3VhZ2VzIGFyZSBub3QgZGlmZmVyZW50LCBpbiBwcmFjdGljZSwgdGhhbiBPTyBs
YW5ndWFnZXMuIEJ1dCBJIHdvbmRlciBpZiB0aGF04oCZcyByaWdodC4NCg0KDQpPbiBEZWMgNCwg
MjAxOSwgYXQgMTI6NDMgQU0sIEF2aSBLZXNzbmVyIDxha2Vzc25lckBnbWFpbC5jb208bWFpbHRv
OmFrZXNzbmVyQGdtYWlsLmNvbT4+IHdyb3RlOg0KDQpTbyB0aGlzIGlzIGRlZmluaXRlbHkgcmVx
dWlyZWQgYmVoYXZpb3IgYW5kIGl0IHdpbGwgYmUgeW91ciBvd24sIHNvIGl0IG5lZWRzIHRvIGJl
IHRlc3RlZC4NCk9uIHRoZSBvdGhlciBoYW5kLCBpdCdzIGEgdmVyeSBzcGVjaWZpYyBpbXBsZW1l
bnRhdGlvbiBkZXRhaWwgd2hpY2ggY291bGQgY2hhbmdlIHdoZW4gdGhlIHRlY2hub2xvZ3kgY2hh
bmdlcyBhbmQgd2UgZG9uJ3Qgd2FudCB0aGF0IHRvIGltcGFjdCBhY3R1YWwgYmVoYXZpb3IgcmVs
YXRlZCB0ZXN0cyBhYm91dCBhbmltYWxzLg0KDQpXaGF0IEkgd291bGQgZG8gaXMgbWFrZSBhIHRy
YW5zZm9ybWF0aW9uIGRlY29yYXRvciBhbmQgdGhlbiB0ZXN0IHNhbXBsZSBkYXRhIHRvIHNlZSB0
aGF0IGl0IGdldHMgdHJhbnNmb3JtZWQgY29ycmVjdGx5LiAgSWYgRWN0byBldmVyIGNoYW5nZXMs
IHRoYXQgdHJhbnNmb3JtYXRpb24gZGVjb3JhdG9yIGNhbiBkbyBub3RoaW5nIGlmIG5lZWRlZC4N
CllvdSBiYXNpY2FsbHkgbmVlZCBhIG1hcCBvZiBmaWVsZHMgdGhhdCBjYW4gYmUgY2hhbmdlZCBh
bmQgdGhlIHRyYW5zZm9ybWF0aW9uIG5lZWRlZCBmb3IgdGhhdCBmaWVsZC4NCg0KQSBiaXQgbW9y
ZSB3b3JrLCBidXQgaXQgYWxsb3dzIGZvciBhIGNoYW5nZSBpbiBFY3RvIG9yIGEgY2hhbmdlIGlu
IHVuZGVyc3RhbmRpbmcgb2YgRWN0byB0byBub3QgaW1wYWN0IHRoZSBtYWluIHRlc3Qgc3VpdGUu
DQoNCk9uIFdlZCwgRGVjIDQsIDIwMTksIDAxOjUwIEJyaWFuIE1hcmljayA8bWFyaWNrQGV4YW1w
bGVyLmNvbTxtYWlsdG86bWFyaWNrQGV4YW1wbGVyLmNvbT4+IHdyb3RlOg0KWWVzLg0KDQoNCk9u
IERlYyAzLCAyMDE5LCBhdCA1OjMxIEFNLCBBdmkgS2Vzc25lciA8YWtlc3NuZXJAZ21haWwuY29t
PG1haWx0bzpha2Vzc25lckBnbWFpbC5jb20+PiB3cm90ZToNCg0KSWYgSSB1bmRlcnN0YW5kIGNv
cnJlY3RseSwgdGhlIGNvZGUgaGVyZSBpcyBzcGVjaWZpY2FsbHkgZm9yIGRvaW5nIGFuIEVjdG8g
dHJhbnNmb3JtYXRpb24sIGNvcnJlY3Q/IElmIHlvdSBkZWNpZGUgbm90IHRvIHVzZSBFY3RvIHRo
ZSBuZWVkIGZvciB0aGlzIGFic3RyYWN0aW9uIGlzIHJlbW92ZWQ/DQoNCg0KDQoNCg0KDQotPS09
LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNz
YWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuCgpWaWV3L1JlcGx5IE9ubGluZSAoIzM1ODExKTogaHR0
cHM6Ly9ncm91cHMuaW8vZy90ZXN0ZHJpdmVuZGV2ZWxvcG1lbnQvbWVzc2FnZS8zNTgxMQpNdXRl
IFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210LzY0NDkxOTQ2LzMyNjg3NTUKR3JvdXAg
T3duZXI6IHRlc3Rkcml2ZW5kZXZlbG9wbWVudCtvd25lckBncm91cHMuaW8KVW5zdWJzY3JpYmU6
IGh0dHBzOi8vZ3JvdXBzLmlvL2cvdGVzdGRyaXZlbmRldmVsb3BtZW50L2xlYXZlLzYxNTYzMjIv
NzQ0NTU2Mzg2L3h5enp5ICBbZ2NwdC10ZXN0ZHJpdmVuZGV2ZWxvcG1lbnRAbS5nbWFuZS5vcmdd
Ci09LT0tPS09LT0tPS09LT0tPS09LT0tCg0K

--_000_F84835A61CF1469E8BE4E990F9451F27msncom_
Content-Type: text/html; charset="utf-8"
Content-ID: <[email protected]>
Content-Transfer-Encoding: base64

PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy
bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt
YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv
ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPCEtLVtp
ZiAhbXNvXT48c3R5bGU+dlw6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQ0Kb1w6KiB7
YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQ0Kd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0
I1ZNTCk7fQ0KLnNoYXBlIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9DQo8L3N0eWxlPjwh
W2VuZGlmXS0tPjxzdHlsZT48IS0tDQovKiBGb250IERlZmluaXRpb25zICovDQpAZm9udC1mYWNl
DQoJe2ZvbnQtZmFtaWx5OkhlbHZldGljYTsNCglwYW5vc2UtMTowIDAgMCAwIDAgMCAwIDAgMCAw
O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6
MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7
DQoJcGFub3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAyIDQ7fQ0KLyogU3R5bGUgRGVmaW5pdGlvbnMg
Ki8NCnAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwNCgl7bWFyZ2luOjBp
bjsNCgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJZm9udC1zaXplOjExLjBwdDsNCglmb250LWZh
bWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjt9DQphOmxpbmssIHNwYW4uTXNvSHlwZXJsaW5rDQoJ
e21zby1zdHlsZS1wcmlvcml0eTo5OTsNCgljb2xvcjpibHVlOw0KCXRleHQtZGVjb3JhdGlvbjp1
bmRlcmxpbmU7fQ0KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2VkDQoJe21zby1z
dHlsZS1wcmlvcml0eTo5OTsNCgljb2xvcjpwdXJwbGU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVy
bGluZTt9DQpwLm1zb25vcm1hbDAsIGxpLm1zb25vcm1hbDAsIGRpdi5tc29ub3JtYWwwDQoJe21z
by1zdHlsZS1uYW1lOm1zb25vcm1hbDsNCgltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsNCgltYXJn
aW4tcmlnaHQ6MGluOw0KCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOw0KCW1hcmdpbi1sZWZ0
OjBpbjsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNl
cmlmO30NCnNwYW4uRW1haWxTdHlsZTE5DQoJe21zby1zdHlsZS10eXBlOnBlcnNvbmFsLXJlcGx5
Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOw0KCWNvbG9yOndpbmRvd3RleHQ7
fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJZm9udC1z
aXplOjEwLjBwdDt9DQpAcGFnZSBXb3JkU2VjdGlvbjENCgl7c2l6ZTo4LjVpbiAxMS4waW47DQoJ
bWFyZ2luOjEuMGluIDEuMGluIDEuMGluIDEuMGluO30NCmRpdi5Xb3JkU2VjdGlvbjENCgl7cGFn
ZTpXb3JkU2VjdGlvbjE7fQ0KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxv
OnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjEwMjYiIC8+DQo8L3htbD48IVtl
bmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlbGF5b3V0IHY6ZXh0PSJl
ZGl0Ij4NCjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAvPg0KPC9vOnNoYXBlbGF5b3V0
PjwveG1sPjwhW2VuZGlmXS0tPg0KPC9oZWFkPg0KPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9ImJs
dWUiIHZsaW5rPSJwdXJwbGUiPg0KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPkFsbCBmcmFtZXdvcmtzIGNoYW5nZSBldmVudHVhbGx5LCBvciBzdG9wIHdv
cmtpbmcgd2hlbiBzYXkgT1MgdmVyc2lvbiBpcyB1cGRhdGVkLiBNYW55IG9mIHVzIGhhdmUgbGVh
cm5lZCB0aGF0IHRoZSBoYXJkIHdheSDigKYgLjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+SW52ZW50aW5nIGEgbmV3IFJEQk1TIGludGVyZmFjZSDigJMgdGhhdCBtZWFucyBs
ZWFraW5nIFJEQk1TIHdvcmxkIGludG8geW91ciBhcHBsaWNhdGlvbiBkb21haW4uIEFuZCBwZXJo
YXBzIGFsc28gaW1wbGllcyB0aGUgYmlnZ2VyIHdvcmsgb2YgY292ZXJpbmcgYWxsIG9mIFJEQk1T
IGZ1bmN0aW9uYWxpdHkuIFdoZW4gd2UgdXNlIFJEQk1TIGl04oCZcyBqdXN0IGZvciBzdG9yYWdl
IG9mIGRhdGEg4oCmIHRvZGF5LiBUb21vcnJvdw0KIGl0IGNhbiBiZSBhIGJsb2IgaW4gdGhlIGNs
b3VkLCBuZXh0IHllYXIgaXQgd2lsbCBiZSBzb21ldGhpbmcgZGlmZmVyZW50LiBJIGRvIHdhbnQg
bXkgY29kZSB0byBiZSBmbGV4aWJsZSBmb3IgYWxsIHRob3NlLiBPbmUgd2F5IHRvIGRvIHRoYXQg
aXMgdG8gaXNvbGF0ZSBvbiB0aGUgZWRnZSBvZiBob3cgdGhlIGFwcCBkb21haW4gbG9naWMgdXNl
cyB0aGUgc3RvcmFnZS4gVGhpbmsgYGVtcGxveWVlX3N0b3JhZ2Uuc3RvcmVfZW1wbG95ZWUoKWAg
dnMNCiBgcmRibXMuaW5zZXJ0X3JlY29yZCgpYC4gQSBudWFuY2UsIGJ1dCBhbiBpbXBvcnRhbnQg
b25lIElNTy4gT25jZSB3ZSBoYXZlIHRoYXQg4oCTIHRoZSBhcHAgd29u4oCZdCBjYXJlIGhvdyB0
aGUgc3RvcmFnZSBpcyBpbXBsZW1lbnRlZCBhbmQgYSBzaW1wbGUg4oCYaW4tbWVtb3J5IGVtcGxv
eWVlIHN0b3JhZ2XigJkgb3Ig4oCYbG9jYWwtZmlsZSBlbXBsb3llZSBzdG9yYWdl4oCZIHdpbGwg
c3VmZmljZSBmb3IgdW5pdCBvciBzb21lIGludGVncmF0aW9uIHRlc3RpbmcNCiAuLiA8bzpwPjwv
bzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRp
diBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjQjVDNERGIDEuMHB0O3BhZGRp
bmc6My4wcHQgMGluIDBpbiAwaW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGI+PHNwYW4gc3R5
bGU9ImZvbnQtc2l6ZToxMi4wcHQ7Y29sb3I6YmxhY2siPkZyb206IDwvc3Bhbj48L2I+PHNwYW4g
c3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQ7Y29sb3I6YmxhY2siPiZsdDt0ZXN0ZHJpdmVuZGV2ZWxv
cG1lbnRAZ3JvdXBzLmlvJmd0OyBvbiBiZWhhbGYgb2YgQnJpYW4gTWFyaWNrICZsdDttYXJpY2tA
ZXhhbXBsZXIuY29tJmd0Ozxicj4NCjxiPlJlcGx5LVRvOiA8L2I+JnF1b3Q7dGVzdGRyaXZlbmRl
dmVsb3BtZW50QGdyb3Vwcy5pbyZxdW90OyAmbHQ7dGVzdGRyaXZlbmRldmVsb3BtZW50QGdyb3Vw
cy5pbyZndDs8YnI+DQo8Yj5EYXRlOiA8L2I+VGh1cnNkYXksIERlY2VtYmVyIDUsIDIwMTkgYXQg
NDoyMSBQTTxicj4NCjxiPlRvOiA8L2I+JnF1b3Q7dGVzdGRyaXZlbmRldmVsb3BtZW50QGdyb3Vw
cy5pbyZxdW90OyAmbHQ7dGVzdGRyaXZlbmRldmVsb3BtZW50QGdyb3Vwcy5pbyZndDs8YnI+DQo8
Yj5TdWJqZWN0OiA8L2I+UmU6IFt0ZXN0ZHJpdmVuZGV2ZWxvcG1lbnRdICZxdW90O2JvdHRvbS11
cCZxdW90OyBUREQgYW5kIGNvbW1vbiBiZWhhdmlvcnM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4N
CjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhhdCByYWlzZXMgYW4gaW50ZXJlc3Rpbmcg
Z2VuZXJhbCBxdWVzdGlvbi4gPG86cD48L286cD48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj4mcXVvdDtUaGUgdGVjaG5vbG9neSZxdW90OyBpcyBhIHdlYiBmcmFtZXdvcmsgYW5k
IGl0cyBsaW5rZWQgZGF0YWJhc2UgZnJhbWV3b3JrLjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4N
CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5UaGUgcmlzayBvZiB0aG9zZSBjaGFuZ2luZyBp
biBhIHdheSB0aGF0IGJyZWFrcyBhIGxvdCBvZiBvbGQgY29kZSBpcyBwcmV0dHkgc21hbGwuIEhv
dyBtdWNoIGVmZm9ydCBzaG91bGQgd2Ugc3BlbmQgaW5zdWxhdGluZyBvdXIgY29kZSBhZ2FpbnN0
IGxvdy1wcm9iYWJpbGl0eSBldmVudHM/PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPklzb2xhdGluZyBteSBjb2RlIGZyb20gRWN0byB3b3VsZCBp
biBlZmZlY3QgbWVhbiBpbnZlbnRpbmcgYSAqbmV3KiBpbnRlcmZhY2UgdG8gYSBSREJNUy4gRG9l
cyBpdCByZWFsbHkgc2VlbSBsaWtlbHkgdGhhdCBJ4oCZbGwgZG8gdGhhdCBiZXR0ZXIgdGhhbiB0
aGUgRWN0byBkZXNpZ25lcnM/PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPlAuUy4gSSBuZWVkIHRvIHNwZW5kIHNvbWUgdGltZSB0aGlua2luZyBh
Ym91dCBob3cgRlAgaWRlYXMgYW5kIE9PIGlkZWFzIHBsYXkgdG9nZXRoZXIuIE15IG9waW5pb24g
aGFzIGJlZW4gdGhhdCwgbGVhdmluZyBhc2lkZSBpbmhlcml0YW5jZSwgdHlwaWNhbCBGUCBsYW5n
dWFnZXMgYXJlIG5vdCBkaWZmZXJlbnQsIGluIHByYWN0aWNlLCB0aGFuIE9PIGxhbmd1YWdlcy4g
QnV0IEkgd29uZGVyIGlmIHRoYXTigJlzIHJpZ2h0LjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxicj4NCjxicj4NCjxvOnA+PC9vOnA+PC9wPg0KPGJsb2NrcXVv
dGUgc3R5bGU9Im1hcmdpbi10b3A6NS4wcHQ7bWFyZ2luLWJvdHRvbTo1LjBwdCI+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+T24gRGVjIDQsIDIwMTksIGF0IDEyOjQzIEFNLCBBdmkgS2Vz
c25lciAmbHQ7PGEgaHJlZj0ibWFpbHRvOmFrZXNzbmVyQGdtYWlsLmNvbSI+YWtlc3NuZXJAZ21h
aWwuY29tPC9hPiZndDsgd3JvdGU6PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj5TbyB0aGlzIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQgYmVoYXZpb3IgYW5kIGl0
IHdpbGwgYmUgeW91ciBvd24sIHNvIGl0IG5lZWRzIHRvIGJlIHRlc3RlZC4NCjxvOnA+PC9vOnA+
PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPk9uIHRoZSBvdGhlciBoYW5kLCBpdCdz
IGEgdmVyeSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgd2hpY2ggY291bGQgY2hhbmdl
IHdoZW4gdGhlIHRlY2hub2xvZ3kgY2hhbmdlcyBhbmQgd2UgZG9uJ3Qgd2FudCB0aGF0IHRvIGlt
cGFjdCBhY3R1YWwgYmVoYXZpb3IgcmVsYXRlZCB0ZXN0cyBhYm91dCBhbmltYWxzLjxvOnA+PC9v
OnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8
L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5XaGF0IEkgd291
bGQgZG8gaXMgbWFrZSBhIHRyYW5zZm9ybWF0aW9uIGRlY29yYXRvciBhbmQgdGhlbiB0ZXN0IHNh
bXBsZSBkYXRhIHRvIHNlZSB0aGF0IGl0IGdldHMgdHJhbnNmb3JtZWQgY29ycmVjdGx5LiZuYnNw
OyBJZiBFY3RvIGV2ZXIgY2hhbmdlcywgdGhhdCB0cmFuc2Zvcm1hdGlvbiBkZWNvcmF0b3IgY2Fu
IGRvIG5vdGhpbmcgaWYgbmVlZGVkLjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+WW91IGJhc2ljYWxseSBuZWVkIGEgbWFwIG9mIGZpZWxkcyB0aGF0
IGNhbiBiZSBjaGFuZ2VkIGFuZCB0aGUgdHJhbnNmb3JtYXRpb24gbmVlZGVkIGZvciB0aGF0IGZp
ZWxkLjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+
PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij5BIGJpdCBtb3JlIHdvcmssIGJ1dCBpdCBhbGxvd3MgZm9yIGEgY2hhbmdlIGluIEVjdG8gb3Ig
YSBjaGFuZ2UgaW4gdW5kZXJzdGFuZGluZyBvZiBFY3RvIHRvIG5vdCBpbXBhY3QgdGhlIG1haW4g
dGVzdCBzdWl0ZS48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+T24gV2VkLCBEZWMgNCwgMjAxOSwgMDE6NTAgQnJpYW4gTWFyaWNrICZsdDs8YSBo
cmVmPSJtYWlsdG86bWFyaWNrQGV4YW1wbGVyLmNvbSI+bWFyaWNrQGV4YW1wbGVyLmNvbTwvYT4m
Z3Q7IHdyb3RlOjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9y
ZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4g
MGluIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4iPg0KPGRpdj4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5ZZXMuPG86cD48L286cD48L3A+DQo8ZGl2Pg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PGJyPg0KPGJyPg0KPG86cD48L286cD48L3A+DQo8YmxvY2txdW90
ZSBzdHlsZT0ibWFyZ2luLXRvcDo1LjBwdDttYXJnaW4tYm90dG9tOjUuMHB0Ij4NCjxkaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj5PbiBEZWMgMywgMjAxOSwgYXQgNTozMSBBTSwgQXZpIEtlc3Nu
ZXIgJmx0OzxhIGhyZWY9Im1haWx0bzpha2Vzc25lckBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5r
Ij5ha2Vzc25lckBnbWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8bzpwPjwvbzpwPjwvcD4NCjwvZGl2
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8ZGl2Pg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQ7Zm9udC1mYW1p
bHk6SGVsdmV0aWNhIj5JZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5LCB0aGUgY29kZSBoZXJlIGlz
IHNwZWNpZmljYWxseSZuYnNwO2ZvciBkb2luZyBhbiBFY3RvIHRyYW5zZm9ybWF0aW9uLCBjb3Jy
ZWN0PyBJZiB5b3UgZGVjaWRlIG5vdCB0byB1c2UgRWN0byB0aGUgbmVlZCBmb3IgdGhpcyBhYnN0
cmFjdGlvbiBpcyByZW1vdmVkPzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9ibG9j
a3F1b3RlPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwv
cD4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJz
cDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZu
YnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+DQo8L2Rpdj4NCjwv
YmxvY2txdW90ZT4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48L286cD48L3NwYW4+
PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg0KPGRpdiB3aWR0aD0iMSIg
c3R5bGU9ImNvbG9yOndoaXRlO2NsZWFyOmJvdGgiPl8uXyxfLl8sXzwvZGl2Pgo8aHI+Ckdyb3Vw
cy5pbyBMaW5rczo8cD4KCllvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3Jv
dXAuCgoKPHA+Cgo8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9ncm91cHMuaW8vZy90
ZXN0ZHJpdmVuZGV2ZWxvcG1lbnQvbWVzc2FnZS8zNTgxMSI+Vmlldy9SZXBseSBPbmxpbmUgKCMz
NTgxMSk8L2E+IHwKCgogIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJtYWlsdG86dGVzdGRyaXZl
bmRldmVsb3BtZW50QGdyb3Vwcy5pbz9zdWJqZWN0PVJlOiUyMFJlJTNBJTIwJTVCdGVzdGRyaXZl
bmRldmVsb3BtZW50JTVEJTIwJTIyYm90dG9tLXVwJTIyJTIwVEREJTIwYW5kJTIwY29tbW9uJTIw
YmVoYXZpb3JzIj5SZXBseSBUbyBHcm91cDwvYT4KICAKICAgIHwgPGEgdGFyZ2V0PSJfYmxhbmsi
IGhyZWY9Im1haWx0bzpkb2xld3NraUBtc24uY29tP3N1YmplY3Q9UHJpdmF0ZTolMjBSZTolMjBS
ZSUzQSUyMCU1QnRlc3Rkcml2ZW5kZXZlbG9wbWVudCU1RCUyMCUyMmJvdHRvbS11cCUyMiUyMFRE
RCUyMGFuZCUyMGNvbW1vbiUyMGJlaGF2aW9ycyI+UmVwbHkgVG8gU2VuZGVyPC9hPgogIAoKCnwK
CgogIAogICAgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZ3JvdXBzLmlvL210LzY0
NDkxOTQ2LzMyNjg3NTUiPk11dGUgVGhpcyBUb3BpYzwvYT4KICAKCnwgPGEgaHJlZj0iaHR0cHM6
Ly9ncm91cHMuaW8vZy90ZXN0ZHJpdmVuZGV2ZWxvcG1lbnQvcG9zdCI+TmV3IFRvcGljPC9hPjxi
cj4KCgoKPGJyPgoKPGEgaHJlZj0iaHR0cHM6Ly9ncm91cHMuaW8vZy90ZXN0ZHJpdmVuZGV2ZWxv
cG1lbnQvZWRpdHN1Yi8zMjY4NzU1Ij5Zb3VyIFN1YnNjcmlwdGlvbjwvYT4gfAo8YSBocmVmPSJt
YWlsdG86dGVzdGRyaXZlbmRldmVsb3BtZW50K293bmVyQGdyb3Vwcy5pbyI+Q29udGFjdCBHcm91
cCBPd25lcjwvYT4gfAoKPGEgaHJlZj0iaHR0cHM6Ly9ncm91cHMuaW8vZy90ZXN0ZHJpdmVuZGV2
ZWxvcG1lbnQvbGVhdmUvNjE1NjMyMi83NDQ1NTYzODYveHl6enkiPlVuc3Vic2NyaWJlPC9hPgoK
IFtnY3B0LXRlc3Rkcml2ZW5kZXZlbG9wbWVudEBtLmdtYW5lLm9yZ108YnI+CjxkaXYgd2lkdGg9
IjEiIHN0eWxlPSJjb2xvcjp3aGl0ZTtjbGVhcjpib3RoIj5fLl8sXy5fLF88L2Rpdj4KDQo=

--_000_F84835A61CF1469E8BE4E990F9451F27msncom_--