2001-11-01 [長年日記]
λ. うー。1時間ちょいしか寝れなかった。しんどー
λ. Windows版Rubyでシンボルがexportされる仕組み
なるほど。.defファイルを自動生成してるのですか。それなら納得です。ちなみに僕が「拡張ライブラリ側」と書いたのは、ruby〜.dllのシンボルをimportする側って事っす。
拡張ライブラリで.defを用意できるようになったのは[ruby-ext:01664]のスレッドの話で、たしか1.6.5には入ってたと思います。
λ. 情報数学Ⅰ
休講。めずらしい。
λ. 朝鮮語
明日ワークショップなのに殆ど準備が出来てない…やばいっす。しかも、来週の火曜は中間試験。こっちもやばーい。
λ. 帰納論理プログラミング
演習の続き。古川先生と雑談してたら何も出来ずに時間が終ってしまった。
λ. 研究会
運賃表の話はあっさり終って、FFSについての発表など。
λ. wstring
[ruby-list:32032]には誰も反応してないけど結構良い感じだと思う。それと、codecvt_byname<wchar_t,char,mbstate_t>クラスを使うと、global localeを汚さずに、任意のlocaleでmbとwcとの変換が出来て良いかもしれないと思った。
2001-11-02 [長年日記]
λ. 朝鮮語
WORKSHOPは無事(?)終了。
λ. 読んだ本
- 『遊戯王 26 − 「神」が選びし者』
- 高橋和希[著]
λ. wstring
localeヘッダが無いのは痛いなぁ。たしかlibstdc++-v3には入っていたと思います。でも、RubyはNative threadをサポートしていない事ですし、確かにsetlocaleで十分っぽいですね。
λ. mscのThread
すっげー
2001-11-03 [長年日記]
λ. WString
WStringを複数のlocaleを扱えるよう拡張してみた。([ruby-list: 32180]) そういやruby-extに振るべきだったなぁ。あと、WStringベースでIO処理さえ出来ればStringを使わないで済むようになるかも…
λ. libpng.so.2 ステッ
そーいうのってどうかと思うけどなぁ。
λ. ところで、sonameが変わっているって事はABIが変わったって事で、APIが変わらずにABIが変わるって事も考えにくいし、きっとAPIだって変わってると思うんだよね。コンパイルしなおしただけでlibpng.so.3に乗り換えられるものなの?
2001-11-04 [長年日記]
λ. トゥームレイダー
親父と藤沢オデオンで見てきた。というわけで追記。インディー・ジョーンズみたいな感じの映画かな?(インディジョーンズはあんまし見たこと無いけど;-) 惑星直列とか古代文明とか「時を支配する」とかそういうノリなので、いちいち心の中で突っ込みを入れてると楽しめなさそう。ストーリーはこの手の話としてはありきたりで、アクションもそれなりでしか無かったように思う。サブキャラクターは結構いい味出してたと思うので、もう少し前面に出しても良かったんじゃないだろうか。
λ. デノミ
ちょっと前の話だけど、竹中平蔵経済財政担当相がデノミについて(経財閣僚としては異例の)前向きの発言をしたとか。デノミって単にラベリング・コストを発生させるだけで、それ以上のモノではないと思うのだが…
こんな事言い出すなんて、よほど構造改革路線が行き詰まってるんだろうな。…ちょっといい気味ではある。
λ. ruby_m17n
ruby_m17nブランチを取ってきて眺めはじめる。……が、いまいちグッと来ないなぁ。
λ. A more verbose version of Emacs-Unicode-990824
UCS-EにUTF-Eっすか。まあ、妥当なとこだと思う。
2001-11-06 [長年日記]
λ. 朝鮮語
中間テスト。敗北。
λ. 情報通信セキュリティ論
ブロック暗号とストリーム暗号について前回よりももうちょっとつっこんだ話。有限体上の演算とか面白い。しっかし、この「第3回講義メモで、アフィン暗号の式が E(M)=aM+b mod N、D(C)=(C−b)/a mod N となっていますが、復号の方がうまくいきません。」ってFAQはレベル低すぎ。あと、「一年生の時にやったはず」とか言っちゃいかんですよ、せんせ。一年生だってこの授業取ってるんだから。
λ. データベース概論
正規化理論について。さっぱり分からなかったので後でメールで質問しよ。こないだの関係代数のときみたいに数学的な定義を書いてくれれば良かったのに。
λ. ruby_m17n vs TIS620&IS13194
TIS 640620 や IS 13194 のような、(文字ではなく)文字を構成する部品が符号化の単位になっているようなエンコーディングはどのように扱われるべきだろうか?
ψ たかはし [ruby_m17nの話ですが、UTF-8でも基本的に文字ユニット(部品) 単位で処理してるはずですから、TIS640..]
ψ kjana [そのへん内部コードと外部コードとの変換を自由に定義できるっていうのが ruby-m17n の考え方のベースなんで, ..]
ψ さかい [前述のエンコーディングは、部品の不定長の結合を許すので、エンコーディングをそのままにしたままで、文字単位の処理を行う..]
ψ たかはし [はうっ、TIS620でしたっけか。気づかずにすみません。 むむむ、確かに「どんな内部コードでもおーけー」という意味..]
ψ kjana [しまった.そっか,内部コードは stateless であること, っていう制限はありましたね,そう言えば.文字部品単..]
ψ さかい [部品単位から文字単位への変換は確かに面倒ではあるのですが、結合規則をきちんと形式的に定義できるならば、結合文字を含ん..]
2001-11-07 [長年日記]
λ. wstring
mbとwcの変換部分がイケてない気がする。
- NULを含む文字列を正しく扱えない
-
こっちは微妙なんで後でちゃんと調べようと思うけど、結論から書くと、変換時にはterminating NULを含めて変換した上で、変換結果のterminating NULをRubyから隠すべきだと思う。どっちでも同じように思えるかもしれないけど、statefulなエンコーディングを扱う際に差が出る。たとえば、mbがISO-2022-JPだとすると「ほげほげ」という文字列は「ESC $ B 0x24 0x5b 0x24 0x32 0x24 0x5b 0x24 0x32 ESC ( B」で表され、Cで扱う際の対応関係は次のようになる。
mb ESC $ B 0x24 0x5b 0x24 0x32 0x24 0x5b 0x24 0x32 ESC ( B NUL wc ほ げ ほ げ NUL
2001-11-08 [長年日記]
λ. 사랑를주세요 (愛を下さい)
最近壊れ気味。課題とかが溜ってるので、あと数日は壊れ続ける予定。色々遅れて御免ね。> 関係各位
λ. 今日は「えなりかずきの子守歌」でまどろむという大失態をおかしました。ぐふっ。しかも、おかげで杉浦ひなこ先生の解説が聴けなかったしぃ。
λ. 情報数学Ⅰ
オートマトンの代数的表現である等式系(coalgebra)と言語関数について。「この授業の前半のハイライト」と言うだけあって、凄かった。
λ. ところで、昨日のリンク元を見て唖然とした。Googleで「向井 オートマトン」を検索して、この日記がトップに表示されているのは何かが間違ってるぞぉぉ〜!!!!
λ. メモ: Cのmb⇔wc変換 (昨日の続き)
この場合だと関係ないけど、mb→wcの変換でもmbsrtowcs()とかだとterminating NULまで変換しないと問題になる場合がある。それはmbが「部品」を符号化単位にしていてかつ不定長の連結を許すエンコーディングで、wcの単位が「部品」を結合したモノであるとき。terminating NULを省くと最後のwcを確定出来ない可能性がある。
λ. そういや、mbsnrtowcs(3)とwcsnrtombs(3)ってGNU拡張なのね。ちょっとショック。
λ. 帰納論理プログラミング
Progolの探索アルゴリズムについて。
2001-11-09 [長年日記]
λ. 情報数学Ⅰ 中間レポート
問3に出題ミスがあったので問3だけは提出期限が2日延びた。問3の証明はきちんと書けていなかったので助かった。問2は結局証明できなかったので、問1と問4の回答だけを提出。
λ. Namazuによる日記検索
現実逃避にnamazuをインストールして日記検索を出来るようにした。とりあえず、こんな感じで過去の日記データもテキスト化。
require './tdiary.rb' TDiary.new(nil, nil).instance_eval{ Dir["#{@data_path}??????"].each{|fname| PStore.new(fname).transaction{|db| db['diary'].each_value{|d| text_save(d)} db.abort } } }
それで気がついたんだけど、PStore#abortを呼ぶとちょこっと効率が良くなるのでは? > たださん
--- tdiary-1.2.1/tdiary.rb~ Fri Oct 12 22:42:42 2001 +++ tdiary-1.2.1/tdiary.rb Sat Nov 10 22:18:53 2001 @@ -437,6 +437,7 @@ end yield db['diary'] = @diaries if @dirty + db.abort unless @dirty end File::delete( filename ) if @diaries.empty? end
λ. お昼
タイ風野菜カレー
2001-11-10 [長年日記]
λ. 結論から書くと、「結合できない部品が現れるまで最後の文字を確定できない」事の帰結として、変換を終了する際のiconv_closeを呼ぶ前に、iconvをinbufをNULLにして呼び出して、状態を初期状態に戻す必要がある(はず)。
λ. 簡単な場合で考えよう。出力エンコーディングの「文字」は、入力エンコーディングではベースの部品に0個以上の結合部品を連結して表されるとする。そして、ベースの部品はアルファベットで、結合用の部品は記号で表す事にする。
で、iconvが「A ^ : B」という列を受け取ったとする。Bまで読んだ時点で結合できない部品に出会ったので、「A ^ :」で出力エンコーディングの「1文字」が決定できて「:」まで変換出来る。が、その後どうなるかが問題。バッファの中には存在しないけど、実際の「B」の後には結合部品が続いて入力されるかもしれないので、この時点で「B」を変換してしまうことは出来ないのね。では、どうするか… Bは単独でも正しい文字なのでEINVALを返すのは変だし、そもそもEINVALで突っ返したりすると、「B」の直後で変換が終了する場合に、どうやっても「B」を出力エンコーディングの1文字に変換できない。だから「B」を受理してiconv_tの「状態」を遷移すべき。(幸いにしてiconv_tは明示的に初期化/破棄されるので、ポインタを含む任意の情報を持たせることが出来る) そして、iconvがinbufをNULLにして呼ばれて、状態を初期状態に戻す際に、やっと「B」を1文字と確定できて出力できる。
λ. このinbufをNULLにしてのiconvの呼び出しって、glibcのinfoにもnecessaryと書かれているし、もともと必須なものだと思うけど、これってつい忘れがち…、っていうより実際忘れているソースの方が多く出回っていそうな気がする。I18Nハンドブックの例もこれをしてないし。
あ、I18Nハンドブックってのは「国際化プログラミング - I18N ハンドブック」(ISBN4-320-02904-6 通称「いっちまっえーん」)の事ね。
2001-11-11 [長年日記]
λ. マージソート
安定なソートの話がどっかであったので、現実逃避に書いたマージソート。ださーい。それに、Range#begin=とRange#end=欲しいなぁ。そーいや、Range#lengthってIntegerの場合はsucc使わないのね…
class Array def msort!(&compare) tmp = Array.new(self.length) compare = lambda{|i,j| i<=>j} if compare.nil? sort = lambda{|a| if a.length > 1 l = a.begin...(a.begin + a.length / 2) r = l.end...a.end sort.call(l) sort.call(r) i = a.begin while l.length > 0 and r.length > 0 if compare.call(self[l.begin], self[r.begin]) <= 0 tmp[i] = self[l.begin] l = l.begin.succ...l.end else tmp[i] = self[r.begin] r = r.begin.succ...r.end end i = i.succ end tmp[i, l.length] = self[l] if l.length > 0 self[a.begin...r.begin] = tmp[a.begin...r.begin] end } sort.call(0...length) self end end
2001-11-14 [長年日記]
λ. 課題などが一段落ついて、久しぶりにピアノを引き、読書し、溜ったメールを読み、コードを書き、有意義な一日であった。
λ. Be afraid! It's shiny, it's new, it's unstable, it's b0rken, it's The GIMP 1.3 !!
いぇーい。つーわけで、1.3.0っす。
λ. マルチバイトキャラクタを扱う決定性有限状態オートマトンの構成法
むむ。なんとなく面白そうだったので情報数学Ⅰのメーリングリストで紹介してみる。そーいや、Rubyの正規表現エンジンはNFAだったよね。
λ. mlterm-1.9.42
を入れてみた。TODO.pubに「中東アラブ系言語(BIDI) xtermの実装を調べる」とあるから、BIDIってのはやはりターミナルレベルで処理されるものなのか。
あと、「ISO2022の、ESC % / 指示に対応(...したくない)」ってのを見て、やっぱ苦労するもんなんだなぁと思った。
λ. 情報数学Ⅰ
SAの仕事として頼まれていた授業ページに手をつけはじめた。とりあえず、メーリングリストアーカイブを検索できるようにしただけ。
λ. 今日のパッチ
- [ruby-list 32331]
- PStore#transactionでファイルのオープンに失敗した場合にNameErrorになってしまっていたので
- [ruby-ext 1669]
- wstringへの細かなパッチ3つ
ψ keshi [お疲れ〜。]
ψ いっちー [長い道程の、最初の一歩目は何気なく踏み出せるけど、後で思い返せば感動ですよね。<1.3.0 必要ライブラリのアップデ..]
ψ あらき @ mlterm [mlterm いれていただきありがとうございます_o_ > BIDIってのはやはりターミナルレベルで処理されるもの..]
ψ さかい [さんきゅ〜 君も大変そうだけど、がんば! > ケシゴム]
ψ さかい [> いっちーさん そうですね。 1.1系の始めの頃を思い出します。 # その頃は何も貢献できなかったけど、 # 今..]
ψ さかい [おぉ、mltermの作者さんだぁ。 やはり、BIDIやその辺りの処理って、 nativeな人じゃないと「どうあるべ..]
2001-11-15 [長年日記]
λ. お昼
しまった!! 今日はお弁当を持ってきていたのに学食を食べてしまった。お茶があるから食堂で食おうとか思ったのが何とかのつき…とでも言おうか。繊維たくさんピラフとチキンドラム。
λ. ゆっけがKondaraだなんて意外だなぁ。
λ. ペイオフ再延期は無し
再延期は小泉内閣の存在意義を否定するようなものではあるのだけれど、それにしてもこれは残念。小泉内閣にまた失望。
λ. ruby-iconv-0.4.4
これまで存在は知っていても使ったことは無かったので、なかださんにツッコミを貰ったついでに試してみる。…うん、メモリの管理を考えなくても良いだけでこんなに扱いやすくなるとは!
で、速攻で地雷を踏んでしまったのでパッチ。
--- iconv-0.4.4/iconv.c.orig Mon Feb 5 07:56:10 2001 +++ iconv-0.4.4/iconv.c Thu Nov 15 22:22:52 2001 @@ -209,6 +209,7 @@ } rb_ivar_set(error, rb_success, success); rb_ivar_set(error, rb_failed, failed); + return error; } static VALUE
λ. 買った本
2001-11-16 [長年日記]
λ. 買った本
- 「マクロ経済学・入門」第2版
- 福田慎一, 照山博司[著]
- いまさらという気もするが、テスト範囲はこいつだけなので念のため…(意外と小心者なんで)
それにしても「テスト範囲」って、なんて懐かしい言葉なんだろう…
λ. お昼
和風スパゲティ
2001-11-17 [長年日記]
λ. commutativeでない演算に「+」演算子を割り当てるのは止めてくれ〜、と思う今日この頃。
λ. 読んだ本
- 『真・魔導物語 - 世にも不思議な落ちこぼれ魔導師 の巻』
- 織田健司[著]
λ. Gimp
GIMP-1.3を弄ぶために、その辺りのライブラリをバータリーな感じで突っ込む。すぐ終ると思ったけど、意外と苦戦して半日がこれで潰れてしまった。以下はメモ。
λ. glib-1.3.10.tar.gz
specファイルからRPMを作ったら何故かlibgmodule.so, libgthread.so, libgobjectが出来上がってなかったので、手作業でいじってRPMを作成。ちゃんと旧版と共存できるようになっていて偉い。
λ. pkgconfig-0.8.0.tar.gz
specファイルが無かったので野良ビルド。
λ. pango-0.21.tar.gz
パッケージ作成中にエラー。どこかでpango/.libs/libpangox-0.21.soが勝手にpango/.libs/libpangox-0.21.soUにリネームさせられてしまうようで、他のモジュールからリンクできない。glibの方もライブラリ周りのトラブルだったことを考えると、libtoolあたりの問題かも。とりあえずモジュールのコンパイルの間だけpango/.libsをchmod -wして対処。そうして作ったのは良いが、今度は何故かlibpangox-0.21.soがパッケージに含まれない。まあ、気にしないでインストールして足らないファイルは手でインストール
そーいや、 indicモジュールの使うフォントのcharsetってis13194-*じゃないのね…
λ. atk-0.6.tar.gz
glib-genmarshalが自分のあるディレクトリに.libsを作ろうとする。glib-genmarshalの使い方が良く解らない。仕方無いので/usr/bin/glib-genmarshalを別のディレクトリにコピーしてそっちを使うようにちょこちょこっと修正してRPMを作成。
λ. gtk-1.3.10.tar.gz
atkと同様。幾つか.soが消えている場合があったようなので、その辺りも手作業でRPMを作成…できないや。でも、インストールは出来た。
λ. …つーわけでばバータリーだけどとりあえずインストールは出来たので、明日はGimp-1.3の予定。
2001-11-18 [長年日記]
λ. 英検準1級の2次試験を鵠沼女子で受けてきた。表現が言葉足らずではあったけど、去年落ちた時のように頭が真っ白になってしどろもどろになったりしなかったのでホッとしてる。僕は緊張にはすこぶる弱いのだけど、ちょうど僕の前だった女性と待ってる間に世間話出来て、それでリラックス出来たお陰のような気がする。ありがとー。で、お互い受かってるといいな〜
λ. gimp-1.3.0
./configureで「checking for Freetype 2.0 font support for Pango... configure: error: *** PangoFT2 0.21 or newer is required.」といわれて、freetype2-debelパッケージを入れずにpangoをビルドしていた事に気がついて、pangoをビルドし直す。時間が無いので、今日はここまで。
2001-11-19 [長年日記]
λ. gimp-1.3.0
libgckの色空間の相互変換のコードはlibgimpcolorに移動してるっぽい。他にもモジュールの機能の整理分割が進んでて良い感じっぽいけど、プラグインのインターフェースレベルではそれほど変わってはいない。本体の方の内部の変更は結構やってる。それから、UTF-8への移行が済んでない部分がまだだいぶあるみたい。やっぱりねぇ。
意味無いけど、どうせなのでスクリーンショットを載せておこう。
2001-11-21 [長年日記]
λ. 惰眠をたっぷり。
λ. www-amaya@w3.orgとwww-amaya-dev@w3.orgにsubscribe。
λ. 今日のパッチ
- [ruby-ext:01988]
- Init_gtk_window()がInit_gtk_font_selection()を呼んでて、この時点ではまだInit_gtk_notebook()が呼ばれていないので、初期化されていないgNotebookを参照することになってしまうので。
λ. 陰陽師
映画を見に行こうと思ったら、もう終わってた。トホホ。
2001-11-22 [長年日記]
λ. 読書
- 「X」第17巻
- CLAMP[著]
- 「天子な小生意気」第11巻
- 西森博之[著]
- 「少女革命ウテナ - 青の双樹」
- ビーパパス・さいとう ちほ[原作] さいとう ちほ[イラスト]
λ. X11R5 & exterm
/.Jの「国際化された XTerm を目指して」という記事のスレッドを読んで、X11R5の頃の事とかextermの事を知った。
というわけで、ftp://ftp.x.org/pub/R5/contrib-1.tar.Zをダウンロードしてきてextermのソースを入手。
過ぎ去った時間は取り戻せないし、これらが再び使われるようになることは多分無い。だからこそ、せめて記憶には留めておこうと思った。
λ. 今日の英語: use, boiled down
- What's the use of being citizen, if you don't get equal right?
- The editor-in-chief boiled down her lengthy report to just a few paragraphs.
2001-11-23 [長年日記]
λ. お昼は家族でスカイラーク・グリル。僕は、「岩手鶏のスパイシー・グリル」と「シーフードドリア」を食べた。午後、ビデオで「マスク・オブ・ゾロ」を見た。
λ. 「オブジェクト指向スクリプト言語 Ruby への世代別ごみ集め実装手法の改良とその評価」と「Ruby の VM 化に向けて」を読んだ。後者を読むことで、「VMって結局バイトコードをソースと見ると、 たんなるインタープリタじゃん」という認識を改めた。
2001-11-24 [長年日記]
λ. ぐだぐだ。
λ. 夢
美人のお姉さんの官僚さんに、貿易が為替レートに与える影響について頑張って説明したのに、全然理解してくれないという夢を見ました。手を変え品を変え説明したんだけど、彼女は「為替レートが貿易に影響を与えるのであって、それでは因果関係が逆だ」と固く信じていて、僕の説明を全然受け入れてくれませんでした。説明していて疲れました。まる。
λ. Linux
2.5ではプロセスごとにファイルシステムの名前空間を分ける機能が実装されるらしい。これまでも名前空間を自由にbindすることは出来たけど、これがプロセス毎に独立して出来るようになるってことかな。Plan9ちっくで良いなぁ。
λ. アスペクト指向
「AspectJ 入門 : 初めての人へ」を読んだ。[ruby-list:32521]を読んで、アスペクト指向の具体的な実装を知りたくなったので。
λ. Le Webring francophone de gimp
というのがあるのを知った。
2001-11-26 [長年日記]
λ. 寒空の下のキャンパス
マクロ経済の補講で学校へ行った。どうでも良いことではあるけど、公定歩合はマルクス経済学では手形の再割引率であるとされていたらしい。こういうのって面白くって好き。それから、王先生の研究室を見学して、ついでに春学期の「マクロ経済Ⅱ」のOHP(を印刷したやつ)を貰った。そういえば、今日はAmayaの開発者の人がSFCに来ると聞いてたけど、時間と場所を聞くのを忘れてた。しまったなぁ。Amayaのソースには文句を言わなきゃ気がすまないのにー と最初は思ったが、僕が文句を垂れたからといって直ぐに状況が改善するとも思えないし、時間と場所を誰かに訊いてまで会いに行くという行為がしだいにアホらしくなってきたので、適当に時間を潰してから帰る事にする。
λ. 情報通信セキュリティ論
拡大体GF(2m)上の演算が理解できてなかったんだけど、何度か読み直してやっと少しずつ分かってきた。これなら明日提出の宿題も何とかなるかな。つーか、ガロアすげーよ
2001-11-27 [長年日記]
λ. 萩野研のマシンにアカウントを作ってもらいました。おぉ、tenryu君にはemacs-21.1-emcwsが入ってる。terminal-faceが嬉しい今日この頃。
λ. [ruby-dev:15251]
mo.rbどーしよー。
ψ Ze [ミステリに”メタミス”ってジャンルあるけどなるほどそういう意味か。 俺は好きくない。]
2001-11-28 [長年日記]
λ. 本日の現実逃避
- [ruby-ext:2005]
- WStringへのパッチ二つ
- wstring-wctrans.diff
- WString#transformという名前でtowctransのラッパーを作ってみました。"tolower"と"toupper"以外のマッピング名は実装依存なのですが、例えば、glibc2.2ならばWString.new('おはよう').transform('tojkata') #=> L"オハヨウ" というような事も出来ます。
- wstring-casecmp.diff
- WString#casecmpの実装。最初はwcsicmpかwcscasecmpが使える場合はそちらを使おうかと思ったのですが、これくらいなら自前で持った方が良いかなという気がして来たので、have_funcによるチェックはコメントアウトしてあります。
- mo.rb
- 書き込みをサポート
- Yet Another GetText
- mo.rbを使用したgettextもどき
2001-11-30 [長年日記]
λ. ミクロ経済Ⅰのレポートを提出... が、提出直前に「家主」を住宅を借りる側だと勘違いしていることに気づき焦る。やっぱ、レポートは眠い頭で書くもんじゃないな。で、焦って訂正したんだけど、この時は更に眠かったので、バグを追加してしまったっぽい。鬱だ。
λ. お昼は「トマトと野菜のパスタ」
λ. メディアセンターでノートパソコンを借りてみました。来週の研究会は家からパソコンを持ってくるのが面倒なので、ノート借りて発表しようと思ったので。
λ. ポップメディア史を見に行ったら、ホーキング青山という人がゲストだった。結構面白い。無線LANカードを借りるのを忘れててネットに接続できないので、ノートに入っていたPython 2の標準ライブラリを眺めながら話を聴いていた。
λ. 読書
- 「Devil May Cry - 最強デビルハンター」
- 講談社ゲームBOOKS
ψ 小澤 [std::localeとstd::codecvtでやろうと思ったんですけど、gcc 2.9xのlibstdc++には..]