Gentoo Archives: gentoo-commits

From: Sam James <sam@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-db/sqlite/
Date: Fri, 30 Dec 2022 07:32:33
Message-Id: 1672385513.81925c4c2fceb321215d029fe13b30aa1336e164.sam@gentoo
1 commit: 81925c4c2fceb321215d029fe13b30aa1336e164
2 Author: Sam James <sam <AT> gentoo <DOT> org>
3 AuthorDate: Fri Dec 30 07:25:25 2022 +0000
4 Commit: Sam James <sam <AT> gentoo <DOT> org>
5 CommitDate: Fri Dec 30 07:31:53 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=81925c4c
7
8 dev-db/sqlite: add 3.40.1
9
10 Bug: https://bugs.gentoo.org/886029
11 Signed-off-by: Sam James <sam <AT> gentoo.org>
12
13 dev-db/sqlite/Manifest | 2 +
14 dev-db/sqlite/sqlite-3.40.1.ebuild | 432 +++++++++++++++++++++++++++++++++++++
15 2 files changed, 434 insertions(+)
16
17 diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest
18 index e65aab0ff78a..ef46a9e60068 100644
19 --- a/dev-db/sqlite/Manifest
20 +++ b/dev-db/sqlite/Manifest
21 @@ -1,4 +1,6 @@
22 DIST sqlite-doc-3390400.zip 10853153 BLAKE2B 617927351809e5ec7489011f963337e92b539a83b135daa7ccd48f840d35716d08e8adc08a67e17d674a6bc64ca24fa92b56573c0065105386fc9c75f1f7f9ef SHA512 75d97b0f2f0d530b2e0ad505574af3bf657d82f0859bb5de7ee45c40a80351e933944845cedca56b579925a3d07505c6f4721f756f27862ffafdfc2caff539fb
23 DIST sqlite-doc-3400000.zip 10921883 BLAKE2B 786bba5f4eec32114b0e12d0a42eb763c3be999506edb65e72a1ea32499c9972be9e546b4773a96165273e3eac4da9c2e3c2c696e07494d8af8f273da72e44fd SHA512 3557fe49e08fd24890da584f3fa7fb93d1e3317787f98a8ce1062dcac07733782026e50dfef7db72582739ddf0a77095cc4d3a81f3df097a69e85c672591bf7e
24 +DIST sqlite-doc-3400100.zip 10934836 BLAKE2B 52adbfa911a5d8556e4e071bf14ad83145023fbd426f285d9724d7f06e41257df53d3c28224581f12b4ca8f699bf3d3ec829ee161374ce0208783e5da72639dc SHA512 1131b0a6304a4dd6287c85d38d1450fd2dd0e3377d88a263e3c4716415e0587750357f25486727b9433797da0331229682565e7a8a3986eba89cfcab550a2d41
25 DIST sqlite-src-3390400.zip 13405169 BLAKE2B aa0e0abbdcafced086a604ec910dbfd1e4df28e83e0edb6056019391e96367050e59478ee8847d930191a65b21cf0bf9957c35ef056abd9be4947a3838d78eb2 SHA512 0acb8afc87f911c91ec555cc97af5b77b6b0e80cc8672711ddd87c651d9e11b697c9669ff9ba2b58da12b972bb46acdf8b8fe35993950f10735b4036501b73bb
26 DIST sqlite-src-3400000.zip 13723231 BLAKE2B 4b4d3119f3210497e4e41f1305558e7ed49505b635fed18f466b5fb8dcc60712d0c053a0e569f9af4b2b37803d2670528244bdcf6ef580fd3f85510e8d4dba78 SHA512 c3bb3829f99c663f3381f4c610e401173f133fe944558b70da7521cc44116d048e4e1651993feb128b0f3814381aa4fa93f48ba3e277abca3442af805159287d
27 +DIST sqlite-src-3400100.zip 13725560 BLAKE2B 24d2efbbf7f8f35888b1e53c98f9c7fece9b1cf0b175bf49b78869253aa753ce47e2db67247183c07368e69d6eb63a6e39c06b212c8fd5ca36c892ff535bedca SHA512 78f8c6396bf8da090671c6f4c41255e60788324fccdaad906c53610eb6e37705f4d25c7f84da3be00b511ddf9f2e0545901f33f5ae4b6e00b1ea9413af095299
28
29 diff --git a/dev-db/sqlite/sqlite-3.40.1.ebuild b/dev-db/sqlite/sqlite-3.40.1.ebuild
30 new file mode 100644
31 index 000000000000..c10b8c754db0
32 --- /dev/null
33 +++ b/dev-db/sqlite/sqlite-3.40.1.ebuild
34 @@ -0,0 +1,432 @@
35 +# Copyright 1999-2022 Gentoo Authors
36 +# Distributed under the terms of the GNU General Public License v2
37 +
38 +EAPI=8
39 +
40 +inherit autotools flag-o-matic multilib-minimal toolchain-funcs
41 +
42 +DESCRIPTION="SQL database engine"
43 +HOMEPAGE="https://sqlite.org/"
44 +
45 +# On version updates, make sure to read the forum (https://sqlite.org/forum/forum)
46 +# for hints regarding test failures, backports, etc.
47 +if [[ ${PV} == 9999 ]]; then
48 + S="${WORKDIR}"/${PN}
49 + PROPERTIES="live"
50 +else
51 + SRC_PV="$(printf "%u%02u%02u%02u" $(ver_rs 1- " "))"
52 + DOC_PV="${SRC_PV}"
53 + #DOC_PV="$(printf "%u%02u%02u00" $(ver_rs 1-3 " "))"
54 +
55 + SRC_URI="
56 + https://sqlite.org/2022/${PN}-src-${SRC_PV}.zip
57 + doc? ( https://sqlite.org/2022/${PN}-doc-${DOC_PV}.zip )
58 + "
59 + S="${WORKDIR}/${PN}-src-${SRC_PV}"
60 +
61 + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
62 +fi
63 +
64 +LICENSE="public-domain"
65 +SLOT="3"
66 +IUSE="debug doc icu +readline secure-delete static-libs tcl test tools"
67 +RESTRICT="!test? ( test )"
68 +
69 +RDEPEND="
70 + sys-libs/zlib:=[${MULTILIB_USEDEP}]
71 + icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] )
72 + readline? ( sys-libs/readline:=[${MULTILIB_USEDEP}] )
73 + tcl? ( dev-lang/tcl:=[${MULTILIB_USEDEP}] )
74 + tools? ( dev-lang/tcl:= )
75 +"
76 +DEPEND="
77 + ${RDEPEND}
78 + test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )
79 +"
80 +BDEPEND=">=dev-lang/tcl-8.6:0"
81 +if [[ ${PV} == 9999 ]]; then
82 + BDEPEND+=" dev-vcs/fossil"
83 +else
84 + BDEPEND+=" app-arch/unzip"
85 +fi
86 +
87 +PATCHES=(
88 + "${FILESDIR}"/${PN}-3.39.4-icu-72-test.patch
89 +)
90 +
91 +_fossil_fetch() {
92 + local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}"
93 + local repo_id="${1}"
94 + local repo_uri="${2}"
95 +
96 + local -x FOSSIL_HOME="${HOME}"
97 +
98 + mkdir -p "${T}/fossil/${repo_id}" || die
99 + pushd "${T}/fossil/${repo_id}" > /dev/null || die
100 +
101 + if [[ -n "${EVCS_OFFLINE}" ]]; then
102 + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then
103 + die "Network activity disabled using EVCS_OFFLINE and clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\""
104 + fi
105 + else
106 + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then
107 + einfo fossil clone --verbose "${repo_uri}" "${repo_id}.fossil"
108 + fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" || die
109 + echo
110 + else
111 + cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" . || die
112 + einfo fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}"
113 + fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" || die
114 + echo
115 + fi
116 +
117 + (
118 + addwrite "${distdir}"
119 + mkdir -p "${distdir}/fossil-src/${repo_id}" || die
120 + cp -p "${repo_id}.fossil" "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" || die
121 + )
122 + fi
123 +
124 + popd > /dev/null || die
125 +}
126 +
127 +_fossil_checkout() {
128 + local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}"
129 + local repo_id="${1}"
130 + local branch_or_commit="${2}"
131 + local target_directory="${3}"
132 +
133 + local -x FOSSIL_HOME="${HOME}"
134 +
135 + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then
136 + die "Clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\""
137 + fi
138 +
139 + if [[ ! -f "${T}/fossil/${repo_id}/${repo_id}.fossil" ]]; then
140 + mkdir -p "${T}/fossil/${repo_id}" || die
141 + cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" "${T}/fossil/${repo_id}" || die
142 + fi
143 +
144 + mkdir "${target_directory}" || die
145 + pushd "${target_directory}" > /dev/null || die
146 +
147 + einfo fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}"
148 + fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" || die
149 + echo
150 +
151 + popd > /dev/null || die
152 +}
153 +
154 +fossil_fetch() {
155 + local repo_id="${1}"
156 + local repo_uri="${2}"
157 + local target_directory="${3}"
158 +
159 + local branch_or_commit="${EFOSSIL_COMMIT:-${EFOSSIL_BRANCH:-trunk}}"
160 +
161 + _fossil_fetch "${repo_id}" "${repo_uri}"
162 + _fossil_checkout "${repo_id}" "${branch_or_commit}" "${target_directory}"
163 +}
164 +
165 +src_unpack() {
166 + if [[ ${PV} == 9999 ]]; then
167 + fossil_fetch sqlite https://sqlite.org/src "${WORKDIR}/${PN}"
168 + if use doc; then
169 + fossil_fetch sqlite-doc https://sqlite.org/docsrc "${WORKDIR}/${PN}-doc"
170 + fi
171 + else
172 + default
173 + fi
174 +}
175 +
176 +src_prepare() {
177 + default
178 +
179 + eautoreconf
180 + multilib_copy_sources
181 +}
182 +
183 +multilib_src_configure() {
184 + local -x CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}"
185 + local options=()
186 +
187 + options+=(
188 + --enable-load-extension
189 + --enable-threadsafe
190 + )
191 +
192 + # Support detection of misuse of SQLite API.
193 + # https://sqlite.org/compile.html#enable_api_armor
194 + append-cppflags -DSQLITE_ENABLE_API_ARMOR
195 +
196 + # Support bytecode and tables_used virtual tables.
197 + # https://sqlite.org/compile.html#enable_bytecode_vtab
198 + # https://sqlite.org/bytecodevtab.html
199 + append-cppflags -DSQLITE_ENABLE_BYTECODE_VTAB
200 +
201 + # Support column metadata functions.
202 + # https://sqlite.org/compile.html#enable_column_metadata
203 + # https://sqlite.org/c3ref/column_database_name.html
204 + append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA
205 +
206 + # Support sqlite_dbpage virtual table.
207 + # https://sqlite.org/compile.html#enable_dbpage_vtab
208 + # https://sqlite.org/dbpage.html
209 + append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB
210 +
211 + # Support dbstat virtual table.
212 + # https://sqlite.org/compile.html#enable_dbstat_vtab
213 + # https://sqlite.org/dbstat.html
214 + append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB
215 +
216 + # Support sqlite3_serialize() and sqlite3_deserialize() functions.
217 + # https://sqlite.org/compile.html#enable_deserialize
218 + # https://sqlite.org/c3ref/serialize.html
219 + # https://sqlite.org/c3ref/deserialize.html
220 + append-cppflags -DSQLITE_ENABLE_DESERIALIZE
221 +
222 + # Support comments in output of EXPLAIN.
223 + # https://sqlite.org/compile.html#enable_explain_comments
224 + append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS
225 +
226 + # Support Full-Text Search versions 3, 4 and 5.
227 + # https://sqlite.org/compile.html#enable_fts3
228 + # https://sqlite.org/compile.html#enable_fts3_parenthesis
229 + # https://sqlite.org/compile.html#enable_fts4
230 + # https://sqlite.org/compile.html#enable_fts5
231 + # https://sqlite.org/fts3.html
232 + # https://sqlite.org/fts5.html
233 + append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4
234 + options+=( --enable-fts5 )
235 +
236 + # Support hidden columns.
237 + append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS
238 +
239 + # Support memsys5 memory allocator.
240 + # https://sqlite.org/compile.html#enable_memsys5
241 + # https://sqlite.org/malloc.html#memsys5
242 + append-cppflags -DSQLITE_ENABLE_MEMSYS5
243 +
244 + # Support sqlite3_normalized_sql() function.
245 + # https://sqlite.org/c3ref/expanded_sql.html
246 + append-cppflags -DSQLITE_ENABLE_NORMALIZE
247 +
248 + # Support sqlite_offset() function.
249 + # https://sqlite.org/compile.html#enable_offset_sql_func
250 + # https://sqlite.org/lang_corefunc.html#sqlite_offset
251 + append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC
252 +
253 + # Support pre-update hook functions.
254 + # https://sqlite.org/compile.html#enable_preupdate_hook
255 + # https://sqlite.org/c3ref/preupdate_count.html
256 + append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK
257 +
258 + # Support Resumable Bulk Update extension.
259 + # https://sqlite.org/compile.html#enable_rbu
260 + # https://sqlite.org/rbu.html
261 + append-cppflags -DSQLITE_ENABLE_RBU
262 +
263 + # Support R*Trees.
264 + # https://sqlite.org/compile.html#enable_rtree
265 + # https://sqlite.org/compile.html#enable_geopoly
266 + # https://sqlite.org/rtree.html
267 + # https://sqlite.org/geopoly.html
268 + append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY
269 +
270 + # Support Session extension.
271 + # https://sqlite.org/compile.html#enable_session
272 + # https://sqlite.org/sessionintro.html
273 + append-cppflags -DSQLITE_ENABLE_SESSION
274 +
275 + # Support scan status functions.
276 + # https://sqlite.org/compile.html#enable_stmt_scanstatus
277 + # https://sqlite.org/c3ref/stmt_scanstatus.html
278 + # https://sqlite.org/c3ref/stmt_scanstatus_reset.html
279 + append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS
280 +
281 + # Support sqlite_stmt virtual table.
282 + # https://sqlite.org/compile.html#enable_stmtvtab
283 + # https://sqlite.org/stmt.html
284 + append-cppflags -DSQLITE_ENABLE_STMTVTAB
285 +
286 + # Support unknown() function.
287 + # https://sqlite.org/compile.html#enable_unknown_sql_function
288 + append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
289 +
290 + # Support unlock notification.
291 + # https://sqlite.org/compile.html#enable_unlock_notify
292 + # https://sqlite.org/c3ref/unlock_notify.html
293 + # https://sqlite.org/unlock_notify.html
294 + append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY
295 +
296 + # Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements.
297 + # https://sqlite.org/compile.html#enable_update_delete_limit
298 + # https://sqlite.org/lang_delete.html#optional_limit_and_order_by_clauses
299 + # https://sqlite.org/lang_update.html#optional_limit_and_order_by_clauses
300 + append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT
301 +
302 + # Support soundex() function.
303 + # https://sqlite.org/compile.html#soundex
304 + # https://sqlite.org/lang_corefunc.html#soundex
305 + append-cppflags -DSQLITE_SOUNDEX
306 +
307 + # Support URI filenames.
308 + # https://sqlite.org/compile.html#use_uri
309 + # https://sqlite.org/uri.html
310 + append-cppflags -DSQLITE_USE_URI
311 +
312 + options+=( $(use_enable debug) )
313 +
314 + if use icu; then
315 + # Support ICU extension.
316 + # https://sqlite.org/compile.html#enable_icu
317 + append-cppflags -DSQLITE_ENABLE_ICU
318 + sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
319 + fi
320 +
321 + options+=(
322 + --disable-editline
323 + $(use_enable readline)
324 + )
325 +
326 + if use readline; then
327 + options+=( --with-readline-inc="-I${ESYSROOT}/usr/include/readline" )
328 + fi
329 +
330 + if use secure-delete; then
331 + # Enable secure_delete pragma by default.
332 + # https://sqlite.org/compile.html#secure_delete
333 + # https://sqlite.org/pragma.html#pragma_secure_delete
334 + append-cppflags -DSQLITE_SECURE_DELETE
335 + fi
336 +
337 + options+=( $(use_enable static-libs static) )
338 +
339 + # tcl, test, tools USE flags.
340 + if use tcl || use test || { use tools && multilib_is_native_abi; }; then
341 + options+=(
342 + --enable-tcl
343 + --with-tcl="${ESYSROOT}/usr/$(get_libdir)"
344 + )
345 + else
346 + options+=( --disable-tcl )
347 + fi
348 +
349 + if [[ "${ABI}" == "x86" ]]; then
350 + if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then
351 + append-cflags -mfpmath=sse
352 + else
353 + append-cflags -ffloat-store
354 + fi
355 +
356 + # Skip known-broken test for now
357 + # https://sqlite.org/forum/forumpost/d97caf168f
358 + # https://sqlite.org/forum/forumpost/50f136d91d
359 + if use test ; then
360 + rm test/atof1.test || die
361 + fi
362 + fi
363 +
364 + econf "${options[@]}"
365 +}
366 +
367 +multilib_src_compile() {
368 + emake HAVE_TCL="$(usev tcl 1)" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}"
369 +
370 + if use tools && multilib_is_native_abi; then
371 + emake changeset dbdump dbhash dbtotxt index_usage rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh
372 + fi
373 +
374 + if [[ ${PV} == 9999 ]] && use doc && multilib_is_native_abi; then
375 + emake tclsqlite3.c
376 +
377 + local build_directory="$(pwd)"
378 + build_directory="${build_directory##*/}"
379 +
380 + mkdir "${WORKDIR}/${PN}-doc-build" || die
381 + pushd "${WORKDIR}/${PN}-doc-build" > /dev/null || die
382 +
383 + emake -f "../${PN}-doc/Makefile" -j1 SRC="../${PN}" BLD="../${build_directory}" DOC="../${PN}-doc" CC="$(tc-getBUILD_CC)" TCLINC="" TCLFLAGS="$($(tc-getBUILD_PKG_CONFIG) --libs tcl) -ldl -lm" base doc
384 + rmdir doc/matrix{/*,} || die
385 +
386 + popd > /dev/null || die
387 + fi
388 +}
389 +
390 +multilib_src_test() {
391 + if [[ "${EUID}" -eq 0 ]]; then
392 + ewarn "Skipping tests due to root permissions"
393 + return
394 + fi
395 +
396 + local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}"
397 +
398 + # e_uri.test tries to open files in /.
399 + # bug #839798
400 + local SANDBOX_PREDICT=${SANDBOX_PREDICT}
401 + addpredict "/test.db:/ΓΏ.db"
402 +
403 + emake HAVE_TCL="$(usex tcl 1 "")" $(usex debug 'fulltest' 'test')
404 +}
405 +
406 +multilib_src_install() {
407 + emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install
408 +
409 + if use tools && multilib_is_native_abi; then
410 + install_tool() {
411 + if [[ -f ".libs/${1}" ]]; then
412 + newbin ".libs/${1}" "${2}"
413 + else
414 + newbin "${1}" "${2}"
415 + fi
416 + }
417 +
418 + install_tool changeset sqlite3-changeset
419 + install_tool dbdump sqlite3-db-dump
420 + install_tool dbhash sqlite3-db-hash
421 + install_tool dbtotxt sqlite3-db-to-txt
422 + install_tool index_usage sqlite3-index-usage
423 + install_tool rbu sqlite3-rbu
424 + install_tool scrub sqlite3-scrub
425 + install_tool showdb sqlite3-show-db
426 + install_tool showjournal sqlite3-show-journal
427 + install_tool showshm sqlite3-show-shm
428 + install_tool showstat4 sqlite3-show-stat4
429 + install_tool showwal sqlite3-show-wal
430 + install_tool sqldiff sqlite3-diff
431 + install_tool sqlite3_analyzer sqlite3-analyzer
432 + install_tool sqlite3_checker sqlite3-checker
433 + install_tool sqlite3_expert sqlite3-expert
434 + install_tool sqltclsh sqlite3-tclsh
435 +
436 + unset -f install_tool
437 + fi
438 +}
439 +
440 +multilib_src_install_all() {
441 + find "${ED}" -name "*.la" -delete || die
442 +
443 + doman sqlite3.1
444 +
445 + if use doc; then
446 + if [[ ${PV} == 9999 ]]; then
447 + pushd "${WORKDIR}/${PN}-doc-build/doc" > /dev/null || die
448 + else
449 + pushd "${WORKDIR}/${PN}-doc-${DOC_PV}" > /dev/null || die
450 + fi
451 +
452 + find "(" -name "*.db" -o -name "*.txt" ")" -delete || die
453 + if [[ ${PV} != 9999 ]]; then
454 + rm search search.d/admin || die
455 + rmdir search.d || die
456 + find -name "*~" -delete || die
457 + fi
458 +
459 + (
460 + docinto html
461 + dodoc -r *
462 + )
463 +
464 + popd > /dev/null || die
465 + fi
466 +}