tag: add unit test for new license API

https://bugzilla.gnome.org/show_bug.cgi?id=646868
This commit is contained in:
Tim-Philipp Müller 2011-07-15 13:19:38 +01:00
parent 25f8f6453e
commit 54e143c5e7
4 changed files with 566 additions and 2 deletions

View file

@ -12,7 +12,8 @@ TESTS_ENVIRONMENT = \
$(REGISTRY_ENVIRONMENT) \
GST_PLUGIN_SYSTEM_PATH= \
GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(GST_PLUGINS_DIR) \
GST_PLUGIN_LOADING_WHITELIST="gstreamer:gst-plugins-base@$(top_builddir)"
GST_PLUGIN_LOADING_WHITELIST="gstreamer:gst-plugins-base@$(top_builddir)" \
GST_TAG_LICENSE_TRANSLATIONS_DICT="$(top_srcdir)/gst-libs/gst/tag/license-translations.dict"
# ths core dumps of some machines have PIDs appended

View file

@ -2,7 +2,7 @@
*
* unit tests for the tag support library
*
* Copyright (C) 2006-2009 Tim-Philipp Müller <tim centricular net>
* Copyright (C) 2006-2011 Tim-Philipp Müller <tim centricular net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@ -29,6 +29,7 @@
#include <gst/tag/tag.h>
#include <gst/base/gstbytewriter.h>
#include <string.h>
#include <locale.h>
GST_START_TEST (test_parse_extended_comment)
{
@ -750,6 +751,190 @@ GST_START_TEST (test_language_utils)
GST_END_TEST;
#define SPECIFIC_L "http://creativecommons.org/licenses/by-nc-sa/2.5/scotland/"
#define GENERIC_L "http://creativecommons.org/licenses/by/1.0/"
#define DERIVED_L "http://creativecommons.org/licenses/sampling+/1.0/tw/"
GST_START_TEST (test_license_utils)
{
GHashTable *ht;
GError *err = NULL;
gchar **liblicense_refs, **r;
gchar **lrefs, **l;
gchar *path, *data = NULL;
gsize data_len;
/* test jurisdiction-specific license */
fail_unless_equals_int (gst_tag_get_license_flags (SPECIFIC_L), 0x01010703);
fail_unless_equals_string (gst_tag_get_license_nick (SPECIFIC_L),
"CC BY-NC-SA 2.5 SCOTLAND");
fail_unless_equals_string (gst_tag_get_license_version (SPECIFIC_L), "2.5");
fail_unless_equals_string (gst_tag_get_license_jurisdiction (SPECIFIC_L),
"scotland");
g_setenv ("GST_TAG_LICENSE_TRANSLATIONS_LANG", "C", TRUE);
fail_unless_equals_string (gst_tag_get_license_title (SPECIFIC_L),
"Attribution-NonCommercial-ShareAlike");
fail_unless (gst_tag_get_license_description (SPECIFIC_L) == NULL);
/* test generic license */
fail_unless_equals_int (gst_tag_get_license_flags (GENERIC_L), 0x01000307);
fail_unless_equals_string (gst_tag_get_license_nick (GENERIC_L), "CC BY 1.0");
fail_unless_equals_string (gst_tag_get_license_version (GENERIC_L), "1.0");
fail_unless (gst_tag_get_license_jurisdiction (GENERIC_L) == NULL);
g_setenv ("GST_TAG_LICENSE_TRANSLATIONS_LANG", "C", TRUE);
fail_unless_equals_string (gst_tag_get_license_title (GENERIC_L),
"Attribution");
fail_unless_equals_string (gst_tag_get_license_description (GENERIC_L),
"You must attribute the work in the manner specified by the author or licensor.");
#ifdef ENABLE_NLS
g_setenv ("GST_TAG_LICENSE_TRANSLATIONS_LANG", "fr", TRUE);
fail_unless_equals_string (gst_tag_get_license_title (GENERIC_L),
"Paternité");
fail_unless_equals_string (gst_tag_get_license_description (GENERIC_L),
"L'offrant autorise les autres à reproduire, distribuer et communiquer cette création au public. En échange, les personnes qui acceptent ce contrat doivent citer le nom de l'auteur original.");
#endif
/* test derived (for a certain jurisdiction) license */
fail_unless_equals_int (gst_tag_get_license_flags (DERIVED_L), 0x0100030d);
fail_unless_equals_string (gst_tag_get_license_nick (DERIVED_L),
"CC SAMPLING+ 1.0 TW");
fail_unless_equals_string (gst_tag_get_license_version (DERIVED_L), "1.0");
fail_unless_equals_string (gst_tag_get_license_jurisdiction (DERIVED_L),
"tw");
g_setenv ("GST_TAG_LICENSE_TRANSLATIONS_LANG", "C", TRUE);
fail_unless_equals_string (gst_tag_get_license_title (DERIVED_L),
"Sampling Plus");
fail_unless_equals_string (gst_tag_get_license_description (GENERIC_L),
"You must attribute the work in the manner specified by the author or licensor.");
/* test all we know about */
lrefs = gst_tag_get_licenses ();
fail_unless (lrefs != NULL);
fail_unless (*lrefs != NULL);
GST_INFO ("%d licenses", g_strv_length (lrefs));
fail_unless (g_strv_length (lrefs) >= 376);
ht = g_hash_table_new (g_str_hash, g_str_equal);
for (l = lrefs; l != NULL && *l != NULL; ++l) {
const gchar *ref, *nick, *title, *desc G_GNUC_UNUSED;
ref = (const gchar *) *l;
nick = gst_tag_get_license_nick (ref);
title = gst_tag_get_license_title (ref);
desc = gst_tag_get_license_description (ref);
fail_unless (nick != NULL, "no nick for license '%s'", ref);
fail_unless (title != NULL, "no title for license '%s'", ref);
GST_LOG ("ref: %s [nick %s]", ref, (nick) ? nick : "none");
GST_TRACE (" %s : %s", title, (desc) ? desc : "(no description)");
/* make sure the list contains no duplicates */
fail_if (g_hash_table_lookup (ht, (gpointer) ref) != NULL);
g_hash_table_insert (ht, (gpointer) ref, (gpointer) "meep");
}
g_hash_table_destroy (ht);
/* trailing slash shouldn't make a difference */
fail_unless_equals_int (gst_tag_get_license_flags
("http://creativecommons.org/licenses/by-nd/1.0/"),
gst_tag_get_license_flags
("http://creativecommons.org/licenses/by-nd/1.0"));
fail_unless_equals_string (gst_tag_get_license_nick
("http://creativecommons.org/licenses/by-nd/1.0/"),
gst_tag_get_license_nick
("http://creativecommons.org/licenses/by-nd/1.0"));
fail_unless_equals_int (gst_tag_get_license_flags
("http://creativecommons.org/licenses/by-nd/2.5/ca/"),
gst_tag_get_license_flags
("http://creativecommons.org/licenses/by-nd/2.5/ca"));
fail_unless_equals_string (gst_tag_get_license_nick
("http://creativecommons.org/licenses/by-nd/2.5/ca/"),
gst_tag_get_license_nick
("http://creativecommons.org/licenses/by-nd/2.5/ca"));
/* unknown licenses */
fail_unless (gst_tag_get_license_nick
("http://creativecommons.org/licenses/by-nd/25/ca/") == NULL);
fail_unless (gst_tag_get_license_flags
("http://creativecommons.org/licenses/by-nd/25/ca") == 0);
fail_unless (gst_tag_get_license_jurisdiction
("http://creativecommons.org/licenses/by-nd/25/ca/") == NULL);
fail_unless (gst_tag_get_license_jurisdiction
("http://creativecommons.org/licenses/by-nd/25/ca") == NULL);
fail_unless (gst_tag_get_license_title
("http://creativecommons.org/licenses/by-nd/25/ca") == NULL);
fail_unless (gst_tag_get_license_jurisdiction
("http://creativecommons.org/licenses/by-nd/25/ca") == NULL);
/* unknown prefixes even */
fail_unless (gst_tag_get_license_nick
("http://copycats.org/licenses/by-nd/2.5/ca/") == NULL);
fail_unless (gst_tag_get_license_flags
("http://copycats.org/licenses/by-nd/2.5/ca") == 0);
fail_unless (gst_tag_get_license_jurisdiction
("http://copycats.org/licenses/by-nd/2.5/ca/") == NULL);
fail_unless (gst_tag_get_license_title
("http://copycats.org/licenses/by-nd/2.5/ca/") == NULL);
fail_unless (gst_tag_get_license_description
("http://copycats.org/licenses/by-nd/2.5/ca/") == NULL);
/* read list of liblicense refs from file */
path = g_build_filename (GST_TEST_FILES_PATH, "license-uris", NULL);
GST_LOG ("reading file '%s'", path);
if (!g_file_get_contents (path, &data, &data_len, &err)) {
g_error ("error loading test file: %s", err->message);
}
while (data_len > 0 && data[data_len - 1] == '\n') {
data[--data_len] = '\0';
}
liblicense_refs = g_strsplit (data, "\n", -1);
g_free (data);
g_free (path);
fail_unless (g_strv_length (lrefs) >= g_strv_length (liblicense_refs));
for (r = liblicense_refs; r != NULL && *r != NULL; ++r) {
GstTagLicenseFlags flags;
const gchar *version, *nick, *jur;
const gchar *ref = *r;
GST_LOG ("liblicense ref: %s", ref);
version = gst_tag_get_license_version (ref);
if (strstr (ref, "publicdomain") != NULL)
fail_unless (version == NULL);
else
fail_unless (version != NULL, "expected version for license %s", ref);
flags = gst_tag_get_license_flags (ref);
fail_unless (flags != 0, "expected non-zero flags for license %s", ref);
nick = gst_tag_get_license_nick (ref);
fail_unless (nick != NULL, "expected nick for license %s", ref);
jur = gst_tag_get_license_jurisdiction (ref);
if (g_str_has_suffix (ref, "de/")) {
fail_unless_equals_string (jur, "de");
} else if (g_str_has_suffix (ref, "scotland")) {
fail_unless_equals_string (jur, "scotland");
} else if (g_str_has_suffix (ref, ".0") || g_str_has_suffix (ref, ".1")) {
fail_unless (jur == NULL);
}
}
g_strfreev (liblicense_refs);
g_strfreev (lrefs);
}
GST_END_TEST;
GST_START_TEST (test_xmp_formatting)
{
GstTagList *list;
@ -1634,6 +1819,7 @@ tag_suite (void)
tcase_add_test (tc_chain, test_id3_tags);
tcase_add_test (tc_chain, test_id3v1_utf8_tag);
tcase_add_test (tc_chain, test_language_utils);
tcase_add_test (tc_chain, test_license_utils);
tcase_add_test (tc_chain, test_xmp_formatting);
tcase_add_test (tc_chain, test_xmp_parsing);
tcase_add_test (tc_chain, test_xmp_tags_serialization_deserialization);

View file

@ -1,5 +1,6 @@
EXTRA_DIST = \
623663.mts \
hls.m3u8 \
license-uris \
partialframe.mjpeg \
test.mp3

376
tests/files/license-uris Normal file
View file

@ -0,0 +1,376 @@
http://creativecommons.org/licenses/by/1.0/fi/
http://creativecommons.org/licenses/by/1.0/il/
http://creativecommons.org/licenses/by/1.0/nl/
http://creativecommons.org/licenses/by/1.0/
http://creativecommons.org/licenses/by/2.0/at/
http://creativecommons.org/licenses/by/2.0/au/
http://creativecommons.org/licenses/by/2.0/be/
http://creativecommons.org/licenses/by/2.0/br/
http://creativecommons.org/licenses/by/2.0/ca/
http://creativecommons.org/licenses/by/2.0/cl/
http://creativecommons.org/licenses/by/2.0/de/
http://creativecommons.org/licenses/by/2.0/es/
http://creativecommons.org/licenses/by/2.0/fr/
http://creativecommons.org/licenses/by/2.0/hr/
http://creativecommons.org/licenses/by/2.0/it/
http://creativecommons.org/licenses/by/2.0/jp/
http://creativecommons.org/licenses/by/2.0/kr/
http://creativecommons.org/licenses/by/2.0/nl/
http://creativecommons.org/licenses/by/2.0/pl/
http://creativecommons.org/licenses/by/2.0/
http://creativecommons.org/licenses/by/2.0/tw/
http://creativecommons.org/licenses/by/2.0/uk/
http://creativecommons.org/licenses/by/2.0/za/
http://creativecommons.org/licenses/by/2.1/au/
http://creativecommons.org/licenses/by/2.1/es/
http://creativecommons.org/licenses/by/2.1/jp/
http://creativecommons.org/licenses/by/2.5/ar/
http://creativecommons.org/licenses/by/2.5/au/
http://creativecommons.org/licenses/by/2.5/bg/
http://creativecommons.org/licenses/by/2.5/br/
http://creativecommons.org/licenses/by/2.5/ca/
http://creativecommons.org/licenses/by/2.5/ch/
http://creativecommons.org/licenses/by/2.5/cn/
http://creativecommons.org/licenses/by/2.5/co/
http://creativecommons.org/licenses/by/2.5/dk/
http://creativecommons.org/licenses/by/2.5/es/
http://creativecommons.org/licenses/by/2.5/hr/
http://creativecommons.org/licenses/by/2.5/hu/
http://creativecommons.org/licenses/by/2.5/il/
http://creativecommons.org/licenses/by/2.5/in/
http://creativecommons.org/licenses/by/2.5/it/
http://creativecommons.org/licenses/by/2.5/mk/
http://creativecommons.org/licenses/by/2.5/mt/
http://creativecommons.org/licenses/by/2.5/mx/
http://creativecommons.org/licenses/by/2.5/my/
http://creativecommons.org/licenses/by/2.5/nl/
http://creativecommons.org/licenses/by/2.5/pe/
http://creativecommons.org/licenses/by/2.5/pl/
http://creativecommons.org/licenses/by/2.5/pt/
http://creativecommons.org/licenses/by/2.5/
http://creativecommons.org/licenses/by/2.5/scotland/
http://creativecommons.org/licenses/by/2.5/se/
http://creativecommons.org/licenses/by/2.5/si/
http://creativecommons.org/licenses/by/2.5/tw/
http://creativecommons.org/licenses/by/2.5/za/
http://creativecommons.org/licenses/by/3.0/
http://creativecommons.org/licenses/by/3.0/us/
http://creativecommons.org/licenses/by-nc/1.0/fi/
http://creativecommons.org/licenses/by-nc/1.0/il/
http://creativecommons.org/licenses/by-nc/1.0/nl/
http://creativecommons.org/licenses/by-nc/1.0/
http://creativecommons.org/licenses/by-nc/2.0/at/
http://creativecommons.org/licenses/by-nc/2.0/au/
http://creativecommons.org/licenses/by-nc/2.0/be/
http://creativecommons.org/licenses/by-nc/2.0/br/
http://creativecommons.org/licenses/by-nc/2.0/ca/
http://creativecommons.org/licenses/by-nc/2.0/cl/
http://creativecommons.org/licenses/by-nc/2.0/de/
http://creativecommons.org/licenses/by-nc/2.0/es/
http://creativecommons.org/licenses/by-nc/2.0/fr/
http://creativecommons.org/licenses/by-nc/2.0/hr/
http://creativecommons.org/licenses/by-nc/2.0/it/
http://creativecommons.org/licenses/by-nc/2.0/jp/
http://creativecommons.org/licenses/by-nc/2.0/kr/
http://creativecommons.org/licenses/by-nc/2.0/nl/
http://creativecommons.org/licenses/by-nc/2.0/pl/
http://creativecommons.org/licenses/by-nc/2.0/
http://creativecommons.org/licenses/by-nc/2.0/tw/
http://creativecommons.org/licenses/by-nc/2.0/uk/
http://creativecommons.org/licenses/by-nc/2.0/za/
http://creativecommons.org/licenses/by-nc/2.1/au/
http://creativecommons.org/licenses/by-nc/2.1/es/
http://creativecommons.org/licenses/by-nc/2.1/jp/
http://creativecommons.org/licenses/by-nc/2.5/ar/
http://creativecommons.org/licenses/by-nc/2.5/au/
http://creativecommons.org/licenses/by-nc/2.5/bg/
http://creativecommons.org/licenses/by-nc/2.5/br/
http://creativecommons.org/licenses/by-nc/2.5/ca/
http://creativecommons.org/licenses/by-nc/2.5/ch/
http://creativecommons.org/licenses/by-nc/2.5/cn/
http://creativecommons.org/licenses/by-nc/2.5/co/
http://creativecommons.org/licenses/by-nc/2.5/dk/
http://creativecommons.org/licenses/by-nc/2.5/es/
http://creativecommons.org/licenses/by-nc/2.5/hr/
http://creativecommons.org/licenses/by-nc/2.5/hu/
http://creativecommons.org/licenses/by-nc/2.5/il/
http://creativecommons.org/licenses/by-nc/2.5/in/
http://creativecommons.org/licenses/by-nc/2.5/it/
http://creativecommons.org/licenses/by-nc/2.5/mk/
http://creativecommons.org/licenses/by-nc/2.5/mt/
http://creativecommons.org/licenses/by-nc/2.5/mx/
http://creativecommons.org/licenses/by-nc/2.5/my/
http://creativecommons.org/licenses/by-nc/2.5/nl/
http://creativecommons.org/licenses/by-nc/2.5/pe/
http://creativecommons.org/licenses/by-nc/2.5/pl/
http://creativecommons.org/licenses/by-nc/2.5/pt/
http://creativecommons.org/licenses/by-nc/2.5/
http://creativecommons.org/licenses/by-nc/2.5/scotland/
http://creativecommons.org/licenses/by-nc/2.5/se/
http://creativecommons.org/licenses/by-nc/2.5/si/
http://creativecommons.org/licenses/by-nc/2.5/tw/
http://creativecommons.org/licenses/by-nc/2.5/za/
http://creativecommons.org/licenses/by-nc/3.0/
http://creativecommons.org/licenses/by-nc/3.0/us/
http://creativecommons.org/licenses/by-nc-nd/2.0/at/
http://creativecommons.org/licenses/by-nc-nd/2.0/au/
http://creativecommons.org/licenses/by-nc-nd/2.0/be/
http://creativecommons.org/licenses/by-nc-nd/2.0/br/
http://creativecommons.org/licenses/by-nc-nd/2.0/ca/
http://creativecommons.org/licenses/by-nc-nd/2.0/cl/
http://creativecommons.org/licenses/by-nc-nd/2.0/de/
http://creativecommons.org/licenses/by-nc-nd/2.0/es/
http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
http://creativecommons.org/licenses/by-nc-nd/2.0/hr/
http://creativecommons.org/licenses/by-nc-nd/2.0/it/
http://creativecommons.org/licenses/by-nc-nd/2.0/jp/
http://creativecommons.org/licenses/by-nc-nd/2.0/kr/
http://creativecommons.org/licenses/by-nc-nd/2.0/nl/
http://creativecommons.org/licenses/by-nc-nd/2.0/pl/
http://creativecommons.org/licenses/by-nc-nd/2.0/
http://creativecommons.org/licenses/by-nc-nd/2.0/tw/
http://creativecommons.org/licenses/by-nc-nd/2.0/uk/
http://creativecommons.org/licenses/by-nc-nd/2.0/za/
http://creativecommons.org/licenses/by-nc-nd/2.1/au/
http://creativecommons.org/licenses/by-nc-nd/2.1/es/
http://creativecommons.org/licenses/by-nc-nd/2.1/jp/
http://creativecommons.org/licenses/by-nc-nd/2.5/ar/
http://creativecommons.org/licenses/by-nc-nd/2.5/au/
http://creativecommons.org/licenses/by-nc-nd/2.5/bg/
http://creativecommons.org/licenses/by-nc-nd/2.5/br/
http://creativecommons.org/licenses/by-nc-nd/2.5/ca/
http://creativecommons.org/licenses/by-nc-nd/2.5/ch/
http://creativecommons.org/licenses/by-nc-nd/2.5/cn/
http://creativecommons.org/licenses/by-nc-nd/2.5/co/
http://creativecommons.org/licenses/by-nc-nd/2.5/dk/
http://creativecommons.org/licenses/by-nc-nd/2.5/es/
http://creativecommons.org/licenses/by-nc-nd/2.5/hr/
http://creativecommons.org/licenses/by-nc-nd/2.5/hu/
http://creativecommons.org/licenses/by-nc-nd/2.5/il/
http://creativecommons.org/licenses/by-nc-nd/2.5/in/
http://creativecommons.org/licenses/by-nc-nd/2.5/it/
http://creativecommons.org/licenses/by-nc-nd/2.5/mk/
http://creativecommons.org/licenses/by-nc-nd/2.5/mt/
http://creativecommons.org/licenses/by-nc-nd/2.5/mx/
http://creativecommons.org/licenses/by-nc-nd/2.5/my/
http://creativecommons.org/licenses/by-nc-nd/2.5/nl/
http://creativecommons.org/licenses/by-nc-nd/2.5/pe/
http://creativecommons.org/licenses/by-nc-nd/2.5/pl/
http://creativecommons.org/licenses/by-nc-nd/2.5/pt/
http://creativecommons.org/licenses/by-nc-nd/2.5/
http://creativecommons.org/licenses/by-nc-nd/2.5/scotland/
http://creativecommons.org/licenses/by-nc-nd/2.5/se/
http://creativecommons.org/licenses/by-nc-nd/2.5/si/
http://creativecommons.org/licenses/by-nc-nd/2.5/tw/
http://creativecommons.org/licenses/by-nc-nd/2.5/za/
http://creativecommons.org/licenses/by-nc-nd/3.0/
http://creativecommons.org/licenses/by-nc-nd/3.0/us/
http://creativecommons.org/licenses/by-nc-sa/1.0/fi/
http://creativecommons.org/licenses/by-nc-sa/1.0/il/
http://creativecommons.org/licenses/by-nc-sa/1.0/nl/
http://creativecommons.org/licenses/by-nc-sa/1.0/
http://creativecommons.org/licenses/by-nc-sa/2.0/at/
http://creativecommons.org/licenses/by-nc-sa/2.0/au/
http://creativecommons.org/licenses/by-nc-sa/2.0/be/
http://creativecommons.org/licenses/by-nc-sa/2.0/br/
http://creativecommons.org/licenses/by-nc-sa/2.0/ca/
http://creativecommons.org/licenses/by-nc-sa/2.0/cl/
http://creativecommons.org/licenses/by-nc-sa/2.0/de/
http://creativecommons.org/licenses/by-nc-sa/2.0/es/
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
http://creativecommons.org/licenses/by-nc-sa/2.0/hr/
http://creativecommons.org/licenses/by-nc-sa/2.0/it/
http://creativecommons.org/licenses/by-nc-sa/2.0/jp/
http://creativecommons.org/licenses/by-nc-sa/2.0/kr/
http://creativecommons.org/licenses/by-nc-sa/2.0/nl/
http://creativecommons.org/licenses/by-nc-sa/2.0/pl/
http://creativecommons.org/licenses/by-nc-sa/2.0/
http://creativecommons.org/licenses/by-nc-sa/2.0/tw/
http://creativecommons.org/licenses/by-nc-sa/2.0/uk/
http://creativecommons.org/licenses/by-nc-sa/2.0/za/
http://creativecommons.org/licenses/by-nc-sa/2.1/au/
http://creativecommons.org/licenses/by-nc-sa/2.1/es/
http://creativecommons.org/licenses/by-nc-sa/2.1/jp/
http://creativecommons.org/licenses/by-nc-sa/2.5/ar/
http://creativecommons.org/licenses/by-nc-sa/2.5/au/
http://creativecommons.org/licenses/by-nc-sa/2.5/bg/
http://creativecommons.org/licenses/by-nc-sa/2.5/br/
http://creativecommons.org/licenses/by-nc-sa/2.5/ca/
http://creativecommons.org/licenses/by-nc-sa/2.5/ch/
http://creativecommons.org/licenses/by-nc-sa/2.5/cn/
http://creativecommons.org/licenses/by-nc-sa/2.5/co/
http://creativecommons.org/licenses/by-nc-sa/2.5/dk/
http://creativecommons.org/licenses/by-nc-sa/2.5/es/
http://creativecommons.org/licenses/by-nc-sa/2.5/hr/
http://creativecommons.org/licenses/by-nc-sa/2.5/hu/
http://creativecommons.org/licenses/by-nc-sa/2.5/il/
http://creativecommons.org/licenses/by-nc-sa/2.5/in/
http://creativecommons.org/licenses/by-nc-sa/2.5/it/
http://creativecommons.org/licenses/by-nc-sa/2.5/mk/
http://creativecommons.org/licenses/by-nc-sa/2.5/mt/
http://creativecommons.org/licenses/by-nc-sa/2.5/mx/
http://creativecommons.org/licenses/by-nc-sa/2.5/my/
http://creativecommons.org/licenses/by-nc-sa/2.5/nl/
http://creativecommons.org/licenses/by-nc-sa/2.5/pe/
http://creativecommons.org/licenses/by-nc-sa/2.5/pl/
http://creativecommons.org/licenses/by-nc-sa/2.5/pt/
http://creativecommons.org/licenses/by-nc-sa/2.5/
http://creativecommons.org/licenses/by-nc-sa/2.5/scotland/
http://creativecommons.org/licenses/by-nc-sa/2.5/se/
http://creativecommons.org/licenses/by-nc-sa/2.5/si/
http://creativecommons.org/licenses/by-nc-sa/2.5/tw/
http://creativecommons.org/licenses/by-nc-sa/2.5/za/
http://creativecommons.org/licenses/by-nc-sa/3.0/
http://creativecommons.org/licenses/by-nc-sa/3.0/us/
http://creativecommons.org/licenses/by-nd/1.0/fi/
http://creativecommons.org/licenses/by-nd/1.0/il/
http://creativecommons.org/licenses/by-nd/1.0/nl/
http://creativecommons.org/licenses/by-nd/1.0/
http://creativecommons.org/licenses/by-nd/2.0/at/
http://creativecommons.org/licenses/by-nd/2.0/au/
http://creativecommons.org/licenses/by-nd/2.0/be/
http://creativecommons.org/licenses/by-nd/2.0/br/
http://creativecommons.org/licenses/by-nd/2.0/ca/
http://creativecommons.org/licenses/by-nd/2.0/cl/
http://creativecommons.org/licenses/by-nd/2.0/de/
http://creativecommons.org/licenses/by-nd/2.0/es/
http://creativecommons.org/licenses/by-nd/2.0/fr/
http://creativecommons.org/licenses/by-nd/2.0/hr/
http://creativecommons.org/licenses/by-nd/2.0/it/
http://creativecommons.org/licenses/by-nd/2.0/jp/
http://creativecommons.org/licenses/by-nd/2.0/kr/
http://creativecommons.org/licenses/by-nd/2.0/nl/
http://creativecommons.org/licenses/by-nd/2.0/pl/
http://creativecommons.org/licenses/by-nd/2.0/
http://creativecommons.org/licenses/by-nd/2.0/tw/
http://creativecommons.org/licenses/by-nd/2.0/uk/
http://creativecommons.org/licenses/by-nd/2.0/za/
http://creativecommons.org/licenses/by-nd/2.1/au/
http://creativecommons.org/licenses/by-nd/2.1/es/
http://creativecommons.org/licenses/by-nd/2.1/jp/
http://creativecommons.org/licenses/by-nd/2.5/ar/
http://creativecommons.org/licenses/by-nd/2.5/au/
http://creativecommons.org/licenses/by-nd/2.5/bg/
http://creativecommons.org/licenses/by-nd/2.5/br/
http://creativecommons.org/licenses/by-nd/2.5/ca/
http://creativecommons.org/licenses/by-nd/2.5/ch/
http://creativecommons.org/licenses/by-nd/2.5/cn/
http://creativecommons.org/licenses/by-nd/2.5/co/
http://creativecommons.org/licenses/by-nd/2.5/dk/
http://creativecommons.org/licenses/by-nd/2.5/es/
http://creativecommons.org/licenses/by-nd/2.5/hr/
http://creativecommons.org/licenses/by-nd/2.5/hu/
http://creativecommons.org/licenses/by-nd/2.5/il/
http://creativecommons.org/licenses/by-nd/2.5/in/
http://creativecommons.org/licenses/by-nd/2.5/it/
http://creativecommons.org/licenses/by-nd/2.5/mk/
http://creativecommons.org/licenses/by-nd/2.5/mt/
http://creativecommons.org/licenses/by-nd/2.5/mx/
http://creativecommons.org/licenses/by-nd/2.5/my/
http://creativecommons.org/licenses/by-nd/2.5/nl/
http://creativecommons.org/licenses/by-nd/2.5/pe/
http://creativecommons.org/licenses/by-nd/2.5/pl/
http://creativecommons.org/licenses/by-nd/2.5/pt/
http://creativecommons.org/licenses/by-nd/2.5/
http://creativecommons.org/licenses/by-nd/2.5/scotland/
http://creativecommons.org/licenses/by-nd/2.5/se/
http://creativecommons.org/licenses/by-nd/2.5/si/
http://creativecommons.org/licenses/by-nd/2.5/tw/
http://creativecommons.org/licenses/by-nd/2.5/za/
http://creativecommons.org/licenses/by-nd/3.0/
http://creativecommons.org/licenses/by-nd/3.0/us/
http://creativecommons.org/licenses/by-nd-nc/1.0/fi/
http://creativecommons.org/licenses/by-nd-nc/1.0/il/
http://creativecommons.org/licenses/by-nd-nc/1.0/nl/
http://creativecommons.org/licenses/by-nd-nc/1.0/
http://creativecommons.org/licenses/by-nd-nc/2.0/jp/
http://creativecommons.org/licenses/by-sa/1.0/fi/
http://creativecommons.org/licenses/by-sa/1.0/il/
http://creativecommons.org/licenses/by-sa/1.0/nl/
http://creativecommons.org/licenses/by-sa/1.0/
http://creativecommons.org/licenses/by-sa/2.0/at/
http://creativecommons.org/licenses/by-sa/2.0/au/
http://creativecommons.org/licenses/by-sa/2.0/be/
http://creativecommons.org/licenses/by-sa/2.0/br/
http://creativecommons.org/licenses/by-sa/2.0/ca/
http://creativecommons.org/licenses/by-sa/2.0/cl/
http://creativecommons.org/licenses/by-sa/2.0/de/
http://creativecommons.org/licenses/by-sa/2.0/es/
http://creativecommons.org/licenses/by-sa/2.0/fr/
http://creativecommons.org/licenses/by-sa/2.0/hr/
http://creativecommons.org/licenses/by-sa/2.0/it/
http://creativecommons.org/licenses/by-sa/2.0/jp/
http://creativecommons.org/licenses/by-sa/2.0/kr/
http://creativecommons.org/licenses/by-sa/2.0/nl/
http://creativecommons.org/licenses/by-sa/2.0/pl/
http://creativecommons.org/licenses/by-sa/2.0/
http://creativecommons.org/licenses/by-sa/2.0/tw/
http://creativecommons.org/licenses/by-sa/2.0/uk/
http://creativecommons.org/licenses/by-sa/2.0/za/
http://creativecommons.org/licenses/by-sa/2.1/au/
http://creativecommons.org/licenses/by-sa/2.1/es/
http://creativecommons.org/licenses/by-sa/2.1/jp/
http://creativecommons.org/licenses/by-sa/2.5/ar/
http://creativecommons.org/licenses/by-sa/2.5/au/
http://creativecommons.org/licenses/by-sa/2.5/bg/
http://creativecommons.org/licenses/by-sa/2.5/br/
http://creativecommons.org/licenses/by-sa/2.5/ca/
http://creativecommons.org/licenses/by-sa/2.5/ch/
http://creativecommons.org/licenses/by-sa/2.5/cn/
http://creativecommons.org/licenses/by-sa/2.5/co/
http://creativecommons.org/licenses/by-sa/2.5/dk/
http://creativecommons.org/licenses/by-sa/2.5/es/
http://creativecommons.org/licenses/by-sa/2.5/hr/
http://creativecommons.org/licenses/by-sa/2.5/hu/
http://creativecommons.org/licenses/by-sa/2.5/il/
http://creativecommons.org/licenses/by-sa/2.5/in/
http://creativecommons.org/licenses/by-sa/2.5/it/
http://creativecommons.org/licenses/by-sa/2.5/mk/
http://creativecommons.org/licenses/by-sa/2.5/mt/
http://creativecommons.org/licenses/by-sa/2.5/mx/
http://creativecommons.org/licenses/by-sa/2.5/my/
http://creativecommons.org/licenses/by-sa/2.5/nl/
http://creativecommons.org/licenses/by-sa/2.5/pe/
http://creativecommons.org/licenses/by-sa/2.5/pl/
http://creativecommons.org/licenses/by-sa/2.5/pt/
http://creativecommons.org/licenses/by-sa/2.5/
http://creativecommons.org/licenses/by-sa/2.5/scotland/
http://creativecommons.org/licenses/by-sa/2.5/se/
http://creativecommons.org/licenses/by-sa/2.5/si/
http://creativecommons.org/licenses/by-sa/2.5/tw/
http://creativecommons.org/licenses/by-sa/2.5/za/
http://creativecommons.org/licenses/by-sa/3.0/
http://creativecommons.org/licenses/by-sa/3.0/us/
http://creativecommons.org/licenses/devnations/2.0/
http://creativecommons.org/licenses/GPL/2.0/
http://creativecommons.org/licenses/LGPL/2.1/
http://creativecommons.org/licenses/nc/1.0/fi/
http://creativecommons.org/licenses/nc/1.0/nl/
http://creativecommons.org/licenses/nc/1.0/
http://creativecommons.org/licenses/nc/2.0/jp/
http://creativecommons.org/licenses/nc-sa/1.0/fi/
http://creativecommons.org/licenses/nc-sa/1.0/nl/
http://creativecommons.org/licenses/nc-sa/1.0/
http://creativecommons.org/licenses/nc-sa/2.0/jp/
http://creativecommons.org/licenses/nc-sampling+/1.0/
http://creativecommons.org/licenses/nc-sampling+/1.0/tw/
http://creativecommons.org/licenses/nd/1.0/fi/
http://creativecommons.org/licenses/nd/1.0/nl/
http://creativecommons.org/licenses/nd/1.0/
http://creativecommons.org/licenses/nd/2.0/jp/
http://creativecommons.org/licenses/nd-nc/1.0/fi/
http://creativecommons.org/licenses/nd-nc/1.0/nl/
http://creativecommons.org/licenses/nd-nc/1.0/
http://creativecommons.org/licenses/nd-nc/2.0/jp/
http://creativecommons.org/licenses/publicdomain/
http://creativecommons.org/licenses/sa/1.0/fi/
http://creativecommons.org/licenses/sa/1.0/nl/
http://creativecommons.org/licenses/sa/1.0/
http://creativecommons.org/licenses/sa/2.0/jp/
http://creativecommons.org/licenses/sampling/1.0/br/
http://creativecommons.org/licenses/sampling+/1.0/br/
http://creativecommons.org/licenses/sampling+/1.0/de/
http://creativecommons.org/licenses/sampling/1.0/
http://creativecommons.org/licenses/sampling+/1.0/
http://creativecommons.org/licenses/sampling/1.0/tw/
http://creativecommons.org/licenses/sampling+/1.0/tw/