The NetBSD Project

CVS log for pkgsrc/sysutils/bup/distinfo

[BACK] Up to [] / pkgsrc / sysutils / bup

Request diff between arbitrary revisions

Default branch: MAIN

Revision 1.18 / (download) - annotate - [select for diffs], Sun Sep 20 22:28:00 2020 UTC (2 days, 5 hours ago) by gdt
Branch: MAIN
Changes since 1.17: +5 -5 lines
Diff to previous 1.17 (colored)

sysutils/bup: Update man page tarball for 0.31

Revision 1.17 / (download) - annotate - [select for diffs], Sun Sep 20 16:44:54 2020 UTC (2 days, 10 hours ago) by gdt
Branch: MAIN
Changes since 1.16: +5 -5 lines
Diff to previous 1.16 (colored)

sysutils/bup: Update to 0.31

Passes bup's test suite on netbsd-8/amd64, with TZ=UTC (needed to work
around what is likely a bug in git around DST changes).

Packaging changes/notes:
  - bup depends directly on readline, GNU version required
  - man pages have not yet been updated

Upstream changes include many minor improvements and bugfixes,

Notable changes in 0.31 (since 0.30.1)

* Python 3 is now supported, and Python 2 support is deprecated.  It's
  possible that we'll stop new development for Python 2 fairly soon.
  If so, we'll probably continue to fix bugs in the last Python 2
  compatible version for a while, but please make plans to migrate.

* `bup features` has been added.  It reports information about bup
  itself, including the Python version, and the current availability
  of features like readline or support for POSIX ACLs.

Build and install

* `bup` itself is now located in now located in the cmd/ directory in
  the install tree and finds sub-commands, etc. relative to its own

Revision 1.16 / (download) - annotate - [select for diffs], Tue Jun 16 21:09:36 2020 UTC (3 months, 1 week ago) by gdt
Branch: MAIN
CVS Tags: pkgsrc-2020Q2-base, pkgsrc-2020Q2
Changes since 1.15: +9 -9 lines
Diff to previous 1.15 (colored)

sysutils/bup: Update to 0.30.1

(0.30.1 is a bug fix release)

Notable changes in 0.30.1 as compared to 0.30

May require attention

* Previous versions of bup might have saved filesystem directories
  with incorrect metadata, but the file contents should be fine.  This
  could have happened if bup encountered an error while trying to read
  the metadata for one of the files in a directory, or if bup were
  asked to save two different files with the same name to the same
  destination directory (e.g. via the strip/graft options).  In cases
  where this has happened bup may present either generic or incorrect
  metadata for some of the paths in the affected directory.

* The way `bup index --fake-valid` works has been made to match the
  documentation in the man page so that it can actually be used for
  the stated purpose (of avoiding 'boring' files.)


* bup should more accurately recognize git versions.  Previously, for
  example, it would reject relase candidates like "1.5.2-rc3"
  or (apparently) "1.5.2-rc3 (something ...)".

* When `BUP_ASSUME_GIT_VERSION_IS_FINE` is set to true, yes or 1 in
  the environment,  bup will assume the version of git that's
  available in the `PATH` is acceptable, and skip the version check.



Build system

* The automated tests have moved from FreeBSD 11.2 to 12.1.

* t/test-fuse should be more portable.  In particular, a compatibility
  issue with Fedora 31 has been fixed, and it should be less affected
  by local timezone variances.

* Some internal build dependencies have been fixed.

Thanks to (at least)

Aidan Hobson Sayers, Greg Troxel, Johannes Berg, Luca Carlon, Reinier
Maas, Rob Browning, and Wyatt Alt

Revision 1.15 / (download) - annotate - [select for diffs], Sat Nov 23 21:25:12 2019 UTC (10 months ago) by gdt
Branch: MAIN
CVS Tags: pkgsrc-2020Q1-base, pkgsrc-2020Q1, pkgsrc-2019Q4-base, pkgsrc-2019Q4
Changes since 1.14: +9 -9 lines
Diff to previous 1.14 (colored)

sysutils/bup: Deal with sha1-named distfile better

Use a reasonable local name to deal with ${sha1}.tar.gz, instead of
DISTDIR.  Thanks to rillig@ for the hint.

Revision 1.14 / (download) - annotate - [select for diffs], Thu Nov 21 16:19:05 2019 UTC (10 months ago) by gdt
Branch: MAIN
Changes since 1.13: +9 -9 lines
Diff to previous 1.13 (colored)

sysutils/bup: Workarounds for dealing with haskell, github, presumes that there is one distfile, but bup has two because
it uses pandoc which uses haskell.  Set variables that should result
in fetching both of them.  Because this does not work, I have put a
copy of the man tarball at MASTER_SITE_BACKUP.

(No PKGREVISION++ because if you had the distfiles before you'll get
the same binary package now.)

Revision 1.13 / (download) - annotate - [select for diffs], Tue Nov 19 15:01:25 2019 UTC (10 months ago) by gdt
Branch: MAIN
Changes since 1.12: +9 -9 lines
Diff to previous 1.12 (colored)

sysutils/bup: Update to 0.30

packaging changes: switch to 0.30 man tarball

Notable changes in 0.30 as compared to 0.29.3

May require attention

* The minimum `git` version required is now 1.5.6.

* The `prune-older` command now keeps the most recent save in each
  period group (day, week, month, ...) rather than the oldest.

* `bup` now adds a zero-padded suffix to the names of saves with the
  same timestamp (e.g. 1970-01-01-214640-07) in order to avoid
  duplicates.  The sequence number currently represents the save's
  reversed position in default `git rev-list` order, so that given:


  In the normal case, the -10 save would be the next save made after
  -09 (and the -09 save would be the single parent commit for -10).

* `bup` is not currently compatible with Python 3 and will now refuse
  to run if the Python version is not 2 unless
  `BUP_ALLOW_UNEXPECTED_PYTHON_VERSION=true` is set in the environment
  (which can be useful for development and testing).

* `bup ls -s` now reports the tree hash for commits unless
  `--commit-hash` is also specified.


* `bup get` has been added.  This command allows the transfer or
  rewriting of data within and between repositories, local or remote.
  Among other things, it can be used to append remote saves to a local
  branch, which by extension supports merging repositories.  See
  `bup-get(1)` for further information, and please note, this is a new
  *EXPERIMENTAL* command that can (intentionally) modify your data in
  destructive ways.  It is potentially much more dangerous than most
  `bup` commands.  Treat with caution.

* `bup` can now restore directly from a remote repository via `bup
  restore -r host:path ...`.  See `bup-restore(1)` for more

* `bup ls` can now report information for remote repositories via `bup
  ls -r host:path ...`.  See `bup-ls(1)` for more information.

* `bup` should respect the git pack.packSizeLimit setting when writing
  packfiles, though at the moment it will only affect a remote
  repository when the option is set there directly.

* `bup save` now stores the size for all links and normal files.  For
  directories saved using this new format retrieving file sizes for
  larger files should be notably less expensive.  Among other things
  this may improve the performance of commands like `bup ls -l` or
  `find /some/fuse/dir -ls`.

* The VFS (Virtual File System) that underlies many operations, and
  provides the basis for commands like `restore`, `ls`, etc. has been
  rewritten in a way that makes remote repository access easier,
  should decrease the memory footprint in some cases (e.g. for bup
  fuse), and should make it easier to provide more selective caching.
  At the moment, data is just evicted at random once a threshold is

* A `--noop <--blobs|--tree>` option has been added to `bup split`
  which prints the resulting id without storing the data in the


* The way `bup` handles output from subprocesses (diagnostics,
  progress, etc.) has been adjusted in a way that should make it less
  likely that bup might continue running after the main process has
  exited, say via a C-c (SIGINT).

* `bup` should now respect the specified compression level when
  writing to a remote repository.

* `bup restore` now creates FIFOs with mkfifo, not mknod, which is
  more portable.  The previous approach did not work correctly on (at
  least) some versions of NetBSD.

* `bup` should no longer just crash when it encounters a commit with a
  "mergetag" header.  For the moment, it just ignores them, and
  they'll be discarded whenever `bup` rewrites a commit, say via the
  `rm`, `prune-older`, or `get` commands.

* The bloom command should now end progress messages with \r, not \n,
  which avoids leaving spurious output lines behind at exit.

* A missing space has been added to the `bup split --bench` output.

* Various Python version compatibility problems have been fixed,
  including some of the incompatibilities introduced by Python 3.

* Some issues with mincore on WSL have been fixed.

* Some Android build incompatibilities have been fixed.

Build system

* The tests no longer assume pwd is in /bin.

* The tests should be less sensitive to the locale.

* `test-meta` should no longer try to apply chattr +T to files.  'T'
  only works for directories, and newer Linux kernels actually reject
  the attempt (as of at least 4.12, and maybe 4.10).

* `test-rm` should no longer fail when newer versions of git
  automatically create packed-refs.

* `test-sparse-files` should be less likely to fail when run inside a

* `test-index-check-device` and `test-xdev` now use separate files for
  their loopback mounts.  Previously each was mounting the same image
  twice, which could produce the same device number.

Thanks to (at least)

Alexander Barton, Artem Leshchev, Ben Kelly, Fabian 'xx4h' Melters,
Greg Troxel, Jamie Wyrick, Julien Goodwin, Mateusz Konieczny,
Nathaniel Filardo, Patrick Rouleau, Paul Kronenwetter, Rob Browning,
Robert Evans, Tim Riemenschneider, and bedhanger

Revision 1.12 / (download) - annotate - [select for diffs], Thu Sep 12 00:28:47 2019 UTC (12 months, 1 week ago) by gdt
Branch: MAIN
CVS Tags: pkgsrc-2019Q3-base, pkgsrc-2019Q3
Changes since 1.11: +5 -5 lines
Diff to previous 1.11 (colored)

sysutils/bup: Update to 0.29.3

Upstream changes (other than bugfixes minor improvements):


* Newer versions of par2 can process in parallel using multiple
  threads/cores, and they do so automatically.  This ends up competing
  with `bup fsck`s own parallelism, enabled by `-j`, in such a way
  that the command can actually run much *slower* (and be much more
  expensive) than it would have been with no parallelism at all.

  When appropriate `bup fsck` now disables par2's competing
  parallelism (via its `-t1` option) to avoid the contention.


* An experimental `prune-older` command has been added.  It removes
  (permanently deletes) all saves except those preserved by a set of
  arguments like `--keep-monthlies-for 3y`.  See `bup help
  prune-older` for further information.

Revision 1.11 / (download) - annotate - [select for diffs], Mon Sep 19 08:52:24 2016 UTC (4 years ago) by wiz
Branch: MAIN
CVS Tags: pkgsrc-2019Q2-base, pkgsrc-2019Q2, pkgsrc-2019Q1-base, pkgsrc-2019Q1, pkgsrc-2018Q4-base, pkgsrc-2018Q4, pkgsrc-2018Q3-base, pkgsrc-2018Q3, pkgsrc-2018Q2-base, pkgsrc-2018Q2, pkgsrc-2018Q1-base, pkgsrc-2018Q1, pkgsrc-2017Q4-base, pkgsrc-2017Q4, pkgsrc-2017Q3-base, pkgsrc-2017Q3, pkgsrc-2017Q2-base, pkgsrc-2017Q2, pkgsrc-2017Q1-base, pkgsrc-2017Q1, pkgsrc-2016Q4-base, pkgsrc-2016Q4, pkgsrc-2016Q3-base, pkgsrc-2016Q3
Changes since 1.10: +1 -2 lines
Diff to previous 1.10 (colored)

Remove unnecessary REPLACE_PYTHON lines and patch.
Add perl to run-time depends, at least one subcommand uses it.
(should perhaps be replaced, it's just for stat())
Fix path to REPLACE_PERL files.
Add rsync to BUILD_DEPENDS, it's needed for some tests.

Revision 1.10 / (download) - annotate - [select for diffs], Sun Sep 18 23:02:48 2016 UTC (4 years ago) by gdt
Branch: MAIN
Changes since 1.9: +10 -11 lines
Diff to previous 1.9 (colored)

Update to 0.28.1

Upstream changes:

* The index format has changed, which will trigger a full index
  rebuild on the next index run, making that run more expensive than

* When given `--xdev`, `bup save` should no longer skip directories
  that are explicitly listed on the command line when the directory is
  both on a separate filesystem, and a subtree of another path listed
  on the command line.  Previously `bup save --xdev / /usr` could skip
  "/usr" if it was on a separate filesystem from "/".

* Tags along a branch are no longer shown in the branch's directory in
  the virtual filesystem (VFS).  i.e. given `bup tag special
  /foo/latest`, "/foo/special" will no longer be visible via `bup ls`,
  `bup web`, `bup fuse`, etc., but the tag will still be available as

* bup now provides experimental `rm` and `gc` subcommands, which
  should allow branches and saves to be deleted, and their storage
  space reclaimed (assuming nothing else refers to the relevant data).
  For the moment, these commands require an `--unsafe` argument and
  should be treated accordingly.  Although if an attempt to `join` or
  `restore` the data you still care about after a `gc` succeeds,
  that's a fairly encouraging sign that the commands worked correctly.
  (The `t/compare-trees` command in the source tree can be used to
  help test before/after results.)

  Note that the current `gc` command is probabilistic, which means it
  may not remove *all* of the obsolete data from the repository, but
  also means that the command should be fairly efficient, even for
  large repositories.

* bup may have less impact on the filesystem cache.  It now attempts
  to leave the cache roughly the way it found it when running a `save`
  or `split`.

* A specific Python can be specified at `./configure` time via PYTHON,
  i.e. `PYTHON=/some/python ./configure`, and that Python will be
  embedded in all of the relevant scripts as an explicit "#!/..." line
  during `make install`.

* The way bup writes the data to disk (the packfiles in particular),
  should be a bit safer now if there is a coincident power failure or
  system crash.

* bup should be more likely to get the data to permanent storage
  safely on OS X, which appears to follow a surprising interpretation
  of the `fsync()` specification.

* The build system now creates and uses cmd/bup-python which refers to
  the `./configure` selected python.

Revision 1.9 / (download) - annotate - [select for diffs], Wed Nov 4 01:32:07 2015 UTC (4 years, 10 months ago) by agc
Branch: MAIN
CVS Tags: pkgsrc-2016Q2-base, pkgsrc-2016Q2, pkgsrc-2016Q1-base, pkgsrc-2016Q1, pkgsrc-2015Q4-base, pkgsrc-2015Q4
Changes since 1.8: +3 -1 lines
Diff to previous 1.8 (colored)

Add SHA512 digests for distfiles for sysutils category

Problems found with existing digests:
	Package memconf distfile memconf-2.16/memconf.gz
	b6f4b736cac388dddc5070670351cf7262aba048 [recorded]
	95748686a5ad8144232f4d4abc9bf052721a196f [calculated]

Problems found locating distfiles:
	Package dc-tools: missing distfile dc-tools/abs0-dc-burn-netbsd-1.5-0-gae55ec9
	Package ipw-firmware: missing distfile ipw2100-fw-1.2.tgz
	Package iwi-firmware: missing distfile ipw2200-fw-2.3.tgz
	Package nvnet: missing distfile nvnet-netbsd-src-20050620.tgz
	Package syslog-ng: missing distfile syslog-ng-3.7.2.tar.gz

Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden).  All existing
SHA1 digests retained for now as an audit trail.

Revision 1.8 / (download) - annotate - [select for diffs], Mon Apr 27 09:17:17 2015 UTC (5 years, 4 months ago) by wiz
Branch: MAIN
CVS Tags: pkgsrc-2015Q3-base, pkgsrc-2015Q3, pkgsrc-2015Q2-base, pkgsrc-2015Q2
Changes since 1.7: +7 -7 lines
Diff to previous 1.7 (colored)

Update to 0.27:

This version primarily fixes bugs, but it includes a few new features,
and hopefully will provide a solid base for 0.28, which may finally
include rm/gc support.

Of note since 0.26:

  - Files can be restored sparsely via "restore --sparse".  See
    bup-sparse(1) for the details.  Given that this option is
    completely new and affects the data written, some
    caution/verification may be wise (i.e. there were bugs in some of
    the development revisions that could mangle the output).

  - Duplicity backups can be imported via the *experimental* command
    "bup import-duplicity".  Please exercise caution, and let us know
    if you have any trouble.

  - Tests can be run in parallel now via "make -j check".

As before, the metadata support is somewhat immature, but it seems to
be holding up fairly well.  Though we still need to add better support
for cross-filesystem-type save/restore (which can be too noisy), etc.

Revision 1.7 / (download) - annotate - [select for diffs], Sat Sep 6 21:29:45 2014 UTC (6 years ago) by wiz
Branch: MAIN
CVS Tags: pkgsrc-2015Q1-base, pkgsrc-2015Q1, pkgsrc-2014Q4-base, pkgsrc-2014Q4, pkgsrc-2014Q3-base, pkgsrc-2014Q3
Changes since 1.6: +8 -9 lines
Diff to previous 1.6 (colored)

Update to 0.26:

This release doesn't include anything as significant as the metadata
support added in 0.25, but it has quite a few bug fixes and internal
improvements, in addition to these notable changes:

  - When --meta is specified to the fuse command, instead of generic
    data, the originally saved mode, uid, git, atime, mtime, and ctime
    will be reported for the archive paths.

  - When --browser is specified to the web command, a browser window
    will be opened for the repository.

  - The -x/--xdev/--one-filesystem options now include the mountpoint
    itself in the traversal (matching rsyc, tar, etc.).

  - Empty lines in --exclude-rx-from files will be ignored.
    Previously they would cause all paths to be excluded.

  - The index and restore commands now support --exclude-rx-from.

  - Relative filesystem --excludes like "--exclude bar" should now
    work.  Previously --excludes had to be absolute.

  - The drecurse command now supports --exclude-rx and

  - The --compress option should now work for remote repositories.

  - Streams saved via "bup split" will now show up as a single file
    named "data" at the top level of the VFS, instead of as a subtree
    (i.e. when examined via ftp, ls, and fuse).

  - The ls command now supports -n, -A, -F, --file-type,
    --numeric-ids, and detailed -l options.

  - The save dates are now taken from the corresponding git commit's
    author date, not the committer date.

  - The tornado server, required by the web command, is no longer
    included.  See the README for installation instructions.

Note that the metadata support is still somewhat immature.  For
example, we still need to add better support for cross-filesystem-type
save/restore (which is too noisy), etc.

Please give this release a try and let us know what's broken.  If
you're new to bup, start with the README (and then HACKING if you'd
like to help further):;a=blob;;hb=refs/heads/master;a=blob;f=HACKING;hb=refs/heads/master

And although I probably sound like a broken record -- while we expect
bup to work fairly well, I still don't recommend it as your sole
backup strategy.  I'd still suggest a periodic
tar/rsync/etc. backstop.

Revision 1.6 / (download) - annotate - [select for diffs], Wed Mar 19 17:50:00 2014 UTC (6 years, 6 months ago) by gdt
Branch: MAIN
CVS Tags: pkgsrc-2014Q2-base, pkgsrc-2014Q2, pkgsrc-2014Q1-base, pkgsrc-2014Q1
Changes since 1.5: +2 -2 lines
Diff to previous 1.5 (colored)

Add patch to avoid buggy utimensat on NetBSD 6.

Revision 1.5 / (download) - annotate - [select for diffs], Wed Mar 19 13:15:13 2014 UTC (6 years, 6 months ago) by gdt
Branch: MAIN
Changes since 1.4: +3 -2 lines
Diff to previous 1.4 (colored)

Add patch from upstream to avoid failures due to clang warnings.

Resolves failure to build on OS X 10.9.

ok wiz@ (as MAINTAINER).

Revision 1.4 / (download) - annotate - [select for diffs], Tue Dec 31 11:03:12 2013 UTC (6 years, 8 months ago) by wiz
Branch: MAIN
Changes since 1.3: +9 -10 lines
Diff to previous 1.3 (colored)

Update to 0.25:

This release includes a veritable ton of work, but the biggest change
is probably the addition of real (YMMV) metadata support, including
hardlinks, and the ability to directly save/restore trees without tar
and split/join.  See bup-index(1), bup-save(1), bup-restore(1),
bup-meta(1), bup-xstat(1), and the updated "Using bup" section in the

Note though, that the metadata support really is our first pass, and
there are already things that we know need fixing (i.e. better support
for cross-filesystem-type save/restore (too noisy), etc.).  And check
the "Notes on ..." sections in the README for some platform-specific

An incomplete list of other notable changes since 0.24b:

  - bup will no longer create ~/.bup implicitly; "bup init" is

  - "bup split" now supports a compression-level option (-#).

  - "bup tag" now supports "-f".

  - "bup ls" now supports "-a", "-s", "--human-readable", etc., and
     reports more information.

  - "bup web" now supports "--human-readable".

  - "bup import-rdiff-backup" has been added.

  - "bup cat-file" has been added.

  - The default "/usr" installation prefix can be overridden via PREFIX.

  - Python 2.4 is no longer supported.

And we have at least one (likely minor) known issue:

  - *Very* large (i.e. probably greater than MAX_LONG), or negative
    filesystem timestamps may not always be handled correctly at the
    moment.  We'll fix that soon.  And related -- some of the tests
    may fail on FUSE filesystems.

Revision 1.3 / (download) - annotate - [select for diffs], Tue Sep 4 13:43:15 2012 UTC (8 years ago) by wiz
Branch: MAIN
CVS Tags: pkgsrc-2013Q4-base, pkgsrc-2013Q4, pkgsrc-2013Q3-base, pkgsrc-2013Q3, pkgsrc-2013Q2-base, pkgsrc-2013Q2, pkgsrc-2013Q1-base, pkgsrc-2013Q1, pkgsrc-2012Q4-base, pkgsrc-2012Q4, pkgsrc-2012Q3-base, pkgsrc-2012Q3
Changes since 1.2: +10 -9 lines
Diff to previous 1.2 (colored)

Update to 0.25rc1. Add py-readline dependency for better 'bup ftp' support.

This is the latest stable release, despite its name. Lots of bug fixes
compared to previous one, but no NEWS provided.

Revision 1.2 / (download) - annotate - [select for diffs], Tue May 31 12:01:18 2011 UTC (9 years, 3 months ago) by wiz
Branch: MAIN
CVS Tags: pkgsrc-2012Q2-base, pkgsrc-2012Q2, pkgsrc-2012Q1-base, pkgsrc-2012Q1, pkgsrc-2011Q4-base, pkgsrc-2011Q4, pkgsrc-2011Q3-base, pkgsrc-2011Q3, pkgsrc-2011Q2-base, pkgsrc-2011Q2
Changes since 1.1: +2 -2 lines
Diff to previous 1.1 (colored)

Install README and design document. Bump PKGREVISION.

Revision / (download) - annotate - [select for diffs] (vendor branch), Mon May 16 13:52:56 2011 UTC (9 years, 4 months ago) by wiz
Branch: TNF
CVS Tags: pkgsrc-20110516
Changes since 1.1: +0 -0 lines
Diff to previous 1.1 (colored)

Initial import of bup-0.24b.

bup is a program that backs things up.  bup has a few advantages
over other backup software:

It uses a rolling checksum algorithm (similar to rsync) to split
large files into chunks. The most useful result of this is you can
backup huge virtual machine (VM) disk images, databases, and XML
files incrementally, even though they're typically all in one huge
file, and not use tons of disk space for multiple versions.

It uses the packfile format from git (the open source version
control system), so you can access the stored data even if you
don't like bup's user interface.

Unlike git, it writes packfiles directly (instead of having a
separate garbage collection / repacking stage) so it's fast even
with gratuitously huge amounts of data. bup's improved index formats
also allow you to track far more filenames than git (millions) and
keep track of far more objects (hundreds or thousands of gigabytes).

Data is "automagically" shared between incremental backups without
having to know which backup is based on which other one - even if
the backups are made from two different computers that don't even
know about each other. You just tell bup to back stuff up, and it
saves only the minimum amount of data needed.

You can back up directly to a remote bup server, without needing
tons of temporary disk space on the computer being backed up.  And
if your backup is interrupted halfway through, the next run will
pick up where you left off. And it's easy to set up a bup server:
just install bup on any machine where you have ssh access.

Bup can use "par2" redundancy to recover corrupted backups even if
your disk has undetected bad sectors.

Even when a backup is incremental, you don't have to worry about
restoring the full backup, then each of the incrementals in turn;
an incremental backup acts as if it's a full backup, it just takes
less disk space.

You can mount your bup repository as a FUSE filesystem and access
the content that way, and even export it over Samba.

Revision 1.1 / (download) - annotate - [select for diffs], Mon May 16 13:52:56 2011 UTC (9 years, 4 months ago) by wiz
Branch: MAIN

Initial revision

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

CVSweb <>