#!/bin/sh

iterate()
{
	"$@" NF b29c0845cfd8eb68f25dd58c624c161f lib/opera@@{SUFFIX}/gstreamer/LGPL.txt
	"$@" NF 73659016adcaf3ee98af1b956145e21f lib/opera@@{SUFFIX}/gstreamer/README.txt
	"$@" NF f30c33a3c5572b39adcb6550c66d11b9 lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperamatroska.so
	"$@" NF 9f660411bdab87f78c8cbba6436158f3 lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperavp8.so
	"$@" NF 623840f01be1516fb267cda0e2015aac lib/opera@@{SUFFIX}/liboperagtk.so
	"$@" NF b0760151ee70175e63e375d2caddc0c8 lib/opera@@{SUFFIX}/liboperakde4.so
	"$@" NX b964e83e8adc3659f4642fdd13c86783 lib/opera@@{SUFFIX}/opera@@{SUFFIX}
	"$@" NX 49b012c3586b688e5a3dd29210a9e589 lib/opera@@{SUFFIX}/operaplugincleaner
	"$@" NX fdcbcc2b10a970bb63540373c1508b9d 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 76a5919d1950d5d3171636079f0b3f1b share/doc/opera@@{SUFFIX}/LICENSE
	"$@" NF e86ae7a20a7bc688af75a10d628de734 share/icons/hicolor/128x128/apps/opera-browser@@{SUFFIX}.png
	"$@" NF a8364412e16fd47998b58733e5a17ce6 share/icons/hicolor/128x128/apps/opera-widget-manager@@{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
	"$@" 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
	"$@" 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
	"$@" NF 5de5a30096324d2fb9d48928d49912c3 share/icons/hicolor/24x24/mimetypes/opera-unite-application@@{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
	"$@" 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
	"$@" 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 5a01f0263e5ad8efbc725a53652a0cc3 share/icons/hicolor/scalable/apps/opera-widget-manager@@{SUFFIX}.svg
	"$@" NF ce8e498331bac7751149b7012e5c39ee share/icons/hicolor/scalable/apps/opera-widget@@{SUFFIX}.svg
	"$@" NF 957818c8871b44f4b490a51f90134fa5 share/icons/hicolor/scalable/mimetypes/opera-unite-application@@{SUFFIX}.svg
	"$@" PF 165743749de0505bda40496e7e51084c share/man/man1/opera-widget-manager@@{SUFFIX}.1.gz
	"$@" PF 582b2860feb1adc3327befb4e8d4bfbe 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
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/defaults/license.txt
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/defaults/license.txt
	"$@" NF 7639816920477f8dc3937b7499e1b1c4 share/opera@@{SUFFIX}/defaults/mailproviders.xml
	"$@" NF 0cb4ac60c1cf45bd08ec4d5d62da5c02 share/opera@@{SUFFIX}/defaults/plugin-ignore.ini
	"$@" NF 0df7b46284d719e30df16cc83cca8232 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 9ce38cf66412831284ecdfc3bc5c82e9 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 f2146c4e079de1be6ca816e8edc7a826 share/opera@@{SUFFIX}/locale/be/be.lng
	"$@" NF 19a88943998948a20598ebe4dce9b898 share/opera@@{SUFFIX}/locale/be/bookmarks.adr
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/be/license.txt
	"$@" NF 2f3c9d71ea6cc8c7ee7a0ae56b0f2ebd share/opera@@{SUFFIX}/locale/be/search.ini
	"$@" NF 8beaab8ab5f5af7f0b9e52b31b35bea1 share/opera@@{SUFFIX}/locale/be/standard_speeddial.ini
	"$@" NF 42f96806fbdad2aacd5f56cc9ba53893 share/opera@@{SUFFIX}/locale/bg/bg.lng
	"$@" NF fbaacb092f6fb389ba57f810d31792bd share/opera@@{SUFFIX}/locale/bg/bookmarks.adr
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/bg/license.txt
	"$@" 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 961433d4deafaafccbf608bc56ba4d9c share/opera@@{SUFFIX}/locale/cs/cs.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/cs/license.txt
	"$@" NF 4ee0580554e7c1ddc24d609bbb5c7253 share/opera@@{SUFFIX}/locale/cs/search.ini
	"$@" NF d1ed970ff7b137d478bb94301da078e3 share/opera@@{SUFFIX}/locale/cs/standard_speeddial.ini
	"$@" NF 5c11166ac2e193ce9b91e9c33e3b10a1 share/opera@@{SUFFIX}/locale/da/da.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/da/license.txt
	"$@" NF 2abbf8026ccfde44516071ca973fb618 share/opera@@{SUFFIX}/locale/de/bookmarks.adr
	"$@" NF b7d883f7227fda9e94c1a16827cee838 share/opera@@{SUFFIX}/locale/de/de.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/de/license.txt
	"$@" NF 42efa4b67073e9fbf848505d16da9230 share/opera@@{SUFFIX}/locale/de/search.ini
	"$@" NF f81c9efe32b2cfcc6f7a7411a3ead4bd share/opera@@{SUFFIX}/locale/de/standard_speeddial.ini
	"$@" NF 851fa685817df6d5d4f35f3badc8264a share/opera@@{SUFFIX}/locale/el/el.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/el/license.txt
	"$@" NF de7b89f83721003bbb56d81088565825 share/opera@@{SUFFIX}/locale/en-GB/bookmarks.adr
	"$@" NF 907f670dc785849a37d223be22805318 share/opera@@{SUFFIX}/locale/en-GB/en-GB.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/en-GB/license.txt
	"$@" 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 6bda5370b7047e8380b4eb252b4af2b6 share/opera@@{SUFFIX}/locale/en/en.lng
	"$@" NF 4d2a8c5b20f4f11dd0d9ce9639f8bdff share/opera@@{SUFFIX}/locale/en/en.zip
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/en/license.txt
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/en/license.txt
	"$@" NF 598e2213da5c31d1f5caf6f0e08b5033 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 b61440131bbcbcfef4875c66578936f0 share/opera@@{SUFFIX}/locale/es-ES/es-ES.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/es-ES/license.txt
	"$@" NF 885687c32546f37c98d354b3e88fe2a5 share/opera@@{SUFFIX}/locale/es-ES/search.ini
	"$@" NF 45803aa62c61987464904c6c174fa781 share/opera@@{SUFFIX}/locale/es-ES/standard_speeddial.ini
	"$@" NF d036d3b029d38022449f5ee9da558206 share/opera@@{SUFFIX}/locale/es-LA/es-LA.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/es-LA/license.txt
	"$@" NF e9f6b2c56ac8a803e25436a70acc2d4b share/opera@@{SUFFIX}/locale/et/et.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/et/license.txt
	"$@" NF bc47b9f3777b959304a20cfd05612ee2 share/opera@@{SUFFIX}/locale/fi/fi.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/fi/license.txt
	"$@" NF 9a3e8a32a6d433871057e9e15d8f3798 share/opera@@{SUFFIX}/locale/fr-CA/fr-CA.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/fr-CA/license.txt
	"$@" NF 111b339f00ca3b3aca44993f09e4fa03 share/opera@@{SUFFIX}/locale/fr/bookmarks.adr
	"$@" NF fc25033a47e1037396c2047ded923af1 share/opera@@{SUFFIX}/locale/fr/fr.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/fr/license.txt
	"$@" NF b451253b530b6903d2acdd00391107e4 share/opera@@{SUFFIX}/locale/fr/search.ini
	"$@" NF 25d66517b407516c3b53ed4ba8f87d27 share/opera@@{SUFFIX}/locale/fr/standard_speeddial.ini
	"$@" NF dd481b4a0417dbd3da4272cb16d66234 share/opera@@{SUFFIX}/locale/fy/fy.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/fy/license.txt
	"$@" NF ecf46641013043d7c44bcf1f13afc598 share/opera@@{SUFFIX}/locale/hi/hi.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/hi/license.txt
	"$@" NF 672ede0d9add642524ef8ee27f3c8d3d share/opera@@{SUFFIX}/locale/hr/hr.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/hr/license.txt
	"$@" NF bc176094b5455b35042c535de6c99531 share/opera@@{SUFFIX}/locale/hu/bookmarks.adr
	"$@" NF de83b8b63963d034a8e72442a6cb5dee share/opera@@{SUFFIX}/locale/hu/hu.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/hu/license.txt
	"$@" NF bad1166a4298138985c86823453e7110 share/opera@@{SUFFIX}/locale/hu/search.ini
	"$@" NF c6010c21e9a4c1fce19c9296ca5d2593 share/opera@@{SUFFIX}/locale/hu/standard_speeddial.ini
	"$@" NF c60f0b15e9623479e35a5933ed06179e share/opera@@{SUFFIX}/locale/id/id.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/id/license.txt
	"$@" NF bbd6ee592eb08fa0019f5bf9a95664f7 share/opera@@{SUFFIX}/locale/it/bookmarks.adr
	"$@" NF e3d6999786de5b116c79e60805830542 share/opera@@{SUFFIX}/locale/it/it.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/it/license.txt
	"$@" 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 24948a9c82ea0d3fb55b1e2ae9f186ba share/opera@@{SUFFIX}/locale/ja/ja.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/ja/license.txt
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b 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 b1a835826f24262526ed382d5c399cdb share/opera@@{SUFFIX}/locale/ka/ka.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/ka/license.txt
	"$@" NF e7260452b3550f70cbc5779edbbd73af share/opera@@{SUFFIX}/locale/ko/ko.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/ko/license.txt
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/lt/license.txt
	"$@" NF 19aab683725328aeff55de94f37cd60c share/opera@@{SUFFIX}/locale/lt/lt.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/mk/license.txt
	"$@" NF c05a1f7043bb478e73eb8575019646ec share/opera@@{SUFFIX}/locale/mk/mk.lng
	"$@" NF 1be92569b91543f3e5048bd2da8761a9 share/opera@@{SUFFIX}/locale/nb/bookmarks.adr
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/nb/license.txt
	"$@" NF 1ae35f93f919194253c4ca193988cf49 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 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/nl/license.txt
	"$@" NF cfc86464f2c21c6771d48e67e8fdc303 share/opera@@{SUFFIX}/locale/nl/nl.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/nn/license.txt
	"$@" NF 38f5c988add624cae343299b694db096 share/opera@@{SUFFIX}/locale/nn/nn.lng
	"$@" NF 659304a56668ac7dcda7d5ad537ac8ff share/opera@@{SUFFIX}/locale/pl/bookmarks.adr
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/pl/license.txt
	"$@" NF dcdd712c6b2dd68e42dc973626c3b813 share/opera@@{SUFFIX}/locale/pl/pl.lng
	"$@" NF e633ed82cd51753eb6368867d94b2eca share/opera@@{SUFFIX}/locale/pl/search.ini
	"$@" NF 76608f743a2c4c2964f8b05b76a6cd0a share/opera@@{SUFFIX}/locale/pl/standard_speeddial.ini
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/pt-BR/license.txt
	"$@" NF ae001ba7fb89a1bd6806c772c4c53072 share/opera@@{SUFFIX}/locale/pt-BR/pt-BR.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/pt/license.txt
	"$@" NF 3076d1557b06a8d97c9824acfa1e0640 share/opera@@{SUFFIX}/locale/pt/pt.lng
	"$@" NF 7b95d32fd40dfb0471a9badd405abefc share/opera@@{SUFFIX}/locale/ro/bookmarks.adr
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/ro/license.txt
	"$@" NF ec5917add390137f7b43f135c377ff07 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 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/ru/license.txt
	"$@" NF c054e74160440729ed6de1193b99c601 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 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/sk/license.txt
	"$@" NF aa0deb1d50185ee1d792c4b5a302a526 share/opera@@{SUFFIX}/locale/sk/search.ini
	"$@" NF b939af4ea9f03d8b1302cc71384273bf 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 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/sr/license.txt
	"$@" NF b9cc80f70dd1090381957288d1fbe930 share/opera@@{SUFFIX}/locale/sr/search.ini
	"$@" NF 34f7b57e3958a60b201ef416a323ff27 share/opera@@{SUFFIX}/locale/sr/sr.lng
	"$@" NF d1ed970ff7b137d478bb94301da078e3 share/opera@@{SUFFIX}/locale/sr/standard_speeddial.ini
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/sv/license.txt
	"$@" NF b992f452ac9309cad429f34a62b5cb18 share/opera@@{SUFFIX}/locale/sv/sv.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/ta/license.txt
	"$@" NF 964128d11db4934b1be2962732e86a72 share/opera@@{SUFFIX}/locale/ta/ta.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/te/license.txt
	"$@" NF 4b957043b3e1e62ee45ee201af444062 share/opera@@{SUFFIX}/locale/te/te.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/tr/license.txt
	"$@" NF b323f4f85db0d74f189688678b269e99 share/opera@@{SUFFIX}/locale/tr/tr.lng
	"$@" NF c37440a5621ea20a11cef2629b591464 share/opera@@{SUFFIX}/locale/uk/bookmarks.adr
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/uk/license.txt
	"$@" NF 1dcd633858fbb62293f9d4f5c25f5db2 share/opera@@{SUFFIX}/locale/uk/search.ini
	"$@" NF 8beaab8ab5f5af7f0b9e52b31b35bea1 share/opera@@{SUFFIX}/locale/uk/standard_speeddial.ini
	"$@" NF e0cc539c261b3b6ee268aa0d934f5783 share/opera@@{SUFFIX}/locale/uk/uk.lng
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/vi/license.txt
	"$@" NF 35dab62acbf42efd9dde4f32ff299f2a share/opera@@{SUFFIX}/locale/vi/vi.lng
	"$@" NF 8e809f73f283b7e60d934753d9120b0e share/opera@@{SUFFIX}/locale/zh-cn/bookmarks.adr
	"$@" NF 0b9bccfadaa392d0f1b016dbf926f73b share/opera@@{SUFFIX}/locale/zh-cn/browser.js
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/zh-cn/license.txt
	"$@" NF d3cee2d1488f0762c66b8fe7e1143faa 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 b5bd7da613b138c6f8363f0dd77131e4 share/opera@@{SUFFIX}/locale/zh-cn/zh-cn.lng
	"$@" NF 0b9bccfadaa392d0f1b016dbf926f73b share/opera@@{SUFFIX}/locale/zh-hk/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/locale/zh-hk/turbosettings.xml
	"$@" NF 0b9bccfadaa392d0f1b016dbf926f73b share/opera@@{SUFFIX}/locale/zh-tw/browser.js
	"$@" NF 76a5919d1950d5d3171636079f0b3f1b share/opera@@{SUFFIX}/locale/zh-tw/license.txt
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/locale/zh-tw/turbosettings.xml
	"$@" NF d712f5d39273523bd864610f2cee51fe share/opera@@{SUFFIX}/locale/zh-tw/zh-tw.lng
	"$@" NF 1c24deadc6027ab1b7a2cecc7b7c00e4 share/opera@@{SUFFIX}/mathml.dtd
	"$@" NF 2f6f4e30e5937fdcd7970b9f0722027e 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 23a7c89f979f1ebaa19d686215419cb7 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 ff056f269d707f8c2a75f44d8f238b94 share/opera@@{SUFFIX}/skin/standard_skin.zip
	"$@" NF edd52339aed2f086373a28c4fd5cb642 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 f402b8c8fef9a813ed35f6e092ab4850 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 fb7897053fcb415e726c0b3ae1731749 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 d761663842176dd50562d4dd958b7239 share/opera@@{SUFFIX}/styles/opera.css
	"$@" NF 11bc76ab5a9b24026eaf47499235d50b 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 9b8a12dbe6f509e1a12883151c82b1af share/opera@@{SUFFIX}/styles/warning.css
	"$@" NF fcd37b874980d2d0853e9a83c8a753f0 share/opera@@{SUFFIX}/styles/webfeeds.html
	"$@" NF 9edd8f497d3202b7e6d7a9c6e6b98bf8 share/opera@@{SUFFIX}/styles/webstorage.css
	"$@" NF ff04b782043ab4c4b1b0d4114901af21 share/opera@@{SUFFIX}/styles/wml.css
	"$@" NF 44367a5664e3758fceb12d7d0528da4f share/opera@@{SUFFIX}/ui/dialog.ini
	"$@" NF e6d9e74c12773dcf0d6a195b6b9e78ac share/opera@@{SUFFIX}/ui/fastforward.ini
	"$@" NF 4b89c9cf11674df523384245185a7568 share/opera@@{SUFFIX}/ui/standard_keyboard.ini
	"$@" NF f9382758f2d97867e0aa24108e23b6ee share/opera@@{SUFFIX}/ui/standard_keyboard_compat.ini
	"$@" NF 73da727b5f351382f76a639294ed9da6 share/opera@@{SUFFIX}/ui/standard_menu.ini
	"$@" NF 409158c2199b46dfc673b1376af89142 share/opera@@{SUFFIX}/ui/standard_mouse.ini
	"$@" NF 7c34d320f929cf6d69303ece37f98ac0 share/opera@@{SUFFIX}/ui/standard_toolbar.ini
	"$@" NF b01aa479c697cca78cc5194d48cce397 share/opera@@{SUFFIX}/ui/unix_keyboard.ini
	"$@" NF d9a02b6e8e9f341fe463f250b7b7dd67 share/opera@@{SUFFIX}/unite/fileSharing.ua
	"$@" NF 30426f4359ba440c8aece697c03bb211 share/opera@@{SUFFIX}/unite/fridge.ua
	"$@" NF 83a3cb65a82d63a17aa6719a0ea17c4c share/opera@@{SUFFIX}/unite/home.ua
	"$@" NF baab1086f0c25a3ac6b107bf6c930764 share/opera@@{SUFFIX}/unite/mediaPlayer.ua
	"$@" NF 730f6c9984aa36542dcbdcec08dff0b9 share/opera@@{SUFFIX}/unite/messenger.ua
	"$@" NF 0f520296a0af413f7efdb0aa4a2aeec1 share/opera@@{SUFFIX}/unite/photoSharing.ua
	"$@" NF 622c2ba235e450d1507805f8b194b4a4 share/opera@@{SUFFIX}/unite/webserver.ua
	"$@" GX - bin/opera@@{SUFFIX}
	"$@" GX - bin/opera-widget-manager@@{SUFFIX}
	"$@" GX - bin/uninstall-opera@@{SUFFIX}
}

available()
{
	which "$1" >/dev/null 2>&1
}

finalize_xdg()
{
	if available update-desktop-database
	then
		update-desktop-database $PREFIX/share/applications
	fi
	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
}

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
	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 10.61 build 6430 for FreeBSD on i386.

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

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)
    --user          Install for the current user (into ~/.local)
    --system        Install for everybody (into /usr/local)
    --suffix S      Append S to the names of installed files and directories
    --force         Ignore all kinds of errors and try to continue
    --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)
			;;
		*BSD)
			res=true
			;;
	esac
	arch=$(uname -m)
	case "$arch" in
		i?86|i86pc)
			arch=i386
			;;
		x86_64)
			arch=amd64
			;;
		ppc|ppc64)
			arch=powerpc
			;;
	esac
	if [ "$arch" != i386 ]
	then
		res=false
	fi
	if ! $res
	then
		msg="You are running $name on $arch, but this package is intended for FreeBSD 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=$PREFIX/$(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"
			;;
		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
INSTALLMODE='$INSTALLMODE'
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 10.61 build 6430 for FreeBSD on i386 installed as $PREFIX/bin/opera$SUFFIX."
	if $interactive
	then
		ui_warn "$msg"
	else
		ui_message "$msg"
	fi
fi

if [ $INSTALLMODE = system -a ! -w /usr/local ] && ! $force
then
	ui_error "You must be root to uninstall software installed system-wide."
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_xdg
fi

if $talk
then
	case $INSTALLMODE in
		user)
			ui_message "Opera has been uninstalled successfully. However, your profile directory, which is by default ~/.opera$SUFFIX, has been left intact. You might want to delete it manually."
			;;
		system)
			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."
			;;
	esac
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=$PREFIX/$(use_suffix "$SUFFIX" "$3")
	rm -f "$dest"
	while [ -n "$dest" ]
	do
		dest=${dest%/*}
		case "$dest" in
			$PREFIX/*/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
		G?)
			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"
}

INSTALLMODE=''
SUFFIX=''
_SUFFIX=''
USUFFIX=''

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)
			INSTALLMODE=user
			;;
		--system)
			INSTALLMODE=system
			;;
		--suffix)
			shift
			SUFFIX="$1"
			;;
		--version)
			driver=plain
			version
			exit
			;;
		*)
			driver=plain
			usage
			exit
			;;
	esac
	shift
done

if $talk
then
	version
fi

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

if ! $force
then
	check_os
fi

if [ -z "$INSTALLMODE" ]
then
	if [ ! -w /usr/local ] && ! $force
	then
		ui_warn "Because you are not logged in as root, Opera will be installed just for you (under $HOME/.local). If this is not what you want, please try again as root."
		INSTALLMODE=user
	else
		ui_menu "Would you like to install Opera globally (under /usr/local) or just for yourself (under $HOME/.local)?" "system" "Install globally" "user" "Install just for user $USER"
		INSTALLMODE=$answer
	fi
fi

case $INSTALLMODE in
	user)
		PREFIX=$HOME/.local
		;;
	system)
		PREFIX=/usr/local
		if [ ! -w $PREFIX ] && ! $force
		then
			ui_error "You must be root to install software system-wide."
		fi
		;;
esac

if $interactive && [ -z "$SUFFIX" ]
then
	bad_suffix=ui_info
else
	bad_suffix=ui_error
fi

while true
do
	if $interactive && [ -z "$SUFFIX" ]
	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 10.61 as the suffix, Opera files will be installed under $PREFIX/share/opera-10.61 and $PREFIX/lib/opera-10.61, and you will have to run $PREFIX/bin/opera-10.61 to run it. The default location of your profile directory will then be ~/.opera-10.61. 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
		SUFFIX=$answer
	fi
	case "$SUFFIX" in
		*[!-.A-Za-z0-9]*)
			$bad_suffix "The installation suffix is only allowed to contain Latin letters, digits, periods and dashes."
			;;
		[-.]*)
			$bad_suffix "The installation suffix cannot start with a period or dash."
			;;
		'')
			_SUFFIX=''
			USUFFIX=''
			break
			;;
		*)
			_SUFFIX=" $SUFFIX"
			USUFFIX=-$(echo $SUFFIX | tr a-z A-Z)
			SUFFIX=-$SUFFIX
			break
			;;
	esac
	SUFFIX=''
done

if [ -f "$PREFIX/share/opera$SUFFIX/package-id.ini" ]
then
	upgrade_version=$(sed -ne '/^Version=\(.*\)$/s//\1/p' "$PREFIX/share/opera$SUFFIX/package-id.ini")
	upgrade_build=$(sed -ne '/^Build=\(.*\)$/s//\1/p' "$PREFIX/share/opera$SUFFIX/package-id.ini")
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		if [ "$upgrade_version" = 10.61 -a "$upgrade_build" = 6430 ]
		then
			msg="The chosen location already contains an installation of Opera 10.61 build 6430. 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 10.61 build 6430."
		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
then
	need_rollback=true
fi

make_tempdir

if [ -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

if $talk
then
	ui_info "Finalizing installation..."
fi
need_rollback=false
if [ -f $tempdir/commit ]
then
	. $tempdir/commit
fi
finalize_xdg

if $talk
then
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		done='upgraded'
	else
		done='installed'
	fi
	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
