#!/bin/sh

iterate()
{
	"$@" GX - bin/opera@@{SUFFIX}
	"$@" GX - bin/opera-widget-manager@@{SUFFIX}
	if ! $repackage
	then
		"$@" GX - bin/uninstall-opera@@{SUFFIX}
	fi
	"$@" NF 60c9eb6bd71cff60aa4e44c41b101fce lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperamatroska.so
	"$@" NF 94262c97be4cd142be317c2bb23515e8 lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperavp8.so
	"$@" NF 3241e328b8ceaca3c1fe323796f99227 lib/opera@@{SUFFIX}/liboperagtk.so
	"$@" NF e3ed2060e8c8bcafdb74f8866e925965 lib/opera@@{SUFFIX}/liboperakde4.so
	"$@" NX b3608bb3354009c7dcd7a865f7edc8e0 lib/opera@@{SUFFIX}/opera@@{SUFFIX}
	"$@" NX d17898d10632553a227bf765bca7e686 lib/opera@@{SUFFIX}/operaplugincleaner
	"$@" NX 37879a01bd6ee8dd49fdd16c31ab1d34 lib/opera@@{SUFFIX}/operapluginwrapper
	"$@" NF 0a8389b127c477aa2c55ee5d234473ca lib/opera@@{SUFFIX}/plugins/README
	"$@" PF 3555a0be840d98b449faf459b8900f93 share/applications/opera-browser@@{SUFFIX}.desktop
	"$@" PF c32d6b1cdaa99944767e83a59fe27b4d share/applications/opera-widget-installer@@{SUFFIX}.desktop
	"$@" PF bf9c8c97f9432e69936000fc9db64290 share/applications/opera-widget-manager@@{SUFFIX}.desktop
	"$@" NF 3214f080875748938ba060314b4f727d share/doc/opera@@{SUFFIX}/LGPL-2
	"$@" NF 6a6a8e020838b23406c81b19c1d46df6 share/doc/opera@@{SUFFIX}/LGPL-3
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/doc/opera@@{SUFFIX}/LICENSE
	"$@" NF c9996f43d681b457f038bfc8efeef28a share/doc/opera@@{SUFFIX}/README.gstreamer
	"$@" NF e86ae7a20a7bc688af75a10d628de734 share/icons/hicolor/128x128/apps/opera-browser@@{SUFFIX}.png
	"$@" NF a8364412e16fd47998b58733e5a17ce6 share/icons/hicolor/128x128/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/128x128/apps/opera-widget@@{SUFFIX}.png
	"$@" NF e67a11f466869d45bda53bdc9dbf4820 share/icons/hicolor/128x128/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF a2ae615b486e32092225f672d436d799 share/icons/hicolor/128x128/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF c3a9608cefc210c9e7823389c880a846 share/icons/hicolor/16x16/apps/opera-browser@@{SUFFIX}.png
	"$@" NF 63786cc7701894e2ed1cecad31f2f78e share/icons/hicolor/16x16/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/16x16/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 87a4cd99f0b1be41a1f6cfda5d57858a share/icons/hicolor/16x16/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF 2bf861fe626ecd8480ed4f4b1d4f6086 share/icons/hicolor/16x16/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF 6ed751290abb1877dc5f63d98d519388 share/icons/hicolor/22x22/apps/opera-browser@@{SUFFIX}.png
	"$@" NF a385010faaf3f4474e179b3e31e7dc4c share/icons/hicolor/22x22/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/22x22/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 96f5a6bb62249a96b18a21e2620dcaf5 share/icons/hicolor/22x22/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF a9c3ccc0b72ab3af8abd7e340e3c9918 share/icons/hicolor/22x22/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF 69ec92d70839774813d2b947b64b6c47 share/icons/hicolor/24x24/apps/opera-browser@@{SUFFIX}.png
	"$@" NF 18da329a213cc3c61f44fe570d7fafe5 share/icons/hicolor/24x24/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/24x24/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 5de5a30096324d2fb9d48928d49912c3 share/icons/hicolor/24x24/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF 588162e24d2bd73258d1bcecf62b7798 share/icons/hicolor/24x24/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF 8252fceede693440b96be35f6065cde3 share/icons/hicolor/32x32/apps/opera-browser@@{SUFFIX}.png
	"$@" NF 7d64048682c5ea906e7ea281f4f12442 share/icons/hicolor/32x32/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/32x32/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 7d861375334ea90d50f01bd84720f54e share/icons/hicolor/32x32/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF 70b287cbe7a06465220692a15c9b9c13 share/icons/hicolor/32x32/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF d0b315ea05750c1abb157042e56165d2 share/icons/hicolor/48x48/apps/opera-browser@@{SUFFIX}.png
	"$@" NF 6177835f1655a6a1441ebefe49f404ff share/icons/hicolor/48x48/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/48x48/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 4e4670e50dc2cb2305abd6f526a82099 share/icons/hicolor/48x48/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF 6471746ab02f81f91b2e08fc95db4aa4 share/icons/hicolor/48x48/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF 52440fbe31989de381a04002fe54da6e share/icons/hicolor/scalable/apps/opera-browser@@{SUFFIX}.svg
	"$@" NF c8931b3343cbec2271105febad88ebfe share/icons/hicolor/scalable/apps/opera-widget-manager@@{SUFFIX}.svg
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.svg share/icons/hicolor/scalable/apps/opera-widget@@{SUFFIX}.svg
	"$@" NF 957818c8871b44f4b490a51f90134fa5 share/icons/hicolor/scalable/mimetypes/opera-unite-application@@{SUFFIX}.svg
	"$@" NF 71d72ea4945da5e60a0dcef66c28c319 share/icons/hicolor/scalable/mimetypes/opera-widget@@{SUFFIX}.svg
	"$@" PF 72acfb25414b4a5763749ddfd056f147 share/man/man1/opera-widget-manager@@{SUFFIX}.1.gz
	"$@" PF 7b1c20120ec9ec6318b3a751e87e8442 share/man/man1/opera@@{SUFFIX}.1.gz
	"$@" PF 47369d7a10b56a444f3ff3cadfcfc68f share/mime/packages/opera-unite-application@@{SUFFIX}.xml
	"$@" PF 7744597b45c1ee17ad5e62adc5856a40 share/mime/packages/opera-widget@@{SUFFIX}.xml
	"$@" NF e5f8a1eed17db1d05738ea806c7da267 share/opera@@{SUFFIX}/defaults/bookmarks.adr
	"$@" NF 47c08d6696bb0c85d176ee56ff9bd2c7 share/opera@@{SUFFIX}/defaults/feedreaders.ini
	"$@" NF eff00befe1723a4742b9ae591170566c share/opera@@{SUFFIX}/defaults/filehandler.ini
	"$@" NF c8da3f671c192d7193d2c04e41586fea share/opera@@{SUFFIX}/defaults/font.ini
	"$@" LL ../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/defaults/license.txt
	"$@" NF c84164ddf1fc348ad1f7cc9a605f3c46 share/opera@@{SUFFIX}/defaults/mailproviders.xml
	"$@" NF 0cb4ac60c1cf45bd08ec4d5d62da5c02 share/opera@@{SUFFIX}/defaults/plugin-ignore.ini
	"$@" NF 140888cfeb603e37cb6de4845debbf8e share/opera@@{SUFFIX}/defaults/pluginpath.ini
	"$@" NF 04c5466c3021c5348ff0b3bd91487774 share/opera@@{SUFFIX}/defaults/public_domains.dat
	"$@" NF 4a61ad3cccbe6b70d351d5d0d9dac77d share/opera@@{SUFFIX}/defaults/search.ini
	"$@" NF c600239863b61385bb2819032f0fda2a share/opera@@{SUFFIX}/defaults/standard_speeddial.ini
	"$@" NF 999671790c0d7c13942128fc9acf7879 share/opera@@{SUFFIX}/defaults/standard_trusted_repositories.ini
	"$@" NF c98d21788ba4619a0a3bb41722142e45 share/opera@@{SUFFIX}/defaults/webmailproviders.ini
	"$@" NF 5978ba5d3fa29bb0f5b210cc8aad57e1 share/opera@@{SUFFIX}/defaults/xmlentities.ini
	"$@" NF bb86d82e8d547a86141befa915f788a9 share/opera@@{SUFFIX}/encoding.bin
	"$@" NF 54f1497ac9cc9ffa04d52213be260559 share/opera@@{SUFFIX}/extra/missingplugin.svg
	"$@" NF 17700f8a405a78dc1afdf69679a3f85b share/opera@@{SUFFIX}/extra/missingpluginhover.svg
	"$@" NF 0547d144b3de633887a8657de0ee1779 share/opera@@{SUFFIX}/extra/svg-mo.dat
	"$@" NF 6ee58550670e206dc93e1b31a7da2c9f share/opera@@{SUFFIX}/extra/svg-mobd.dat
	"$@" NF 0ab7eca84c071dac25dafd3b4569d80f share/opera@@{SUFFIX}/extra/svg-sa.dat
	"$@" NF 23059c42a43dceded9122d8834aa43fe share/opera@@{SUFFIX}/extra/svg-sabd.dat
	"$@" NF f3747a59108df781e04305b1bee29574 share/opera@@{SUFFIX}/extra/svg-se.dat
	"$@" NF bcdb530c010ed72fe6096d46366c57f5 share/opera@@{SUFFIX}/extra/svg-sebd.dat
	"$@" NF 7a2db2de5211ab16a6712e4168d17ec7 share/opera@@{SUFFIX}/html40_entities.dtd
	"$@" NF 87803f0514670b96c73d4043cd3568c8 share/opera@@{SUFFIX}/lngcode.txt
	"$@" NF 9a3f2357dde334aadf14e32f704b97d6 share/opera@@{SUFFIX}/locale/be/be.lng
	"$@" NF 19a88943998948a20598ebe4dce9b898 share/opera@@{SUFFIX}/locale/be/bookmarks.adr
	"$@" NF 91f6b025e388a7c98d936bcb695a54e2 share/opera@@{SUFFIX}/locale/be/search.ini
	"$@" NF 8beaab8ab5f5af7f0b9e52b31b35bea1 share/opera@@{SUFFIX}/locale/be/standard_speeddial.ini
	"$@" NF 6730a3cbe87f97039558974fa08212e2 share/opera@@{SUFFIX}/locale/bg/bg.lng
	"$@" NF fbaacb092f6fb389ba57f810d31792bd share/opera@@{SUFFIX}/locale/bg/bookmarks.adr
	"$@" NF a14baaa7a62b0181553244bbbcfa6408 share/opera@@{SUFFIX}/locale/bg/search.ini
	"$@" NF d1ed970ff7b137d478bb94301da078e3 share/opera@@{SUFFIX}/locale/bg/standard_speeddial.ini
	"$@" NF 2218692cb6ccf82543756b594f1dd444 share/opera@@{SUFFIX}/locale/cs/bookmarks.adr
	"$@" NF d639df17a5e37a0ba361ee3b1a2afd8c share/opera@@{SUFFIX}/locale/cs/cs.lng
	"$@" NF 4ee0580554e7c1ddc24d609bbb5c7253 share/opera@@{SUFFIX}/locale/cs/search.ini
	"$@" NF d1ed970ff7b137d478bb94301da078e3 share/opera@@{SUFFIX}/locale/cs/standard_speeddial.ini
	"$@" NF 392e9f56e3629d4ba080648f943f7ab0 share/opera@@{SUFFIX}/locale/da/da.lng
	"$@" NF 2abbf8026ccfde44516071ca973fb618 share/opera@@{SUFFIX}/locale/de/bookmarks.adr
	"$@" NF 723735267e95638003e8ea1904233aea share/opera@@{SUFFIX}/locale/de/de.lng
	"$@" NF 42efa4b67073e9fbf848505d16da9230 share/opera@@{SUFFIX}/locale/de/search.ini
	"$@" NF f81c9efe32b2cfcc6f7a7411a3ead4bd share/opera@@{SUFFIX}/locale/de/standard_speeddial.ini
	"$@" NF 3f466124ee9f1efee61558d720f676b0 share/opera@@{SUFFIX}/locale/el/el.lng
	"$@" NF de7b89f83721003bbb56d81088565825 share/opera@@{SUFFIX}/locale/en-GB/bookmarks.adr
	"$@" NF c7df2f7f61d7a7ef2e43e97a756d66aa share/opera@@{SUFFIX}/locale/en-GB/en-GB.lng
	"$@" NF f30396861ff9b8243fd13c07dfcfd40a share/opera@@{SUFFIX}/locale/en-GB/search.ini
	"$@" NF 2b71fb390e9c63e6c7384a00e10d49c7 share/opera@@{SUFFIX}/locale/en-GB/standard_speeddial.ini
	"$@" NF 7f5bbe1a291f2a8429b804bc88a2e7c6 share/opera@@{SUFFIX}/locale/en/bookmarks.adr
	"$@" NF e101f32c3219dca04572efa31cb6aa82 share/opera@@{SUFFIX}/locale/en/en.lng
	"$@" NF f5295aedf029ecba995245104f5eeddf share/opera@@{SUFFIX}/locale/en/en.zip
	"$@" LL ../../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/locale/en/license.txt
	"$@" NF 708bb756dc8721f541867bb9164837ba share/opera@@{SUFFIX}/locale/en/search.ini
	"$@" NF 2b71fb390e9c63e6c7384a00e10d49c7 share/opera@@{SUFFIX}/locale/en/standard_speeddial.ini
	"$@" NF 8cc0d49d5de699a46581f1e9a07c8c90 share/opera@@{SUFFIX}/locale/es-ES/bookmarks.adr
	"$@" NF 0a4302dca42f66e3bfcaacec41aa569e share/opera@@{SUFFIX}/locale/es-ES/es-ES.lng
	"$@" NF 885687c32546f37c98d354b3e88fe2a5 share/opera@@{SUFFIX}/locale/es-ES/search.ini
	"$@" NF 45803aa62c61987464904c6c174fa781 share/opera@@{SUFFIX}/locale/es-ES/standard_speeddial.ini
	"$@" NF cd6bd0f3a5715dc050626ea882aa1d98 share/opera@@{SUFFIX}/locale/es-LA/es-LA.lng
	"$@" NF 6f04b909ed33cfc7cae521f8f5ab8abd share/opera@@{SUFFIX}/locale/et/et.lng
	"$@" NF d29e06b8e07e8979a2b6d8888f2be175 share/opera@@{SUFFIX}/locale/fi/fi.lng
	"$@" NF ae2fd5edf875c0fafec906466cc339ac share/opera@@{SUFFIX}/locale/fr-CA/fr-CA.lng
	"$@" NF 111b339f00ca3b3aca44993f09e4fa03 share/opera@@{SUFFIX}/locale/fr/bookmarks.adr
	"$@" NF 172fc7c5c6460f1062075c315d106710 share/opera@@{SUFFIX}/locale/fr/fr.lng
	"$@" NF b451253b530b6903d2acdd00391107e4 share/opera@@{SUFFIX}/locale/fr/search.ini
	"$@" NF 25d66517b407516c3b53ed4ba8f87d27 share/opera@@{SUFFIX}/locale/fr/standard_speeddial.ini
	"$@" NF 5e2f485594bea672ddf9c322193439c5 share/opera@@{SUFFIX}/locale/fy/fy.lng
	"$@" NF 81e2ac4007be57cd7105f6ed29bee027 share/opera@@{SUFFIX}/locale/hi/hi.lng
	"$@" NF fde06cad8959f749a97b4d2d34c741e5 share/opera@@{SUFFIX}/locale/hr/hr.lng
	"$@" NF bc176094b5455b35042c535de6c99531 share/opera@@{SUFFIX}/locale/hu/bookmarks.adr
	"$@" NF e7d93da51bf73591fbbba835ecfa773b share/opera@@{SUFFIX}/locale/hu/hu.lng
	"$@" NF bad1166a4298138985c86823453e7110 share/opera@@{SUFFIX}/locale/hu/search.ini
	"$@" NF c6010c21e9a4c1fce19c9296ca5d2593 share/opera@@{SUFFIX}/locale/hu/standard_speeddial.ini
	"$@" NF c41f171de2cdb8c1212f33ec41d02e4f share/opera@@{SUFFIX}/locale/id/id.lng
	"$@" NF bbd6ee592eb08fa0019f5bf9a95664f7 share/opera@@{SUFFIX}/locale/it/bookmarks.adr
	"$@" NF 820baa667e5622df23b2377c03ba3b51 share/opera@@{SUFFIX}/locale/it/it.lng
	"$@" NF b38f6ccce5e246a77c7a97d2e0fdf7a4 share/opera@@{SUFFIX}/locale/it/search.ini
	"$@" NF 1ffe2ccf842d816a577edab81a374a5c share/opera@@{SUFFIX}/locale/it/standard_speeddial.ini
	"$@" NF 5e87f4e8391f055ffce6fbf64ae0d542 share/opera@@{SUFFIX}/locale/ja/bookmarks.adr
	"$@" NF 54d537947d366a3d918cbae1bfca7b62 share/opera@@{SUFFIX}/locale/ja/ja.lng
	"$@" LL ../../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/locale/ja/license.txt
	"$@" NF 88fa821195cec2a4a3aa9cb3bafe50de share/opera@@{SUFFIX}/locale/ja/search.ini
	"$@" NF e241ecfa93beebc6c7e13d3ff7088f2a share/opera@@{SUFFIX}/locale/ja/standard_speeddial.ini
	"$@" NF 4f363762ac88fffdf411a08db1733535 share/opera@@{SUFFIX}/locale/ka/ka.lng
	"$@" NF cf776ec39cdf778269ba46dd32671d09 share/opera@@{SUFFIX}/locale/ko/ko.lng
	"$@" NF c24fdeb674f59af01ecbe2bb4251810d share/opera@@{SUFFIX}/locale/lt/lt.lng
	"$@" NF 993b338cc39e25ad0729c0fdef8a2807 share/opera@@{SUFFIX}/locale/mk/mk.lng
	"$@" NF 1be92569b91543f3e5048bd2da8761a9 share/opera@@{SUFFIX}/locale/nb/bookmarks.adr
	"$@" NF ced98d929a5f6ffdced3a8712ac6710a share/opera@@{SUFFIX}/locale/nb/nb.lng
	"$@" NF c6ea0dcda91384043d5231bd81da4532 share/opera@@{SUFFIX}/locale/nb/search.ini
	"$@" NF e5ebff2e5dc9b5cf95150b9c09031c8a share/opera@@{SUFFIX}/locale/nb/standard_speeddial.ini
	"$@" NF f1030111e1489eede0e6713bfee024cc share/opera@@{SUFFIX}/locale/nl/nl.lng
	"$@" NF 4a3dc1a53a7a4e47ea2e051ae4752091 share/opera@@{SUFFIX}/locale/nn/nn.lng
	"$@" NF 659304a56668ac7dcda7d5ad537ac8ff share/opera@@{SUFFIX}/locale/pl/bookmarks.adr
	"$@" NF e94d6051a91e6685bf708e4fb936572a share/opera@@{SUFFIX}/locale/pl/pl.lng
	"$@" NF 9696d3ef143ad494a1d908768bc1f4cc share/opera@@{SUFFIX}/locale/pl/search.ini
	"$@" NF 76608f743a2c4c2964f8b05b76a6cd0a share/opera@@{SUFFIX}/locale/pl/standard_speeddial.ini
	"$@" NF faa813112964aa4ea6c63ab0456bbc32 share/opera@@{SUFFIX}/locale/pt-BR/pt-BR.lng
	"$@" NF 360fb632a899ad3c1737c0035021442a share/opera@@{SUFFIX}/locale/pt/pt.lng
	"$@" NF 7b95d32fd40dfb0471a9badd405abefc share/opera@@{SUFFIX}/locale/ro/bookmarks.adr
	"$@" NF 6c84338d11ad7a3750b5677e852a9179 share/opera@@{SUFFIX}/locale/ro/ro.lng
	"$@" NF 2824879f1758a036c151aca0895cc2b5 share/opera@@{SUFFIX}/locale/ro/search.ini
	"$@" NF d1ed970ff7b137d478bb94301da078e3 share/opera@@{SUFFIX}/locale/ro/standard_speeddial.ini
	"$@" NF d94fca69ab135306e4c3bc2775fd0f7f share/opera@@{SUFFIX}/locale/ru/bookmarks.adr
	"$@" NF d88305902a9daafaca782eab4a3b6c3c share/opera@@{SUFFIX}/locale/ru/ru.lng
	"$@" NF bf4d5982102fd55298a11acc7ad0d413 share/opera@@{SUFFIX}/locale/ru/search.ini
	"$@" NF 8beaab8ab5f5af7f0b9e52b31b35bea1 share/opera@@{SUFFIX}/locale/ru/standard_speeddial.ini
	"$@" NF 00143eebb2330e52ae4ec7d2dd881a8a share/opera@@{SUFFIX}/locale/sk/bookmarks.adr
	"$@" NF aa0deb1d50185ee1d792c4b5a302a526 share/opera@@{SUFFIX}/locale/sk/search.ini
	"$@" NF a1392a5543a33fa7f642dc85be32423b share/opera@@{SUFFIX}/locale/sk/sk.lng
	"$@" NF d1ed970ff7b137d478bb94301da078e3 share/opera@@{SUFFIX}/locale/sk/standard_speeddial.ini
	"$@" NF 4b674679dcc365056133fc7d34ba87f3 share/opera@@{SUFFIX}/locale/sr/bookmarks.adr
	"$@" NF b9cc80f70dd1090381957288d1fbe930 share/opera@@{SUFFIX}/locale/sr/search.ini
	"$@" NF 2bb816b449dc68282469aa4466ade723 share/opera@@{SUFFIX}/locale/sr/sr.lng
	"$@" NF d1ed970ff7b137d478bb94301da078e3 share/opera@@{SUFFIX}/locale/sr/standard_speeddial.ini
	"$@" NF 6e48a4dff392fbd0fefb0554a118cbf7 share/opera@@{SUFFIX}/locale/sv/sv.lng
	"$@" NF 3fb4a64b76e6b32cdbfe3c85f7e3bc83 share/opera@@{SUFFIX}/locale/ta/ta.lng
	"$@" NF 54a5ab6fcfb1547fe82423fd13febc73 share/opera@@{SUFFIX}/locale/te/te.lng
	"$@" NF cb129eb3be01f386e626d28fe37a0d0a share/opera@@{SUFFIX}/locale/tr/tr.lng
	"$@" NF c37440a5621ea20a11cef2629b591464 share/opera@@{SUFFIX}/locale/uk/bookmarks.adr
	"$@" NF 55821fc37380efbafff7e5c6364b2e85 share/opera@@{SUFFIX}/locale/uk/search.ini
	"$@" NF 8beaab8ab5f5af7f0b9e52b31b35bea1 share/opera@@{SUFFIX}/locale/uk/standard_speeddial.ini
	"$@" NF becebba524c7d9fc27b4b7146acb20e8 share/opera@@{SUFFIX}/locale/uk/uk.lng
	"$@" NF 67c6597d2e3d15c02a8047ff50ae8a28 share/opera@@{SUFFIX}/locale/vi/vi.lng
	"$@" NF 8e809f73f283b7e60d934753d9120b0e share/opera@@{SUFFIX}/locale/zh-cn/bookmarks.adr
	"$@" NF 3235503c4902337191fa85932e5205ed share/opera@@{SUFFIX}/locale/zh-cn/browser.js
	"$@" NF c4be76a9a81d15a8f18a20e4852f260b share/opera@@{SUFFIX}/locale/zh-cn/search.ini
	"$@" NF fa3dcf7fa65c11de3faa0f4fe6319ef2 share/opera@@{SUFFIX}/locale/zh-cn/standard_speeddial.ini
	"$@" NF d44fc31b4c96a97d22624455874764ca share/opera@@{SUFFIX}/locale/zh-cn/turbosettings.xml
	"$@" NF a1382642ca6e15e86275527e1759785d share/opera@@{SUFFIX}/locale/zh-cn/zh-cn.lng
	"$@" NF 3235503c4902337191fa85932e5205ed share/opera@@{SUFFIX}/locale/zh-hk/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/locale/zh-hk/turbosettings.xml
	"$@" NF 3235503c4902337191fa85932e5205ed share/opera@@{SUFFIX}/locale/zh-tw/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/locale/zh-tw/turbosettings.xml
	"$@" NF ddbc2d0c99b16b7bab8a1fb286d42a63 share/opera@@{SUFFIX}/locale/zh-tw/zh-tw.lng
	"$@" NF 1c24deadc6027ab1b7a2cecc7b7c00e4 share/opera@@{SUFFIX}/mathml.dtd
	"$@" NF 1a3d6411161ff50d13cb543ef82d6e7f share/opera@@{SUFFIX}/package-id.ini
	"$@" NF a6485d9b7be876314c624d291d6575a1 share/opera@@{SUFFIX}/package/lib/binprint.sh
	"$@" NF e7e881f582f55beb206ee28c694a9a1c share/opera@@{SUFFIX}/package/lib/layout_common.sh
	"$@" NF 45642baaad2a785da620edf0945690ff share/opera@@{SUFFIX}/package/lib/layout_deb.sh
	"$@" NF ef97aabff0bf409a1b8869d34668d727 share/opera@@{SUFFIX}/package/lib/layout_tar.sh
	"$@" NF a8282806a1e3b9bea0f279348f76d4c2 share/opera@@{SUFFIX}/package/lib/main.sh
	"$@" NF 5843ecaae9aad7e1e0f36bc0d245df45 share/opera@@{SUFFIX}/package/lib/normalize.sh
	"$@" NF 324d47f2b5cf6e64fc7b548883527d5f share/opera@@{SUFFIX}/package/lib/package_deb.sh
	"$@" NF f809760b9a5cce32e0dd95e0fd39eb36 share/opera@@{SUFFIX}/package/lib/package_rpm.sh
	"$@" NF bd8cc8ab3353a0c14c514fb25f74302f share/opera@@{SUFFIX}/package/lib/package_tar.sh
	"$@" NF b2a6eb60c20b9329acad9f519ca66ac0 share/opera@@{SUFFIX}/package/lib/xml.sh
	"$@" NX bca998e6f24510a22be340fea94f81f0 share/opera@@{SUFFIX}/package/main.sh
	"$@" NF 17d8ef3c00cbd37410bfd36c7e82f505 share/opera@@{SUFFIX}/skin/standard_skin.zip
	"$@" NF 4409675f6f9be4c100d887716d67f68e share/opera@@{SUFFIX}/skin/unix_skin.zip
	"$@" NF 06820e6bdd581b0a257e5e2648360457 share/opera@@{SUFFIX}/styles/about.css
	"$@" NF 4fb7c857524fd084449266fc70e9288b share/opera@@{SUFFIX}/styles/cache.css
	"$@" NF 8295c14370590319f3f116b0e8b358ec share/opera@@{SUFFIX}/styles/certinfo.css
	"$@" NF 37a280b560c9c26fdf1ca5e6b616901f share/opera@@{SUFFIX}/styles/config.css
	"$@" NF adc83d14afaa0ea76588cf340e36c3a5 share/opera@@{SUFFIX}/styles/contentblock.css
	"$@" NF 3ddaf96398ae99245f6b83e6dc676ac6 share/opera@@{SUFFIX}/styles/debug.css
	"$@" NF 056873687942e8aad4f0f297c1d4a57b share/opera@@{SUFFIX}/styles/dir.css
	"$@" NF fb8d712239bbe69e40c6c213f4fb47a2 share/opera@@{SUFFIX}/styles/error.css
	"$@" NF e9ee42b5c66c0367c1e02a1eeeca0776 share/opera@@{SUFFIX}/styles/history.css
	"$@" NF 3313969be29b130922a2551034194d42 share/opera@@{SUFFIX}/styles/im.css
	"$@" NF c8723eaa9387b79cf23f8f49c8bdb5b3 share/opera@@{SUFFIX}/styles/image.css
	"$@" NF 73b840d67b16a49008b7ed3d6aec38ab share/opera@@{SUFFIX}/styles/images/Opera_256x256.png
	"$@" NF 35a8968b802c4cd66f70631354cec397 share/opera@@{SUFFIX}/styles/images/bar.png
	"$@" NF 2e242ddd9c9679c584b0fe430b8948cf share/opera@@{SUFFIX}/styles/images/bkgd-rev.png
	"$@" NF b133b79753e118bafa077c594ed22724 share/opera@@{SUFFIX}/styles/images/bkgd.png
	"$@" NF 4289d8db3e0ad4cb825d34c969c142ff share/opera@@{SUFFIX}/styles/images/bullet.png
	"$@" NF cbdbb7032558dae6b04f7691c4b8a41a share/opera@@{SUFFIX}/styles/images/center.png
	"$@" NF f23a4e2a5c1a0db7cfac79d1e7b9ba23 share/opera@@{SUFFIX}/styles/images/corner.png
	"$@" NF b423f4149c868ccf56a15abb83228f09 share/opera@@{SUFFIX}/styles/images/customize.gif
	"$@" NF e715da6d7e5314261bdff2942251718a share/opera@@{SUFFIX}/styles/images/darkBox.png
	"$@" NF 0dfc37ae4404b4a6811e4876db6b7df1 share/opera@@{SUFFIX}/styles/images/defaultFavicon.png
	"$@" NF 71bbdb354d7e65183c86aa36a27ddd1d share/opera@@{SUFFIX}/styles/images/error.png
	"$@" NF ac4455a870ed9d5365377c2d9566240c share/opera@@{SUFFIX}/styles/images/file.png
	"$@" NF 86c6ac920bd2fbb7f538ff79d4e34395 share/opera@@{SUFFIX}/styles/images/flag.png
	"$@" NF c6ee6872a8d70dbec976edd11bdaf986 share/opera@@{SUFFIX}/styles/images/folder.png
	"$@" NF 4412303b131452fd536e794e93bdc8f5 share/opera@@{SUFFIX}/styles/images/hanger.png
	"$@" NF cd587bbd0135bcc9820de23318dbae41 share/opera@@{SUFFIX}/styles/images/header-expanded.png
	"$@" NF 533450be6ceff816d25c53fb8ca93cad share/opera@@{SUFFIX}/styles/images/header.png
	"$@" NF 0c313c9e4b635e06cc9fa61b734ad99b share/opera@@{SUFFIX}/styles/images/opera-icon-red.png
	"$@" NF bfdd24b5079de6de555f5477256a8ed3 share/opera@@{SUFFIX}/styles/images/opera-icon-white.png
	"$@" NF a2ed905f3862c320bb43e866721729d7 share/opera@@{SUFFIX}/styles/images/opera.png
	"$@" NF dbb6d41150a244186500718eda971047 share/opera@@{SUFFIX}/styles/images/page-bot.png
	"$@" NF d58ef56a726e38bb51da5adf696153fc share/opera@@{SUFFIX}/styles/images/red_center.png
	"$@" NF 3c6c895d2519efa918b4b3f46a897b67 share/opera@@{SUFFIX}/styles/images/red_left.png
	"$@" NF a28ba91c09ea75605d727e9bde7771b1 share/opera@@{SUFFIX}/styles/images/red_right.png
	"$@" NF a0c5f8a66f4e25f5d16ca1696a8f2e03 share/opera@@{SUFFIX}/styles/images/root.png
	"$@" NF 4aecd261352501fa1bad2c5e608df556 share/opera@@{SUFFIX}/styles/images/search.png
	"$@" NF b641cb9df6a4065ec64e6aac43cd5bc8 share/opera@@{SUFFIX}/styles/images/section.png
	"$@" NF 62f6287d95fafa0a8c56287e41760f33 share/opera@@{SUFFIX}/styles/images/smartGroup.png
	"$@" NF 2dab1572b02772c7a4fea3b5d51d1c48 share/opera@@{SUFFIX}/styles/images/tooltiptail.png
	"$@" NF f4dbc8a7b78e98448ad509bedca371c1 share/opera@@{SUFFIX}/styles/images/top.png
	"$@" NF 074b5a2c5386b6f2d12d172aa2f349fa share/opera@@{SUFFIX}/styles/images/warning.png
	"$@" NF 3a1f01c2181d79f8d579d26ca8c36b0e share/opera@@{SUFFIX}/styles/info.css
	"$@" NF e521ce4a0e2ad947af55f2fec3e30aee share/opera@@{SUFFIX}/styles/m2_welcome_message.mbs
	"$@" NF 174c0ece627639181db1815bff4f2f06 share/opera@@{SUFFIX}/styles/mail.css
	"$@" NF c92ea7dc91d7147ae4c5f51be8e9bf1e share/opera@@{SUFFIX}/styles/mathml.css
	"$@" NF e7dd3d81e0088d5fb56df880226cc7e1 share/opera@@{SUFFIX}/styles/message.css
	"$@" NF 3750093c67f26b7815262956cc5c5652 share/opera@@{SUFFIX}/styles/mime.css
	"$@" NF 9a2650a6f6b3ec7c876cf0630394db37 share/opera@@{SUFFIX}/styles/opera.css
	"$@" NF 77f475917c73883ae464e47aaa6c9314 share/opera@@{SUFFIX}/styles/plugins.css
	"$@" NF 4f25b1757ad75536fd6811254e7e4e64 share/opera@@{SUFFIX}/styles/private.css
	"$@" NF 028e214f2f1147678d50afc03705e7de share/opera@@{SUFFIX}/styles/search.css
	"$@" NF 4a1307a5ef44ce6f2699910d68353aaf share/opera@@{SUFFIX}/styles/unstyledxml.css
	"$@" NF 5bc0a8abcf1f533070d01415ecd7ad18 share/opera@@{SUFFIX}/styles/user/accessibility.css
	"$@" NF 0543fa1f23163fda70da1abca48ab27b share/opera@@{SUFFIX}/styles/user/altdebugger.css
	"$@" NF 83c445d3d83311a72e2b20ae3bcc31d2 share/opera@@{SUFFIX}/styles/user/classid.css
	"$@" NF 2fa6fc6187625a9b18f593bc0155347d share/opera@@{SUFFIX}/styles/user/contrastbw.css
	"$@" NF 3b14649c488639ccb271f4062fdbdbc3 share/opera@@{SUFFIX}/styles/user/contrastwb.css
	"$@" NF 768fce2463be25592a7a18cf5de76dd5 share/opera@@{SUFFIX}/styles/user/disablebreaks.css
	"$@" NF df59e1efbfe9e9e693007379ae36c7c7 share/opera@@{SUFFIX}/styles/user/disablefloats.css
	"$@" NF b219720e32060eae7275b10f89822044 share/opera@@{SUFFIX}/styles/user/disableforms.css
	"$@" NF ff377988948f88b59d786eb4b4f5f6bd share/opera@@{SUFFIX}/styles/user/disablepositioning.css
	"$@" NF a282ab27760ce5c9d08e5d19e3679f45 share/opera@@{SUFFIX}/styles/user/disabletables.css
	"$@" NF a89f5a95b9d93f02a5710a015e0eb1fa share/opera@@{SUFFIX}/styles/user/outline.css
	"$@" NF 1641b9745dcd076b4850bc79a5e3a745 share/opera@@{SUFFIX}/styles/user/structureblock.css
	"$@" NF 04db12198eb3e12f3fdb9818aff46cd7 share/opera@@{SUFFIX}/styles/user/structureinline.css
	"$@" NF b32564a2bc51123644e04b434c70d24b share/opera@@{SUFFIX}/styles/user/structuretables.css
	"$@" NF 76eadfb729094d536d2313e62ec5f02b share/opera@@{SUFFIX}/styles/user/tablelayout.css
	"$@" NF 0247352ff07de9a6f4a9ea9661fe54a9 share/opera@@{SUFFIX}/styles/user/toc.css
	"$@" NF a2fafb8c2521c958c3fbc5e49230e349 share/opera@@{SUFFIX}/styles/warning.css
	"$@" NF 674df2f111e88c15ed2db3b021cfbcd6 share/opera@@{SUFFIX}/styles/webfeeds.html
	"$@" NF a58d7f0685e93c12befea0abf0c168ef share/opera@@{SUFFIX}/styles/webstorage.css
	"$@" NF ff04b782043ab4c4b1b0d4114901af21 share/opera@@{SUFFIX}/styles/wml.css
	"$@" NF 4b624a3392e0f39f461d84605661cfb6 share/opera@@{SUFFIX}/ui/dialog.ini
	"$@" NF e6d9e74c12773dcf0d6a195b6b9e78ac share/opera@@{SUFFIX}/ui/fastforward.ini
	"$@" NF da76c3b77f28dff7e89f5474703b4390 share/opera@@{SUFFIX}/ui/standard_keyboard.ini
	"$@" NF 28d6edb5297e8e6f2c1ab62d204ff710 share/opera@@{SUFFIX}/ui/standard_keyboard_compat.ini
	"$@" NF 2d8a5dd2733460286ab9d19b4f4031ea share/opera@@{SUFFIX}/ui/standard_menu.ini
	"$@" NF d7cf0a3c5d6e4f50f04d186dae5dcd9b share/opera@@{SUFFIX}/ui/standard_mouse.ini
	"$@" NF 45b37a3a9c0fa3928a2ee28df998af2c share/opera@@{SUFFIX}/ui/standard_toolbar.ini
	"$@" NF b01aa479c697cca78cc5194d48cce397 share/opera@@{SUFFIX}/ui/unix_keyboard.ini
	"$@" NF 0248f60caa090a0462f83bdd88f38797 share/opera@@{SUFFIX}/unite/fileSharing.ua
	"$@" NF 20392ff0d7934ba65ed4f56f84cf2d49 share/opera@@{SUFFIX}/unite/fridge.ua
	"$@" NF 84c82ca7b1632de92c4860fd8d38a35f share/opera@@{SUFFIX}/unite/home.ua
	"$@" NF 13ed5c26937a25af29bfe4d21ddc38d4 share/opera@@{SUFFIX}/unite/mediaPlayer.ua
	"$@" NF 2b1cf781215c944f6e41c33fdbc0bf31 share/opera@@{SUFFIX}/unite/messenger.ua
	"$@" NF 68d73c0476686ec314dcde3a0b7c4ea5 share/opera@@{SUFFIX}/unite/photoSharing.ua
	"$@" NF 00b621e0470b90d28a1902b31ec38ee3 share/opera@@{SUFFIX}/unite/webserver.ua
}

available()
{
	command -v "$1" >/dev/null 2>&1
}

finalize_desktop()
{
	# Menu entries
	if available update-desktop-database
	then
		update-desktop-database $PREFIX/share/applications
	fi

	# MIME associations
	if available update-mime-database
	then
		mkdir -p $PREFIX/share/mime/packages
		update-mime-database $PREFIX/share/mime
		! rmdir $PREFIX/share/mime/packages >/dev/null 2>&1
	fi

	# Icons
	touch -c $PREFIX/share/icons/hicolor
	if available update-icon-caches
	then
		update-icon-caches -tq $PREFIX/share/icons/hicolor
	elif available gtk-update-icon-cache
	then
		gtk-update-icon-cache -tq $PREFIX/share/icons/hicolor
	fi
}

make_tempdir()
{
	if [ -z "$tempdir" ]
	then
		tempdir=$(mktemp -d -t opera-install.XXXXXXXX)
		if [ $? != 0 ]
		then
			ui_error "Cannot create a temporary directory, please set TMPDIR correctly"
		fi
	fi
}

cleanup()
{
	res=$?
	trap - 0
	if [ $res -gt 0 ] && $need_rollback
	then
		rollback
	fi
	if $need_ui_cleanup
	then
		ui_cleanup
	fi
	if [ -n "$tempdir" ]
	then
		rm -rf $tempdir
	fi
	exit $res
}

ui_widget()
{
	local width height
	message=$(
		echo "$2"
		if [ -n "$3" ]
		then
			echo
			cat "$3"
		fi
		if [ -n "$4" ]
		then
			echo
			echo "$4"
		fi
	)
	case $driver in
		dialog|whiptail)
			width=72
			if available fmt
			then
				message=$(echo "$message" | fmt -w $((width - 4)))
				height=$(($(echo "$message" | wc -l) + 6))
				if [ $1 = inputbox ]
				then
					height=$((height + 2))
				fi
			else
				height=20
			fi
			;;
	esac
	need_ui_cleanup=true
	case $driver in
		dialog|whiptail)
			exec 4>&1
			answer=$($driver --title "$windowtitle" --clear --$1 "$message" $height $width 2>&1 1>&4)
			res=$?
			exec 4>&-
			;;
		plain)
			echo
			echo "$message"
			case $1 in
				yesno)
					while true
					do
						read -p 'Please enter Y or N: ' answer
						case "$answer" in
							y*|Y*)
								res=0
								break
								;;
							n*|N*)
								res=1
								break
								;;
						esac
					done
					;;
				inputbox)
					read -p '>' answer
					;;
				msgbox|infobox)
					res=0
					;;
			esac
			;;
	esac
	need_ui_cleanup=false
	return $res
}

ui_info()
{
	ui_widget infobox "$@"
}

ui_message()
{
	ui_widget msgbox "$@"
}

ui_warn()
{
	ui_widget yesno "$1" "$2" 'Continue?' || exit
}

ui_error()
{
	ui_widget msgbox "$1" "$2" 'Installation aborted.'
	exit 1
}

ui_input()
{
	ui_widget inputbox "$1" "$2" ''
}

ui_menu()
{
	local text width height
	case $driver in
		dialog|whiptail)
			width=72
			if available fmt
			then
				height=$(($(echo "$text" | fmt -w $((width - 4)) | wc -l) + $# / 2 + 8))
			else
				height=20
			fi
			;;
	esac
	need_ui_cleanup=true
	case $driver in
		dialog|whiptail)
			text=$1
			shift
			exec 4>&1
			answer=$($driver --menu "$text" $height $width $(($# / 2)) "$@" 2>&1 1>&4) || exit
			res=$?
			exec 4>&-
			;;
		plain)
			echo
			echo "$1"
			shift
			(
				n=1
				while [ -n "$1" ]
				do
					echo "[$n] $2"
					n=$((n + 1))
					shift 2
				done
			)
			while true
			do
				read -p "Your choice: " answer
				if echo "$answer" | grep -q '^[0-9][0-9]*$' && [ $((answer >= 1)) = 1 ] && [ $((answer <= $# / 2)) = 1 ]
				then
					break
				fi
				echo "Please enter an integer between 1 and $(($# / 2))."
			done
			shift $((answer * 2 - 2))
			answer="$1"
			res=0
			;;
	esac
	need_ui_cleanup=false
	return $res
}

ui_progress_begin()
{
	if ! $talk
	then
		return
	fi
	if [ -z "$progress_max" ]
	then
		progress_max=$(iterate echo | wc -l)
	fi
	progress_cur=0
	need_ui_cleanup=true
	case $driver in
		whiptail)
			make_tempdir
			mkfifo $tempdir/gauge
			whiptail --gauge "$1" 0 72 0 <$tempdir/gauge &
			exec 3>$tempdir/gauge
			;;
		*)
			echo
			echo -n "$1"
			;;
	esac
}

ui_progress_advance()
{
	if ! $talk
	then
		return
	fi
	progress_cur=$((progress_cur + 1))
	case $driver in
		whiptail)
			echo $((progress_cur * 100 / progress_max)) >&3
			;;
		*)
			echo -n '.'
			;;
	esac
}

ui_progress_end()
{
	if ! $talk
	then
		return
	fi
	case $driver in
		whiptail)
			exec 3>&-
			rm $tempdir/gauge
			;;
		*)
			echo 'done'
			;;
	esac
	need_ui_cleanup=false
}

ui_cleanup()
{
	case $driver in
		dialog)
			exec 4>&-
			dialog --clear
			stty sane
			clear
			;;
		whiptail)
			exec 3>&- 4>&-
			stty sane
			clear
			;;
		plain)
			echo
			;;
	esac
}

ui_init()
{
	if [ -z "$TERM" -o "$TERM" = dumb ]
	then
		driver=plain
	elif available whiptail
	then
		driver=whiptail
	elif available dialog
	then
		driver=dialog
	else
		driver=plain
	fi
	answer=''
	progress_max=''
	windowtitle="$1"
}

common_init()
{
	interactive=true
	talk=true
	force=false
	need_rollback=false
	need_ui_cleanup=false
	repackage=false
	tempdir=''

	trap cleanup 0 INT QUIT TERM
}

common_opt()
{
	case "$1" in
		--text)
			driver=plain
			;;
		--unattended)
			interactive=false
			driver=plain
			;;
		--quiet)
			talk=false
			interactive=false
			driver=plain
			;;
		--force)
			force=true
			;;
		*)
			return 1
	esac
}

# EOF_COMMON

version()
{
	ui_message "This script installs Opera 11.00 build 1029 for Linux on i386.

Copyright (c) 1995-2010 Opera Software ASA. All rights reserved."
}

usage()
{
	version
	cat <<EOF

Options:

    --text          Select plain-text user interface.

    --unattended    Ask no questions. Implies --text.
                    The --prefix option becomes mandatory. 

    --quiet         Ask no questions and don't show progress.
                    Implies --text.

    --prefix /P     Specify installation directory. Opera will be
                    installed into /P/bin, /P/share and /P/lib.

    --user          Install for the current user. Default for non-root.
                    Alias for --prefix $HOME/.local.

    --system        Install for everybody. Default for root.
                    Alias for --prefix /usr/local.

    --suffix S      Append -S to the names of installed files and
                    directories. This allows to install several
                    versions of Opera side by side.

    --force         Ignore all kinds of errors and try to continue.

    --repackage R   Special mode for package maintainers. Extract files
                    into the staging directory R as if it were the
                    installation prefix, but prepare them to be
                    installed under the actual prefix. In this mode, no
                    finalizing actions, such as registration of menu
                    entries, are performed. Sanity checks are disabled.
                    Implies --unattended.

    --version       Show Opera version.

    --help          Show this message.
EOF
}

check_os()
{
	local name version arch res msg
	res=false
	name=$(uname -s)
	case "$name" in
		Linux)
			res=true
			;;
		*BSD)
			;;
	esac
	arch=$(uname -m)
	case "$arch" in
		i?86|i86pc)
			arch=i386
			;;
		amd64)
			arch=x86_64
			;;
	esac
	if [ "$arch" != i386 ]
	then
		res=false
	fi
	if ! $res
	then
		msg="You are running $name on $arch, but this package is intended for Linux on i386. If you choose to install it, the product may not work correctly."
		if $interactive
		then
			ui_warn "$msg"
		else
			ui_error "$msg"
		fi
	fi
}


install_file()
{
	local source dest existing tomake
	if [ -f $tempdir/damaged ] && ! $force
	then
		return 1
	fi
	source=$(use_suffix '' "$3")
	dest=$INTO/$(use_suffix "$SUFFIX" "$3")
	existing=$dest
	tomake=''
	while [ -n "$existing" -a ! -e "$existing" ]
	do
		tomake=$existing
		existing=${existing%/*}
	done
	if [ ! -d "$existing" -o "$dest" = "$existing" ]
	then
		if { rm -rf "$existing~" && mv "$existing" "$existing~"; } 2>$tempdir/error || $force
		then
			echo "mv '$existing~' '$existing'" >>$tempdir/rollback
			echo "rm -rf '$existing~'" >>$tempdir/commit
		else
			ui_error "Cannot make a backup copy of $existing -- see detailed error message below." $tempdir/error
			echo "$dest">>$tempdir/damaged
			return 1
		fi
	elif [ -n "$tomake" -a "$tomake" != "$dest" ]
	then
		if mkdir -p "${dest%/*}" 2>$tempdir/error || $force
		then
			echo "rm -rf '$tomake'" >>$tempdir/rollback
		else
			ui_error "Cannot create directory ${dest%/*} -- see detailed error message below." $tempdir/error
			echo "$dest">>$tempdir/damaged
			return 1
		fi
	fi
	case "$1" in
		N?)
			cp "$source" "$dest"
			;;
		L?)
			source=$(use_suffix "$SUFFIX" "$2")
			ln -s "$source" "$dest"
			;;
		P?)
			case "$dest" in
				*.gz)
					gzip -dc "$source" | process >"${dest%.gz}" && gzip -9 "${dest%.gz}"
					;;
				*)
					process <"$source" >"$dest"
					;;
			esac
			;;
		G?)
			generate_file "${source##*/}" | process >"$dest"
			;;
	esac 2>$tempdir/error || $force || {
		ui_error "Cannot install $dest -- see detailed error message below." $tempdir/error
		echo "$dest">>$tempdir/damaged
		return 1
	}
	case "$1" in
		?F)
			chmod 0644 "$dest"
			;;
		?X)
			chmod 0755 "$dest"
			;;
	esac 2>$tempdir/error || $force || {
		ui_error "Cannot install $dest -- see detailed error message below." $tempdir/error
		echo "$dest">>$tempdir/damaged
		return 1
	}
	ui_progress_advance
}

generate_file()
{
	case "$1" in
		opera)
			cat <<'EOF_generate_file'
#!/bin/sh
export OPERA_DIR=${OPERA_DIR:-@@{PREFIX}/share/opera@@{SUFFIX}}
export OPERA_PERSONALDIR=${OPERA_PERSONALDIR:-$HOME/.opera@@{SUFFIX}}
exec @@{PREFIX}/lib/opera@@{SUFFIX}/opera@@{SUFFIX} "$@"
EOF_generate_file
			;;
		opera-widget-manager)
			cat <<'EOF_generate_file'
#!/bin/sh
exec @@{PREFIX}/bin/opera@@{SUFFIX} --widgetmanager "$@"
EOF_generate_file
			;;
		uninstall-opera)
			sed -ne '1,/EOF_COMMON/p' "${0##*/}"
			cat <<EOF
PREFIX='$PREFIX'
SUFFIX='$SUFFIX'
EOF
			cat <<'EOF_generate_file'

usage()
{
	version
	cat <<EOF

Options:
    --text          Select plaintext user interface
    --unattended    Ask no questions
    --quiet         Ask no questions and don't show progress (implies --text)
    --force         Ignore all kinds of errors and try to continue
    --help          Show this message
EOF
}

uninstall_file()
{
	if $upgrade_mode
	then
		mv "$PREFIX/$3" "$PREFIX/$3~"
		echo "mv '$PREFIX/$3~' '$PREFIX/$3'" >>$install_tempdir/rollback
		echo "rm -f '$PREFIX/$3~'; rmdir -p '$PREFIX/${3%/*}' 2>/dev/null" >>$install_tempdir/commit
	else
		rm -f "$PREFIX/$3"
		rmdir -p "$PREFIX/${3%/*}" 2>/dev/null
	fi
	ui_progress_advance
}

common_init
ui_init 'Uninstalling Opera'

upgrade_mode=false

while [ -n "$1" ]
do
	common_opt "$1" || case "$1" in
		--upgrade)
			shift
			upgrade_mode=true
			talk=false
			interactive=false
			driver=plain
			force=true
			install_tempdir="$1"
			;;
		*)
			driver=plain
			usage
			exit
			;;
	esac
	shift
done

if $talk
then
	msg="This script uninstalls Opera 11.00 build 1029 for Linux on i386 installed as $PREFIX/bin/opera$SUFFIX."
	if $interactive
	then
		ui_warn "$msg"
	else
		ui_message "$msg"
	fi
fi

if [ ! -w $PREFIX ] && ! $force
then
	ui_error "You do not have write permissions for $PREFIX. Perhaps you should be uninstalling as root?"
fi

ui_progress_begin "Removing files"
iterate uninstall_file
ui_progress_end

if ! $upgrade_mode
then
	if $talk
	then
		ui_info "Finalizing uninstallation..."
	fi
	finalize_desktop
fi

if $talk
then
	ui_message "Opera has been uninstalled successfully. However, users' profile directories, which are by default ~/.opera$SUFFIX, have been left intact. You might want to delete them manually."
fi
EOF_generate_file
			;;
		*)
			return 1
	esac
}

rollback()
{
	ui_progress_begin "Undoing installation"
	iterate rollback_file
	ui_progress_end
	if [ -f $tempdir/rollback ]
	then
		. $tempdir/rollback
	fi
}

rollback_file()
{
	local dest
	dest=$INTO/$(use_suffix "$SUFFIX" "$3")
	rm -f "$dest"
	while [ -n "$dest" ]
	do
		dest=${dest%/*}
		case "$dest" in
			$INTO/*/opera*)
				rmdir "$dest" 2>/dev/null || break
				;;
		esac
	done
	ui_progress_advance
}

verify_file()
{
	local md5 file
	md5="$2"
	file=$(use_suffix '' "$3")
	case "$1" in
		[GL]?)
			return
			;;
	esac
	if [ ! -f "$file" ]
	then
		make_tempdir
		echo "$file" >>$tempdir/damaged
	elif [ -n "$md5prog" ]
	then
		if [ $(get_md5 "$file") != "$md5" ]
		then
			echo "$file" >>$tempdir/damaged
		fi
	fi
	ui_progress_advance
}

get_md5()
{
	if [ "$md5prog" = md5 ]
	then
		md5 -q "$1"
	else
		md5sum "$1" | { read sum file; echo $sum; }
	fi
}

use_suffix()
{
	echo "$2" | sed -e "s:@@{SUFFIX}:$1:g"
}

process()
{
	sed -e "s:@@{PREFIX}:$PREFIX:g;s:@@{SUFFIX}:$SUFFIX:g;s:@@{_SUFFIX}:$_SUFFIX:g;s:@@{USUFFIX}:$USUFFIX:g"
}

PREFIX=''
SUFFIX=''
_SUFFIX=''
USUFFIX=''
INTO=''
orig_pwd=$PWD

cd "${0%/*}"

common_init
ui_init 'Installing Opera'

if available md5
then
	md5prog=md5
elif available md5sum
then
	md5prog=md5sum
else
	md5prog=''
fi

while [ -n "$1" ]
do
	common_opt "$1" || case "$1" in
		--user)
			PREFIX=$HOME/.local
			;;
		--system)
			PREFIX=/usr/local
			;;
		--prefix)
			shift
			PREFIX="$1"
			;;
		--suffix)
			shift
			SUFFIX="$1"
			;;
		--repackage)
			shift
			INTO="$1"
			repackage=true
			interactive=false
			driver=plain
			case "$INTO" in
				'')
					ui_error "--repackage needs a non-empty argument."
					;;
				/*)
					;;
				*)
					INTO=$orig_pwd/$INTO
					;;
			esac
			;;
		--version)
			driver=plain
			version
			exit
			;;
		*)
			driver=plain
			usage
			exit
			;;
	esac
	shift
done

if $talk
then
	version
fi

if ! $interactive && [ -z "$PREFIX" ]
then
	ui_error "Please specify --prefix, --user or --system for unattended installation."
fi

if ! $force && ! $repackage
then
	check_os
fi

if [ $(id -u) -eq 0 ]
then
	prefix_who="running as root"
	prefix_for="for all users"
	prefix_default=/usr/local
else
	prefix_who="not running as root"
	prefix_for="just for yourself"
	prefix_default=$HOME/.local
fi

while true
do
	if [ -n "$PREFIX" ]
	then
		answer=$PREFIX
		bad_answer=ui_error
	elif $interactive
	then
		ui_input "Please choose an installation directory. Opera will be installed in bin, share and lib directories under the specified location.

Since you are $prefix_who, you probably want to install Opera $prefix_for. The recommended installation prefix in this case is $prefix_default.

Press Enter to accept the recommended location, or specify a different prefix." || exit
		if [ -z "$answer" ]
		then
			answer=$prefix_default
		fi
		bad_answer=ui_message
	else
		ui_warn "Since you are $prefix_who, assuming you want to install Opera $prefix_for. Using $prefix_default as the installation prefix."
		answer=$prefix_default
		bad_answer=ui_error
	fi
	case "$answer" in
		''|[!/]*)
			$bad_answer "The installation prefix must begin with a slash."
			continue
			;;
		*' '*)
			$bad_answer "The installation prefix is not allowed to contain whitespace."
			continue
			;;
	esac
	while [ $answer != / -a "${answer%/}" != $answer ]
	do
		answer=${answer%/}
	done
	if $repackage
	then
		PREFIX=$answer
		break
	fi
	prefix_parent=$answer
	while [ ! -e "$prefix_parent" ]
	do
		prefix_parent=${prefix_parent%/*}
		if [ -z "$prefix_parent" ]
		then
			prefix_parent=/
		fi
	done
	if [ -w $prefix_parent ]
	then
		PREFIX=$answer
		break
	elif [ -d $prefix_parent ]
	then
		$bad_answer "You do not have write permissions for $prefix_parent. Perhaps you should be installing as root?"
	else
		$bad_answer "$prefix_parent is not a directory."
	fi
done

if [ -z "$INTO" ]
then
	INTO=$PREFIX
fi

while true
do
	if [ -n "$SUFFIX" ]
	then
		answer=$SUFFIX
		bad_answer=ui_error
	elif $interactive
	then
		ui_input "You can install Opera with a suffix, so that the installation does not conflict with other installations of Opera you might have. For example, if you specify 11.00 as the suffix, Opera files will be installed under $PREFIX/share/opera-11.00 and $PREFIX/lib/opera-11.00, and you will have to run $PREFIX/bin/opera-11.00 to run it. The default location of your profile directory will then be ~/.opera-11.00. If you want that, please enter the suffix without the leading dash below. Only Latin letters, digits, periods and dashes are allowed.

Accepting the empty default is a safe choice." || exit
		bad_answer=ui_message
	else
		answer=''
	fi	
	case "$answer" in
		*[!-.A-Za-z0-9]*)
			$bad_answer "The installation suffix is only allowed to contain Latin letters, digits, periods and dashes."
			;;
		[-.]*)
			$bad_answer "The installation suffix cannot start with a period or dash."
			;;
		'')
			SUFFIX=''
			_SUFFIX=''
			USUFFIX=''
			break
			;;
		*)
			SUFFIX=-$answer
			_SUFFIX=" $answer"
			USUFFIX=-$(echo $answer | tr a-z A-Z)
			break
			;;
	esac
done

if ! $repackage && [ -f "$INTO/share/opera$SUFFIX/package-id.ini" ]
then
	upgrade_version=$(sed -ne '/^Version=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	upgrade_build=$(sed -ne '/^Build=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		if [ "$upgrade_version" = 11.00 -a "$upgrade_build" = 1029 ]
		then
			msg="The chosen location already contains an installation of Opera 11.00 build 1029. The installer will attempt to refresh it."
		else
			msg="The chosen location contains an installation of Opera $upgrade_version build $upgrade_build. The installer will attempt to upgrade it to version 11.00 build 1029."
		fi
		if $interactive
		then
			ui_warn "$msg"
		elif $talk
		then
			ui_message "$msg"
		fi
	fi
fi

ui_progress_begin "Verifying package"
iterate verify_file
ui_progress_end

if [ -f $tempdir/damaged ] && ! $force
then
	ui_error "The following files are missing or damaged:" $tempdir/damaged
fi

if ! $force && ! $repackage
then
	need_rollback=true
fi

make_tempdir

if ! $repackage && [ -x "$PREFIX/bin/uninstall-opera$SUFFIX" ]
then
	if $talk
	then
		ui_info "Removing old files..."
	fi
	"$PREFIX/bin/uninstall-opera$SUFFIX" --upgrade $tempdir
fi

ui_progress_begin "Installing files"
iterate install_file
ui_progress_end

need_rollback=false

if ! $repackage
then
	if $talk
	then
		ui_info "Finalizing installation..."
	fi
	if [ -f $tempdir/commit ]
	then
		. $tempdir/commit
	fi
	if $talk && [ "$driver" = plain ]
	then
		finalize_desktop
	else
		finalize_desktop >/dev/null 2>&1
	fi
fi

if $talk
then
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		done='upgraded'
	else
		done='installed'
	fi
	if $repackage
	then
		ui_message "Opera has been installed successfully under $INTO as if it were $PREFIX."
	else
		ui_message "Opera has been $done successfully. To start, run $PREFIX/bin/opera$SUFFIX (you might want to add this location to your PATH).

To manage installed Opera Widgets, run $PREFIX/bin/opera-widget-manager$SUFFIX.

To uninstall Opera, run $PREFIX/bin/uninstall-opera$SUFFIX."
	fi
fi
