Commit graph

205 commits

Author SHA1 Message Date
Jean Chalard
367c199de1 Remove mPrevWordsInfo
This member has outlived its usefulness. It's not clear now that it
makes things really faster, but it does bring a lot of complexity
that we can avoid by removing it.

Change-Id: Ifbc8094a45b56b958fe165b1930f4cc358a97721
2014-06-10 12:07:51 +09:00
Jean Chalard
7a6bc607ca Split the sentences into words ourselves
The framework's default split is not suitable for all
languages. Also it does not perform very well when space
is mistyped as period.

Bug: 9063355
Bug: 10780091
Change-Id: I400d790ff1c29f221697fd94d79bbf67c61c7b8a
2014-06-09 19:38:03 +09:00
Keisuke Kuroyanagi
1910392eed Add Dictionary.isInDictionary().
Bug: 13142176
Bug: 15428247
Change-Id: If2d1c1fea7a69e41809a828da8dd032211ad144e
2014-06-09 11:04:28 +09:00
Tadashi G. Takaoka
a91561aa58 Use Java 7 diamond operator
Change-Id: If16ef50ae73147594615d0f49d6a22621eaf1aef
2014-05-24 01:05:42 +09:00
Keisuke Kuroyanagi
83c40a2301 Use PrevWordsInfo instead of String in Java side.
Bug: 14119293
Bug: 14425059

Change-Id: I3d5da84881a49a04550180dd9aac2c37da2ed762
2014-05-19 13:55:40 +09:00
Keisuke Kuroyanagi
09c72207c6 Make session id mandatory for getSuggestions.
Bug: 15008504
Change-Id: Ic4a17a4b7242118ae74fd89c695da2bb52204fb2
2014-05-16 17:57:03 +09:00
Keisuke Kuroyanagi
817cd9a0d5 Use different user dict name for spell checker.
Bug: 13630847
Change-Id: Icabd08c674dcf086250b9e594328a43286d1d203
2014-04-28 16:31:20 +09:00
Keisuke Kuroyanagi
60763a06e8 Use different contacts dict name for spell checker.
Bug: 13630847
Change-Id: I016a464890d5e63794fb1288b4ce7b09adffc453
2014-04-28 16:25:10 +09:00
Keisuke Kuroyanagi
24ec8bd91b Move dicts for spellchecker to under spellcheck.
Bug: 13630847

Change-Id: Iadcf5b31f66fb73efc5c640e96e8c2106a0224dd
2014-04-28 16:24:35 +09:00
Keisuke Kuroyanagi
18f21f96e0 Add languageWeight as an argument of getSuggestions.
Bug: 8187060
Change-Id: I8ae20c957a8e127b76c83cc3a65ff052d43bf2b5
2014-04-03 00:47:28 +09:00
Keisuke Kuroyanagi
f41518dbab Fix: spell checker wrongly sorts suggestions.
Change-Id: I729e1cd5e5e333038b9d9e6197cf50b574990d76
2014-03-28 14:37:48 +00:00
Keisuke Kuroyanagi
e784148ae6 Separate utility methods from BinaryDictionary.
Bug: 8187060
Change-Id: Ice2984e332b7bd3bb17174aefc80b5635b72fc50
2014-03-05 18:19:34 +09:00
Jean Chalard
1d6e647ac3 [IL69.1] Move a static method to a utility class.
This is a followup to IL69.

Change-Id: Iba154517aa7f75b9f16aa1b808c0da8d84be837f
2014-01-24 11:59:23 +09:00
Jean Chalard
1284e556f4 [IL70] Remove unused arguments
Bug: 8636060
Change-Id: Iec56bce362ebfc52fedab02b127978abb4f3c7f9
2014-01-23 15:33:14 +09:00
Jean Chalard
d1f463eacf [IL69] Oust Keyboard from WordComposer#setComposingWord
Bug: 8636060
Change-Id: I624a45500603dfad355ee3b8b794b2d895219c0b
2014-01-23 15:32:59 +09:00
Jean Chalard
9da4b49ef6 [IL68] Start refactoring setComposingWord
Bug: 8636060
Change-Id: I242b7c264abf380bcd6b6b3c848238921f988e54
2014-01-23 15:15:49 +09:00
Keisuke Kuroyanagi
7987afbea4 Remove useless method call for spell checker.
Bug: 8187060
Change-Id: I2f91da12ba2a9e7ce28abd06f314e0e6125d08dc
2013-12-26 14:51:05 +09:00
Jean Chalard
5c9e677c2a [IL15] Some small refactoring
Bug: 8636060
Change-Id: I4bfdf1628c9b55a79bd2d88ee30bf10b08a49232
2013-12-20 11:24:45 +09:00
Ken Wakasa
2fa3693c26 Reset to 9bd6dac470
The bulk merge from -bayo to klp-dev should not have been merged to master.

Change-Id: I527a03a76f5247e4939a672f27c314dc11cbb854
2013-12-13 17:13:32 +09:00
Satoshi Kataoka
64f64bdf58 Fix the security related API change for PreferenceActivity
Bug: 10118761
Change-Id: I63501d6c2b5f561d7ab8b7362498665d805d5e1e
2013-10-09 14:34:06 +09:00
Jean Chalard
df33982fce Remove suggestions when string contains a period
This is not the right way to do it, but it's simple and will kill the
regression. We should investigate why the return values are
wrong in this case.

Bug: 10780091
Change-Id: I808727242c9cb1598df00a7426358dc3a658add4
2013-10-07 17:27:27 +09:00
Satoshi Kataoka
c5182c9a4a Correspond to the security related API change for PreferenceActivity
Bug: 10118761
Change-Id: Ia7d1c6c526dae849f447c26387e96a4fb4d6042f
2013-10-02 16:25:07 +09:00
Keisuke Kuroyanagi
fe87f5f417 Pass additionalFeaturesOptions for getSuggestions().
This fixes null pointer exceptions that are caused when
getSuggestion() is called from spell checker.

Change-Id: Ifc9e7abb900e1a4646e33c91022effde439673e4
2013-08-28 19:24:28 +09:00
Tadashi G. Takaoka
204e7b1401 Move createKeyboardSetForSpellChecker to AndroidSpellCheckService
Change-Id: I4a9065e703e98ffed50f2a6d76ace938dfc26ddf
2013-08-07 19:24:22 +09:00
Tadashi G. Takaoka
4be6198cb7 Reorganize Utils class
Change-Id: I7294d1547def5dcfcae9d1d53b277cb3cc9f2d18
2013-07-05 19:24:40 +09:00
Ken Wakasa
e28eba5074 Move util classes to the latin/utils directory
Change-Id: I1c5b27c8edf231680edb8d96f63b9d04cfc6a6fa
2013-06-24 17:04:40 +09:00
Satoshi Kataoka
244a24e368 Consolidate dummy proximity info to the spell checker info
Bug: 8783170

Change-Id: I067486e5ec1ae7cdef8e2121392464ba71ee8add
2013-05-08 11:49:12 +09:00
Satoshi Kataoka
a9dd74cf3f refactor spell checker
Change-Id: Ie7bea23f2ac54f03572e77c31ba7cb3d5e8f8d2f
2013-05-07 20:21:11 +09:00
Jean Chalard
83757d439e Merge "Pass blockOffensiveWords as a parameter" 2013-05-01 11:57:36 +00:00
Jean Chalard
2dbb5957e3 Pass blockOffensiveWords as a parameter
Bug: 8773353
Change-Id: Ic1019742ce7ff6e4f7fff4d2729f8ab52d841488
2013-05-01 20:47:35 +09:00
Ken Wakasa
1490b53416 Cleanup -- follow up to Ief04a4abb6dc1f79660a2e419c9c5e271802b5a1
Change-Id: Icb89c5119a67edaa019d5f7645b734cfcfc29041
2013-05-01 20:19:05 +09:00
Satoshi Kataoka
d5781eef62 Fix Google spell checker tests
Bug: 8613307

Change-Id: Ief04a4abb6dc1f79660a2e419c9c5e271802b5a1
2013-05-01 18:21:56 +09:00
Jean Chalard
73ec85b8ad Don't insert automatic spaces when text looks like a URL
This is about as ad-hoc as it gets, but then again, what we want
is probably as ad-hoc as it gets.
All URL boxes I know of double as search bars, and not adding
automatic spaces there sucks (e.g. in Chrome URL bar).
And in other boxes actually you don't want to add a space if
it looks like a URL. QSB isn't even a search box, and it behaves
like this.

So I think this is actually the right answer to the problem.

Bug: 7062925
Change-Id: Ib09472b34644fd5bf2dc84bb97cedeeba28bcd02
2013-04-16 18:03:49 +09:00
Tadashi G. Takaoka
6d0027a46a Merge "Use SparseIntArray instead of TreeMap<Integer, Integer>" 2013-04-11 05:06:35 +00:00
Jean Chalard
99b93d17d5 Fix a bug where autocorrection status would be wrong.
Change-Id: Ic220129dc59f585164dbf63591cd1c96de17fe6f
2013-04-10 17:49:19 +09:00
Tadashi G. Takaoka
869ea1e555 Use SparseIntArray instead of TreeMap<Integer, Integer>
Change-Id: I56a64228a5fd85d440d0d08ac67cba8bf2e5690d
2013-04-10 10:15:26 +09:00
Tadashi G. Takaoka
4fdfce6dcc Merge "Refactor SpellCheckerProximityInfo as extending ProximityInfo" 2013-04-10 01:06:36 +00:00
Ken Wakasa
d17c8bd929 Update comments
Change-Id: I6aef328ec9041666cc168c8323bed04d39591b71
2013-04-08 23:05:45 +09:00
Jean Chalard
7d3836d63a Move a generic string utility to StringUtils
Change-Id: I9cc2e9a7ac0b3346af40bcb083f939333336cf09
2013-04-05 12:09:14 +09:00
Tadashi G. Takaoka
6e3f307266 Refactor SpellCheckerProximityInfo as extending ProximityInfo
Change-Id: I544eec9d661796d57749dbaa2163bc1e2a891353
2013-04-02 19:06:32 +09:00
Satoshi Kataoka
3c8117c88f Fix appname
Bug: 6789579
Change-Id: Ic4694e36e0846af95fa8dcdef919be251983b528
2013-03-22 16:19:44 +09:00
Jean Chalard
0cc0544a29 Merge the dictionary pack in Latin IME.
Bug: 8161354
Change-Id: I17c23f56dd3bc2f27726556bf2c5a9d5520bd172
2013-03-19 15:40:14 +09:00
Jean Chalard
1c5b2a41ec Cleanups
Follow-up to Idc6f419a

Change-Id: I4aae8f4e19f27a0a309879dc19af6e40906d58c5
2013-02-11 21:14:56 -08:00
Tadashi G. Takaoka
8aa9963a89 Fix Apache license comment
Change-Id: Ic56167f952a7f4449da366e1e81610e72c966086
2013-01-21 22:23:37 +09:00
Jean Chalard
d8590857bd Fix spell checker subtype list.
Remove the subtypes that don't get a dictionary any more in AOSP.
Also prepare for all downloadable-dictionary supported subtypes.

Bug: 7673670
Change-Id: I5b754a791233c270237b8f7e5e2208f7282ad294
2013-01-11 14:59:34 +09:00
Jean Chalard
f1b464da31 Remove a useless member
Change-Id: Id13e0aeec6ec3655d6bb0edc7f8f7821e7dc5a36
2012-12-11 19:15:24 +09:00
Jean Chalard
95bfb8ac47 Fix wrong misspelling reports of fully capitalized words
Two flavors of words would be wrongly reported as misspelled
by the android spell checker when they are written in all
upper case letters:
- Words containing a quote or a dash or any other non-letter
- Words that need the first letter to be capitalized

Bug: 7659216
Change-Id: Ibc5d261945ffcbb8a858d4c73b7c62cef6671abf
2012-12-04 18:05:27 +09:00
Tadashi G. Takaoka
7f77aed507 Merge "Replace useless CharSequence to String" 2012-10-22 14:27:35 -07:00
Tadashi G. Takaoka
15f6d4ae34 Add @UsedForTesting and @ExternallyReferenced annotations
Bug: 7268357
Change-Id: I0b7e0c19f04af9ae30874d0a4c26ad81bc80be8c
2012-10-22 11:18:43 -07:00
Tadashi G. Takaoka
bc464e2952 Replace useless CharSequence to String
Change-Id: Idc478f901185ee1b4912acc82d0cbc54fee4e991
2012-10-22 11:03:28 -07:00
Tadashi G. Takaoka
a28a05e971 Cleanup: Make some classes as final
Change-Id: I6009b3c1950ba32b7f1e205a3db2307fe0cd688e
2012-09-27 19:03:30 +09:00
Satoshi Kataoka
17f7b406aa Clear cache of user dic
Change-Id: Iec2793de3fff7bf15f68f82a50331de7742b7049
2012-09-19 20:11:45 +09:00
Tadashi G. Takaoka
5f282ea9e4 Add CollectionUtils class to create generic collection easily
Change-Id: I6b4de9187e122298e5e9cd8ddc9070d062df6a89
2012-08-22 10:21:38 +09:00
Tadashi G. Takaoka
ac78633be2 Rename and consolidate some constants
Change-Id: I7863936cca18b28bf0117afcbcf544a5fd7f185d
2012-08-21 17:54:53 +09:00
Jean Chalard
46fc768e54 Remove the whitelist dictionary.
The functionality now lives in the binary dictionary.

This finalizes work on
Bug: 6906525

Change-Id: Id106d871e8afdf9afa886d2a30bea87ff89f2d24
2012-08-17 15:13:10 +09:00
Jean Chalard
653dbfb8ed Ensure #offer always actually offers something.
This will allow remaining requests after a call to terminate
correctly.

Bug: 6963142
Change-Id: Iff67058bb8a39f2f1b468d3894861e8125de6659
2012-08-15 18:10:10 +09:00
Jean Chalard
e30c05800f Preemptive anti-deadlock device
We don't know of any actual bug in the implementation of the
pool that may result in a deadlock, but this still implements
a means out of a deadlock if one ever arises anyway. It's
meant to improve the resilience of the spell checker.

Bug: 5441027
Change-Id: I689491090792dbb89110ee56631965c5bb2dc712
2012-08-14 17:04:14 +09:00
Jean Chalard
5d6b8e1818 Fix a bug that would prevent spell checking
java.lang.ArrayIndexOutOfBoundsException:
        [I offset=0 length=528 src.length=512
com.android.inputmethod.keyboard.ProximityInfo
        .setProximityInfoNative(Native Method)
com.android.inputmethod.keyboard.ProximityInfo
        .createSpellCheckerProximityInfo(ProximityInfo.java:85)
com.android.inputmethod.latin.spellcheck.AndroidSpellCheckerService
        .createDictAndProximity(AndroidSpellCheckerService.java:411)

The array was too small with respect with the passed size.

Change-Id: I7777d7aecd17375d3fbf82854a66eb7a5a289ce6
2012-08-14 14:45:17 +09:00
Jean Chalard
82009901ea Add a consolidated method to the Dictionary interface (A85)
Change-Id: I5d79021e69cc738e3013e31764ab0a59e15decdf
2012-07-10 18:57:12 +09:00
Satoshi Kataoka
7fcad7b9b6 Separate ICS-dependent code from the spell checker service
Bug: 6789576
Change-Id: Ia768258f6fa121c7a7757093eb8a20e665580865
2012-07-10 17:45:26 +09:00
Satoshi Kataoka
37b19ffe6c Create AndroidSpellCheckerSessionFactory
Bug: 6789576
Change-Id: I6de1e1aa64cf14f38ecb250579418bc518f0d838
2012-07-10 16:16:53 +09:00
Satoshi Kataoka
84ed096641 Separate SpellCheckerSession from SpellCheckerService
Bug: 6789576
Change-Id: I7c55d36afad7ef6046353b3c9e849a54a6dc83ae
2012-07-10 15:34:40 +09:00
Tadashi G. Takaoka
5c641a9f59 Remove WordComposer.add(int, int, int, KeyDetector) method
Change-Id: Ie6af46acba18a2d1cf3ddd1578d60ded4c90f89a
2012-07-04 17:29:47 +09:00
Jean Chalard
0a79446531 Remove a meaningless separation (A18)
Change-Id: I267177044c7d7b0d9119839a11057b2bbf41f75f
2012-06-26 17:59:04 +09:00
Jean Chalard
61e7ec6587 Remove the Callback interface for simpler code. (A17)
Bug: 6252660
Bug: 6166228
Bug: 2704000
Bug: 6225530

Change-Id: I009b54fc2e73cadca6734bdca074d033e81f6a2b
2012-06-26 17:58:52 +09:00
Jean Chalard
2f1b6c9ea4 Remove the callback argument to getBigrams() (A16)
Bug: 6252660
Bug: 6166228
Bug: 2704000
Bug: 6225530
Change-Id: I7457ac04f8cd4019fb86c986725aae3de1b1a65e
2012-06-26 17:54:49 +09:00
Jean Chalard
2225b3bace Do away with Utils#addAllSuggestions (A14)
It's not used any more.

Change-Id: Id9da40fdbf7078f3ac647d1368237d6601f5a2ba
2012-06-26 17:36:47 +09:00
Jean Chalard
d9df8094e6 Neutralize AndroidSpellChecker.SuggestionsGatherer#addWords (A13)
Bug: 6252660
Bug: 6166228
Bug: 2704000
Bug: 6225530
Change-Id: Ia54e1e44e1fd4e8ba2c9316928c0595cbe3f933c
2012-06-26 17:36:47 +09:00
Satoshi Kataoka
7368009799 Change JNI for Gesture
Change-Id: I774a0052038d16677f60f7efa11fd266cb5f3088
2012-06-25 18:54:37 +09:00
Jean Chalard
67fd0c240d Remove deprecated classes.
Should we maybe rename back *BinaryDict* to *Dict* in another
change for simplicity?

Change-Id: I8f7dcb78b9bdf1a13ce403a997fbb8619f2b453b
2012-06-08 17:12:15 +09:00
Jean Chalard
c8a120f970 am eead5492: am 769cecf7: Close spell-checking dictionaries in a background thread
* commit 'eead5492615f0b05ef85ca1f88d3a41ce3f8d496':
  Close spell-checking dictionaries in a background thread
2012-06-06 21:52:46 -07:00
Jean Chalard
769cecf7e7 Close spell-checking dictionaries in a background thread
Bug: 6584677
Change-Id: Ifd9b0f995f4e0cf4d35a7ecde767826ab976f0b8
2012-06-07 12:56:45 +09:00
Satoshi Kataoka
547bc0cf04 Cache bigram results in Android SpellChecker
Bug: 6610579
Change-Id: I255c068f64f99ee80abda49153ed8ea009ca8ad3
2012-06-06 16:58:24 +09:00
Jean Chalard
a6166d3776 Fix a bug where Latin IME crashes on spell checker request
Bug: 6611183
Change-Id: I8a879feb598e1ac55d73f9cb27e54aa533d3a010
2012-06-05 16:33:21 +09:00
Tom Ouyang
7f7739fee8 Merge "Fix a bug where the spellcheck is using the old non-binary contacts dictionary" into jb-dev 2012-06-04 23:10:03 -07:00
Tom Ouyang
faf0059f35 Fix a bug where the spellcheck is using the old non-binary contacts dictionary
Bug: 6607023
Change-Id: I6dc120dea23052a0841e281c20706bfb21fd9876
2012-06-04 14:07:47 -07:00
Jean Chalard
b1f3c24c63 Read the script correctly
The script of a language presumably does not depend on the
country variant. This was how it was made but it was later
forgotten and the full locale was registered.

Bug: 6542210
Change-Id: Iebc90c546f9c8caf89f8aa6c6a7c4733e5bcba48
2012-06-04 18:39:16 +09:00
Tadashi G. Takaoka
93ebf74bae Clean up some compiler warnings
Change-Id: I604da15e65fc3cf807ec4033df4e4cd5ef0196fc
2012-05-25 19:04:54 +09:00
Jean Chalard
d527a15ec4 Add new locales for the spell checker.
Bug: 6533167
Change-Id: I1581e8446b1af5dc3679e01be16d4fc34af725cc
2012-05-24 18:45:58 +09:00
satok
315d731d8f Support bigram suggestions in Android spell checker
Bug: 6136291
Change-Id: Ic278153f95b23e9aa180d1d6b5960785766d96e5
2012-05-24 12:27:33 +09:00
Tom Ouyang
f6adff6227 Change to a binary version of the expandable user dictionary.
Bug: 6435677
Change-Id: If83409f699608d443796e64a3c65692ae81b98e6
2012-05-17 15:12:00 -07:00
satok
0028ed3627 Use "float" instead of "double"
Change-Id: I93ed4d88ede4058f081dd8d634b00dfff4e96d07
2012-05-16 20:45:05 +09:00
Jean Chalard
f0e12a9699 Don't auto-correct when there is no main dictionary.
Bug: 6502485
Change-Id: I5803b0db8552867110587a1140fc03fc2e0eccef
2012-05-16 16:09:14 +09:00
satok
5434f46481 Remove unexpectedly split words with single quotes
Bug: 6451163
Change-Id: I4c5595f727934f2b401e9bb11a6ba613668f4a42
2012-05-11 18:49:29 +09:00
Ken Wakasa
88794b24c0 Remove the dependency to SpellCheckerProximityInfo from ProximityInfo.
In conjunction with I596b2deb

Change-Id: I42f059158ae78e1c1c807ed4d3688edbcf18c006
2012-05-11 17:03:06 +09:00
satok
e58f3af8a7 Treat apostrophe as single quote in spell checker
Bug: 6435348
Change-Id: Iaaac9042e7e6cb21a3f2243bc6e8e055cc24f74d
2012-05-07 22:21:55 +09:00
satok
74a84febc7 Cache results of the spell checker
Change-Id: Ie11cd1b07e069474b140fbaae65fca703adc056f
2012-04-17 19:45:57 +09:00
Jean Chalard
ac27e4544b Pass the previous word to getSuggestions
This is a preparative change to bug#6313806

Change-Id: I1be9ec49b21005c1f45ce459fa93712bc74ef3f0
2012-04-17 12:43:53 +09:00
Tom Ouyang
18222f8c86 Add a new binary contacts dictionary based on ExpandableBinaryDictionary and use locale for bigrams.
Bug: 6188977
Change-Id: I753422eed1effaeb5fd01124cf1ddd1e31ee9d60
2012-04-13 17:54:39 -07:00
Jean Chalard
e6269759d6 Read the dictionary resource in a more sensical place.
We don't need to pass this down all the way from LatinIME any more.
It fetched be done exactly where it needs to be.

Change-Id: I9f277f9c4f9de70ae755a1334d86c67bbb24c988
2012-04-11 21:03:21 +09:00
Tadashi G. Takaoka
78ab80844b Add language suffix to main dictionary
Bug: 6319377
Change-Id: Ie6a887fefa12e33c17bfeb5d22984e7c1a7bdb46
2012-04-11 16:11:34 +09:00
Jean Chalard
b5e1f48987 Remove the now useless Flag class.
Change-Id: Ibe45189b73e2606cf77e30da166dd0d45ae47c5c
2012-04-06 19:47:16 +09:00
Jean Chalard
24aee9100e Change the flags to a boolean in constructors.
Change-Id: I9939204f3b16346aaebd4d726315ba9c4faf910a
2012-04-06 19:33:01 +09:00
Tadashi G. Takaoka
11d9ee742f Use keyboardSet extra value of subtype to specify layout type
Change-Id: Ice1f345a08a8d760e3b847c885c4072e3e142c97
2012-04-05 17:25:15 +09:00
Tadashi G. Takaoka
3bf57a5624 Use "No language (QWERTY)" for language agnostic QWERTY keyboard name
Bug: 6010147
Change-Id: I401c2e3fcd639c0e1a03e64489a0d792810caa18
2012-04-04 12:58:42 +09:00
Ken Wakasa
672635493e Remove ArraysCompatUtils
bug: 6129704
Change-Id: I0f1a0dee744e6dcdea7ae8606119b4af22b86663
2012-03-30 22:50:53 +09:00
Jean Chalard
8403611960 Split a method for reuse
Change-Id: I9a82e538903f05bedad51bc195866abbd9daf957
2012-03-26 16:34:29 +09:00
Jean Chalard
b0b89c87f6 Fix a native crash
-1 & 0xFFFF is 65536 :p

Change-Id: I8ecb882b6d6c5bcc91b52e23eb9cc02b04fcdd34
2012-03-23 22:36:00 +09:00
Jean Chalard
e5f02cff7a Small optimization
Change-Id: I5dd7c848f2aaec20325e7ee85f27e282e1ba7a85
2012-03-23 17:03:55 +09:00
Jean Chalard
081616cd2f Send correct coordinates for the spell checker
This results in the computation being done in native code
and the correct proximity being used.
Bug: 6181080

Change-Id: I08fa05c781d607e4feca2caeda353ec19c133a3d
2012-03-23 13:02:58 +09:00