[PHP-doc 127] chm マニュアル

Moriyoshi Koizumi php-doc@php.gr.jp
Sat, 16 Nov 2002 12:46:22 +0900


--------------Boundary_15:fzdMg=1GJ_4V
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

小泉です。

こちらのリストでは、はじめまして。
現在 iconv モジュールや mbstring モジュールの開発にコミットしている者です。
よろしくお願いします。

アーカイブを参照したところ、以前に HTML Help 版のマニュアル (以下chm) を作
成された方がいらっしゃったようですが、この度とりあえず既存のスクリプトを改
良し、生成を自動化できましたので報告します。もし、同様のことをされている方
がいらっしゃいましたらご一報ください。

手順は以下の通りです。
多少回りくどいと思いますがご容赦ください。

必要なものは

HTML HELP Workshop / php バイナリ(4.3.0-pre1 以降) / jade または openjade 
/ cvs

です。php の方は iconv モジュールか mbstring モジュールを有効にしておいて
ください。

---
1. cvs.php.net より phpdoc-ja をチェックアウト

ここで、すでに xml => html 変換済みの html ファイルをダウンロードなどして
入手されている方はそれを 1. で取得した phpdoc-ja のルートに展開した後 5. 
にお進みください。

2. ソースツリーの頭で autoconf を実行
3. ./configure --with-lang=ja を実行
4. jade または openjade で html を生成する。

2., 3., 4. の作業は cygwin 上でも行えますが、windows 以外のマシンで
行っている場合は、samba などを使い上記のディレクトリを共有し、
windows 側でネットワークドライブの機能を使ってそのディレクトリを
適当なドライブにマウントするとよいです。(私の場合)

5. chm ディレクトリに移動する。
6. make-chm.php に、このメールに添付のパッチを適用する。
7. make-chm.bat 内の設定項目を適宜書き換える。
8. make-chm.bat を実行する。
---
以上です。

出来上がった chm 版のマニュアルは、よろしければどこかにアップロードして
皆さんに使っていただきたいと思いますが、いかがでしょうか?

なにかご意見あればお願いします。

--------------Boundary_15:fzdMg=1GJ_4V
Content-Type: text/plain; name="make_chm.php.patch.diff.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="make_chm.php.patch.diff.txt"

SW5kZXg6IG1ha2VfY2htLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9y
eS9waHBkb2MvY2htL21ha2VfY2htLnBocCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRp
ZmYgLXUgLXIxLjUgbWFrZV9jaG0ucGhwCi0tLSBtYWtlX2NobS5waHAJNiBPY3QgMjAwMiAw
OTozNTowMyAtMDAwMAkxLjUKKysrIG1ha2VfY2htLnBocAkxNiBOb3YgMjAwMiAwMzoxMjoz
MCAtMDAwMApAQCAtMTQsMjUgKzE0LDc5IEBACiAkRkFOQ1lfUEFUSCAgICA9IGdldGVudigi
UEhQX0hFTFBfQ09NUElMRV9GQU5DWURJUiIpOwogJExBTkdVQUdFICAgICAgPSBnZXRlbnYo
IlBIUF9IRUxQX0NPTVBJTEVfTEFORyIpOwogJElOREVYX0lOX0hUTUwgPSAiaW5kZXguaHRt
bCI7CiskSU5URVJOQUxfQ0hBUlNFVCA9ICJVVEYtOCI7CiskREVGQVVMVF9GT05UID0gIkFy
aWFsLDEwLDAiOwogCiBpZiAoZW1wdHkoJEZBTkNZX1BBVEgpKSB7ICRGQU5DWV9QQVRIID0g
JEhUTUxfUEFUSDsgfQogCiAvLyBBcnJheSB0byBtYW51YWwgY29kZSAtPiBIVE1MIEhlbHAg
Q29kZSBjb252ZXJzaW9uCiAvLyBDb2RlIGxpc3Q6IGh0dHA6Ly93d3cuaGVscHdhcmUubmV0
L2h0bWxoZWxwL2hoX2luZm8uaHRtCiAkTEFOR1VBR0VTID0gYXJyYXkoCi0gICAgInR3IiAg
ICA9PiAiMHg0MDQgVHJhZGl0aW9uYWwgQ2hpbmVzZSIsCi0gICAgImNzIiAgICA9PiAiMHg0
MDUgQ3plY2giLAotICAgICJkZSIgICAgPT4gIjB4NDA3IEdlcm1hbiAoR2VybWFueSkiLAot
ICAgICJlbiIgICAgPT4gIjB4ODA5IEVubGlzaCAoVW5pdGVkIEtpbmdkb20pIiwKLSAgICAi
ZXMiICAgID0+ICIweGMwYSBTcGFuaXNoIChJbnRlcm5hdGlvbmFsIFNvcnQpIiwKLSAgICAi
ZnIiICAgID0+ICIweDQwYyBGcmVuY2ggKEZyYW5jZSkiLAotICAgICJodSIgICAgPT4gIjB4
NDBlIEh1bmdhcmlhbiIsCi0gICAgIml0IiAgICA9PiAiMHg0MTAgSXRhbGlhbiAoSXRhbHkp
IiwKLSAgICAiamEiICAgID0+ICIweDQxMSBKYXBhbmVzZSIsCi0gICAgImtyIiAgICA9PiAi
MHg0MTIgS29yZWFuIiwKLSAgICAibmwiICAgID0+ICIweDQxMyBEdXRjaCAoTmV0aGVybGFu
ZHMpIiwKLSAgICAicHRfQlIiID0+ICIweDQxNiBQb3J0dWd1ZXNlIChCcmF6aWwpIiwKLSAg
ICAiemgiICAgID0+ICIweDgwNCBTaW1wbGlmaWVkIENoaW5lc2UiCisgICAgInR3IiAgICA9
PiBhcnJheSgKKyAgICAgICAgICAgICAgICAgICAibGFuZ2NvZGUiID0+ICIweDQwNCBUcmFk
aXRpb25hbCBDaGluZXNlIiwKKyAgICAgICAgICAgICAgICAgICAicHJlZmVycmVkX2NoYXJz
ZXQiID0+ICJDUDk1MCIsCisgICAgICAgICAgICAgICAgICAgInByZWZlcnJlZF9mb250IiA9
PiAkREVGQVVMVF9GT05UCisgICAgICAgICAgICAgICApLAorICAgICJjcyIgICAgPT4gYXJy
YXkoCisgICAgICAgICAgICAgICAgICAgImxhbmdjb2RlIiA9PiAiMHg0MDUgQ3plY2giLAor
ICAgICAgICAgICAgICAgICAgICJwcmVmZXJyZWRfY2hhcnNldCIgPT4gIldpbmRvd3MtMTI1
MCIsCisgICAgICAgICAgICAgICAgICAgInByZWZlcnJlZF9mb250IiA9PiAkREVGQVVMVF9G
T05UCisgICAgICAgICAgICAgICApLAorICAgICJkZSIgICAgPT4gYXJyYXkoCisgICAgICAg
ICAgICAgICAgICAgImxhbmdjb2RlIiA9PiAiMHg0MDcgR2VybWFuIChHZXJtYW55KSIsCisg
ICAgICAgICAgICAgICAgICAgInByZWZlcnJlZF9jaGFyc2V0IiA9PiAiV2luZG93cy0xMjUy
IiwKKyAgICAgICAgICAgICAgICAgICAicHJlZmVycmVkX2ZvbnQiID0+ICRERUZBVUxUX0ZP
TlQKKyAgICAgICAgICAgICAgICksCisgICAgImVuIiAgICA9PiBhcnJheSgKKyAgICAgICAg
ICAgICAgICAgICAibGFuZ2NvZGUiID0+ICIweDgwOSBFbmxpc2ggKFVuaXRlZCBLaW5nZG9t
KSIsCisgICAgICAgICAgICAgICAgICAgInByZWZlcnJlZF9jaGFyc2V0IiA9PiAiV2luZG93
cy0xMjUyIiwKKyAgICAgICAgICAgICAgICAgICAicHJlZmVycmVkX2ZvbnQiID0+ICRERUZB
VUxUX0ZPTlQKKyAgICAgICAgICAgICAgICksCisgICAgImVzIiAgICA9PiBhcnJheSgKKyAg
ICAgICAgICAgICAgICAgICAibGFuZ2NvZGUiID0+ICIweGMwYSBTcGFuaXNoIChJbnRlcm5h
dGlvbmFsIFNvcnQpIiwKKyAgICAgICAgICAgICAgICAgICAicHJlZmVycmVkX2NoYXJzZXQi
ID0+ICJXaW5kb3dzLTEyNTIiLAorICAgICAgICAgICAgICAgICAgICJwcmVmZXJyZWRfZm9u
dCIgPT4gJERFRkFVTFRfRk9OVAorICAgICAgICAgICAgICAgKSwKKyAgICAiZnIiICAgID0+
IGFycmF5KAorICAgICAgICAgICAgICAgICAgICJsYW5nY29kZSIgPT4gIjB4NDBjIEZyY3No
IChGcmFuY2UpIiwKKyAgICAgICAgICAgICAgICAgICAicHJlZmVycmVkX2NoYXJzZXQiID0+
ICJXaW5kb3dzLTEyNTIiLAorICAgICAgICAgICAgICAgICAgICJwcmVmZXJyZWRfZm9udCIg
PT4gJERFRkFVTFRfRk9OVAorICAgICAgICAgICAgICAgKSwKKyAgICAiaHUiICAgID0+IGFy
cmF5KAorICAgICAgICAgICAgICAgICAgICJsYW5nY29kZSIgPT4gIjB4NDBlIEh1bmdhcmlh
biIsCisgICAgICAgICAgICAgICAgICAgInByZWZlcnJlZF9jaGFyc2V0IiA9PiAiV2luZG93
cy0xMjUwIiwKKyAgICAgICAgICAgICAgICAgICAicHJlZmVycmVkX2ZvbnQiID0+ICRERUZB
VUxUX0ZPTlQKKyAgICAgICAgICAgICAgICksCisgICAgIml0IiAgICA9PiBhcnJheSgKKyAg
ICAgICAgICAgICAgICAgICAibGFuZ2NvZGUiID0+ICIweDQxMCBJdGFsaWFuIChJdGFseSki
LAorICAgICAgICAgICAgICAgICAgICJwcmVmZXJyZWRfY2hhcnNldCIgPT4gIldpbmRvd3Mt
MTI1MiIsCisgICAgICAgICAgICAgICAgICAgInByZWZlcnJlZF9mb250IiA9PiAkREVGQVVM
VF9GT05UCisgICAgICAgICAgICAgICApLAorICAgICJqYSIgICAgPT4gYXJyYXkoCisgICAg
ICAgICAgICAgICAgICAgImxhbmdjb2RlIiA9PiAiMHg0MTEgSmFwYW5lc2UiLAorICAgICAg
ICAgICAgICAgICAgICJwcmVmZXJyZWRfY2hhcnNldCIgPT4gIkNQOTMyIiwKKyAgICAgICAg
ICAgICAgICAgICAicHJlZmVycmVkX2ZvbnQiID0+ICJNUyBQIEdvdGhpYyIKKyAgICAgICAg
ICAgICAgICksCisgICAgImtyIiAgICA9PiBhcnJheSgKKyAgICAgICAgICAgICAgICAgICAi
bGFuZ2NvZGUiID0+ICIweDQxMiBLb3JlYW4iLAorICAgICAgICAgICAgICAgICAgICJwcmVm
ZXJyZWRfY2hhcnNldCIgPT4gIkNQOTQ5IiwKKyAgICAgICAgICAgICAgICAgICAicHJlZmVy
cmVkX2ZvbnQiID0+ICRERUZBVUxUX0ZPTlQKKyAgICAgICAgICAgICAgICksCisgICAgIm5s
IiAgICA9PiBhcnJheSgKKyAgICAgICAgICAgICAgICAgICAibGFuZ2NvZGUiID0+ICIweDQx
MyBEdXRjaCAoTmV0aGVybGFuZHMpIiwKKyAgICAgICAgICAgICAgICAgICAicHJlZmVycmVk
X2NoYXJzZXQiID0+ICJXaW5kb3dzLTEyNTIiLAorICAgICAgICAgICAgICAgICAgICJwcmVm
ZXJyZWRfZm9udCIgPT4gJERFRkFVTFRfRk9OVAorICAgICAgICAgICAgICAgKSwKKyAgICAi
cHRfQlIiID0+IGFycmF5KAorICAgICAgICAgICAgICAgICAgICJsYW5nY29kZSIgPT4gIjB4
NDE2IFBvcnR1Z3Vlc2UgKEJyYXppbCkiLAorICAgICAgICAgICAgICAgICAgICJwcmVmZXJy
ZWRfY2hhcnNldCIgPT4gIldpbmRvd3MtMTI1MiIsCisgICAgICAgICAgICAgICAgICAgInBy
ZWZlcnJlZF9mb250IiA9PiAkREVGQVVMVF9GT05UCisgICAgICAgICAgICAgICApLAorICAg
ICJ6aCIgICAgPT4gYXJyYXkoCisgICAgICAgICAgICAgICAgICAgImxhbmdjb2RlIiA9PiAi
MHg4MDQgU2ltcGxpZmllZCBDaGluZXNlIiwKKyAgICAgICAgICAgICAgICAgICAicHJlZmVy
cmVkX2NoYXJzZXQiID0+ICJDUDkzNiIsCisgICAgICAgICAgICAgICAgICAgInByZWZlcnJl
ZF9mb250IiA9PiAkREVGQVVMVF9GT05UCisgICAgICAgICAgICAgICApCiApOwogCiAvLyBG
aWxlcyBvbiB0aGUgdG9wIGxldmVsIG9mIHRoZSBUT0MKQEAgLTcyLDggKzEyNiw4IEBACiAg
ICAgJGluZGV4ID0gZm9wZW4oInBocF9tYW51YWxfJExBTkdVQUdFLmhoayIsICJ3Iik7CiAK
ICAgICAvLyBXcml0ZSBvdXQgZmlsZSBoZWFkZXJzCi0gICAgZnB1dHMoJHRvYywgICAkSEVB
REVSKTsKLSAgICBmcHV0cygkaW5kZXgsICRIRUFERVIpOworICAgIGZwdXRzX3dyYXBwZXIo
JHRvYywgICAkSEVBREVSKTsKKyAgICBmcHV0c193cmFwcGVyKCRpbmRleCwgJEhFQURFUik7
CiAKICAgICAvLyBSZWFkIG9yaWdpbmFsIGluZGV4IGZpbGUgYW5kIGRyb3Agb3V0IG5ld2xp
bmVzCiAgICAgJGluZGV4bGluZSA9IG9uZUxpbmVyKCIkSFRNTF9QQVRILyRJTkRFWF9JTl9I
VE1MIik7CkBAIC04NSw3ICsxMzksNyBAQAogICAgIGlmICgkRklSU1RfUEFHRSAhPSAkSU5E
RVhfSU5fSFRNTCkgewogCiAgICAgICAgIC8vIEZpbmQgdGhlIG5hbWUgb2YgdGhlIFRhYmxl
IG9mIENvbnRlbnRzCi0gICAgICAgIHByZWdfbWF0Y2goJ3xDTEFTUz1cIlRPQ1wiID48REwg
PjxEVCA+PEIgPiguKik8L0J8VScsICRpbmRleGxpbmUsICRtYXRjaCk7CisgICAgICAgIHBy
ZWdfbWF0Y2goJ3xDTEFTUz1cIlRPQ1wiICo+PERMICo+PERUICo+PEIgKj4oLiopPC9CfFUn
LCAkaW5kZXhsaW5lLCAkbWF0Y2gpOwogICAgICAgICBpZiAoZW1wdHkoJG1hdGNoWzFdKSkg
eyAvLyBGYWxsYmFjawogICAgICAgICAgICAgJG1hdGNoWzFdID0gIlRhYmxlIG9mIENvbnRl
bnRzIjsKICAgICAgICAgfQpAQCAtOTQsNDAgKzE0OCw0MyBAQAogICAgIH0KIAogICAgIC8v
IEZpbmQgdGhlIG5hbWUgb2YgdGhlIFByZWZhY2UKLSAgICBwcmVnX21hdGNoKCd8PEEgSFJF
Rj0icHJlZmFjZS5odG1sIiA+KC4qKTwvQSA+fFUnLCAkaW5kZXhsaW5lLCAkbWF0Y2gpOwor
ICAgIHByZWdfbWF0Y2goJ3w8QSArSFJFRj0icHJlZmFjZS5odG1sIiAqPihbXjxdKik8L0Eg
Kj58VScsICRpbmRleGxpbmUsICRtYXRjaCk7CiAgICAgaWYgKGVtcHR5KCRtYXRjaFsxXSkp
IHsgLy8gRmFsbGJhY2sKICAgICAgICAgJG1hdGNoWzFdID0gIlByZWZhY2UiOwogICAgIH0K
ICAgICBtYXBBbmRJbmRleCgkbWF0Y2hbMV0sICJwcmVmYWNlLmh0bWwiLCAiICAgICIsICR0
b2MsICRpbmRleCk7CiAKICAgICAvLyBOb3cgYXV0b2ZpbmQgdGhlIG1haW4gcGFnZXMKKwog
ICAgICRNQUlOX1JFR0VYUCA9IGpvaW4oInwiLCAkTUFJTl9GSUxFUyk7Ci0gICAgcHJlZ19t
YXRjaF9hbGwoIiFbSVZYXStcLiA8QSBIUkVGPVwiKCRNQUlOX1JFR0VYUClcIiA+KC4rKTwv
QSA+KC4rKSg/PVtJVlhdK1wuIDxBIEhSRUY9XCIoJE1BSU5fUkVHRVhQKXw8L0RUID48L0RM
ID48L0REID48L0RMKSFVIiwgJGluZGV4bGluZSwgJG1hdGNoZXMsIFBSRUdfU0VUX09SREVS
KTsKKworICAgIHByZWdfbWF0Y2hfYWxsKCIhW0lWWF0rW148XSo8QVxccytIUkVGPVwiKCRN
QUlOX1JFR0VYUClcIlxccyo+KFtePF0rKTwvQVxccyo+KC4rKTwvRFRcXHMqPjwvRExcXHMq
PjwvRERcXHMqPjxEVFxccyo+IVVpIiwgJGluZGV4bGluZSwgJG1hdGNoZXMsIFBSRUdfU0VU
X09SREVSKTsKICAgICAKICAgICAvLyBHbyB0aHJvdWdoIHRoZSBtYWluIGZpbGVzLCBhbmQg
bGluayBpbiBzdWJwYWdlcwogICAgIGZvcmVhY2ggKCRtYXRjaGVzIGFzICRtYXRjaGluZm8p
IHsKICAgICAgICAgbWFwQW5kSW5kZXgoJG1hdGNoaW5mb1syXSwgJG1hdGNoaW5mb1sxXSwg
IiAgICAiLCAkdG9jLCAkaW5kZXgpOwogCi0gICAgICAgIGZwdXRzKCR0b2MsICJcbiAgICAg
IDx1bD5cbiIpOwotICAgICAgICBwcmVnX21hdGNoX2FsbCgiITxBIEhSRUY9XCIoLispXCIg
PiguKyk8L0EgPiFVIiwgJG1hdGNoaW5mb1szXSwgJHN1YnBhZ2VzLCBQUkVHX1NFVF9PUkRF
Uik7CisgICAgICAgIGZwdXRzX3dyYXBwZXIoJHRvYywgIlxuICAgICAgPHVsPlxuIik7Cisg
ICAgICAgIHByZWdfbWF0Y2hfYWxsKCIhPEFcXHMrSFJFRj1cIihbXlwiXSspXCJcXHMqPihb
XjxdKik8L0FcXHMqPiFpVSIsICRtYXRjaGluZm9bM10sICRzdWJwYWdlcywgUFJFR19TRVRf
T1JERVIpOworCiAgICAgICAgIGZvcmVhY2ggKCRzdWJwYWdlcyBhcyAkc3BpbmZvKSB7CiAg
ICAgICAgICAgICBtYXBBbmRJbmRleCgkc3BpbmZvWzJdLCAkc3BpbmZvWzFdLCAiICAgICAg
ICAiLCAkdG9jLCAkaW5kZXgpOwogICAgICAgICAgICAgZmluZERlZXBlckxpbmtzKCRzcGlu
Zm9bMV0sICR0b2MsICRpbmRleCk7CiAgICAgICAgIH0KLSAgICAgICAgZnB1dHMoJHRvYywg
IlxuICAgICAgPC91bD5cbiIpOworICAgICAgICBmcHV0c193cmFwcGVyKCR0b2MsICJcbiAg
ICAgIDwvdWw+XG4iKTsKICAgICB9CiAKICAgICAvLyBMaW5rIGluIGRpcmVjdGx5IHRoZSBj
b3B5cmlnaHQgcGFnZQogICAgICRjb3B5bGluZSA9IG9uZUxpbmVyKCIkSFRNTF9QQVRIL2Nv
cHlyaWdodC5odG1sIik7Ci0gICAgcHJlZ19tYXRjaCgnfDxBIE5BTUU9ImNvcHlyaWdodCIg
PjwvQSA+PFAgPjxCID4oLiopPC9CfFUnLCAkY29weWxpbmUsICRtYXRjaCk7CisgICAgcHJl
Z19tYXRjaCgnfDxBXFxzK05BTUU9ImNvcHlyaWdodCJcXHMqPjwvQVxccyo+PFBcXHMqPjxC
XFxzKj4oW148XSopPC9CfFUnLCAkY29weWxpbmUsICRtYXRjaCk7CiAgICAgaWYgKGVtcHR5
KCRtYXRjaFsxXSkpIHsgLy8gRmFsbGJhY2sKICAgICAgICAgJG1hdGNoWzFdID0gIkNvcHly
aWdodCI7CiAgICAgfQogICAgIG1hcEFuZEluZGV4KCRtYXRjaFsxXSwgImNvcHlyaWdodC5o
dG1sIiwgIiAgICAiLCAkdG9jLCAkaW5kZXgsIDE3KTsKIAogICAgIC8vIFdyaXRlIG91dCBj
bG9zaW5nIGxpbmUsIGFuZCBlbmQgZmlsZXMKLSAgICBmcHV0cygkaW5kZXgsICIgIDwvdWw+
XG48L2JvZHk+XG48L2h0bWw+Iik7Ci0gICAgZnB1dHMoJHRvYywgICAiICA8L3VsPlxuPC9i
b2R5PlxuPC9odG1sPiIpOworICAgIGZwdXRzX3dyYXBwZXIoJGluZGV4LCAiICA8L3VsPlxu
PC9ib2R5PlxuPC9odG1sPiIpOworICAgIGZwdXRzX3dyYXBwZXIoJHRvYywgICAiICA8L3Vs
PlxuPC9ib2R5PlxuPC9odG1sPiIpOwogICAgIGZjbG9zZSgkaW5kZXgpOwogICAgIGZjbG9z
ZSgkdG9jKTsKIH0gLy8gbWFrZUNvbnRlbnRmaWxlcygpIGZ1bmN0aW9uIGVuZApAQCAtMTQ4
LDQxICsyMDUsNDEgQEAKICAgICAgICAgICAgCiAgICAgLy8gU3RhcnQgd3JpdGluZyB0aGUg
cHJvamVjdCBmaWxlCiAgICAgJHByb2plY3QgPSBmb3BlbigicGhwX21hbnVhbF8kTEFOR1VB
R0UuaGhwIiwgInciKTsKLSAgICBmcHV0cygkcHJvamVjdCwgIltPUFRJT05TXVxuIik7Ci0g
ICAgZnB1dHMoJHByb2plY3QsICJDb21wYXRpYmlsaXR5PTEuMSBvciBsYXRlclxuIik7Ci0g
ICAgZnB1dHMoJHByb2plY3QsICJDb21waWxlZCBmaWxlPXBocF9tYW51YWxfJExBTkdVQUdF
LmNobVxuIik7Ci0gICAgZnB1dHMoJHByb2plY3QsICJDb250ZW50cyBmaWxlPXBocF9tYW51
YWxfJExBTkdVQUdFLmhoY1xuIik7Ci0gICAgZnB1dHMoJHByb2plY3QsICJJbmRleCBmaWxl
PXBocF9tYW51YWxfJExBTkdVQUdFLmhoa1xuIik7Ci0gICAgZnB1dHMoJHByb2plY3QsICJE
ZWZhdWx0IEZvbnQ9QXJpYWwsMTAsMFxuIik7Ci0gICAgZnB1dHMoJHByb2plY3QsICJEZWZh
dWx0IFdpbmRvdz1waHBkb2NcbiIpOwotICAgIGZwdXRzKCRwcm9qZWN0LCAiRGVmYXVsdCB0
b3BpYz0kRkFOQ1lfUEFUSFxcJEZJUlNUX1BBR0VcbiIpOwotICAgIGZwdXRzKCRwcm9qZWN0
LCAiRGlzcGxheSBjb21waWxlIHByb2dyZXNzPVllc1xuIik7Ci0gICAgZnB1dHMoJHByb2pl
Y3QsICJGdWxsLXRleHQgc2VhcmNoPVllc1xuIik7CisgICAgZnB1dHNfd3JhcHBlcigkcHJv
amVjdCwgIltPUFRJT05TXVxuIik7CisgICAgZnB1dHNfd3JhcHBlcigkcHJvamVjdCwgIkNv
bXBhdGliaWxpdHk9MS4xIG9yIGxhdGVyXG4iKTsKKyAgICBmcHV0c193cmFwcGVyKCRwcm9q
ZWN0LCAiQ29tcGlsZWQgZmlsZT1waHBfbWFudWFsXyRMQU5HVUFHRS5jaG1cbiIpOworICAg
IGZwdXRzX3dyYXBwZXIoJHByb2plY3QsICJDb250ZW50cyBmaWxlPXBocF9tYW51YWxfJExB
TkdVQUdFLmhoY1xuIik7CisgICAgZnB1dHNfd3JhcHBlcigkcHJvamVjdCwgIkluZGV4IGZp
bGU9cGhwX21hbnVhbF8kTEFOR1VBR0UuaGhrXG4iKTsKKyAgICBmcHV0c193cmFwcGVyKCRw
cm9qZWN0LCAiRGVmYXVsdCBGb250PXskTEFOR1VBR0VTWyRMQU5HVUFHRV1bJ3ByZWZlcnJl
ZF9mb250J119XG4iKTsKKyAgICBmcHV0c193cmFwcGVyKCRwcm9qZWN0LCAiRGVmYXVsdCBX
aW5kb3c9cGhwZG9jXG4iKTsKKyAgICBmcHV0c193cmFwcGVyKCRwcm9qZWN0LCAiRGVmYXVs
dCB0b3BpYz0kRkFOQ1lfUEFUSFxcJEZJUlNUX1BBR0VcbiIpOworICAgIGZwdXRzX3dyYXBw
ZXIoJHByb2plY3QsICJEaXNwbGF5IGNvbXBpbGUgcHJvZ3Jlc3M9WWVzXG4iKTsKKyAgICBm
cHV0c193cmFwcGVyKCRwcm9qZWN0LCAiRnVsbC10ZXh0IHNlYXJjaD1ZZXNcbiIpOwogCiAg
ICAgLy8gR2V0IHRoZSBwcm9wZXIgbGFuZ3VhZ2UgY29kZSBmcm9tIHRoZSBhcnJheQotICAg
IGZwdXRzKCRwcm9qZWN0LCAiTGFuZ3VhZ2U9IiAuICRMQU5HVUFHRVNbJExBTkdVQUdFXSAu
ICJcbiIpOworICAgIGZwdXRzX3dyYXBwZXIoJHByb2plY3QsICJMYW5ndWFnZT17JExBTkdV
QUdFU1skTEFOR1VBR0VdWyJsYW5nY29kZSJdfVxuIik7CiAKICAgICAvLyBOb3cgdHJ5IHRv
IGZpbmQgb3V0IGhvdyB0aGUgbWFudWFsIG5hbWVkIGluIHRoZSBhY3R1YWwgbGFuZ3VhZ2UK
ICAgICAvLyB0aGlzIG11c3QgYmUgaW4gdGhlIGluZGV4Lmh0bWwgZmlsZSBhcyB0aGUgdGl0
bGUgKERTU1NMIGdlbmVyYXRlZCkKICAgICAkY29udGVudCA9IG9uZUxpbmVyKCIkSFRNTF9Q
QVRILyRJTkRFWF9JTl9IVE1MIik7Ci0gICAgaWYgKHByZWdfbWF0Y2goInw8VElUTEUgPigu
Kik8L1RJVExFID58VSIsICRjb250ZW50LCAkZm91bmQpKSB7CisgICAgaWYgKHByZWdfbWF0
Y2goInw8VElUTEVccyo+KFtePF0qKTwvVElUTEVccyo+fFUiLCAkY29udGVudCwgJGZvdW5k
KSkgewogICAgICAgICAkTUFOVUFMX1RJVExFID0gJGZvdW5kWzFdOwogICAgIH0gZWxzZSB7
IC8vIEZhbGxiYWNrCiAgICAgICAgICRNQU5VQUxfVElUTEUgPSAiUEhQIE1hbnVhbCI7CiAg
ICAgfQogCi0gICAgZnB1dHMoJHByb2plY3QsICJUaXRsZT0kTUFOVUFMX1RJVExFXG4iKTsK
KyAgICBmcHV0c193cmFwcGVyKCRwcm9qZWN0LCAiVGl0bGU9JE1BTlVBTF9USVRMRVxuIik7
CiAKICAgICAvLyBEZWZpbmUgdGhlIHBocGRvYyB3aW5kb3cgc3R5bGUgKGFkZHMgbW9yZSBm
dW5jdGlvbmFsaXR5KQotICAgIGZwdXRzKCRwcm9qZWN0LCAiXG5bV0lORE9XU11cbnBocGRv
Yz1cIiRNQU5VQUxfVElUTEVcIixcInBocF9tYW51YWxfJExBTkdVQUdFLmhoY1wiLFwicGhw
X21hbnVhbF8kTEFOR1VBR0UuaGhrXCIsIiAuCisgICAgZnB1dHNfd3JhcHBlcigkcHJvamVj
dCwgIlxuW1dJTkRPV1NdXG5waHBkb2M9XCIkTUFOVUFMX1RJVExFXCIsXCJwaHBfbWFudWFs
XyRMQU5HVUFHRS5oaGNcIixcInBocF9tYW51YWxfJExBTkdVQUdFLmhoa1wiLCIgLgogICAg
ICAgICAgICJcIiRGQU5DWV9QQVRIXFwkRklSU1RfUEFHRVwiLFwiJEZBTkNZX1BBVEhcXCRG
SVJTVF9QQUdFXCIsLCwsLDB4MjM1MjAsLDB4Mzg2ZSwsLCwsLCwsMFxuIik7CiAKICAgICAv
LyBXcml0ZSBvdXQgYWxsIHRoZSBmaWxlbmFtZXMgYXMgaW4gRkFOQ1lfUEFUSAotICAgIGZw
dXRzKCRwcm9qZWN0LCAiXG5bRklMRVNdXG4iKTsKKyAgICBmcHV0c193cmFwcGVyKCRwcm9q
ZWN0LCAiXG5bRklMRVNdXG4iKTsKICAgICAkaGFuZGxlID0gb3BlbmRpcigkRkFOQ1lfUEFU
SCk7CiAgICAgd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyKCRoYW5kbGUpKSkg
ewogICAgICAgICBpZiAoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIpIHsKLSAgICAg
ICAgICAgIGZwdXRzKCRwcm9qZWN0LCAiJEZBTkNZX1BBVEhcXCRmaWxlXG4iKTsKKyAgICAg
ICAgICAgIGZwdXRzX3dyYXBwZXIoJHByb2plY3QsICIkRkFOQ1lfUEFUSFxcJGZpbGVcbiIp
OwogICAgICAgICB9CiAgICAgfQogICAgIGNsb3NlZGlyKCRoYW5kbGUpOwpAQCAtMTk1LDE4
ICsyNTIsMTggQEAKICAgICBnbG9iYWwgJEZBTkNZX1BBVEg7CiAgICAgJG5hbWUgPSBzdHJf
cmVwbGFjZSgnIicsICcmcXVvdDsnLCAkbmFtZSk7CiAKLSAgICBmcHV0cygkdG9jLCAiCisg
ICAgZnB1dHNfd3JhcHBlcigkdG9jLCAiCiAkdGFiczxsaT48b2JqZWN0IHR5cGU9XCJ0ZXh0
L3NpdGVtYXBcIj4KICR0YWJzICA8cGFyYW0gbmFtZT1cIk5hbWVcIiB2YWx1ZT1cIiRuYW1l
XCI+CiAkdGFicyAgPHBhcmFtIG5hbWU9XCJMb2NhbFwiIHZhbHVlPVwiJEZBTkNZX1BBVEhc
XCRsb2NhbFwiPgogIik7CiAKICAgICBpZiAoJGltZ251bSAhPSAiYXV0byIpIHsKLSAgICAg
ICAgZnB1dHMoJHRvYywgIiR0YWJzICA8cGFyYW0gbmFtZT1cIkltYWdlTnVtYmVyXCIgdmFs
dWU9XCIkaW1nbnVtXCI+XG4iKTsKKyAgICAgICAgZnB1dHNfd3JhcHBlcigkdG9jLCAiJHRh
YnMgIDxwYXJhbSBuYW1lPVwiSW1hZ2VOdW1iZXJcIiB2YWx1ZT1cIiRpbWdudW1cIj5cbiIp
OwogICAgIH0KLSAgICBmcHV0cygkdG9jLCAiJHRhYnMgIDwvb2JqZWN0PlxuIik7CisgICAg
ZnB1dHNfd3JhcHBlcigkdG9jLCAiJHRhYnMgIDwvb2JqZWN0PlxuIik7CiAKLSAgICBmcHV0
cygkaW5kZXgsICIKKyAgICBmcHV0c193cmFwcGVyKCRpbmRleCwgIgogICAgIDxsaT48b2Jq
ZWN0IHR5cGU9XCJ0ZXh0L3NpdGVtYXBcIj4KICAgICAgIDxwYXJhbSBuYW1lPVwiTG9jYWxc
IiB2YWx1ZT1cIiRGQU5DWV9QQVRIXFwkbG9jYWxcIj4KICAgICAgIDxwYXJhbSBuYW1lPVwi
TmFtZVwiIHZhbHVlPVwiJG5hbWVcIj4KQEAgLTIyMywxMCArMjgwLDEwIEBACiAgICAgJGNv
bnRlbnRzID0gb25lTGluZXIoIiRIVE1MX1BBVEgvJGZpbGVuYW1lIik7CiAgICAgCiAgICAg
Ly8gRmluZCBhbGwgc3VibGlua3MKLSAgICBpZiAocHJlZ19tYXRjaF9hbGwoIiE8RFRccys+
PEFccytIUkVGPVwiKChbXHdcLi1dK1wuKStodG1sKShcI1tcd1wuLV0rKT9cIlxzKz4oLiop
PC9BXHMrPiFVIiwgJGNvbnRlbnRzLCAkbWF0Y2hlcywgUFJFR19TRVRfT1JERVIpKSB7Cisg
ICAgaWYgKHByZWdfbWF0Y2hfYWxsKCIhPERUXFxzKj48QVxccytIUkVGPVwiKChbXFx3XFwu
LV0rXFwuKStodG1sKShcXCNbXFx3XFwuLV0rKT9cIlxccyo+KFtePF0qKTwvQVxccyo+IVUi
LCAkY29udGVudHMsICRtYXRjaGVzLCBQUkVHX1NFVF9PUkRFUikpIHsKICAgICAgICAgCiAg
ICAgICAgIC8vIFByaW50IG91dCB0aGUgZmlsZSBpbmZvcm1hdGlvbnMgZm9yIGFsbCB0aGUg
bGlua3MKLSAgICAgICAgZnB1dHMoJHRvYywgIlxuICAgICAgICA8dWw+Iik7CisgICAgICAg
IGZwdXRzX3dyYXBwZXIoJHRvYywgIlxuICAgICAgICA8dWw+Iik7CiAgICAgICAgIGZvcmVh
Y2ggKCRtYXRjaGVzIGFzICRvbmVtYXRjaCkgewogICAgICAgICAgICAgJHBhcmFtWyJodG1s
Il0gPSAkb25lbWF0Y2hbMV07CiAgICAgICAgICAgICBpZiAoIWVtcHR5KCRvbmVtYXRjaFsz
XSkpIHsKQEAgLTIzNSw3ICsyOTIsNyBAQAogICAgICAgICAgICAgJHBhcmFtWyJ0aXRsZSJd
ID0gc3RyaXBfdGFncygkb25lbWF0Y2hbNF0pOwogICAgICAgICAgICAgbWFwQW5kSW5kZXgo
JHBhcmFtWyJ0aXRsZSJdLCAkcGFyYW1bImh0bWwiXSwgIiAgICAgICAgICAiLCAkdG9jLCAk
aW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIGZwdXRzKCR0b2MsICIgICAgICAgIDwvdWw+
XG4iKTsKKyAgICAgICAgZnB1dHNfd3JhcHBlcigkdG9jLCAiICAgICAgICA8L3VsPlxuIik7
CiAKICAgICB9IGVsc2UgewogCkBAIC0yNTAsMTEgKzMwNyw2MSBAQAogICAgIAogfSAvLyBm
aW5kRGVlcGVyTGlua3MoKSBmdW5jdGlvbiBlbmQKIAorZnVuY3Rpb24gZnB1dHNfd3JhcHBl
cigkZnAsICRzdHIpCit7CisgICAgZnB1dHMoJGZwLCBjb252ZXJ0Q2hhcnNldCgkc3RyKSk7
Cit9CiAKIC8vIFJldHVybiBhIGZpbGUgam9pbmVkIG9uIG9uZSBsaW5lCiBmdW5jdGlvbiBv
bmVMaW5lcigkZmlsZW5hbWUpCiB7Ci0gICAgcmV0dXJuIHByZWdfcmVwbGFjZSgiL1tccnxc
bl17MSwyfS8iLCAiICIsIGpvaW4oIiIsIGZpbGUoJGZpbGVuYW1lKSkpOworICAgIGdsb2Jh
bCAkSU5URVJOQUxfQ0hBUlNFVDsKKworICAgICRidWYgPSBwcmVnX3JlcGxhY2UoIi9bXHJ8
XG5dezEsMn0vVSIsICIgIiwgZmlsZV9nZXRfY29udGVudHMoJGZpbGVuYW1lKSk7CisgICAg
JGNoYXJzZXQgPSBkZXRlY3REb2N1bWVudENoYXJzZXQoJGJ1Zik7CisKKyAgICBpZiAoJGNo
YXJzZXQgPT09IGZhbHNlKSAkY2hhcnNldCA9ICJVVEYtOCI7CisKKyAgICBpZiAoJGNoYXJz
ZXQgIT0gJElOVEVSTkFMX0NIQVJTRVQpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0
cygiaWNvbnYiKSkgeworICAgICAgICAgICAgJGJ1ZiA9IGljb252KCRjaGFyc2V0LCAkSU5U
RVJOQUxfQ0hBUlNFVCwgJGJ1Zik7CisgICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlz
dHMoIm1iX2NvbnZlcnRfZW5jb2RpbmciKSkgeworICAgICAgICAgICAgJGJ1ZiA9IG1iX2Nv
bnZlcnRfZW5jb2RpbmcoJGJ1ZiwgJElOVEVSTkFMX0NIQVJTRVQsICRjaGFyc2V0KTsKKyAg
ICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goIi9eVVRGLT84JC9pIiwgJElOVEVSTkFMX0NI
QVJTRVQpICYmIHByZWdfbWF0Y2goIi9eKElTTy04ODU5LTF8V0lORE9XUy0xMjUyKSQvaSIs
ICRjaGFyc2V0KSkgeworICAgICAgICAgICAgJGJ1ZiA9IHV0ZjhfZW5jb2RlKCRidWYpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGllKCJjaGFyc2V0IGNvbnZlcnNpb24g
ZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gJGJ1ZjsKK30KKworZnVuY3Rpb24gY29udmVydENoYXJzZXQoJGJ1ZikKK3sKKyAg
ICBnbG9iYWwgJExBTkdVQUdFLCAkTEFOR1VBR0VTLCAkSU5URVJOQUxfQ0hBUlNFVDsKKwor
ICAgICRjaGFyc2V0ID0gJExBTkdVQUdFU1skTEFOR1VBR0VdWydwcmVmZXJyZWRfY2hhcnNl
dCddOworCisgICAgaWYgKCRjaGFyc2V0ICE9ICRJTlRFUk5BTF9DSEFSU0VUKSB7CisgICAg
ICAgIGlmIChmdW5jdGlvbl9leGlzdHMoImljb252IikpIHsKKyAgICAgICAgICAgICRidWYg
PSBpY29udigkSU5URVJOQUxfQ0hBUlNFVCwgJGNoYXJzZXQsICRidWYpOworICAgICAgICB9
IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJtYl9jb252ZXJ0X2VuY29kaW5nIikpIHsKKyAg
ICAgICAgICAgICRidWYgPSBtYl9jb252ZXJ0X2VuY29kaW5nKCRidWYsICRjaGFyc2V0LCAk
SU5URVJOQUxfQ0hBUlNFVCk7CisgICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCIvXlVU
Ri0/OCQvaSIsICRJTlRFUk5BTF9DSEFSU0VUKSAmJiBwcmVnX21hdGNoKCIvXihJU08tODg1
OS0xfFdJTkRPV1MtMTI1MikkL2kiLCAkY2hhcnNldCkpIHsKKyAgICAgICAgICAgICRidWYg
PSB1dGY4X2RlY29kZSgkYnVmKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRp
ZSgiJExBTkdVQUdFIGxvY2FsZSBpcyBub3Qgc3VwcG9ydGVkLiIpOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiAkYnVmOwogfSAvLyBvbmVMaW5lcigpIGZ1bmN0aW9uIGVuZAog
CisvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIGNoYXJhY3RlciBzZXQgaW4gdGhlIGdpdmVuIGRv
Y3VtZW50CitmdW5jdGlvbiBkZXRlY3REb2N1bWVudENoYXJzZXQoJGRvYykKK3sKKyAgICBp
ZiAocHJlZ19tYXRjaCgiLzxNRVRBXFxzK0hUVFAtRVFVSVY9XCJDT05URU5ULVRZUEVcIlxc
cytDT05URU5UPVwiVEVYVFxcL0hUTUw7XFxzK0NIQVJTRVQ9KFtcXHdcXGQtXSopXCJcXHMq
Pi9pVSIsICRkb2MsICRyZWcpKSB7CisgICAgICAgIHJldHVybiAkcmVnWzFdOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CiA/Pgo=

--------------Boundary_15:fzdMg=1GJ_4V--