diff options
Diffstat (limited to 'import-layers/yocto-poky/meta/recipes-graphics/xorg-proto')
13 files changed, 318 insertions, 66 deletions
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/dri2proto_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/dri2proto_git.bb deleted file mode 100644 index 9074f48d4..000000000 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/dri2proto_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "DRI2: Direct Rendering Infrastructure 2 headers" - -DESCRIPTION = "This package provides the wire protocol for the Direct \ -Rendering Ifnrastructure 2. DIR is required for may hardware \ -accelerated OpenGL drivers." - -SRCREV = "66c56ab10d917e3f47f93178d7eac6430970d3c4" -PV = "1.99.3+git${SRCPV}" -PR = "r2" - -SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/dri2proto" - -LIC_FILES_CHKSUM="file://COPYING;md5=2e396fa91834f8786032cad2da5638f3" - -S = "${WORKDIR}/git" - diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb index 7e8e0c155..eb5e66bd6 100644 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.1.bb +++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb @@ -16,5 +16,7 @@ inherit gettext BBCLASSEXTEND = "native nativesdk" -SRC_URI[md5sum] = "6caebead4b779ba031727f66a7ffa358" -SRC_URI[sha256sum] = "5a47ee62053a6acef3a83f506312494be1461068d0b9269d818839703b95c1d1" +SRC_URI[md5sum] = "b290a463af7def483e6e190de460f31a" +SRC_URI[sha256sum] = "893a6af55733262058a27b38eeb1edc733669f01d404e8581b167f03c03ef31d" + +EXTRA_OECONF += "--without-asciidoc" diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_git.bb deleted file mode 100644 index 6520f3bb0..000000000 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_git.bb +++ /dev/null @@ -1,19 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XI: X Input extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X Input \ -extension. The extension supports input devices other then the core X \ -keyboard and pointer." - -PR = "r1" -PE = "1" -SRCREV = "7203036522ba9d4b224d282d6afc2d0b947711ee" -PV = "1.9.99.12+git${SRCPV}" - -SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/inputproto" -S = "${WORKDIR}/git" - -inherit gettext - -BBCLASSEXTEND = "native nativesdk" diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.2.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb index 53aa7593b..6f97a2653 100644 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.2.bb +++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb @@ -10,5 +10,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=ce3472a119a864085fa4155cb0979a7b" PE = "1" -SRC_URI[md5sum] = "e658641595327d3990eab70fdb55ca8b" -SRC_URI[sha256sum] = "8dae168cb820fcd32f564879afb3f24d27c176300d9af66819a18265539bd4b6" +SRC_URI[md5sum] = "fe86de8ea3eb53b5a8f52956c5cd3174" +SRC_URI[sha256sum] = "c7803889fd08e6fcaf7b68cc394fb038b2325d1f315e571a6954577e07cca702" diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch new file mode 100644 index 000000000..89ec66618 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch @@ -0,0 +1,215 @@ +From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001 +From: Thomas Klausner <wiz@NetBSD.org> +Date: Thu, 19 May 2016 17:30:04 +0200 +Subject: [PATCH 1/2] Make whitespace use consistent. + +At least python-3.5.x complains about this forcefully. + +Signed-off-by: Thomas Klausner <wiz@NetBSD.org> +Signed-off-by: Uli Schlachter <psychon@znc.in> + +Upstream-Status: Backport + +Signed-off-by: Robert Yang <liezhi.yang@windriver.com> +--- + xcbgen/align.py | 96 ++++++++++++++++++++++++++++----------------------------- + 1 file changed, 48 insertions(+), 48 deletions(-) + +diff --git a/xcbgen/align.py b/xcbgen/align.py +index 5e31838..d4c12ee 100644 +--- a/xcbgen/align.py ++++ b/xcbgen/align.py +@@ -16,12 +16,12 @@ class Alignment(object): + return self.align == other.align and self.offset == other.offset + + def __str__(self): +- return "(align=%d, offset=%d)" % (self.align, self.offset) ++ return "(align=%d, offset=%d)" % (self.align, self.offset) + + @staticmethod + def for_primitive_type(size): +- # compute the required start_alignment based on the size of the type +- if size % 8 == 0: ++ # compute the required start_alignment based on the size of the type ++ if size % 8 == 0: + # do 8-byte primitives require 8-byte alignment in X11? + return Alignment(8,0) + elif size % 4 == 0: +@@ -33,7 +33,7 @@ class Alignment(object): + + + def align_after_fixed_size(self, size): +- new_offset = (self.offset + size) % self.align ++ new_offset = (self.offset + size) % self.align + return Alignment(self.align, new_offset) + + +@@ -41,7 +41,7 @@ class Alignment(object): + ''' + Assuming the given external_align, checks whether + self is fulfilled for all cases. +- Returns True if yes, False otherwise. ++ Returns True if yes, False otherwise. + ''' + if self.align == 1 and self.offset == 0: + # alignment 1 with offset 0 is always fulfilled +@@ -55,9 +55,9 @@ class Alignment(object): + # the external align guarantees less alignment -> not guaranteed + return False + +- if external_align.align % self.align != 0: ++ if external_align.align % self.align != 0: + # the external align cannot be divided by our align +- # -> not guaranteed ++ # -> not guaranteed + # (this can only happen if there are alignments that are not + # a power of 2, which is highly discouraged. But better be + # safe and check for it) +@@ -72,7 +72,7 @@ class Alignment(object): + + def combine_with(self, other): + # returns the alignment that is guaranteed when +- # both, self or other, can happen ++ # both, self or other, can happen + new_align = gcd(self.align, other.align) + new_offset_candidate1 = self.offset % new_align + new_offset_candidate2 = other.offset % new_align +@@ -83,8 +83,8 @@ class Alignment(object): + new_align = gcd(new_align, offset_diff) + new_offset_candidate1 = self.offset % new_align + new_offset_candidate2 = other.offset % new_align +- assert new_offset_candidate1 == new_offset_candidate2 +- new_offset = new_offset_candidate1 ++ assert new_offset_candidate1 == new_offset_candidate2 ++ new_offset = new_offset_candidate1 + # return the result + return Alignment(new_align, new_offset) + +@@ -92,44 +92,44 @@ class Alignment(object): + class AlignmentLog(object): + + def __init__(self): +- self.ok_list = [] +- self.fail_list = [] +- self.verbosity = 1 ++ self.ok_list = [] ++ self.fail_list = [] ++ self.verbosity = 1 + + def __str__(self): +- result = "" ++ result = "" + +- # output the OK-list +- for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: +- stacksize = len(callstack) ++ # output the OK-list ++ for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: ++ stacksize = len(callstack) + indent = ' ' * stacksize +- if self.ok_callstack_is_relevant(callstack): ++ if self.ok_callstack_is_relevant(callstack): + if field_name is None or field_name == "": +- result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" +- % (indent, str(type_obj), indent, str(align_before), str(align_after))) +- else: +- result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" +- % (indent, str(field_name), str(type_obj), +- indent, str(align_before), str(align_after))) ++ result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" ++ % (indent, str(type_obj), indent, str(align_before), str(align_after))) ++ else: ++ result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" ++ % (indent, str(field_name), str(type_obj), ++ indent, str(align_before), str(align_after))) + if self.verbosity >= 1: +- result += self.callstack_to_str(indent, callstack) ++ result += self.callstack_to_str(indent, callstack) + +- # output the fail-list +- for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: +- stacksize = len(callstack) ++ # output the fail-list ++ for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: ++ stacksize = len(callstack) + indent = ' ' * stacksize +- if field_name is None or field_name == "": +- result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" +- % (indent, str(align_before), indent, str(type_obj), indent, reason)) +- else: +- result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" +- % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) ++ if field_name is None or field_name == "": ++ result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" ++ % (indent, str(align_before), indent, str(type_obj), indent, reason)) ++ else: ++ result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" ++ % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) + + if self.verbosity >= 1: +- result += self.callstack_to_str(indent, callstack) ++ result += self.callstack_to_str(indent, callstack) + + +- return result ++ return result + + + def callstack_to_str(self, indent, callstack): +@@ -137,41 +137,41 @@ class AlignmentLog(object): + for stack_elem in callstack: + result += "\t %s%s\n" % (indent, str(stack_elem)) + result += "\t%s]\n" % indent +- return result ++ return result + + + def ok_callstack_is_relevant(self, ok_callstack): + # determine whether an ok callstack is relevant for logging +- if self.verbosity >= 2: +- return True ++ if self.verbosity >= 2: ++ return True + + # empty callstacks are always relevant +- if len(ok_callstack) == 0: ++ if len(ok_callstack) == 0: + return True + +- # check whether the ok_callstack is a subset or equal to a fail_callstack ++ # check whether the ok_callstack is a subset or equal to a fail_callstack + for (align_before, field_name, type_obj, fail_callstack, reason) in self.fail_list: + if len(ok_callstack) <= len(fail_callstack): + zipped = zip(ok_callstack, fail_callstack[:len(ok_callstack)]) +- is_subset = all([i == j for i, j in zipped]) +- if is_subset: ++ is_subset = all([i == j for i, j in zipped]) ++ if is_subset: + return True + + return False + + + def ok(self, align_before, field_name, type_obj, callstack, align_after): +- self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) ++ self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) + + def fail(self, align_before, field_name, type_obj, callstack, reason): +- self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) ++ self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) + + def append(self, other): +- self.ok_list.extend(other.ok_list) +- self.fail_list.extend(other.fail_list) ++ self.ok_list.extend(other.ok_list) ++ self.fail_list.extend(other.fail_list) + + def ok_count(self): +- return len(self.ok_list) ++ return len(self.ok_list) + + + +-- +2.9.0 + diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch new file mode 100644 index 000000000..542acb82b --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch @@ -0,0 +1,75 @@ +From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001 +From: Thomas Klausner <wiz@NetBSD.org> +Date: Thu, 19 May 2016 17:30:05 +0200 +Subject: [PATCH 2/2] print() is a function and needs parentheses. + +Fixes build with python-3.x. + +Signed-off-by: Thomas Klausner <wiz@NetBSD.org> +Signed-off-by: Uli Schlachter <psychon@znc.in> + +Upstream-Status: Backport + +Signed-off-by: Robert Yang <liezhi.yang@windriver.com> +--- + xcbgen/xtypes.py | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py +index c3b5758..b83b119 100644 +--- a/xcbgen/xtypes.py ++++ b/xcbgen/xtypes.py +@@ -501,7 +501,7 @@ class ComplexType(Type): + int(required_start_align_element.get('align', "4"), 0), + int(required_start_align_element.get('offset', "0"), 0)) + if verbose_align_log: +- print "Explicit start-align for %s: %s\n" % (self, self.required_start_align) ++ print ("Explicit start-align for %s: %s\n" % (self, self.required_start_align)) + + def resolve(self, module): + if self.resolved: +@@ -592,7 +592,7 @@ class ComplexType(Type): + if verbose_align_log: + print ("calc_required_start_align: %s has start-align %s" + % (str(self), str(self.required_start_align))) +- print "Details:\n" + str(log) ++ print ("Details:\n" + str(log)) + if self.required_start_align.offset != 0: + print (("WARNING: %s\n\thas start-align with non-zero offset: %s" + + "\n\tsuggest to add explicit definition with:" +@@ -619,12 +619,12 @@ class ComplexType(Type): + for offset in range(0,align): + align_candidate = Alignment(align, offset) + if verbose_align_log: +- print "trying %s for %s" % (str(align_candidate), str(self)) ++ print ("trying %s for %s" % (str(align_candidate), str(self))) + my_log = AlignmentLog() + if self.is_possible_start_align(align_candidate, callstack, my_log): + log.append(my_log) + if verbose_align_log: +- print "found start-align %s for %s" % (str(align_candidate), str(self)) ++ print ("found start-align %s for %s" % (str(align_candidate), str(self))) + return align_candidate + else: + my_ok_count = my_log.ok_count() +@@ -641,7 +641,7 @@ class ComplexType(Type): + # none of the candidates applies + # this type has illegal internal aligns for all possible start_aligns + if verbose_align_log: +- print "didn't find start-align for %s" % str(self) ++ print ("didn't find start-align for %s" % str(self)) + log.append(best_log) + return None + +@@ -900,7 +900,7 @@ class SwitchType(ComplexType): + # aux function for unchecked_get_alignment_after + def get_align_for_selected_case_field(self, case_field, start_align, callstack, log): + if verbose_align_log: +- print "get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field)) ++ print ("get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field))) + total_align = start_align + for field in self.bitcases: + my_callstack = callstack[:] +-- +2.9.0 + diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/no-python-native.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/no-python-native.patch index f808e1963..09b6088db 100644 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/no-python-native.patch +++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/no-python-native.patch @@ -20,7 +20,7 @@ index d140bfe..c7b68da 100644 -AM_PATH_PYTHON([2.5]) +pythondir="${libdir}/xcb-proto" +AC_SUBST(pythondir) -+PYTHON="python" ++PYTHON="python3" +AC_SUBST(PYTHON) xcbincludedir='${datadir}/xcb' diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.11.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.11.bb deleted file mode 100644 index 5bc5a112e..000000000 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.11.bb +++ /dev/null @@ -1,9 +0,0 @@ -include xcb-proto.inc - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7 \ - file://src/dri2.xml;beginline=2;endline=28;md5=f8763b13ff432e8597e0d610cf598e65" - - -SRC_URI[md5sum] = "6bf2797445dc6d43e9e4707c082eff9c" -SRC_URI[sha256sum] = "b4aceee6502a0ce45fc39b33c541a2df4715d00b72e660ebe8c5bb444771e32e" diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto.inc b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb index 8703d6391..bc04bc48e 100644 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto.inc +++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb @@ -7,10 +7,17 @@ HOMEPAGE = "http://xcb.freedesktop.org" BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB" SECTION = "x11/libs" -LICENSE = "MIT-X" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7 \ + file://src/dri2.xml;beginline=2;endline=28;md5=f8763b13ff432e8597e0d610cf598e65" SRC_URI = "http://xcb.freedesktop.org/dist/xcb-proto-${PV}.tar.bz2 \ - file://no-python-native.patch" + file://no-python-native.patch \ + file://0001-Make-whitespace-use-consistent.patch \ + file://0002-print-is-a-function-and-needs-parentheses.patch \ + " +SRC_URI[md5sum] = "14e60919f859560f28426a685a555962" +SRC_URI[sha256sum] = "5922aba4c664ab7899a29d92ea91a87aa4c1fc7eb5ee550325c3216c480a4906" inherit autotools pkgconfig @@ -24,3 +31,10 @@ RDEPENDS_${PN}-dev = "" RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" BBCLASSEXTEND = "native nativesdk" + +do_install_append() { + # Makefile's do_install creates .pyc files for python3, now also create + # them for python2 so that they will be recorded by manifest, and can be + # cleaned correctly. + python -m py_compile ${D}${libdir}/xcb-proto/xcbgen/*.py +} diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_git.bb deleted file mode 100644 index 2ea4d0421..000000000 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_git.bb +++ /dev/null @@ -1,9 +0,0 @@ -DEFAULT_PREFERENCE = "-1" - -include xcb-proto.inc -SRCREV = "d81ca233e98be8fa59e8c90d262c0516944c5a66" -PV = "1.2+gitr${SRCPV}" -PR = "r4" - -SRC_URI = "git://anongit.freedesktop.org/git/xcb/proto" -S = "${WORKDIR}/git" diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb index d00774ece..dde7e9db7 100644 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb +++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb @@ -15,3 +15,5 @@ PE = "1" SRC_URI[md5sum] = "9959fe0bfb22a0e7260433b8d199590a" SRC_URI[sha256sum] = "977574bb3dc192ecd9c55f59f991ec1dff340be3e31392c95deff423da52485b" + +BBCLASSEXTEND = "native nativesdk" diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch index 540ad27d4..8a5ff58b9 100644 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch +++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch @@ -8,7 +8,7 @@ __LP64__ before defining LONG64 without checking __amd64__/amd64. This fixes compilation with x32 toolchain. Received this patch from H.J. Lu <hjl.tools@gmail.com> -Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/1 +Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/1 --- xproto-7.0.22/Xmd.h.x32 2009-07-11 04:19:50.000000000 -0700 +++ xproto-7.0.22/Xmd.h 2011-11-30 17:14:19.290395893 -0800 diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.28.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.29.bb index 7427a7d53..412b6a277 100644 --- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.28.bb +++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.29.bb @@ -15,6 +15,5 @@ SRC_URI += "file://xproto_fix_for_x32.patch" EXTRA_OECONF_append = " --enable-specs=no" BBCLASSEXTEND = "native nativesdk" -SRC_URI[md5sum] = "3ce2f230c5d8fa929f326ad1f0fa40a8" -SRC_URI[sha256sum] = "29e85568d1f68ceef8a2c081dad9bc0e5500a53cfffde24b564dc43d46ddf6ca" - +SRC_URI[md5sum] = "eeeae1f47d43a33ef0d5c56727410326" +SRC_URI[sha256sum] = "6c1a477092ca73233902b8d5f33012635c4b0208f17e7833cc7efe5c93ba9f8a" |