improved db.oci8

mkb mkb@ele.uri.edu
Mon, 16 Oct 2000 10:59:02 -0400 (EDT)


---------------------- multipart/mixed attachment
The db.oci8 file I posted a while ago has a problem with saving
signatured. This new version fixes that issue.

--
There is no greater lust than the      mkb@ele.uri.edu
urge to open up another's skull and    ICQ:24596085 AIM:pr0j2501
passionately kiss her brain.           http://www.ele.uri.edu/~mkb
                                       Matt Kane's Brain 

---------------------- multipart/mixed attachment
PD9waHANCg0KLyoNCklNUCBPcmFjbGUgZHJpdmVyIG9yaWdpbmFsbHkgYnk6
IFZhZGltIEtvbG9udHNvdiA8c2JAMTIzLm9yZz4NCmFkYXB0ZWQgZm9yIE9D
SSBieSBNYXR0IEthbmUgPG1rYkBlbGUudXJpLmVkdT4NCg0KVGFibGUgU3Ry
dWN0dXJlIGZvciBPcmFjbGUgdmVyc2lvbg0KDQogICAoc2VlIHNjcmlwdHMv
b3JhY2xlX2NyZWF0ZS5zcWwpDQogICANCiAgIFByZWZlcmVuY2VzIFRhYmxl
Og0KDQogICAgZmllbGQ6ICAgICB0eXBlOiAgICAgIAlkZXNjcmlwdGlvbjoN
Cg0KICAgIHVzZXJuYW1lICAgdmFyY2hhcjIoMjU1KQlqb2VAaW1hcC5kb2Uu
Y29tIGZvcm1hdCB1c2VybmFtZQ0KICAgIHNpZwkgICAgICAgdmFyY2hhcjIo
MjAwMCkJc2lnbmF0dXJlDQogICAgZnVsbG5hbWUgICB2YXJjaGFyMig3MCkJ
Sm9lIERvZQ0KICAgIHJlcGx5dG8gICAgdmFyY2hhcjIoNzApCWpvZUBkb2Uu
Y29tIGZyb20gYW5kIHJlcGx5dG8gYWRkcmVzcw0KICAgIGxhbmcgICAgICAg
dmFyY2hhcjIoMzApCXVzZXJzJ3MgcHJlZmVycmVkIGxhbmd1YWdlIChlbiwg
ZXMsIC4uLikNCiAgICAocG9zc2libHkgbW9yZSB0byBiZSBhZGRlZCBsYXRl
cikNCiANCiAgIEFkZHJlc3MgVGFibGU6DQoNCiAgICBmaWVsZDogICAgIHR5
cGU6ICAgICAgICAgIGRlc2NyaXB0aW9uOg0KDQogICAgdXNlcm5hbWUgICB2
YXJjaGFyMigyNTUpICBqb2VAZG9lLmNvbSBpZGVudGlmaWVyIG9mIHdobyB0
aGlzIGVudHJ5IGJlbG9uZ3MgdG8NCiAgICBhZGRyZXNzICAgIHZhcmNoYXIy
KDI1NSkgIGFkZHJlc3NAbWFpbC5zZXJ2ZXIuY29tIC0gdGhlIGFjdHVhbCBh
ZGRyZXNzDQogICAgbmlja25hbWUgICB2YXJjaGFyMigyNTUpICBhbnkgZW50
ZXJlZCBuaWNrbmFtZSAtIGllICJib25uaWUiLg0KICAgIGZ1bGxuYW1lICAg
dmFyY2hhcjIoMjU1KSAgZnVsbCBuYW1lIC0gIk15IEJvbm5pZSIuDQoNCiov
DQoNCmZ1bmN0aW9uIGltcF9hZGRfYWRkcmVzcyAoJGFkZHJlc3MsICRuaWNr
bmFtZSwgJGZ1bGxuYW1lLCAkdXNlciwgJHNlcnZlcikgew0KCWdsb2JhbCAk
ZGVmYXVsdDsNCgkNCgkvKiBwb3N0OiBhZGRzICRhZGRyZXNzLCAkbmlja25h
bWUsICRmdWxsbmFtZSB0byB0aGUgYWRkcmVzc2Jvb2sgZm9yICR1c2VyQCRz
ZXJ2ZXINCgkgICByZXR1cm5zIHRydWUgb24gc3VjY2VzcyBhbmQgZmFsc2Ug
b24gZmFpbHVyZQ0KICAgICAgICAqLw0KCSRuaWNrbmFtZSA9IHN0cmlwc2xh
c2hlcygiJG5pY2tuYW1lIik7DQoJJGZ1bGxuYW1lID0gc3RyaXBzbGFzaGVz
KCIkZnVsbG5hbWUiKTsNCgkkYWRkcmVzcyA9IHN0cmlwc2xhc2hlcygiJGFk
ZHJlc3MiKTsNCgkkbmlja25hbWUgPSBzdHJfcmVwbGFjZSgiJyIsIicnIiwk
bmlja25hbWUpOyANCgkkbmlja25hbWUgPSBzdHJfcmVwbGFjZSgiJyIsIicn
Iiwkbmlja25hbWUpOyANCgkkYWRkcmVzcyA9IHN0cl9yZXBsYWNlKCInIiwi
JyciLCRhZGRyZXNzKTsgDQoNCglpZiAoIWVudGVyT3JhY2xlKCYkY29ubiwg
JiRjdXJzb3IsICJpbnNlcnQgaW50byAkZGVmYXVsdC0+ZGJfYWRkcmVzc190
YWJsZSB2YWx1ZXMgKCckdXNlckAkc2VydmVyJywgJyRhZGRyZXNzJywgJyRu
aWNrbmFtZScsICckZnVsbG5hbWUnKSIpKQ0KCQlyZXR1cm4gZmFsc2U7DQoJ
DQoJaWYgKCFPQ0lDb21taXQoJGNvbm4pKQ0KCQlyZXR1cm4gbGVhdmVPcmFj
bGUoJGNvbm4sICRjdXJzb3IsIGZhbHNlKTsNCiAgIA0KCXJldHVybiBsZWF2
ZU9yYWNsZSgkY29ubiwgJGN1cnNvciwgdHJ1ZSk7DQp9DQoNCmZ1bmN0aW9u
IGltcF9jaGVja19wcmVmcygkdXNlciwkc2VydmVyKSB7DQogICAgcmV0dXJu
IGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBpbXBfZGVsZXRlX2FkZHJlc3MgKCRh
ZGRyZXNzLCAkdXNlciwgJHNlcnZlcikgew0KCWdsb2JhbCAkZGVmYXVsdDsN
CgkNCgkvKiBwb3N0OiBkZWxldGVzICRhZGRyZXNzIGZyb20gdGhlIGFkZHJl
c3Nib29rIG9mICR1c2VyQCRzZXJ2ZXINCgkgICByZXR1cm5zIHRydWUgb24g
c3VjY2VzcyBhbmQgZmFsc2Ugb24gZmFpbHVyZQ0KICAgICovDQoJJGFkZHJl
c3MgPSBzdHJpcHNsYXNoZXMoIiRhZGRyZXNzIik7DQoJJGFkZHJlc3MgPSBz
dHJfcmVwbGFjZSgiJyIsIicnIiwkYWRkcmVzcyk7IA0KICAgDQoJaWYgKCFl
bnRlck9yYWNsZSgmJGNvbm4sICYkY3Vyc29yLCAiZGVsZXRlIGZyb20gJGRl
ZmF1bHQtPmRiX2FkZHJlc3NfdGFibGUgd2hlcmUgdXNlcm5hbWU9JyR1c2Vy
QCRzZXJ2ZXInIGFuZCBhZGRyZXNzPSckYWRkcmVzcyciKSkNCgkJcmV0dXJu
IGZhbHNlOw0KICAgDQoJaWYgKCFPQ0lDb21taXQoJGNvbm4pKQ0KCQlyZXR1
cm4gbGVhdmVPcmFjbGUoJGNvbm4sICRjdXJzb3IsIGZhbHNlKTsNCiAgIA0K
CXJldHVybiBsZWF2ZU9yYWNsZSgkY29ubiwgJGN1cnNvciwgdHJ1ZSk7DQp9
DQoNCmZ1bmN0aW9uIGltcF9nZXRfYWRkcmVzc2VzICgkdXNlciwgJHNlcnZl
cikgew0KICAgZ2xvYmFsICRkZWZhdWx0Ow0KICAgDQogICAkcmVzdWx0ID0g
Jyc7DQogICANCiAgIC8qIHBvc3Q6IHJldHVybnMgYSAyZCBhcnJheSBvZiBh
ZGRyZXNzZXMgd2hlcmUgZWFjaA0KICAgICogZWxlbWVudCBpcyBhbiBhcnJh
eSBpbiB3aGljaCBlbGVtZW50IDAgaXMgdGhlIGFkZHJlc3MsDQogICAgKiBl
bGVtZW50IDEgaXMgdGhlIG5pY2tuYW1lLCBhbmQgZWxlbWVudCAyIGlzIHRo
ZSBmdWxsbmFtZS4NCiAgICAqIGl0IHJldHVybnMgZmFsc2Ugb24gZmFpbHVy
ZS4NCiAgICAqLw0KICAgDQogICBpZiAoIWVudGVyT3JhY2xlKCYkY29ubiwg
JiRjdXJzb3IsICJTRUxFQ1QgYWRkcmVzcywgbmlja25hbWUsIGZ1bGxuYW1l
IGZyb20gJGRlZmF1bHQtPmRiX2FkZHJlc3NfdGFibGUgd2hlcmUgdXNlcm5h
bWU9JyR1c2VyQCRzZXJ2ZXInIG9yZGVyIGJ5IG5pY2tuYW1lIikpDQogICAg
IHJldHVybiBmYWxzZTsNCiAgIA0KICAgZm9yKCRpID0gMDsgT0NJRmV0Y2go
JGN1cnNvcik7ICRpKyspIHsNCiAgICAgJHJlc3VsdFskaV0gPSBhcnJheSgw
ID0+IE9DSVJlc3VsdCgkY3Vyc29yLCAxKSwNCgkJCSAxID0+IE9DSVJlc3Vs
dCgkY3Vyc29yLCAyKSwNCgkJCSAyID0+IE9DSVJlc3VsdCgkY3Vyc29yLCAz
KSk7DQogICB9DQogICByZXR1cm4gbGVhdmVPcmFjbGUoJGNvbm4sICRjdXJz
b3IsICRyZXN1bHQpOw0KfQ0KDQpmdW5jdGlvbiBpbXBfZ2V0X2Zyb20gKCR1
c2VyLCAkc2VydmVyKSB7DQogICBnbG9iYWwgJGRlZmF1bHQ7DQogICAkcmVz
dWx0ID0gJyc7DQoNCiAgIC8qIHBvc3Q6IHJldHVybnMgdGhlIHJlcGx5dG8g
Zm9yIHRoZSBkYXRhYmFzZSBrZXkgJHVzZXJAJHNlcnZlcg0KICAgIChhIHN0
cmluZyksIG9yIGZhbHNlIG9uIGZhaWx1cmUuDQogICAgKi8NCiAgIA0KICAg
aWYgKCFlbnRlck9yYWNsZSgmJGNvbm4sICYkY3Vyc29yLCAiU0VMRUNUIHJl
cGx5dG8gZnJvbSAkZGVmYXVsdC0+ZGJfcHJlZl90YWJsZSB3aGVyZSB1c2Vy
bmFtZT0nJHVzZXJAJHNlcnZlciciKSkNCiAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgDQogICBpZiAoT0NJRmV0Y2goJGN1cnNvcikpDQogICAgICRyZXN1bHQg
PSBPQ0lSZXN1bHQoJGN1cnNvciwgMSk7DQogICANCiAgIHJldHVybiBsZWF2
ZU9yYWNsZSgkY29ubiwgJGN1cnNvciwgJHJlc3VsdCk7DQp9DQoNCmZ1bmN0
aW9uIGltcF9nZXRfZnVsbG5hbWUgKCR1c2VyLCAkc2VydmVyKSB7DQogICBn
bG9iYWwgJGRlZmF1bHQ7DQogICANCiAgIC8qIHBvc3Q6IHJldHVybnMgdGhl
IGZ1bGwgbmFtZSBmb3IgdGhlIGRhdGFiYXNlIGtleSAkdXNlckAkc2VydmVy
DQogICAgKGEgc3RyaW5nKSwgb3IgZmFsc2Ugb24gZmFpbHVyZS4NCiAgICAq
Lw0KICAgJHJlc3VsdCA9ICcnOw0KICAgDQogICBpZiAoIWVudGVyT3JhY2xl
KCYkY29ubiwgJiRjdXJzb3IsICJTRUxFQ1QgZnVsbG5hbWUgZnJvbSAkZGVm
YXVsdC0+ZGJfcHJlZl90YWJsZSB3aGVyZSB1c2VybmFtZT0nJHVzZXJAJHNl
cnZlciciKSkNCiAgICAgcmV0dXJuIGZhbHNlOw0KICAgDQogICBpZiAoT0NJ
RmV0Y2goJGN1cnNvcikpDQogICAgICRyZXN1bHQgPSBPQ0lSZXN1bHQoJGN1
cnNvciwgMSk7DQogICANCiAgIHJldHVybiBsZWF2ZU9yYWNsZSgkY29ubiwg
JGN1cnNvciwgJHJlc3VsdCk7DQp9DQoNCmZ1bmN0aW9uIGltcF9nZXRfbGFu
ZyAoJHVzZXIsICRzZXJ2ZXIpIHsNCiAgIGdsb2JhbCAkZGVmYXVsdDsNCiAg
ICRyZXN1bHQgPSAnJzsNCiAgIA0KICAgLyogcG9zdDogcmV0dXJucyB0aGUg
bGFuZ3VhZ2UNCiAgICAqLw0KICAgDQogICBpZiAoIWVudGVyT3JhY2xlKCYk
Y29ubiwgJiRjdXJzb3IsICJTRUxFQ1QgbGFuZyBmcm9tICRkZWZhdWx0LT5k
Yl9wcmVmX3RhYmxlIHdoZXJlIHVzZXJuYW1lPSckdXNlckAkc2VydmVyJyIp
KQ0KICAgICByZXR1cm4gZmFsc2U7DQogICANCiAgIGlmIChPQ0lGZXRjaCgk
Y3Vyc29yKSkNCiAgICAgJHJlc3VsdCA9IE9DSVJlc3VsdCgkY3Vyc29yLCAx
KTsNCiAgIA0KICAgcmV0dXJuIGxlYXZlT3JhY2xlKCRjb25uLCAkY3Vyc29y
LCAkcmVzdWx0KTsNCn0NCg0KZnVuY3Rpb24gaW1wX2dldF9zaWduYXR1cmUg
KCR1c2VyLCAkc2VydmVyKSB7DQogICBnbG9iYWwgJGRlZmF1bHQ7DQogICAk
cmVzdWx0ID0gJyc7DQogICANCiAgIC8qIHBvc3Q6IHJldHVybnMgdGhlIHNp
Z25hdHVyZSBmb3IgdGhlIGRhdGFiYXNlIGtleSAkdXNlckAkc2VydmVyDQog
ICAgKGEgc3RyaW5nKSwgb3IgZmFsc2Ugb24gZmFpbHVyZS4NCiAgICAqLw0K
ICAgDQogICBpZiAoIWVudGVyT3JhY2xlKCYkY29ubiwgJiRjdXJzb3IsICJT
RUxFQ1Qgc2lnIGZyb20gJGRlZmF1bHQtPmRiX3ByZWZfdGFibGUgd2hlcmUg
dXNlcm5hbWU9JyR1c2VyQCRzZXJ2ZXInIikpDQogICAgIHJldHVybiBmYWxz
ZTsNCiAgIA0KICAgaWYgKE9DSUZldGNoKCRjdXJzb3IpKQ0KICAgICAkcmVz
dWx0ID0gT0NJUmVzdWx0KCRjdXJzb3IsIDEpOw0KICAgDQogICByZXR1cm4g
bGVhdmVPcmFjbGUoJGNvbm4sICRjdXJzb3IsICRyZXN1bHQpOw0KfQ0KDQpm
dW5jdGlvbiBpbXBfc2V0X2Zyb20gKCRmcm9tLCAkdXNlciwgJHNlcnZlcikg
ew0KCWdsb2JhbCAkZGVmYXVsdDsNCiAgIA0KCS8qIHBvc3Q6IHNldHMgdGhl
IHJlcGx5dG8gdG8gJGZyb20gZm9yIHRoZSBkYXRhYmFzZSBrZXkgJHVzZXJA
JHNlcnZlcg0KCSAgIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzIGFuZCBmYWxz
ZSBvbiBmYWlsdXJlDQogICAgKi8NCgkkZnJvbSA9IHN0cmlwc2xhc2hlcygi
JGZyb20iKTsNCgkkZnJvbSA9IHN0cl9yZXBsYWNlKCInIiwiJyciLCRmcm9t
KTsgDQogICANCgkvKiBlc2NhcGUgYW55IG1hbGljaW91cyBjaGFyYWN0ZXJz
ICovDQoJJGZyb20gPSBlcmVnX3JlcGxhY2UoIiguKSciLCInJyIsJGZyb20p
Ow0KDQoJaWYgKCFlbnRlck9yYWNsZSgmJGNvbm4sICYkY3Vyc29yLA0KCQkJ
CQkgJHNxbD0ic2VsZWN0IHVzZXJuYW1lIGZyb20gJGRlZmF1bHQtPmRiX3By
ZWZfdGFibGUgd2hlcmUgdXNlcm5hbWU9JyR1c2VyQCRzZXJ2ZXInIikpDQoJ
CXJldHVybiBmYWxzZTsNCgkNCglpZiAoT0NJRmV0Y2goJGN1cnNvcikpIC8q
IG5vIHJvd3MgKi8NCgkJJHNxbCA9ICJ1cGRhdGUgJGRlZmF1bHQtPmRiX3By
ZWZfdGFibGUgc2V0IHJlcGx5dG89JyRmcm9tJyB3aGVyZSB1c2VybmFtZT0n
JHVzZXJAJHNlcnZlciciOw0KCWVsc2UNCgkJJHNxbCA9ICJpbnNlcnQgaW50
byAkZGVmYXVsdC0+ZGJfcHJlZl90YWJsZSAodXNlcm5hbWUscmVwbHl0bykg
dmFsdWVzICgnJHVzZXJAJHNlcnZlcicsJyRmcm9tJykiOw0KICAgDQoNCglp
ZiAoISgkY3Vyc29yID0gT0NJUGFyc2UoJGNvbm4sICRzcWwpKSkNCgkJcmV0
dXJuIGxlYXZlT3JhY2xlKCRjb25uLCAkY3Vyc29yLCBmYWxzZSk7DQogICAg
ICAgIGVsc2UNCiAgICAgICAgICAgICAgICBpZiAoIU9DSUV4ZWN1dGUoJGN1
cnNvcixPQ0lfREVGQVVMVCkpDQoJCQlyZXR1cm4gbGVhdmVPcmFjbGUoJGNv
bm4sJGN1cnNvcixmYWxzZSk7DQoJDQoJaWYgKCFPQ0lDb21taXQoJGNvbm4p
KQ0KCQlyZXR1cm4gbGVhdmVPcmFjbGUoJGNvbm4sICRjdXJzb3IsIGZhbHNl
KTsNCiAgIA0KCXJldHVybiBsZWF2ZU9yYWNsZSgkY29ubiwgJGN1cnNvciwg
dHJ1ZSk7DQp9DQoNCmZ1bmN0aW9uIGltcF9zZXRfZnVsbG5hbWUgKCRmdWxs
bmFtZSwgJHVzZXIsICRzZXJ2ZXIpIHsNCglnbG9iYWwgJGRlZmF1bHQ7DQoJ
DQoJLyogcG9zdDogc2V0cyB0aGUgcmVwbHl0byB0byAkZnJvbSBmb3IgdGhl
IGRhdGFiYXNlIGtleSAkdXNlckAkc2VydmVyDQoJICAgcmV0dXJucyB0cnVl
IG9uIHN1Y2Nlc3MgYW5kIGZhbHNlIG9uIGZhaWx1cmUNCiAgICAqLw0KCSRm
dWxsbmFtZSA9IHN0cmlwc2xhc2hlcygiJGZ1bGxuYW1lIik7DQoJJGZ1bGxu
YW1lID0gc3RyX3JlcGxhY2UoIiciLCInJyIsJGZ1bGxuYW1lKTsgDQoJDQoJ
LyogZXNjYXBlIGFueSBtYWxpY2lvdXMgY2hhcmFjdGVycyAqLw0KCSRmdWxs
bmFtZSA9IGVyZWdfcmVwbGFjZSgiKC4pJyIsIicnIiwkZnVsbG5hbWUpOw0K
CQ0KCWlmICghZW50ZXJPcmFjbGUoJiRjb25uLCAmJGN1cnNvciwgDQoJCQkJ
CSAic2VsZWN0IHVzZXJuYW1lIGZyb20gJGRlZmF1bHQtPmRiX3ByZWZfdGFi
bGUgd2hlcmUgdXNlcm5hbWU9JyR1c2VyQCRzZXJ2ZXInIikpDQoJCXJldHVy
biBmYWxzZTsNCgkNCglpZiAoT0NJRmV0Y2goJGN1cnNvcikpDQoJCSRzcWwg
PSAidXBkYXRlICRkZWZhdWx0LT5kYl9wcmVmX3RhYmxlIHNldCBmdWxsbmFt
ZT0nJGZ1bGxuYW1lJyB3aGVyZSB1c2VybmFtZT0nJHVzZXJAJHNlcnZlcici
Ow0KCWVsc2UNCgkJJHNxbCA9ICJpbnNlcnQgaW50byAkZGVmYXVsdC0+ZGJf
cHJlZl90YWJsZSAodXNlcm5hbWUsZnVsbG5hbWUpIHZhbHVlcyAoJyR1c2Vy
QCRzZXJ2ZXInLCAnJGZ1bGxuYW1lJykiOw0KCQ0KCWlmICghKCRjdXJzb3Ig
PSBPQ0lQYXJzZSgkY29ubiwgJHNxbCkpKQ0KCQlyZXR1cm4gbGVhdmVPcmFj
bGUoJGNvbm4sICRjdXJzb3IsIGZhbHNlKTsNCiAgICAgICAgZWxzZQ0KICAg
ICAgICAgICAgICAgIGlmICghT0NJRXhlY3V0ZSgkY3Vyc29yLE9DSV9ERUZB
VUxUKSkNCgkJCXJldHVybiBsZWF2ZU9yYWNsZSgkY29ubiwgJGN1cnNvciwg
ZmFsc2UpOw0KDQoJaWYgKCFPQ0lDb21taXQoJGNvbm4pKQ0KCQlyZXR1cm4g
bGVhdmVPcmFjbGUoJGNvbm4sICRjdXJzb3IsIGZhbHNlKTsNCiAgIA0KCXJl
dHVybiBsZWF2ZU9yYWNsZSgkY29ubiwgJGN1cnNvciwgdHJ1ZSk7DQp9DQoN
CmZ1bmN0aW9uIGltcF9zZXRfbGFuZyAoJGxhbmcsICR1c2VyLCAkc2VydmVy
KSB7DQogICBnbG9iYWwgJGRlZmF1bHQ7DQogICANCiAgIC8qIHBvc3Q6IHNl
dHMgdGhlIGxhbmd1YWdlIHRvICRsYW5nIA0KICAgICovDQogICANCiAgIGlm
ICghZW50ZXJPcmFjbGUoJiRjb25uLCAmJGN1cnNvciwgDQoJCSAgICAic2Vs
ZWN0IHVzZXJuYW1lIGZyb20gJGRlZmF1bHQtPmRiX3ByZWZfdGFibGUgd2hl
cmUgdXNlcm5hbWU9JyR1c2VyQCRzZXJ2ZXInIikpDQogICAgIHJldHVybiBm
YWxzZTsNCiAgIA0KICAgaWYgKE9DSUZldGNoKCRjdXJzb3IpKQ0KICAgICAk
c3FsID0gInVwZGF0ZSAkZGVmYXVsdC0+ZGJfcHJlZl90YWJsZSBzZXQgbGFu
Zz0nJGxhbmcnIHdoZXJlIHVzZXJuYW1lPSckdXNlckAkc2VydmVyJyI7DQog
ICBlbHNlDQogICAgICRzcWwgPSAiaW5zZXJ0IGludG8gJGRlZmF1bHQtPmRi
X3ByZWZfdGFibGUgKHVzZXJuYW1lLGxhbmcpIHZhbHVlcyAoJyR1c2VyQCRz
ZXJ2ZXInLCAnJGxhbmcnKSI7DQogICANCiAgIE9DSVBhcnNlKCRjb25uLCAk
c3FsKTsNCiAgIA0KICAgaWYgKCFPQ0lFeGVjdXRlKCRjdXJzb3IpKQ0KICAg
ICByZXR1cm4gbGVhdmVPcmFjbGUoJGNvbm4sICRjdXJzb3IsIGZhbHNlKTsN
CiAgIA0KICAgaWYgKCFPQ0lDb21taXQoJGNvbm4pKQ0KICAgICByZXR1cm4g
bGVhdmVPcmFjbGUoJGNvbm4sICRjdXJzb3IsIGZhbHNlKTsNCiAgIA0KICAg
cmV0dXJuIGxlYXZlT3JhY2xlKCRjb25uLCAkY3Vyc29yLCB0cnVlKTsNCn0N
Cg0KZnVuY3Rpb24gaW1wX3NldF9zaWduYXR1cmUgKCRzaWduYXR1cmUsICR1
c2VyLCAkc2VydmVyKSB7DQoJZ2xvYmFsICRkZWZhdWx0Ow0KICAgDQoJLyog
cG9zdDogc2V0cyB0aGUgc2lnbmF0dXJlIHRvICRzaWduYXR1cmUgZm9yIHRo
ZSBkYXRhYmFzZSBrZXkgJHVzZXJAJHNlcnZlcg0KCSAgIHJldHVybnMgdHJ1
ZSBvbiBzdWNjZXNzIGFuZCBmYWxzZSBvbiBmYWlsdXJlDQogICAgKi8NCgkk
c2lnbmF0dXJlID0gc3RyaXBzbGFzaGVzKCIkc2lnbmF0dXJlIik7DQoJJHNp
Z25hdHVyZSA9IHN0cl9yZXBsYWNlKCInIiwiJyciLCRzaWduYXR1cmUpOyAN
CgkNCgkvKiBlc2NhcGUgYW55IG1hbGljaW91cyBjaGFyYWN0ZXJzICovDQoJ
JHNpZ25hdHVyZSA9IGVyZWdfcmVwbGFjZSgiKC4pJyIsIicnIiwkc2lnbmF0
dXJlKTsNCgkNCglpZiAoIWVudGVyT3JhY2xlKCYkY29ubiwgJiRjdXJzb3Is
DQoJCQkJCSAic2VsZWN0IHVzZXJuYW1lIGZyb20gJGRlZmF1bHQtPmRiX3By
ZWZfdGFibGUgd2hlcmUgdXNlcm5hbWU9JyR1c2VyQCRzZXJ2ZXInIikpDQoJ
CXJldHVybiBmYWxzZTsNCgkNCglpZiAoT0NJRmV0Y2goJGN1cnNvcikpIC8q
IG5vIHJvd3MgKi8NCgkJJHNxbCA9ICJ1cGRhdGUgJGRlZmF1bHQtPmRiX3By
ZWZfdGFibGUgc2V0IHNpZz0nJHNpZ25hdHVyZScgd2hlcmUgdXNlcm5hbWU9
JyR1c2VyQCRzZXJ2ZXInIjsNCgllbHNlDQoJCSRzcWwgPSAiaW5zZXJ0IGlu
dG8gJGRlZmF1bHQtPmRiX3ByZWZfdGFibGUgKHVzZXJuYW1lLHNpZykgdmFs
dWVzICgnJHVzZXJAJHNlcnZlcicsICckc2lnbmF0dXJlJykiOw0KDQoJaWYg
KCEoJGN1cnNvciA9IE9DSVBhcnNlKCRjb25uLCRzcWwpKSkNCiAgCQlyZXR1
cm4gbGVhdmVPcmFjbGUoJGNvbm4sICRjdXJzb3IsIGZhbHNlKTsNCiAJZWxz
ZQ0KICAJCU9DSUV4ZWN1dGUoJGN1cnNvcixPQ0lfREVGQVVMVCk7DQoJDQoJ
aWYgKCFPQ0lDb21taXQoJGNvbm4pKQ0KCQlyZXR1cm4gbGVhdmVPcmFjbGUo
JGNvbm4sICRjdXJzb3IsIGZhbHNlKTsNCgkNCglyZXR1cm4gbGVhdmVPcmFj
bGUoJGNvbm4sICRjdXJzb3IsIHRydWUpOw0KfQ0KDQpmdW5jdGlvbiBpbXBf
dXBkYXRlX2FkZHJlc3MgKCRvbGRfYWRkcmVzcywgJGFkZHJlc3MsICRuaWNr
bmFtZSwgJGZ1bGxuYW1lLCAkdXNlciwgJHNlcnZlcikgew0KCWdsb2JhbCAk
ZGVmYXVsdDsNCgkNCgkvKiBwb3N0OiBjaGFuZ2VzIHRoZSBlbnRyeSBmb3Ig
JG9sZF9hZGRyZXNzIHRvICRhZGRyZXNzLCAkbmlja25hbWUsICRmdWxsbmFt
ZS4NCgkgICByZXR1cm5zIHRydWUgb24gc3VjY2VzcyBhbmQgZmFsc2Ugb24g
ZmFpbHVyZQ0KICAgICovDQoJDQoJJG5pY2tuYW1lID0gc3RyaXBzbGFzaGVz
KCIkbmlja25hbWUiKTsNCgkkZnVsbG5hbWUgPSBzdHJpcHNsYXNoZXMoIiRm
dWxsbmFtZSIpOw0KCSRuaWNrbmFtZSA9IHN0cl9yZXBsYWNlKCInIiwiJyci
LCRuaWNrbmFtZSk7DQoJJGZ1bGxuYW1lID0gc3RyX3JlcGxhY2UoIiciLCIn
JyIsJGZ1bGxuYW1lKTsNCiAgIA0KCWlmICghZW50ZXJPcmFjbGUoJiRjb25u
LCAmJGN1cnNvciwgInVwZGF0ZSAkZGVmYXVsdC0+ZGJfYWRkcmVzc190YWJs
ZSBzZXQgYWRkcmVzcz0nJGFkZHJlc3MnLCBuaWNrbmFtZT0nJG5pY2tuYW1l
JywgZnVsbG5hbWU9JyRmdWxsbmFtZScgd2hlcmUgdXNlcm5hbWU9JyR1c2Vy
QCRzZXJ2ZXInIGFuZCBhZGRyZXNzPSckb2xkX2FkZHJlc3MnIg0KCQkJCQkg
KSkNCgkJcmV0dXJuIGZhbHNlOw0KICAgDQoJaWYgKCFPQ0lDb21taXQoJGNv
bm4pKQ0KCQlyZXR1cm4gbGVhdmVPcmFjbGUoJGNvbm4sICRjdXJzb3IsIGZh
bHNlKTsNCiAgIA0KCXJldHVybiBsZWF2ZU9yYWNsZSgkY29ubiwgJGN1cnNv
ciwgdHJ1ZSk7DQp9DQoNCi8qIENvbm5lY3QgdG8gb3JhY2xlIGFuZCBleGVj
dXRlIHRoZSBzdGF0ZW1lbnQgKi8NCmZ1bmN0aW9uIGVudGVyT3JhY2xlKCRj
b25uLCAkY3Vyc29yLCAkc3FsKQ0KeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICANCiAgIGdsb2JhbCAkZGVmYXVsdDsNCiAgIA0KICAg
JGNvbm4gPSBPQ0lMb2dvbigkZGVmYXVsdC0+ZGJfdXNlcl9uYW1lLCAkZGVm
YXVsdC0+ZGJfcGFzc3dvcmQsICRkZWZhdWx0LT5kYl9uYW1lKTsNCiAgIA0K
ICAgaWYgKCRjb25uIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgDQogICAgIHJldHVybiBsZWF2ZU9yYWNsZSgkY29ubiwgMCwgZmFs
c2UpOw0KDQogICBpZiAoISgkY3Vyc29yID0gT0NJUGFyc2UoJGNvbm4sJHNx
bCkpKQ0KICAgICByZXR1cm4gbGVhdmVPcmFjbGUoJGNvbm4sICRjdXJzb3Is
IGZhbHNlKTsNCiAgIGVsc2UNCiAgICAgT0NJRXhlY3V0ZSgkY3Vyc29yLE9D
SV9ERUZBVUxUKTsNCiAgIA0KICAgcmV0dXJuIHRydWU7DQp9DQoNCi8qIERp
c2Nvbm5lY3QgZnJvbSBPcmFjbGUgYW5kIHJldHVybiByZXN1bHRzLi4gKi8N
CmZ1bmN0aW9uIGxlYXZlT3JhY2xlKCRjb25uLCAkY3Vyc29yLCAkcmVzdWx0
KQ0Kew0KICAgT0NJTG9nb2ZmKCRjb25uKTsNCiAgIA0KICAgcmV0dXJuICRy
ZXN1bHQ7DQp9DQoNCj8+DQo=
---------------------- multipart/mixed attachment--