Re: [CDBI] Worknig on Class::DBI::Relationship::IsA

[prev] [thread] [next] [Date index for 2006/02/24]

From: Peter Speltz
Subject: Re: [CDBI] Worknig on Class::DBI::Relationship::IsA
Date: 19:36 on 24 Feb 2006
------=_Part_15667_25848480.1140809783259
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Anyone want to test this version out. It is Old CDBI compatible.   I
dont have that installed. Heres changes. Also added to synopsis for
one_to_one stuff.

CHANGES THIS VERSION
No more spurious warnings
Attempts to use Class::DBI::Sweet's search  (temporary hack until proper so=
lu-
tion can be made)
one_to_one and many_to_many args recognized. note default WILL BE one_to_on=
e
but not until Version 1.0.

Rhesa, It defaults now to many_to_many since we dont want to break
peoples code this release. Question for you, -- I like my one_to_one's
to have the same ID in most cases. Makes stuff easy. I hacked IsA's
_creator sub to put the ID of the Parent into the childs data hash
since parent is created first.  I'm thinking this is a pretty common
desire and am wondering how to  make it do that nicely when you want.
Probably another arg .

Also, dont have time to get to has_many inherit yet.

Also, Matt has good point about cpan installing CDBI 3.14 . I think
the cpan needs install IsA that is compatible with  whatever
Class::DBI it installs. So we have to take it the other way -- the
developemnt versions will be .06_CDBI_Frozen_301 or whatever.  Sorry.=20
CDBI COMPATIBILITY will be well documented .

I think that covers it. Appreciate any testing.

------=_Part_15667_25848480.1140809783259
Content-Type: application/octet-stream; name="IsA.pm"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="IsA.pm"
X-Attachment-Id: f_ek2wqrpm

cGFja2FnZSBDbGFzczo6REJJOjpSZWxhdGlvbnNoaXA6OklzQTsKCgpvdXIgJERFQlVHX0xFVkVM
ID0gMDsKCndhcm4gIlVzaW5nICIgLiBfX1BBQ0tBR0VfXyBpZiAkREVCVUdfTEVWRUwgPiAwOwo9
aGVhZDEgTkFNRQoKQ2xhc3M6OkRCSTo6UmVsYXRpb25zaGlwOjpJc0EgLSBBIENsYXNzOjpEQkkg
bW9kdWxlIGZvciAnSXMgQScgcmVsYXRpb25zaGlwcwoKPWhlYWQxIERFU0NSSVBUSU9OCgoqKiog
SW1wb3J0YW50ICoqKiBTZWUgQ0xBU1M6OkRCSSBDT01QQVRJQklMVFkgIGJlbG93CgpDbGFzczo6
REJJOjpSZWxhdGlvbnNoaXA6OklzQSBQcm92aWRlcyBhbiBJcyBBIHJlbGF0aW9uc2hpcCBiZXR3
ZWVuIENsYXNzOjpEQkkgY2xhc3Nlcy90YWJsZXMuCgpCeSB1c2luZyB0aGlzIG1vZHVsZSB5b3Ug
Y2FuIGVtdWxhdGUgc29tZSBmZWF0dXJlcyBvZiBpbmhlcml0YW5jZSBib3RoIHdpdGhpbiB5b3Vy
IGRhdGFiYXNlIGFuZCBjbGFzc2VzIHRocm91Z2ggdGhlIENsYXNzOjpEQkkgQVBJLgoKTk9URTog
VGhpcyBtb2R1bGUgaXMgc3RpbGwgZXhwZXJpbWVudGFsLCBzZXZlcmFsIHZlcnkgbmFzdHkgYnVn
cyBoYXZlIGJlZW4gZm91bmQgKGFuZCBmaXhlZCkgb3RoZXJzIG1heSBzdGlsbCBiZSBsdXJraW5n
IC0gc2VlIENBVkVBVFMgQU5EIEJVR1MgYmVsb3cuCgpXYXJuaW5nIFdpbGwgUm9iaW5zb24hCgo9
aGVhZDEgU1lOT1BTSVMKCkluIHlvdXIgZGF0YWJhc2UgKGFzc3VtaW5nIG15c3FsKToKCiBjcmVh
dGUgdGFibGUgcGVyc29uICgKICAgcGVyc29uaWQgaW50IHByaW1hcnkga2V5IGF1dG9faW5jcmVt
ZW50LAogICBmaXJzdG5hbWUgdmFyY2hhcigzMiksCiAgIGluaXRpYWxzIHZhcmNoYXIoMTYpLAog
ICBzdXJuYW1lIHZhcmNoYXIoNjQpLAogICBkYXRlX29mX2JpcnRoIGRhdGV0aW1lCiApOwoKIGNy
ZWF0ZSB0YWJsZSBhcnRpc3QgKAogICBhcnRpc3RpZCBpbnQgcHJpbWFyeSBrZXkgYXV0b19pbmNy
ZW1lbnQsCiAgIGFsaWFzIHZhcmNoYXIoMTI4KSwKICAgcGVyc29uIGludAogKTsKCgpJbiB5b3Vy
IGNsYXNzZXM6CgogcGFja2FnZSBNdXNpYzo6REJJOwogdXNlIGJhc2UgJ0NsYXNzOjpEQkknOwoK
IE11c2ljOjpEQkktPmNvbm5lY3Rpb24oJ2RiaTpteXNxbDpkYm5hbWUnLCAndXNlcm5hbWUnLCAn
cGFzc3dvcmQnKTsKIF9fUEFDS0FHRV9fLT5hZGRfcmVsYXRpb25zaGlwX3R5cGUoaXNfYSA9PiAn
Q2xhc3M6OkRCSTo6UmVsYXRpb25zaGlwOjpJc0EnKTsKClN1cGVyY2xhc3M6CgogcGFja2FnZSBN
dXNpYzo6UGVyc29uOwogdXNlIGJhc2UgJ011c2ljOjpEQkknOwoKIE11c2ljOjpQZXJzb24tPnRh
YmxlKCdwZXJzb24nKTsKIE11c2ljOjpQZXJzb24tPmNvbHVtbnMoQWxsID0+IHF3L3BlcnNvbmlk
IGZpcnN0bmFtZSBpbml0aWFscyBzdXJuYW1lIGRhdGVfb2ZfYmlydGgvKTsKIE11c2ljOjpQZXJz
b24tPmNvbHVtbnMoUHJpbWFyeSA9PiBxdy9wZXJzb25pZC8pOyAjIEdvb2QgcHJhY3RpY2UsIGxl
c3MgbGlrZWx5IHRvIGJyZWFrIElzQQoKQ2hpbGQgY2xhc3M6CgogcGFja2FnZSBNdXNpYzo6QXJ0
aXN0OwogdXNlIGJhc2UgJ011c2ljOjpEQkknOwogdXNlIE11c2ljOjpQZXJzb247ICMgcmVxdWly
ZWQgZm9yIGFjY2VzcyB0byBNdXNpYzo6UGVyc29uIG1ldGhvZHMKCiBNdXNpYzo6QXJ0aXN0LT50
YWJsZSgnYXJ0aXN0Jyk7CiBNdXNpYzo6QXJ0aXN0LT5jb2x1bW5zKEFsbCA9PiBxdy9hcnRpc3Rp
ZCBhbGlhcy8pOwogTXVzaWM6OlBlcnNvbi0+Y29sdW1ucyhQcmltYXJ5ID0+IHF3L3BlcnNvbmlk
Lyk7ICMgR29vZCBwcmFjdGljZSwgbGVzcyBsaWtlbHkgdG8gYnJlYWsgSXNBCiBNdXNpYzo6QXJ0
aXN0LT5oYXNfbWFueShjZHMgPT4gJ011c2ljOjpDRCcpOwoKIE11c2ljOjpBcnRpc3QtPmlzX2Eo
cGVyc29uID0+ICdQZXJzb24nKTsgIyBNdXNpYzo6QXJ0aXN0IGluaGVyaXRzIGFjY2Vzc29ycyBm
cm9tIE11c2ljOjpQZXJzb24KCiAjIEFib3ZlIGFzc3VtZXMgbWFueV90b19tYW55IHJlbGF0aW9u
c2hpcC4gU2FtZSBhcyAgCiBNdXNpYzo6QXJ0aXN0LT5pc19hKHBlcnNvbiA9PiAnUGVyc29uJywg
e21hbnlfdG9fbWFueT0+MSk7IAogIyBJZiByZWwgaXMgYSAgb25lX3RvX29uIHlvdSBjYW4gaGF2
ZSB0aGUgUGVyc29uIGJlIGRlbGV0ZWQgYnkgY2FzY2FkZSAgCiBNdXNpYzo6QXJ0aXN0LT5pc19h
KHBlcnNvbiA9PiAnUGVyc29uJywge29uZV90b19vbmU9PjF9ICk7IAoKLi4uIGVsc2V3aGVyZSAu
Li4KCiB1c2UgTXVzaWM6OkFydGlzdDsKIG15ICRhcnRpc3QgPSBNdXNpYzo6QXJ0aXN0LT5jcmVh
dGUoIHtmaXJzdG5hbWU9PidTYXJhaCcsIHN1cm5hbWU9PidHZWxsZXInLCBhbGlhcz0+J0J1ZmZ5
J30pOwogJGFydGlzdC0+aW5pdGlhbHMoJ00nKTsKICRhcnRpc3QtPnVwZGF0ZSgpOwoKPWhlYWQx
IENsYXNzOjpEQkkgQ29tcGF0aWJpbGl0eQoKVGhpcyB2ZXJzaW9uIGlzIGNvbXBhdGlibGUgd2l0
aCBDbGFzczo6REJJOjpGb3J6ZW46OjMwMSBhbmQgLjkqIHZlcnNpb25zLgoKU2luY2UgbWFueSBw
ZW9wbGUgdXNlIG9sZGVyIHZlcnNpb25zIG9mIENsYXNzOjpEQkkgYW5kIGl0IGlzIGluIGZsdXgg
d2UKd2lsbCBtYWludGFpbiBhIGJyYW5jaCBmb3IgdGhlbS4gIAoKPWN1dAoKdXNlIHN0cmljdDsK
b3VyICRWRVJTSU9OID0gJzAuMDYnOwoKdXNlIHdhcm5pbmdzOwp1c2UgYmFzZSBxdyggQ2xhc3M6
OkRCSTo6UmVsYXRpb25zaGlwICk7CnVzZSBDbGFzczo6REJJOjpBYnN0cmFjdFNlYXJjaDsKCnVz
ZSBEYXRhOjpEdW1wZXI7CgpzdWIgcmVtYXBfYXJndW1lbnRzIHsKICAgIG15ICRwcm90byA9IHNo
aWZ0OwogICAgbXkgJGNsYXNzID0gc2hpZnQ7CiAgICAkY2xhc3MtPl9pbnZhbGlkX29iamVjdF9t
ZXRob2QoJ2lzX2EoKScpIGlmIHJlZiAkY2xhc3M7CiAgICBteSAkY29sdW1uID0gJGNsYXNzLT5m
aW5kX2NvbHVtbihzaGlmdCkKCW9yIHJldHVybiAkY2xhc3MtPl9jcm9haygiaXNfYSBuZWVkcyBh
IHZhbGlkIGNvbHVtbiIpOwogICAgbXkgJGZfY2xhc3MgPSBzaGlmdAoJb3IgJGNsYXNzLT5fY3Jv
YWsoIiRjbGFzcyAkY29sdW1uIG5lZWRzIGFuIGFzc29jaWF0ZWQgY2xhc3MiKTsKICAgIG15ICRh
cmdzID0gJF9bLTFdOwogICAgaWYgKCRhcmdzIGFuZCByZWYgJGFyZ3MgbmUgJ0hBU0gnKSB7ICRh
cmdzID0ge307IH0KCiAgICAjVE9ETyAtLSBtYXliZSBoYXZlIGxpc3Qgb2YgY29sdW1ucyB0byAi
aW5oZXJpdCIgPyBBZGQgdG8gYWxsIGNvbHMgbGlzdD8KICAgICNteSAlbWV0aHMgPSBAXzsKCiAg
ICBteSBAZl9jb2xzOwogICAgZm9yZWFjaCBteSAkZl9jb2wgKCRmX2NsYXNzLT5hbGxfY29sdW1u
cykgewoJcHVzaCBAZl9jb2xzLCAkZl9jb2wKCSAgICB1bmxlc3MgJGZfY29sIGVxICRmX2NsYXNz
LT5wcmltYXJ5X2NvbHVtbjsKICAgIH0KICAgICRjbGFzcy0+X19ncm91cGVyLT5hZGRfZ3JvdXAo
VEVNUCA9PiBtYXAgeyAkXy0+bmFtZSB9IEBmX2NvbHMpOwogICAgJGNsYXNzLT5fX2dyb3VwZXIt
PmFkZF9ncm91cChfX0lOSEVSSVRFRCA9PiBtYXAgeyAkXy0+bmFtZSB9IEBmX2NvbHMpOwogICAg
JGNsYXNzLT5ta19jbGFzc2RhdGEoJ19faXNhX3JlbHMnKTsKICAgICRjbGFzcy0+X19pc2FfcmVs
cyh7IH0pOwogICAgcmV0dXJuICgkY2xhc3MsICRjb2x1bW4sICRmX2NsYXNzLCAkYXJncyk7Cn0K
CnN1YiB0cmlnZ2VycyB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OyMgdGhlIHJlbGF0aW9uc2hpcCBv
YmplY3QKCW15ICRtZXRhICA9CSRzZWxmLT5jbGFzcy0+bWV0YV9pbmZvKCRzZWxmLT5uYW1lID0+
ICRzZWxmLT5hY2Nlc3Nvcik7CiAgICAkc2VsZi0+Y2xhc3MtPl9yZXF1aXJlX2NsYXNzKCRzZWxm
LT5mb3JlaWduX2NsYXNzKTsKICAgIG15ICRjb2x1bW4gPSAkc2VsZi0+YWNjZXNzb3I7CgogICAg
cmV0dXJuICAgKAoJICAgIHNlbGVjdCAgICAgICAgPT4gJHNlbGYtPl9pbmZsYXRvciwKCSAgICBi
ZWZvcmVfY3JlYXRlID0+ICRzZWxmLT5fY3JlYXRvciwKICAgICAgICBiZWZvcmVfdXBkYXRlID0+
IHN1YiB7IAoJCQlpZiAobXkgJGZfb2JqID0gJF9bMF0tPiRjb2x1bW4oKSkgeyAkZl9vYmotPnVw
ZGF0ZSB9CgkJfSwKCQliZWZvcmVfZGVsZXRlID0+IHN1YiB7IAoJCQlpZiAobXkgJGZfb2JqID0g
JF9bMF0tPiRjb2x1bW4oKSBhbmQgJG1ldGEtPnthcmdzfXtvbmVfdG9fb25lfSkgeyAKCQkJCSRm
X29iai0+ZGVsZXRlOyAKCQkJfQogICAgICAgIH0sCiAgICApOwp9CgpzdWIgbWV0aG9kcyB7CiAg
ICBteSAkc2VsZiA9IHNoaWZ0OwogICAgJHNlbGYtPmNsYXNzLT5fcmVxdWlyZV9jbGFzcygkc2Vs
Zi0+Zm9yZWlnbl9jbGFzcyk7CgogICAgbXkgJGZvcmVpZ25fY2xhc3MgPSAkc2VsZi0+Zm9yZWln
bl9jbGFzczsKICAgIG15ICRjbGFzcyA9ICRzZWxmLT5jbGFzczsKICAgIHdhcm4gImZvcmVpZ24g
Y2xhc3MgOiAkZm9yZWlnbl9jbGFzc1xuIiBpZiAkREVCVUdfTEVWRUwgPiA1OwoKICAgIHdhcm4g
ImdldHRpbmcgcmVsYXRpb25zaGlwcy4uXG4iICBpZiAkREVCVUdfTEVWRUwgPiA1OwoKCiAgICBt
eSAkcGFyZW50X3JlbGF0aW9uX2ZpZWxkcyA9ICRzZWxmLT5faW5qZWN0X2luaGVyaXRlZF9yZWxh
dGlvbnNoaXBzKGNsYXNzPT4kY2xhc3MsIGZvcmVpZ249PiRmb3JlaWduX2NsYXNzKTsKCiAgICBt
eSAkZm9yYmlkZGVuX2ZpZWxkcyA9ICIoaWR8JHtjbGFzc31fP3U/aWQiOwogICAgJGZvcmJpZGRl
bl9maWVsZHMgLj0gKCRmb3JlaWduX2NsYXNzLT5jb2x1bW5zKCdQcmltYXJ5JykpID8gJ3wnIC4g
JGZvcmVpZ25fY2xhc3MtPmNvbHVtbnMoJ1ByaW1hcnknKSAuJyknIDogJyknIDsKICAgIHdhcm4g
ImZvcmJpZGRlbl9maWVsZHMgOiAkZm9yYmlkZGVuX2ZpZWxkc1xuIiBpZiAkREVCVUdfTEVWRUwg
PiA0OwoKICAgIG15ICVtZXRob2RzOwogICAgbXkgJGFjY19uYW1lID0gJHNlbGYtPmFjY2Vzc29y
LT5uYW1lOwogICAgZm9yZWFjaCBteSAkZl9jb2wgKCRzZWxmLT5mb3JlaWduX2NsYXNzLT5hbGxf
Y29sdW1ucykgewogICAgICAgIHdhcm4gImZfY29sIDogJGZfY29sLCBhY2NfbmFtZSA6ICRhY2Nf
bmFtZVxuIiBpZiAkREVCVUdfTEVWRUwgPiA1IDsKICAgICAgICBuZXh0IGlmICgkZl9jb2wgZXEg
JGFjY19uYW1lIG9yICRmX2NvbCA9fiAvJGZvcmJpZGRlbl9maWVsZHMvaSBvciAkcGFyZW50X3Jl
bGF0aW9uX2ZpZWxkcy0+eyRmX2NvbH0pOwoJaWYgKCRjbGFzcy0+Y2FuKCdwdXJlX2FjY2Vzc29y
X25hbWUnKSkgewoJICAgICMgcHJvdmlkZSBzZXBlcmF0ZSByZWFkL3dyaXRlIGFjY2Vzc29yLCBy
ZWFkIG9ubHkgYWNjZXNzb3IgYW5kIHdyaXRlIG9ubHkgbXV0YXRvcgoJICAgICRtZXRob2Rze3Vj
Zmlyc3QoJGNsYXNzLT5wdXJlX2FjY2Vzc29yX25hbWUoJGZfY29sKSl9CgkJPSAkbWV0aG9kc3sk
Y2xhc3MtPnB1cmVfYWNjZXNzb3JfbmFtZSgkZl9jb2wpfSA9ICRzZWxmLT5fZ2V0X21ldGhvZHMo
JGFjY19uYW1lLCAkZl9jb2wsJ3JvJyk7CgkgICAgJG1ldGhvZHN7dWNmaXJzdCgkY2xhc3MtPm11
dGF0b3JfbmFtZSgkZl9jb2wpKX0KCQk9ICRtZXRob2RzeyRjbGFzcy0+bXV0YXRvcl9uYW1lKCRm
X2NvbCl9ID0gJHNlbGYtPl9nZXRfbWV0aG9kcygkYWNjX25hbWUsICRmX2NvbCwnd28nKTsKCSAg
ICAkbWV0aG9kc3t1Y2ZpcnN0KCRjbGFzcy0+YWNjZXNzb3JfbmFtZSgkZl9jb2wpKX0KCQk9ICRt
ZXRob2RzeyRjbGFzcy0+YWNjZXNzb3JfbmFtZSgkZl9jb2wpfSA9ICRzZWxmLT5fZ2V0X21ldGhv
ZHMoJGFjY19uYW1lLCAkZl9jb2wsJ3J3Jyk7Cgl9IGVsc2UgewoJICAgIGlmICggJGNsYXNzLT5t
dXRhdG9yX25hbWUoJGZfY29sKSBlcSAkY2xhc3MtPmFjY2Vzc29yX25hbWUoJGZfY29sKSApIHsK
CQkjIHByb3ZpZGUgcmVhZC93cml0ZSBhY2Nlc3NvcgoJCSRtZXRob2Rze3VjZmlyc3QoJGNsYXNz
LT5hY2Nlc3Nvcl9uYW1lKCRmX2NvbCkpfQoJCSAgICA9ICRtZXRob2RzeyRjbGFzcy0+YWNjZXNz
b3JfbmFtZSgkZl9jb2wpfSA9ICRzZWxmLT5fZ2V0X21ldGhvZHMoJGFjY19uYW1lLCAkZl9jb2ws
J3J3Jyk7CgkgICAgfSBlbHNlIHsKCQkjIHByb3ZpZGUgc2VwZXJhdGUgcmVhZCBvbmx5IGFjY2Vz
c29yIGFuZCB3cml0ZSBvbmx5IG11dGF0b3IKCQkkbWV0aG9kc3t1Y2ZpcnN0KCRjbGFzcy0+YWNj
ZXNzb3JfbmFtZSgkZl9jb2wpKX0KCQkgICAgPSAkbWV0aG9kc3skY2xhc3MtPmFjY2Vzc29yX25h
bWUoJGZfY29sKX0gPSAkc2VsZi0+X2dldF9tZXRob2RzKCRhY2NfbmFtZSwgJGZfY29sLCdybycp
OwoJCSRtZXRob2Rze3VjZmlyc3QoJGNsYXNzLT5tdXRhdG9yX25hbWUoJGZfY29sKSl9CgkJICAg
ID0gJG1ldGhvZHN7JGNsYXNzLT5tdXRhdG9yX25hbWUoJGZfY29sKX0gPSAkc2VsZi0+X2dldF9t
ZXRob2RzKCRhY2NfbmFtZSwgJGZfY29sLCd3bycpOwoJICAgIH0KCX0KICAgIH0KCiAgICAkbWV0
aG9kc3tzZWFyY2hfd2hlcmV9ID0gJHNlbGYtPnNlYXJjaF93aGVyZSBpZiAkc2VsZi0+Y2xhc3Mt
PmNhbignc2VhcmNoX3doZXJlJyk7CgogICAgJG1ldGhvZHN7J3JldHJpZXZlX2FsbF9zb3J0ZWRf
YnknfSA9ICRzZWxmLT5yZXRyaWV2ZV9hbGxfc29ydGVkX2J5IGlmICRzZWxmLT5jbGFzcy0+Y2Fu
KCdyZXRyaWV2ZV9hbGxfc29ydGVkX2J5Jyk7CiAgICByZXR1cm4oCgkgICAlbWV0aG9kcywKCSAg
IHNlYXJjaCAgICAgID0+ICRzZWxmLT5zZWFyY2gsCgkgICBzZWFyY2hfbGlrZSA9PiAkc2VsZi0+
c2VhcmNoX2xpa2UsCgkgICBhbGxfY29sdW1ucyA9PiAkc2VsZi0+YWxsX2NvbHVtbnMsCgkgICk7
Cn0KCnN1YiBzZWFyY2ggewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIG15ICRTVVBFUiA9ICRz
ZWxmLT5mb3JlaWduX2NsYXNzOwogICAgbXkgJGNvbCA9ICRzZWxmLT5hY2Nlc3NvcjsKICAgIHsK
CQlubyBzdHJpY3QgInJlZnMiOwoJCSp7JHNlbGYtPmNsYXNzLiI6Om9yaWdfc2VhcmNoIn0gPSAK
CQkJJHNlbGYtPmNsYXNzLT5pc2EoJ0NsYXNzOjpEQkk6OlN3ZWV0JykgPyAKCQkJXCZ7IkNsYXNz
OjpEQkk6OlN3ZWV0OjpzZWFyY2gifSA6IFwmeyJDbGFzczo6REJJOjpzZWFyY2gifTsKICAgIH0K
ICAgIHJldHVybiBzdWIgewogICAgICAgIG15ICgkc2VsZiwgJWFyZ3MpID0gKEBfKTsKICAgICAg
ICBteSAoJWNoaWxkLCAlcGFyZW50KTsKICAgICAgICBmb3JlYWNoIG15ICRrZXkgKGtleXMgJWFy
Z3MpIHsKICAgICAgICAgICAgJGNoaWxkeyRrZXl9ID0gJGFyZ3N7JGtleX0gaWYgJHNlbGYtPmhh
c19yZWFsX2NvbHVtbigka2V5KTsKICAgICAgICAgICAgJHBhcmVudHska2V5fSA9ICRhcmdzeyRr
ZXl9IGlmICRTVVBFUi0+aGFzX3JlYWxfY29sdW1uKCRrZXkpOwogICAgICAgIH0KICAgICAgICBp
ZiglcGFyZW50KSB7CgkJCSMgcGpzIFRPRE8gLS0gam9pbiBhbmQgY29uc3RydWN0IG1heWJlID8g
CiAgICAgICAgICAgIHJldHVybiBtYXAgeyAkc2VsZi0+b3JpZ19zZWFyY2goJGNvbCA9PiAkXy0+
aWQsICVjaGlsZCkKCQkJIH0gJFNVUEVSLT5zZWFyY2goJXBhcmVudCk7Cgl9IGVsc2UgewoJICAg
IHJldHVybiAkc2VsZi0+b3JpZ19zZWFyY2goJWNoaWxkKTsKCX0KICAgIH07Cn0KCnN1YiBzZWFy
Y2hfbGlrZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgbXkgJFNVUEVSID0gJHNlbGYtPmZv
cmVpZ25fY2xhc3M7CiAgICBteSAkY29sID0gJHNlbGYtPmFjY2Vzc29yOwogICAgewoJbm8gc3Ry
aWN0ICJyZWZzIjsKCSp7JHNlbGYtPmNsYXNzLiI6Om9yaWdfc2VhcmNoX2xpa2UifSA9IFwmeyJD
bGFzczo6REJJOjpzZWFyY2hfbGlrZSJ9OwogICAgfQogICAgcmV0dXJuIHN1YiB7CiAgICAgICAg
bXkgKCRzZWxmLCAlYXJncykgPSAoQF8pOwogICAgICAgIG15ICglY2hpbGQsICVwYXJlbnQpOwog
ICAgICAgIGZvcmVhY2ggbXkgJGtleSAoa2V5cyAlYXJncykgewogICAgICAgICAgICAkY2hpbGR7
JGtleX0gPSAkYXJnc3ska2V5fSBpZiAkc2VsZi0+aGFzX3JlYWxfY29sdW1uKCRrZXkpOwogICAg
ICAgICAgICAkcGFyZW50eyRrZXl9ID0gJGFyZ3N7JGtleX0gaWYgJFNVUEVSLT5oYXNfcmVhbF9j
b2x1bW4oJGtleSk7CiAgICAgICAgfQogICAgICAgIGlmKCVwYXJlbnQpIHsKICAgICAgICAgICAg
cmV0dXJuIG1hcCB7ICRzZWxmLT5vcmlnX3NlYXJjaF9saWtlKCRjb2wgPT4gJF8tPmlkLCAlY2hp
bGQpCiAgICAgICAgICAgICAgICAgICAgICAgfSAkU1VQRVItPnNlYXJjaF9saWtlKCVwYXJlbnQp
OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkc2VsZi0+b3JpZ19zZWFyY2hf
bGlrZSglY2hpbGQpOwogICAgICAgIH0KICAgIH07Cn0KCnN1YiBzZWFyY2hfd2hlcmUgewogICAg
bXkgJHNlbGYgPSBzaGlmdDsKICAgIG15ICRTVVBFUiA9ICRzZWxmLT5mb3JlaWduX2NsYXNzOwog
ICAgbXkgJGNvbCA9ICRzZWxmLT5hY2Nlc3NvcjsKICAgIHsKICAgICAgICBubyBzdHJpY3QgInJl
ZnMiOwogICAgICAgICp7JHNlbGYtPmNsYXNzLiI6Om9yaWdfc2VhcmNoX3doZXJlIn0gPSBcJnsi
Q2xhc3M6OkRCSTo6QWJzdHJhY3RTZWFyY2g6OnNlYXJjaF93aGVyZSJ9OwogICAgfQoKICAgIHJl
dHVybiBzdWIgewogICAgICAgIG15ICgkc2VsZiwgJWFyZ3MpID0gKEBfKTsKICAgICAgICBteSAo
JWNoaWxkLCAlcGFyZW50KTsKICAgICAgICBmb3JlYWNoIG15ICRrZXkgKGtleXMgJWFyZ3MpIHsK
ICAgICAgICAgICAgJGNoaWxkeyRrZXl9ID0gJGFyZ3N7JGtleX0gaWYgJHNlbGYtPmhhc19yZWFs
X2NvbHVtbigka2V5KTsKICAgICAgICAgICAgJHBhcmVudHska2V5fSA9ICRhcmdzeyRrZXl9IGlm
ICRTVVBFUi0+aGFzX3JlYWxfY29sdW1uKCRrZXkpOwogICAgICAgIH0KICAgICAgICBpZiglcGFy
ZW50KSB7CiAgICAgICAgICAgIHJldHVybiBtYXAgeyAkc2VsZi0+b3JpZ19zZWFyY2hfd2hlcmUo
JGNvbC0+bmFtZSA9PiAkXy0+aWQsICVjaGlsZCkKCQkJIH0gJFNVUEVSLT5zZWFyY2hfd2hlcmUo
JXBhcmVudCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRzZWxmLT5vcmln
X3NlYXJjaF93aGVyZSglY2hpbGQpOwogICAgICAgIH0KICAgIH07Cn0KCiMgRFRSVCBmb3IgdGhp
cyAtLSBtdXN0IHVzZSBDREJJOjpQbHVnaW46OlJldHJpZXZlQWxsICBiZWZvcmUgc2V0dGluZyB1
cCBpc2EuCnN1YiByZXRyaWV2ZV9hbGxfc29ydGVkX2J5IHsKICAgIG15ICRzZWxmICAgPSBzaGlm
dDsKICAgIG15ICRjbGFzcyAgPSAkc2VsZi0+Y2xhc3M7ICMgdGhlIGNsYXNzIHRoYXQgaXNhIGZv
cmVpZ25fY2xhc3M7CiAgICBteSAkZmNsYXNzID0gJHNlbGYtPmZvcmVpZ25fY2xhc3M7CglteSAk
Y29sICAgID0gJHNlbGYtPmFjY2Vzc29yOwoJbXkgJHN1cGVyID0gJGNsYXNzLT5jYW4oJ3JldHJp
ZXZlX2FsbF9zb3J0ZWRfYnknKTsgIyByZWd1bGFyIG1ldGhvZAoKICAgICMgSk9JTiBzZWxlY3Rp
bmcgZXNzZW50aWFsIGZyb20gJGNsYXNzCgkjIHlvdSByZWFsbHkgcHJvYmFibHkgd29udCBoYXZl
IG5hbWUgY2xhc2hlcyBpbiBpc2EgdGFibGVzIGhvd2V2ZXIKCSMgSSBkbyBub3Qga25vdyBzbyAu
Li4KICAgIG15ICRtb24gICAgPSAkY2xhc3MtPm1vbmlrZXI7CiAgICBteSAkZm1vbiAgID0gJGZj
bGFzcy0+bW9uaWtlcjsKICAgIG15ICRlc3NlbnRpYWwgPSBqb2luICgnLCAnLCBtYXAgeyAiJG1v
bi4kXyIgfSAkY2xhc3MtPl9lc3NlbnRpYWwpOyAgCglteSAkZnJvbSAgPSAkY2xhc3MtPnRhYmxl
IC4gIiBBUyAkbW9uLCAiIC4gJGZjbGFzcy0+dGFibGUgLiAiIEFTICRmbW9uIjsKCW15ICR3aGVy
ZSA9ICIkbW9uLiIgLiAkc2VsZi0+YWNjZXNzb3IgLiAiID0gJGZtb24uIiAuICRmY2xhc3MtPnBy
aW1hcnlfY29sdW1uLT5uYW1lOwogICAgbXkgJHNxbCA9ICJTRUxFQ1QgJGVzc2VudGlhbCBGUk9N
ICRmcm9tIFdIRVJFICR3aGVyZSBPUkRFUiBCWSBcJXMiOyAKCXdhcm4gIiByZXRyaWV2ZSBhbGwg
c29ydCBpc2Egc3FsICBpczogICRzcWwiIGlmICRERUJVR19MRVZFTCA+IDM7CgkkY2xhc3MtPnNl
dF9zcWwocmV0cmlldmVfYWxsX3NvcnRlZF9pc2EgPT4gJHNxbCk7CgkKICAgIHJldHVybiBzdWIg
ewogICAgCW15ICgkY2xhc3MsICRvcmRlcl9ieSkgID0gQF87ICAKCQlteSBAb2IgPSBzcGxpdCAv
LC8sICRvcmRlcl9ieTsKCQlteSAkb3JkZXJfYnlfaXNhID0gMDsKCQlmb3JlYWNoIChAb2IpIHsK
CQkJL15ccyooXHcrKVxzKiguKikkLzsKCQkJd2FybiAiICRfIGFuZCAkMSBhbmQgJDIiIGlmICRE
RUJVR19MRVZFTCA+IDM7CgkJCWlmICggbXkgJGZjb2wgPSAkZmNsYXNzLT5maW5kX2NvbHVtbigk
MSkgKSB7CgkJCQl3YXJuICJPcmRlcmluZyBieSBJc0EgY2xhc3MgJGZjbGFzcyBjb2x1bW4gJDEg
JDIiIGlmICRERUJVR19MRVZFTCA+IDM7CgkJCQkkb3JkZXJfYnlfaXNhID0gMTsKCQkJfQoJCX0K
CQlyZXR1cm4gJHN1cGVyLT4oJGNsYXNzLCAkb3JkZXJfYnkpIHVubGVzcyAkb3JkZXJfYnlfaXNh
OwoJCXJldHVybiAkY2xhc3MtPnN0aF90b19vYmplY3RzKCRjbGFzcy0+c3FsX3JldHJpZXZlX2Fs
bF9zb3J0ZWRfaXNhKCRvcmRlcl9ieSkpOwoJfQp9CgkJCQkKCQkJCgpzdWIgYWxsX2NvbHVtbnMg
ewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIG15ICRTVVBFUiA9ICRzZWxmLT5mb3JlaWduX2Ns
YXNzOwogICAgbXkgJGNvbCA9ICRzZWxmLT5hY2Nlc3NvcjsKICAgIHsKCW5vIHN0cmljdCAicmVm
cyI7CgkqeyRzZWxmLT5jbGFzcy4iOjpvcmlnX2FsbF9jb2x1bW5zIn0gPSBcJnsiQ2xhc3M6OkRC
STo6YWxsX2NvbHVtbnMifTsKICAgIH0KICAgIHJldHVybiBzdWIgewoJbXkgJHNlbGYgPSBzaGlm
dDsKCXJldHVybiAoJHNlbGYtPm9yaWdfYWxsX2NvbHVtbnMsICRzZWxmLT5jb2x1bW5zKCdURU1Q
JykpOwogICAgfTsKfQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgX2luamVjdF9pbmhl
cml0ZWRfcmVsYXRpb25zaGlwcyB7CiAgbXkgKCRzZWxmLCVwYXJhbXMpID0gQF87CiAgbXkgJGNs
YXNzID0gJHBhcmFtc3tjbGFzc307CiAgbXkgJGZvcmVpZ25fY2xhc3MgPSAkcGFyYW1ze2ZvcmVp
Z259OwogIG15ICRmaWVsZHMgPSB7fTsKCiAgbXkgJWN1cnJlbnRfcmVsYXRpb25zaGlwcyA9ICgp
OwoKICBpZiAoJGNsYXNzLT5jYW4oJ21ldGFfaW5mbycpKSB7CiAgICB3YXJuICJjbGFzcyBoYXMg
bWV0YV9pbmZvICIgaWYgJERFQlVHX0xFVkVMID4gNTsKICAgIHdhcm4gIkluamVjdGluZyByZWxh
dGlvbnNoaXBzLiBMRVZFTCA3IERlYnVnZ2luZy4gRHVtcCBvZiBtZXRhX2luZm86ICIgLiAKCSAg
ICAgRHVtcGVyKCRjbGFzcy0+bWV0YV9pbmZvKSBpZiAkREVCVUdfTEVWRUwgPiA2OwogICAgbXkg
JG1ldGFfaW5mbyA9ICRjbGFzcy0+bWV0YV9pbmZvOwogICAgZm9yZWFjaCBteSAkcmVsYXRpb25f
dHlwZSAoIGtleXMgJSRtZXRhX2luZm8gKSB7CiAgICAgIG5leHQgaWYgKCRyZWxhdGlvbl90eXBl
IGVxICdpc19hJyk7CiAgICAgIGZvcmVhY2ggbXkgJHJlbG5hbWUgKGtleXMgJXskbWV0YV9pbmZv
LT57JHJlbGF0aW9uX3R5cGV9fSkgewoJJGN1cnJlbnRfcmVsYXRpb25zaGlwc3skcmVsbmFtZX0g
PSAxOwogICAgICB9CiAgICB9CiAgfQoKICBpZiAoJGZvcmVpZ25fY2xhc3MtPmNhbignbWV0YV9p
bmZvJykpIHsKICAgIHdhcm4gImZvcmVpZ24gY2xhc3MgaGFzIG1ldGFfaW5mbyAiIGlmICRERUJV
R19MRVZFTCA+IDUgOwogICAgd2FybiBEdW1wZXIoJGNsYXNzLT5tZXRhX2luZm8paWYgJERFQlVH
X0xFVkVMID4gNjsKICAgIG15ICRtZXRhX2luZm8gPSAkZm9yZWlnbl9jbGFzcy0+bWV0YV9pbmZv
OwogICAgZm9yZWFjaCBteSAkcmVsYXRpb25fdHlwZSAoIGtleXMgJSRtZXRhX2luZm8gKSB7CiAg
ICAgIG5leHQgaWYgKCRyZWxhdGlvbl90eXBlIGVxICdpc19hJyk7CiAgICAgIGZvcmVhY2ggbXkg
JHJlbG5hbWUgKGtleXMgJXskbWV0YV9pbmZvLT57JHJlbGF0aW9uX3R5cGV9fSkgewoJd2FybiAi
YWRkaW5nIG5ldyByZWxhdGlvbnNoaXAgOiAkcmVsbmFtZSBcbiIgaWYgJERFQlVHX0xFVkVMID4g
NDsKCSRmaWVsZHMtPnskcmVsbmFtZX0gPSAxOwoJJHNlbGYtPl9pbmplY3RfaW5oZXJpdGVkX21l
dGhvZCgkY2xhc3MsICRyZWxuYW1lKTsKICAgICAgfQogICAgfQogIH0KICByZXR1cm4gJGZpZWxk
czsKfQoKc3ViIF9pbmplY3RfaW5oZXJpdGVkX21ldGhvZCB7CiAgbXkgKCRzZWxmLCRjbGFzcywk
YWNjZXNzb3JfbmFtZSkgPSBAXzsKICBteSAkcGFyZW50X2FjY2Vzc29yID0gJHNlbGYtPmFjY2Vz
c29yOwogIG15ICRtZXRob2QgPSBzdWIgewogICAgd2FybiAiaW5qZWN0ZWQgbWV0aG9kICRhY2Nl
c3Nvcl9uYW1lICwgY2FsbGluZyAkYWNjZXNzb3JfbmFtZSBvbiBwYXJlbnQgdmlhICRwYXJlbnRf
YWNjZXNzb3IgXG4iIGlmICRERUJVR19MRVZFTCA+IDU7CiAgICB3YXJuICIuLmNhbGxlZCB3aXRo
IGFyZ3MgIiwgam9pbignLCAnLEBfKSwgIlxuIiBpZiAgJERFQlVHX0xFVkVMID4gNTsKICAgIG15
ICgkc2VsZiwgQGFyZ3MpID0gQF87CiAgICAkc2VsZi0+JHBhcmVudF9hY2Nlc3Nvci0+JGFjY2Vz
c29yX25hbWUoQGFyZ3MpOwogIH07CiAgewogICAgbm8gc3RyaWN0ICJyZWZzIjsKICAgIG5vIHdh
cm5pbmdzICJyZWRlZmluZSI7CiAgICAqeyIke2NsYXNzfTo6JHthY2Nlc3Nvcl9uYW1lfSJ9ID0g
JG1ldGhvZDsKCXdhcm4gIklzQSBqdXN0IGluamVjdGVkICRtZXRob2QgaW50byAkY2xhc3MiIGlm
ICRERUJVR19MRVZFTCA+IDQ7CiAgfQp9CgpzdWIgX2NyZWF0b3IgewogICAgbXkgJHByb3RvID0g
c2hpZnQ7CiAgICBteSAkY29sID0gJHByb3RvLT5hY2Nlc3NvcjsKCiAgICByZXR1cm4gc3ViIHsK
CW15ICRzZWxmID0gc2hpZnQ7CglteSAkbWV0YSA9ICRzZWxmLT5tZXRhX2luZm8oaXNfYSA9PiAk
Y29sKTsKCW15ICRmX2NsYXNzID0gJG1ldGEtPmZvcmVpZ25fY2xhc3M7CgoJbXkgJGhhc2ggPSB7
IH07CgoJZm9yZWFjaCAoJHNlbGYtPl9fZ3JvdXBlci0+Z3JvdXBfY29scygnVEVNUCcpKSB7Cgkg
ICAgbmV4dCB1bmxlc3MgZGVmaW5lZCgkc2VsZi0+X2F0dHJzKCRfKSk7CgkgICAgJGhhc2gtPnsk
X30gPSAkc2VsZi0+X2F0dHJzKCRfKTsKCX0KCW15ICRmX3BrID0gJGZfY2xhc3MtPnByaW1hcnlf
Y29sdW1uOwoJaWYgKCRzZWxmLT5fYXR0cnMoJGZfcGspKSB7CgkgICRoYXNoLT57JGZfcGt9ID0g
JHNlbGYtPl9hdHRycygkZl9wayk7Cgl9CgoJbXkgJGZfb2JqID0gJGZfY2xhc3MtPmNyZWF0ZSgk
aGFzaCk7CgkkcHJvdG8tPl9pbXBvcnRfY29sdW1uX3ZhbHVlcygkc2VsZiwgJGZfY2xhc3MsICRm
X29iaik7CgkjIHBqcyAtLSB3YW50IHBrcyBzYW1lIGZvciBpc2EgIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKCSMgVE9ETyAKCSMgJHNlbGYtPl9hdHRyaWJ1dGVfc3RvcmUoJHNlbGYtPnBy
aW1hcnlfY29sdW1uID0+ICRmX29iai0+aWQpOwoJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglyZXR1cm4gJHNlbGYtPl9hdHRyaWJ1
dGVfc3RvcmUoJGNvbCA9PiAkZl9vYmotPmlkKTsKICAgIH07Cn0KCgpzdWIgX2luZmxhdG9yIHsK
ICAgIG15ICRwcm90byA9IHNoaWZ0OwogICAgbXkgJGNvbCA9ICRwcm90by0+YWNjZXNzb3I7Cgog
ICAgcmV0dXJuIHN1YiB7CglteSAkc2VsZiA9IHNoaWZ0OwoJbXkgJHZhbHVlID0gJHNlbGYtPiRj
b2w7CglteSAkbWV0YSA9ICRzZWxmLT5tZXRhX2luZm8oaXNfYSA9PiAkY29sKTsKCW15ICRmX2Ns
YXNzID0gJG1ldGEtPmZvcmVpZ25fY2xhc3M7CgoJcmV0dXJuIGlmIHJlZigkdmFsdWUpIGFuZCAk
dmFsdWUtPmlzYSgkZl9jbGFzcyk7CgoJJHZhbHVlID0gJGZfY2xhc3MtPl9zaW1wbGVfYmxlc3Mo
JHZhbHVlKTsKCSRwcm90by0+X2ltcG9ydF9jb2x1bW5fdmFsdWVzKCRzZWxmLCAkZl9jbGFzcywg
JHZhbHVlKTsKCglyZXR1cm4gJHNlbGYtPl9hdHRyaWJ1dGVfc3RvcmUoJGNvbCA9PiAkdmFsdWUp
OwogICAgfTsKfQoKc3ViIF9pbXBvcnRfY29sdW1uX3ZhbHVlcyB7CiAgICBteSAoJHNlbGYsICRj
bGFzcywgJGZfY2xhc3MsICRmX29iaikgPSAoQF8pOwogICAgZm9yZWFjaCAoJGZfY2xhc3MtPmFs
bF9jb2x1bW5zKSB7CgkkY2xhc3MtPl9hdHRyaWJ1dGVfc3RvcmUoJF8sICRmX29iai0+JF8pCgkg
ICAgdW5sZXNzICRfLT5uYW1lIGVxICRjbGFzcy0+cHJpbWFyeV9jb2x1bW4tPm5hbWU7CiAgICB9
Cn0KCnN1YiBfc2V0X3VwX2NsYXNzX2RhdGEgewogICAgICAgIG15ICRzZWxmID0gc2hpZnQ7CiAg
ICAgICAgJHNlbGYtPmNsYXNzLT5fZXh0ZW5kX2NsYXNzX2RhdGEoX19pc2FfcmVscyA9PiAkc2Vs
Zi0+YWNjZXNzb3IgPT4KICAgICAgICAgICAgICAgICAgICAgICAgWyAkc2VsZi0+Zm9yZWlnbl9j
bGFzcywgJXsgJHNlbGYtPmFyZ3MgfSBdKTsKICAgICAgICAkc2VsZi0+U1VQRVI6Ol9zZXRfdXBf
Y2xhc3NfZGF0YTsKfQoKCnN1YiBfZ2V0X21ldGhvZHMgewogICAgbXkgKCRzZWxmLCAkYWNjX25h
bWUsICRmX2NvbCwgJG1vZGUpID0gQF87CiAgICB3YXJuICJfZ2V0X21ldGhvZHMgJGFjY19uYW1l
LCAkZl9jb2wsICRtb2RlIFxuIiBpZiAgJERFQlVHX0xFVkVMID4gNTsKICAgIHdhcm4gam9pbign
LCAnLGNhbGxlcigpKSBpZiAgJERFQlVHX0xFVkVMID4gNSA7CiAgICBteSAkbWV0aG9kOwogTU9E
RTogewoJaWYgKCRtb2RlIGVxICdydycpIHsKCSAgICAkbWV0aG9kID0gc3ViIHsKCSAgICAgIHdh
cm4gImFydGlmaWNpYWwgbWV0aG9kICRhY2NfbmFtZS8kZl9jb2wgY2FsbGVkIHdpdGggYXJncyAi
LCBqb2luKCcsICcsQF8pLCAiXG4iIGlmICRERUJVR19MRVZFTCA+IDU7CgkJbXkgKCRzZWxmLCBA
YXJncykgPSBAXzsKCQlpZihAYXJncykgewoJCSAgJHNlbGYtPiRhY2NfbmFtZS0+JGZfY29sKEBh
cmdzKTsKCQkgIHJldHVybjsKCQl9IGVsc2UgewoJCSAgcmV0dXJuICRzZWxmLT4kYWNjX25hbWUt
PiRmX2NvbDsKCQl9CgkgICAgfTsKCSAgICBsYXN0IE1PREU7Cgl9CglpZiAoJG1vZGUgZXEgJ3Jv
JykgewoJICAgICRtZXRob2QgPSBzdWIgewoJCW15ICRzZWxmID0gc2hpZnQ7CgkJcmV0dXJuICRz
ZWxmLT4kYWNjX25hbWUtPiRmX2NvbDsKCSAgICB9OwoJICAgIGxhc3QgTU9ERTsKCX0KCWlmICgk
bW9kZSBlcSAnd28nKSB7CgkgICAgJG1ldGhvZCA9ICBzdWIgewoJCW15ICRzZWxmID0gc2hpZnQ7
CgkJJHNlbGYtPiRhY2NfbmFtZS0+JGZfY29sKEBfKTsKCQlyZXR1cm47CgkgICAgfTsKCSAgICBs
YXN0IE1PREU7Cgl9CgoJZWxzZSB7CgkgICAgZGllICJjYW4ndCBnZXQgbWV0aG9kIGZvciBtb2Rl
IDokbW9kZVxuIjsKCX0KICAgIH0gIyBlbmQgb2YgTU9ERQogICAgcmV0dXJuICRtZXRob2Q7Cn0K
CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgo9aGVhZDEgQlVHUyBBTkQgQ0FWRUFUUwoKKiBDREJJ
IEZyb3plbiBDb21wYXRpYmxlIAoKKiBNdWx0aXBsZSBpbmhlcml0YW5jZSBpcyBub3Qgc3VwcG9y
dGVkLCB0aGlzIGlzIHVubGlrZWx5IHRvIGNoYW5nZSBmb3IgdGhlIGZvcnNlYWJsZSBmdXR1cmUK
CiogaXNfYSBtdXN0IGJlIGNhbGxlZCBhZnRlciBhbGwgb3RoZXIgY2RiaSByZWxhdGlvbnNoaXAg
bWV0aG9kcyBvdGhlcndpc2UgaW5oZXJpdGVkIG1ldGhvZHMgYW5kIAphY2Nlc3NvcnMgbWF5IGJl
IG92ZXItcmlkZGVuIG9yIGNsYXNoIHVuZXhwZWN0ZWRseQoKKiBub24gQ2xhc3M6OkRCSSBhdHRy
aWJ1dGVzIGFuZCBtZXRob2RzIGFyZSBub3QgaW5oZXJpdGVkIHZpYSB0aGlzIG1vZHVsZQoKKiBU
aGUgdXBkYXRlIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGluaGVyaXRlZCBvYmplY3Qgd2hlbiB0
aGUgaW5oZXJ0aXRpbmcgb2JqZWN0IGhhcyB1cGRhdGUgY2FsbGVkCgoqIEFsd2F5cyBzcGVjaWZ5
IHRoZSBwcmltYXJ5IGtleSB1c2luZyBjb2x1bW5zKFByaW1hcnkgPT4gcXcvLi4vKSBpZiB5b3Ug
ZG9uJ3QgYmFkIHRoaW5ncyBjb3VsZCBoYXBwZW4sIHRoaW5rIG9mIHRoZSBtb3ZpZXMgJ1RyZW1v
cnMnLCAnUG9sdGVyZ2Vpc3QnIGFuZCAnRXZpbCBEZWFkJyBhbGwgcm9sbGVkIGludG8gb25lIGJ1
dCB3aXRob3V0IGFueSBoZXJvcy4KCiogVmVyeSBCYWQgVGhpbmdzIGNhbiBhbmQgbWF5IG9jY3Vy
IHdoZW4gdXNpbmcgdGhpcyBtb2R1bGUgZXZlbiBpZiB5b3UgdXNlIGdvb2QgcHJhY3RpY2UgYW5k
IGFyZSBjYXV0aW91cyAtLSB0aGlzIGluY2x1ZGVzIGJ1dCBpcyBub3QgbGltaXRlZCB0byBpbmZp
bml0ZSBsb29wcywgbWVtb3J5IGxlYWtzIGFuZCBkYXRhIGNvcnJ1cHRpb24uCgo9aGVhZDEgREVQ
RU5EQU5DSUVTCgpMPENsYXNzOjpEQkk6OkFic3RyYWN0U2VhcmNoPgoKPWhlYWQxIENIQU5HRVMg
VEhJUyBWRVJTSU9OCgo9aGVhZDIgLjA2ICAKCj1pdGVtIE5vIG1vcmUgc3B1cmlvdXMgd2Fybmlu
Z3MKCj1pdGVtIEF0dGVtcHRzIHRvIHVzZSBDbGFzczo6REJJOjpTd2VldCdzIHNlYXJjaCAgKHRl
bXBvcmFyeSBoYWNrIHVudGlsIHByb3Blcgpzb2x1dGlvbiBjYW4gYmUgbWFkZSkKCj1pdGVtIG9u
ZV90b19vbmUgYW5kIG1hbnlfdG9fbWFueSBhcmdzIHJlY29nbml6ZWQuIG5vdGUgZGVmYXVsdCBX
SUxMIEJFCm9uZV90b19vbmUgYnV0IG5vdCB1bnRpbCBWZXJzaW9uIDEuMC4gCiAgCgo9aGVhZDEg
U0VFIEFMU08KCkw8cGVybD4KCkw8Q2xhc3M6OkRCST4KCkw8Q2xhc3M6OkRCSTo6UmVsYXRpb25z
aGlwPgoKPWhlYWQxIEFVVEhPUgoKUmljaGFyZCBIdW5kdCwgRTxsdD5yaWNoYXJkQHdlYnRrLm9y
Zy51a0U8Z3Q+Cgo9aGVhZDEgTUFJTlRBSU5FUgoKQWFyb24gVHJldmVuYSBFPGx0PmFhcm9uLnRy
ZXZlbmFAZHJvb2dzLm9yZ0U8Z3Q+CgpQZXRlciBTcGVsdHogIEU8bHQ+cGV0ZXJzcGVsdHpAeWFo
b28uY29tRTxndD4KCj1oZWFkMSBDT1BZUklHSFQKCkxpY2Vuc2VkIGZvciB1c2UsIG1vZGlmaWNh
dGlvbiBhbmQgZGlzdHJpYnV0aW9uIHVuZGVyIHRoZSBBcnRpc3RpYwphbmQgR05VIEdQTCBsaWNl
bnNlcy4KCkNvcHlyaWdodCAoQykgMjAwNCBieSBSaWNoYXJkIEh1bmR0IGFuZCBBYXJvbiBUcmV2
ZW5hCgpUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyBQZXJsIGl0c2VsZiwg
ZWl0aGVyIFBlcmwgdmVyc2lvbiA1LjguMSBvciwKYXQgeW91ciBvcHRpb24sIGFueSBsYXRlciB2
ZXJzaW9uIG9mIFBlcmwgNSB5b3UgbWF5IGhhdmUgYXZhaWxhYmxlLgoKPWN1dAoKCiMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoxOwoK
------=_Part_15667_25848480.1140809783259
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
ClassDBI mailing list
ClassDBI@xxxxx.xxxxxxxxxxxxxxxx.xxx
http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi

------=_Part_15667_25848480.1140809783259--

[CDBI] Worknig on Class::DBI::Relationship::IsA
Peter Speltz 18:04 on 22 Feb 2006

Re: [CDBI] Worknig on Class::DBI::Relationship::IsA
Rhesa Rozendaal 23:13 on 23 Feb 2006

Re: [CDBI] Worknig on Class::DBI::Relationship::IsA
Peter Speltz 19:36 on 24 Feb 2006

Generated at 12:31 on 28 Feb 2006 by mariachi v0.52