]> git.pld-linux.org Git - packages/kernel.git/blob - rkvdec-hevc.patch
up to 6.8.8
[packages/kernel.git] / rkvdec-hevc.patch
1 From patchwork Thu Jan 12 12:56:16 2023
2 Content-Type: text/plain; charset="utf-8"
3 MIME-Version: 1.0
4 Content-Transfer-Encoding: 7bit
5 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
6 X-Patchwork-Id: 13097950
7 Return-Path: <linux-media-owner@vger.kernel.org>
8 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
9         aws-us-west-2-korg-lkml-1.web.codeaurora.org
10 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
11         by smtp.lore.kernel.org (Postfix) with ESMTP id C50B3C67871
12         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:56:58 +0000 (UTC)
13 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
14         id S231960AbjALM44 (ORCPT <rfc822;linux-media@archiver.kernel.org>);
15         Thu, 12 Jan 2023 07:56:56 -0500
16 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43150 "EHLO
17         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
18         with ESMTP id S232416AbjALM4h (ORCPT
19         <rfc822;linux-media@vger.kernel.org>);
20         Thu, 12 Jan 2023 07:56:37 -0500
21 Received: from madras.collabora.co.uk (madras.collabora.co.uk
22  [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab])
23         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BF9B75F46;
24         Thu, 12 Jan 2023 04:56:33 -0800 (PST)
25 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
26  [89.26.75.29])
27         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
28          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
29  server-digest SHA256)
30         (No client certificate requested)
31         (Authenticated sender: sebastianfricke)
32         by madras.collabora.co.uk (Postfix) with ESMTPSA id 2D0E86602DB9;
33         Thu, 12 Jan 2023 12:56:32 +0000 (GMT)
34 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
35         s=mail; t=1673528192;
36         bh=w39uQHzOIPIO90WhRE4IjTj/4vTR7fwhKBVkNmGEQWM=;
37         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
38         b=NBGxuiJVU2ZpQxkVaZeH5CCCS70AGYjTI2usSFgDYvqxG8S1aMWZyj8I5xBnf+XQa
39          A9xd20BDkGD/y+dweWOYWDuG/iqx0M4ZSAXqhbiY4PCZp2ss/gdd6Cfi/J+h4/z0mV
40          2v1arb4yPppKzNsKyLOPG3o05bVXUVQcqv1Nv8By09CsEXEW/82QCkhHyC9Qjii4UP
41          9k1B/ZiCjsBeXmpBEtrf/CDIH6uVBePNk2JZ2P1sc1NheN7/vGI+tEkhYTAIWkht+T
42          G1O14WBe3J1zzQFR6kwGybsbOWqEmRYVBqU4PCivCWju4bfEF1fAjb/HVCPDSdYg89
43          bVDiRKaYnQPaw==
44 From: Sebastian Fricke <sebastian.fricke@collabora.com>
45 Date: Thu, 12 Jan 2023 13:56:16 +0100
46 Subject: [PATCH v2 01/12] media: v4l2: Add NV15 pixel format
47 MIME-Version: 1.0
48 Message-Id: <20230101-patch-series-v2-6-2-rc1-v2-1-fa1897efac14@collabora.com>
49 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
50 In-Reply-To: 
51  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
52 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
53         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
54         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
55 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
56         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
57         Jonas Karlman <jonas@kwiboo.se>,
58         Alex Bee <knaerzche@gmail.com>,
59         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
60         Collabora Kernel-domain <kernel@collabora.com>,
61         Robert Beckett <bob.beckett@collabora.com>,
62         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
63         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
64         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
65         Sebastian Fricke <sebastian.fricke@collabora.com>
66 X-Mailer: b4 0.11.1
67 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=6437;
68  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
69  bh=uy2g9GPcP+lRwPYfgkcuiU1U/soD1j3DQtWijfz/vHI=;
70  b=/pxqbPJRJoRG0ZRyvRot/+yIY4H7+UpAZVlvL+UZ7AKc8JtwF17tqhJfcI1anbbRdRkx4HIuWV2Q
71  xDA5Hg6pCybcCwPBMeJzHeOj63Bav5GFBGgjC+fTds/GMfujTawu
72 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
73  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
74 Precedence: bulk
75 List-ID: <linux-media.vger.kernel.org>
76 X-Mailing-List: linux-media@vger.kernel.org
77
78 From: Jonas Karlman <jonas@kwiboo.se>
79
80 Add the NV15 pixel format used by the Rockchip Video Decoder for 10-bit buffers.
81
82 NV15 is a packed 10-bit 4:2:0 Y/CbCr format similar to P010 and P210 but has no
83 padding between components. Instead, luminance and chrominance samples are grouped
84 into 4s so that each group is packed into an integer number of bytes:
85
86 YYYY = UVUV = 4 * 10 bits = 40 bits = 5 bytes
87
88 The '15' suffix refers to the optimum effective bits per pixel
89 which is achieved when the total number of luminance samples is a multiple
90 of 8 for NV15.
91
92 Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
93 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
94 ---
95  .../userspace-api/media/v4l/pixfmt-yuv-planar.rst  | 75 ++++++++++++++++++++++
96  drivers/media/v4l2-core/v4l2-common.c              |  2 +
97  drivers/media/v4l2-core/v4l2-ioctl.c               |  1 +
98  include/uapi/linux/videodev2.h                     |  1 +
99  4 files changed, 79 insertions(+)
100
101 diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
102 index f1d5bb7b806d..7d8d228f8063 100644
103 --- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
104 +++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
105 @@ -79,6 +79,13 @@ All components are stored with the same number of bits per component.
106        - Cr, Cb
107        - Yes
108        - Linear
109 +    * - V4L2_PIX_FMT_NV15
110 +      - 'NV15'
111 +      - 15
112 +      - 4:2:0
113 +      - Cb, Cr
114 +      - Yes
115 +      - Linear
116      * - V4L2_PIX_FMT_NV12M
117        - 'NM12'
118        - 8
119 @@ -183,6 +190,7 @@ horizontally.
120  
121  .. _V4L2-PIX-FMT-NV12:
122  .. _V4L2-PIX-FMT-NV21:
123 +.. _V4L2-PIX-FMT-NV15:
124  .. _V4L2-PIX-FMT-NV12M:
125  .. _V4L2-PIX-FMT-NV21M:
126  .. _V4L2-PIX-FMT-P010:
127 @@ -586,6 +594,73 @@ Data in the 10 high bits, zeros in the 6 low bits, arranged in little endian ord
128        - Cb\ :sub:`11`
129        - Cr\ :sub:`11`
130  
131 +.. _V4L2_PIX_FMT_NV15:
132 +
133 +NV15
134 +----
135 +
136 +Similar to P010, a semi-planar 10-bit Y/CbCr format, but all components are
137 +packed without any padding between each other. As a side-effect, each group of
138 +4 components are stored over 5 bytes (YYYY or UVUV = 4 * 10 bits = 40 bits = 5
139 +bytes).
140 +
141 +.. flat-table:: Sample 4x4 NV15 Image
142 +    :header-rows:  0
143 +    :stub-columns: 0
144 +
145 +    * - start + 0:
146 +      - Y'\ :sub:`00`
147 +      - Y'\ :sub:`01`
148 +      - Y'\ :sub:`02`
149 +      - Y'\ :sub:`03`
150 +    * - start + 8:
151 +      - Y'\ :sub:`04`
152 +      - Y'\ :sub:`10`
153 +      - Y'\ :sub:`11`
154 +      - Y'\ :sub:`12`
155 +    * - start + 16:
156 +      - Y'\ :sub:`13`
157 +      - Y'\ :sub:`14`
158 +      - Y'\ :sub:`20`
159 +      - Y'\ :sub:`21`
160 +    * - start + 24:
161 +      - Y'\ :sub:`22`
162 +      - Y'\ :sub:`23`
163 +      - Y'\ :sub:`24`
164 +      - Y'\ :sub:`30`
165 +    * - start + 32:
166 +      - Y'\ :sub:`31`
167 +      - Y'\ :sub:`32`
168 +      - Y'\ :sub:`33`
169 +      - Y'\ :sub:`34`
170 +
171 +    * - start + 0:
172 +      - Cb\ :sub:`00`
173 +      - Cr\ :sub:`00`
174 +      - Cb\ :sub:`01`
175 +      - Cr\ :sub:`01`
176 +    * - start + 8:
177 +      - Cb\ :sub:`02`
178 +      - Cr\ :sub:`02`
179 +      - Cb\ :sub:`03`
180 +      - Cr\ :sub:`03`
181 +    * - start + 16:
182 +      - Cb\ :sub:`04`
183 +      - Cr\ :sub:`04`
184 +      - Cb\ :sub:`10`
185 +      - Cr\ :sub:`10`
186 +    * - start + 24:
187 +      - Cb\ :sub:`11`
188 +      - Cr\ :sub:`11`
189 +      - Cb\ :sub:`12`
190 +      - Cr\ :sub:`12`
191 +    * - start + 32:
192 +      - Cb\ :sub:`13`
193 +      - Cr\ :sub:`13`
194 +      - Cb\ :sub:`14`
195 +      - Cr\ :sub:`14`
196 +
197 +.. raw:: latex
198  
199  Fully Planar YUV Formats
200  ========================
201 diff --git a/drivers/media/v4l2-core/v4l2-common.c b/drivers/media/v4l2-core/v4l2-common.c
202 index 40f56e044640..be23e319fb3a 100644
203 --- a/drivers/media/v4l2-core/v4l2-common.c
204 +++ b/drivers/media/v4l2-core/v4l2-common.c
205 @@ -262,6 +262,8 @@ const struct v4l2_format_info *v4l2_format_info(u32 format)
206                 /* YUV planar formats */
207                 { .format = V4L2_PIX_FMT_NV12,    .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .bpp_div = { 1, 1, 1, 1 }, .hdiv = 2, .vdiv = 2 },
208                 { .format = V4L2_PIX_FMT_NV21,    .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .bpp_div = { 1, 1, 1, 1 }, .hdiv = 2, .vdiv = 2 },
209 +               { .format = V4L2_PIX_FMT_NV15,    .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 5, 5, 0, 0 }, .bpp_div = { 1, 1, 1, 1 }, .hdiv = 2, .vdiv = 2,
210 +                 .block_w = { 4, 2, 0, 0 }, .block_h = { 1, 1, 0, 0 } },
211                 { .format = V4L2_PIX_FMT_NV16,    .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .bpp_div = { 1, 1, 1, 1 }, .hdiv = 2, .vdiv = 1 },
212                 { .format = V4L2_PIX_FMT_NV61,    .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .bpp_div = { 1, 1, 1, 1 }, .hdiv = 2, .vdiv = 1 },
213                 { .format = V4L2_PIX_FMT_NV24,    .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .bpp_div = { 1, 1, 1, 1 }, .hdiv = 1, .vdiv = 1 },
214 diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
215 index 8e0a0ff62a70..1c80ad78ef00 100644
216 --- a/drivers/media/v4l2-core/v4l2-ioctl.c
217 +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
218 @@ -1343,6 +1343,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
219         case V4L2_PIX_FMT_YUV48_12:     descr = "12-bit YUV 4:4:4 Packed"; break;
220         case V4L2_PIX_FMT_NV12:         descr = "Y/UV 4:2:0"; break;
221         case V4L2_PIX_FMT_NV21:         descr = "Y/VU 4:2:0"; break;
222 +       case V4L2_PIX_FMT_NV15:         descr = "10-bit Y/UV 4:2:0 (Packed)"; break;
223         case V4L2_PIX_FMT_NV16:         descr = "Y/UV 4:2:2"; break;
224         case V4L2_PIX_FMT_NV61:         descr = "Y/VU 4:2:2"; break;
225         case V4L2_PIX_FMT_NV24:         descr = "Y/UV 4:4:4"; break;
226 diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
227 index 1befd181a4cc..e9731286dc77 100644
228 --- a/include/uapi/linux/videodev2.h
229 +++ b/include/uapi/linux/videodev2.h
230 @@ -621,6 +621,7 @@ struct v4l2_pix_format {
231  /* two planes -- one Y, one Cr + Cb interleaved  */
232  #define V4L2_PIX_FMT_NV12    v4l2_fourcc('N', 'V', '1', '2') /* 12  Y/CbCr 4:2:0  */
233  #define V4L2_PIX_FMT_NV21    v4l2_fourcc('N', 'V', '2', '1') /* 12  Y/CrCb 4:2:0  */
234 +#define V4L2_PIX_FMT_NV15    v4l2_fourcc('N', 'V', '1', '5') /* 15  Y/CbCr 4:2:0 10-bit packed */
235  #define V4L2_PIX_FMT_NV16    v4l2_fourcc('N', 'V', '1', '6') /* 16  Y/CbCr 4:2:2  */
236  #define V4L2_PIX_FMT_NV61    v4l2_fourcc('N', 'V', '6', '1') /* 16  Y/CrCb 4:2:2  */
237  #define V4L2_PIX_FMT_NV24    v4l2_fourcc('N', 'V', '2', '4') /* 24  Y/CbCr 4:4:4  */
238
239 From patchwork Thu Jan 12 12:56:17 2023
240 Content-Type: text/plain; charset="utf-8"
241 MIME-Version: 1.0
242 Content-Transfer-Encoding: 7bit
243 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
244 X-Patchwork-Id: 13097951
245 Return-Path: <linux-media-owner@vger.kernel.org>
246 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
247         aws-us-west-2-korg-lkml-1.web.codeaurora.org
248 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
249         by smtp.lore.kernel.org (Postfix) with ESMTP id B6C11C61DB3
250         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:56:59 +0000 (UTC)
251 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
252         id S232006AbjALM46 (ORCPT <rfc822;linux-media@archiver.kernel.org>);
253         Thu, 12 Jan 2023 07:56:58 -0500
254 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43250 "EHLO
255         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
256         with ESMTP id S231434AbjALM4h (ORCPT
257         <rfc822;linux-media@vger.kernel.org>);
258         Thu, 12 Jan 2023 07:56:37 -0500
259 Received: from madras.collabora.co.uk (madras.collabora.co.uk
260  [46.235.227.172])
261         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88EC7AE4A;
262         Thu, 12 Jan 2023 04:56:36 -0800 (PST)
263 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
264  [89.26.75.29])
265         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
266          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
267  server-digest SHA256)
268         (No client certificate requested)
269         (Authenticated sender: sebastianfricke)
270         by madras.collabora.co.uk (Postfix) with ESMTPSA id 2E7356602DBC;
271         Thu, 12 Jan 2023 12:56:35 +0000 (GMT)
272 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
273         s=mail; t=1673528195;
274         bh=TMBuSYYQgufdE8ilX8+9MkfvSRLEsm/O1NHAsGj+B/Y=;
275         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
276         b=XOPL1XeRQInEt43srKZYrnrk2C/E2t6TlKO5p4bXvoEV/zBpFhHONeClKtTqj6JBz
277          4o16E9P1tWHpCvOrfc/+9iIjNnCFUEt3alSQI9jpYrBa97dU0lspWglEQG7xskQ+Vh
278          XgKtlMfpbzLXq5q5BhUkbtzWVHVDkvZEYFxOjhJNvkgCXtU1KoG3oR4M3PnfACexdl
279          9q7Korw+75cBpygJm/0frQyYKChkqDwnB9NkXuNDQiZrBS9TrMrOaalV1OFgwXKasX
280          moplnbm24XFPXMFZ9qSAmZAwk4rp/hYi5DzvT741iOfZxvOz2Ti1iZicgEHEOkRIEQ
281          VFf5gm44ncdsA==
282 From: Sebastian Fricke <sebastian.fricke@collabora.com>
283 Date: Thu, 12 Jan 2023 13:56:17 +0100
284 Subject: [PATCH v2 02/12] media: v4l2-common: Add helpers to calculate
285  bytesperline and sizeimage
286 MIME-Version: 1.0
287 Message-Id: <20230101-patch-series-v2-6-2-rc1-v2-2-fa1897efac14@collabora.com>
288 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
289 In-Reply-To: 
290  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
291 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
292         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
293         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
294 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
295         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
296         Jonas Karlman <jonas@kwiboo.se>,
297         Alex Bee <knaerzche@gmail.com>,
298         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
299         Collabora Kernel-domain <kernel@collabora.com>,
300         Robert Beckett <bob.beckett@collabora.com>,
301         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
302         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
303         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
304         Sebastian Fricke <sebastian.fricke@collabora.com>
305 X-Mailer: b4 0.11.1
306 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=4683;
307  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
308  bh=LcMmGvBIJq4nek85HGURC0+BOvaXuS5YxkC2HDnyM4I=;
309  b=21yB2ximJGHXO2qRmwC71wOACLdxQEDfraCFxz9My9OOeP/Bg30IT6qXnRdRmTEICA6UNWxjEJjI
310  0AsKrLSDBeIJqIIhK3dU2M8+aYSDn/AyK7/xOhcyFbJLtFv1L49Z
311 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
312  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
313 Precedence: bulk
314 List-ID: <linux-media.vger.kernel.org>
315 X-Mailing-List: linux-media@vger.kernel.org
316
317 From: Jonas Karlman <jonas@kwiboo.se>
318
319 Add helper functions to calculate plane bytesperline and sizeimage, these
320 new helpers consider block width and height when calculating plane
321 bytesperline and sizeimage.
322
323 This prepares support for a new pixel format added in next patch that makes
324 use of block width and height.
325
326 Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
327 ---
328  drivers/media/v4l2-core/v4l2-common.c | 77 +++++++++++++++++------------------
329  1 file changed, 38 insertions(+), 39 deletions(-)
330
331 diff --git a/drivers/media/v4l2-core/v4l2-common.c b/drivers/media/v4l2-core/v4l2-common.c
332 index be23e319fb3a..12c1d2f409b0 100644
333 --- a/drivers/media/v4l2-core/v4l2-common.c
334 +++ b/drivers/media/v4l2-core/v4l2-common.c
335 @@ -340,6 +340,33 @@ static inline unsigned int v4l2_format_block_height(const struct v4l2_format_inf
336         return info->block_h[plane];
337  }
338  
339 +static inline unsigned int v4l2_format_plane_width(const struct v4l2_format_info *info, int plane,
340 +                                                  unsigned int width)
341 +{
342 +       unsigned int hdiv = plane ? info->hdiv : 1;
343 +       unsigned int bytes = DIV_ROUND_UP(width * info->bpp[plane],
344 +                               v4l2_format_block_width(info, plane) *
345 +                               v4l2_format_block_height(info, plane));
346 +
347 +       return DIV_ROUND_UP(bytes, hdiv);
348 +}
349 +
350 +static inline unsigned int v4l2_format_plane_height(const struct v4l2_format_info *info, int plane,
351 +                                                   unsigned int height)
352 +{
353 +       unsigned int vdiv = plane ? info->vdiv : 1;
354 +       unsigned int lines = ALIGN(height, v4l2_format_block_height(info, plane));
355 +
356 +       return DIV_ROUND_UP(lines, vdiv);
357 +}
358 +
359 +static inline unsigned int v4l2_format_plane_size(const struct v4l2_format_info *info, int plane,
360 +                                                 unsigned int width, unsigned int height)
361 +{
362 +       return v4l2_format_plane_width(info, plane, width) *
363 +              v4l2_format_plane_height(info, plane, height);
364 +}
365 +
366  void v4l2_apply_frmsize_constraints(u32 *width, u32 *height,
367                                     const struct v4l2_frmsize_stepwise *frmsize)
368  {
369 @@ -375,37 +402,19 @@ int v4l2_fill_pixfmt_mp(struct v4l2_pix_format_mplane *pixfmt,
370  
371         if (info->mem_planes == 1) {
372                 plane = &pixfmt->plane_fmt[0];
373 -               plane->bytesperline = ALIGN(width, v4l2_format_block_width(info, 0)) * info->bpp[0] / info->bpp_div[0];
374 +               plane->bytesperline = v4l2_format_plane_width(info, 0, width);
375                 plane->sizeimage = 0;
376  
377 -               for (i = 0; i < info->comp_planes; i++) {
378 -                       unsigned int hdiv = (i == 0) ? 1 : info->hdiv;
379 -                       unsigned int vdiv = (i == 0) ? 1 : info->vdiv;
380 -                       unsigned int aligned_width;
381 -                       unsigned int aligned_height;
382 -
383 -                       aligned_width = ALIGN(width, v4l2_format_block_width(info, i));
384 -                       aligned_height = ALIGN(height, v4l2_format_block_height(info, i));
385 -
386 -                       plane->sizeimage += info->bpp[i] *
387 -                               DIV_ROUND_UP(aligned_width, hdiv) *
388 -                               DIV_ROUND_UP(aligned_height, vdiv) / info->bpp_div[i];
389 -               }
390 +               for (i = 0; i < info->comp_planes; i++)
391 +                       plane->sizeimage +=
392 +                               v4l2_format_plane_size(info, i, width, height);
393         } else {
394                 for (i = 0; i < info->comp_planes; i++) {
395 -                       unsigned int hdiv = (i == 0) ? 1 : info->hdiv;
396 -                       unsigned int vdiv = (i == 0) ? 1 : info->vdiv;
397 -                       unsigned int aligned_width;
398 -                       unsigned int aligned_height;
399 -
400 -                       aligned_width = ALIGN(width, v4l2_format_block_width(info, i));
401 -                       aligned_height = ALIGN(height, v4l2_format_block_height(info, i));
402 -
403                         plane = &pixfmt->plane_fmt[i];
404                         plane->bytesperline =
405 -                               info->bpp[i] * DIV_ROUND_UP(aligned_width, hdiv) / info->bpp_div[i];
406 -                       plane->sizeimage =
407 -                               plane->bytesperline * DIV_ROUND_UP(aligned_height, vdiv);
408 +                               v4l2_format_plane_width(info, i, width);
409 +                       plane->sizeimage = plane->bytesperline *
410 +                               v4l2_format_plane_height(info, i, height);
411                 }
412         }
413         return 0;
414 @@ -429,22 +438,12 @@ int v4l2_fill_pixfmt(struct v4l2_pix_format *pixfmt, u32 pixelformat,
415         pixfmt->width = width;
416         pixfmt->height = height;
417         pixfmt->pixelformat = pixelformat;
418 -       pixfmt->bytesperline = ALIGN(width, v4l2_format_block_width(info, 0)) * info->bpp[0] / info->bpp_div[0];
419 +       pixfmt->bytesperline = v4l2_format_plane_width(info, 0, width);
420         pixfmt->sizeimage = 0;
421  
422 -       for (i = 0; i < info->comp_planes; i++) {
423 -               unsigned int hdiv = (i == 0) ? 1 : info->hdiv;
424 -               unsigned int vdiv = (i == 0) ? 1 : info->vdiv;
425 -               unsigned int aligned_width;
426 -               unsigned int aligned_height;
427 -
428 -               aligned_width = ALIGN(width, v4l2_format_block_width(info, i));
429 -               aligned_height = ALIGN(height, v4l2_format_block_height(info, i));
430 -
431 -               pixfmt->sizeimage += info->bpp[i] *
432 -                       DIV_ROUND_UP(aligned_width, hdiv) *
433 -                       DIV_ROUND_UP(aligned_height, vdiv) / info->bpp_div[i];
434 -       }
435 +       for (i = 0; i < info->comp_planes; i++)
436 +               pixfmt->sizeimage +=
437 +                       v4l2_format_plane_size(info, i, width, height);
438         return 0;
439  }
440  EXPORT_SYMBOL_GPL(v4l2_fill_pixfmt);
441
442 From patchwork Thu Jan 12 12:56:18 2023
443 Content-Type: text/plain; charset="utf-8"
444 MIME-Version: 1.0
445 Content-Transfer-Encoding: 7bit
446 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
447 X-Patchwork-Id: 13097952
448 Return-Path: <linux-media-owner@vger.kernel.org>
449 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
450         aws-us-west-2-korg-lkml-1.web.codeaurora.org
451 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
452         by smtp.lore.kernel.org (Postfix) with ESMTP id 47A82C54EBD
453         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:57:03 +0000 (UTC)
454 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
455         id S231743AbjALM5A (ORCPT <rfc822;linux-media@archiver.kernel.org>);
456         Thu, 12 Jan 2023 07:57:00 -0500
457 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43164 "EHLO
458         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
459         with ESMTP id S231651AbjALM4k (ORCPT
460         <rfc822;linux-media@vger.kernel.org>);
461         Thu, 12 Jan 2023 07:56:40 -0500
462 Received: from madras.collabora.co.uk (madras.collabora.co.uk
463  [46.235.227.172])
464         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E901B641D;
465         Thu, 12 Jan 2023 04:56:39 -0800 (PST)
466 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
467  [89.26.75.29])
468         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
469          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
470  server-digest SHA256)
471         (No client certificate requested)
472         (Authenticated sender: sebastianfricke)
473         by madras.collabora.co.uk (Postfix) with ESMTPSA id 9E63B6602DBA;
474         Thu, 12 Jan 2023 12:56:38 +0000 (GMT)
475 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
476         s=mail; t=1673528198;
477         bh=8FFms7ZFvtbGRTeN4REh/YGhyU+oeFdqYWO/CK2KT8c=;
478         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
479         b=hXDggCyHhkjfeIswJAT/y/OZ3Uv10V8Cte6Wd/pyHY8rOY6dr9GSn0wpvJqTPLhAn
480          huVgJgPug9zwf6cZosazKC86t1j54jjlPgFuIsy+QRuqZT1+iPX9piPWAJMlNjqjuG
481          OScE+wYlc6cVvt/TBZahO964vjW3VE37MbhQ94bfU0QB+iyniOOy6KJEcIgZxSjqQK
482          fotcKNvAIDnTYGKuQZXOYWdvsbeIDsUTfJ2+wAx0S2d8E1/NX8hW0NhtfMSaHK0Ur2
483          Dao5hfPydn5QXY2ImcTCrAm24Q/K0DZKTPJECRS5W5DOD0MUySUoXpHHjb1QhUGGu/
484          qieM9+NzZLXQg==
485 From: Sebastian Fricke <sebastian.fricke@collabora.com>
486 Date: Thu, 12 Jan 2023 13:56:18 +0100
487 Subject: [PATCH v2 03/12] staging: media: rkvdec: Helper for buffer queue busy
488  check
489 MIME-Version: 1.0
490 Message-Id: <20230101-patch-series-v2-6-2-rc1-v2-3-fa1897efac14@collabora.com>
491 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
492 In-Reply-To: 
493  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
494 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
495         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
496         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
497 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
498         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
499         Jonas Karlman <jonas@kwiboo.se>,
500         Alex Bee <knaerzche@gmail.com>,
501         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
502         Collabora Kernel-domain <kernel@collabora.com>,
503         Robert Beckett <bob.beckett@collabora.com>,
504         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
505         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
506         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
507         Sebastian Fricke <sebastian.fricke@collabora.com>
508 X-Mailer: b4 0.11.1
509 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=2269;
510  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
511  bh=8FFms7ZFvtbGRTeN4REh/YGhyU+oeFdqYWO/CK2KT8c=;
512  b=ub/wDdTpC9jeMsoCSRmmqPKTVKH8soQUtOakduE6Kmcgt/JvOwM+tMckRDcgsVcmdLW9umjznn05
513  a7TSEWbUC2GDJJri/M43YYI86BB6vTZEyOuxzEaRrXkA+V76F2vz
514 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
515  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
516 Precedence: bulk
517 List-ID: <linux-media.vger.kernel.org>
518 X-Mailing-List: linux-media@vger.kernel.org
519
520 Implement a helper function, wrapping around getting a vb2 queue and
521 checking whether it is busy, to reduce the amount of code duplication in
522 the driver.
523
524 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
525 ---
526  drivers/staging/media/rkvdec/rkvdec.c | 21 ++++++++++++++-------
527  1 file changed, 14 insertions(+), 7 deletions(-)
528
529 diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
530 index 7bab7586918c..c849f6c20279 100644
531 --- a/drivers/staging/media/rkvdec/rkvdec.c
532 +++ b/drivers/staging/media/rkvdec/rkvdec.c
533 @@ -27,6 +27,17 @@
534  #include "rkvdec.h"
535  #include "rkvdec-regs.h"
536  
537 +static int rkvdec_queue_busy(struct rkvdec_ctx *ctx, enum v4l2_buf_type buf_type)
538 +{
539 +       struct vb2_queue *vq;
540 +
541 +       vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, buf_type);
542 +       if (vb2_is_busy(vq))
543 +               return -EBUSY;
544 +       else
545 +               return 0;
546 +}
547 +
548  static int rkvdec_try_ctrl(struct v4l2_ctrl *ctrl)
549  {
550         struct rkvdec_ctx *ctx = container_of(ctrl->handler, struct rkvdec_ctx, ctrl_hdl);
551 @@ -311,13 +322,10 @@ static int rkvdec_s_capture_fmt(struct file *file, void *priv,
552                                 struct v4l2_format *f)
553  {
554         struct rkvdec_ctx *ctx = fh_to_rkvdec_ctx(priv);
555 -       struct vb2_queue *vq;
556         int ret;
557  
558         /* Change not allowed if queue is busy */
559 -       vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx,
560 -                            V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
561 -       if (vb2_is_busy(vq))
562 +       if (rkvdec_queue_busy(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) != 0)
563                 return -EBUSY;
564  
565         ret = rkvdec_try_capture_fmt(file, priv, f);
566 @@ -335,7 +343,7 @@ static int rkvdec_s_output_fmt(struct file *file, void *priv,
567         struct v4l2_m2m_ctx *m2m_ctx = ctx->fh.m2m_ctx;
568         const struct rkvdec_coded_fmt_desc *desc;
569         struct v4l2_format *cap_fmt;
570 -       struct vb2_queue *peer_vq, *vq;
571 +       struct vb2_queue *vq;
572         int ret;
573  
574         /*
575 @@ -354,8 +362,7 @@ static int rkvdec_s_output_fmt(struct file *file, void *priv,
576          * queue, we can't allow doing so when the CAPTURE queue has buffers
577          * allocated.
578          */
579 -       peer_vq = v4l2_m2m_get_vq(m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
580 -       if (vb2_is_busy(peer_vq))
581 +       if (rkvdec_queue_busy(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) != 0)
582                 return -EBUSY;
583  
584         ret = rkvdec_try_output_fmt(file, priv, f);
585
586 From patchwork Thu Jan 12 12:56:19 2023
587 Content-Type: text/plain; charset="utf-8"
588 MIME-Version: 1.0
589 Content-Transfer-Encoding: 7bit
590 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
591 X-Patchwork-Id: 13097956
592 Return-Path: <linux-media-owner@vger.kernel.org>
593 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
594         aws-us-west-2-korg-lkml-1.web.codeaurora.org
595 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
596         by smtp.lore.kernel.org (Postfix) with ESMTP id 49C0FC54EBD
597         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:57:14 +0000 (UTC)
598 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
599         id S231948AbjALM5K (ORCPT <rfc822;linux-media@archiver.kernel.org>);
600         Thu, 12 Jan 2023 07:57:10 -0500
601 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43276 "EHLO
602         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
603         with ESMTP id S231728AbjALM4n (ORCPT
604         <rfc822;linux-media@vger.kernel.org>);
605         Thu, 12 Jan 2023 07:56:43 -0500
606 Received: from madras.collabora.co.uk (madras.collabora.co.uk
607  [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab])
608         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C51F24914A;
609         Thu, 12 Jan 2023 04:56:42 -0800 (PST)
610 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
611  [89.26.75.29])
612         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
613          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
614  server-digest SHA256)
615         (No client certificate requested)
616         (Authenticated sender: sebastianfricke)
617         by madras.collabora.co.uk (Postfix) with ESMTPSA id 830346602DB1;
618         Thu, 12 Jan 2023 12:56:41 +0000 (GMT)
619 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
620         s=mail; t=1673528201;
621         bh=AVEg4DSMK0gqYca27eD54R157QB5YV2sWChYYaBFpmI=;
622         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
623         b=LM1vgt+pOaabBAJ85FdbLo9wq5mUT0w0x5nAszJ37VGijYHKcIXfdOuoVfBt0gFKM
624          6V0TsNYP9Ceg5NVgCMb5s0IZWo5rZ1dbo1r5fvwCxpo0VEyHldVhngCZ0XpZuXi7cB
625          aNfDgYu++punO6h4oxFkcZ7KjeWXaYxHFhfFxOuq9Le8mNU8nv04VPbmGJwPlU5+L9
626          H+xIH29P1Jx2f8ei32MK42TPAd34QOcwHrFPJGwMZzJFHYJ2kzjYxAbPEAb3fIUCjd
627          6xgX3fHo389Rsu+JdAl860N6hgqDWhXpo04SbF0lJbmDCfInbfMID2Zwd3C7+fJY9z
628          H5eTXOOfjX8wQ==
629 From: Sebastian Fricke <sebastian.fricke@collabora.com>
630 Date: Thu, 12 Jan 2023 13:56:19 +0100
631 Subject: [PATCH v2 04/12] staging: media: rkvdec: Block start streaming until
632  both queues run
633 MIME-Version: 1.0
634 Message-Id: <20230101-patch-series-v2-6-2-rc1-v2-4-fa1897efac14@collabora.com>
635 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
636 In-Reply-To: 
637  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
638 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
639         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
640         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
641 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
642         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
643         Jonas Karlman <jonas@kwiboo.se>,
644         Alex Bee <knaerzche@gmail.com>,
645         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
646         Collabora Kernel-domain <kernel@collabora.com>,
647         Robert Beckett <bob.beckett@collabora.com>,
648         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
649         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
650         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
651         Sebastian Fricke <sebastian.fricke@collabora.com>
652 X-Mailer: b4 0.11.1
653 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=1025;
654  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
655  bh=AVEg4DSMK0gqYca27eD54R157QB5YV2sWChYYaBFpmI=;
656  b=4fInMsBgcT6jf30p/7TvMJW1s4sjmIUMu2MIX6uCwRuxM7iBhvTpC/00Nu4xtEZo2TrulpGwWaVw
657  pfVDB17lDTsDfzQFYB1UAn0aetGnBIbCWNnkmQVCdoIqa/IR7mT0
658 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
659  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
660 Precedence: bulk
661 List-ID: <linux-media.vger.kernel.org>
662 X-Mailing-List: linux-media@vger.kernel.org
663
664 Ensure that both the CAPTURE and the OUTPUT queue are running (e.g. busy
665 -> have buffers allocated) before starting the actual streaming process.
666
667 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
668 ---
669  drivers/staging/media/rkvdec/rkvdec.c | 7 +++++++
670  1 file changed, 7 insertions(+)
671
672 diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
673 index c849f6c20279..e0e95d06e216 100644
674 --- a/drivers/staging/media/rkvdec/rkvdec.c
675 +++ b/drivers/staging/media/rkvdec/rkvdec.c
676 @@ -562,6 +562,13 @@ static int rkvdec_start_streaming(struct vb2_queue *q, unsigned int count)
677         if (V4L2_TYPE_IS_CAPTURE(q->type))
678                 return 0;
679  
680 +       /*
681 +        * Make sure that both the output and the capture queue are running
682 +        */
683 +       if (rkvdec_queue_busy(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) == 0 ||
684 +           rkvdec_queue_busy(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) == 0)
685 +               return -EAGAIN;
686 +
687         desc = ctx->coded_fmt_desc;
688         if (WARN_ON(!desc))
689                 return -EINVAL;
690
691 From patchwork Thu Jan 12 12:56:20 2023
692 Content-Type: text/plain; charset="utf-8"
693 MIME-Version: 1.0
694 Content-Transfer-Encoding: 7bit
695 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
696 X-Patchwork-Id: 13097955
697 Return-Path: <linux-media-owner@vger.kernel.org>
698 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
699         aws-us-west-2-korg-lkml-1.web.codeaurora.org
700 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
701         by smtp.lore.kernel.org (Postfix) with ESMTP id AC9EFC54EBD
702         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:57:10 +0000 (UTC)
703 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
704         id S232111AbjALM5I (ORCPT <rfc822;linux-media@archiver.kernel.org>);
705         Thu, 12 Jan 2023 07:57:08 -0500
706 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42906 "EHLO
707         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
708         with ESMTP id S231582AbjALM4q (ORCPT
709         <rfc822;linux-media@vger.kernel.org>);
710         Thu, 12 Jan 2023 07:56:46 -0500
711 Received: from madras.collabora.co.uk (madras.collabora.co.uk
712  [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab])
713         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 13DAADEC9;
714         Thu, 12 Jan 2023 04:56:46 -0800 (PST)
715 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
716  [89.26.75.29])
717         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
718          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
719  server-digest SHA256)
720         (No client certificate requested)
721         (Authenticated sender: sebastianfricke)
722         by madras.collabora.co.uk (Postfix) with ESMTPSA id BF6A36602DBB;
723         Thu, 12 Jan 2023 12:56:44 +0000 (GMT)
724 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
725         s=mail; t=1673528204;
726         bh=GtQZT2nN8QVz9LN/mUHoZT/CUo6gIVaMFXE6EeZP8+w=;
727         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
728         b=f3+wXOfId313ZjMh/uj5YyArXZ6QYSDBTl+YVjkRP7vNA+aP9XlSN7x31pOqpO/i0
729          U3XO5+2Qtclgr/r+hSRfU/AN+LfDrxKmTKLaRJuIt2EUryjNtbN9xgdsOhK7h445kP
730          9FvsvDF8lu94aevG1t2G5NA3coRX2H2u8epSH5srfqlProjYdCGS9eNDwMT2iSdB9l
731          1BJQVrrxC3m+tqhcXg5cESXNUPLHcm/3LfdAyEYwt3VxQXOv7lH85o7SeNe7WSrkmm
732          MCLS5aMFnELvLxFYZq+jkhufKL3Ahp0BsIi7a8uSaCkF3/IrYc/t70/+3uFD2ZFm3S
733          qwQKrW4BVuUHA==
734 From: Sebastian Fricke <sebastian.fricke@collabora.com>
735 Date: Thu, 12 Jan 2023 13:56:20 +0100
736 Subject: [PATCH v2 05/12] staging: media: rkvdec: Add SPS structure to
737  internal context
738 MIME-Version: 1.0
739 Message-Id: <20230101-patch-series-v2-6-2-rc1-v2-5-fa1897efac14@collabora.com>
740 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
741 In-Reply-To: 
742  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
743 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
744         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
745         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
746 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
747         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
748         Jonas Karlman <jonas@kwiboo.se>,
749         Alex Bee <knaerzche@gmail.com>,
750         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
751         Collabora Kernel-domain <kernel@collabora.com>,
752         Robert Beckett <bob.beckett@collabora.com>,
753         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
754         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
755         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
756         Sebastian Fricke <sebastian.fricke@collabora.com>
757 X-Mailer: b4 0.11.1
758 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=801;
759  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
760  bh=GtQZT2nN8QVz9LN/mUHoZT/CUo6gIVaMFXE6EeZP8+w=;
761  b=OjC0Py2sReXxL+AYZYLXHyPGdbsOwyx+uqaYl4Y1kEeTAbxmGZkntvZnq3XKEtOeM85QWw+Ztya4
762  wmZhOV/OBs/BI5WNTao0NajI7uAMZXp/pcpslmQlBD+AoRw3Kxzc
763 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
764  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
765 Precedence: bulk
766 List-ID: <linux-media.vger.kernel.org>
767 X-Mailing-List: linux-media@vger.kernel.org
768
769 Prepare storing the SPS structure for HEVC & H264 in the internal
770 context of the rkvdec instance. This structure is used to figure out
771 which capture queue format is appropriate for decoding.
772
773 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
774 ---
775  drivers/staging/media/rkvdec/rkvdec.h | 1 +
776  1 file changed, 1 insertion(+)
777
778 diff --git a/drivers/staging/media/rkvdec/rkvdec.h b/drivers/staging/media/rkvdec/rkvdec.h
779 index 633335ebb9c4..332126e7b812 100644
780 --- a/drivers/staging/media/rkvdec/rkvdec.h
781 +++ b/drivers/staging/media/rkvdec/rkvdec.h
782 @@ -105,6 +105,7 @@ struct rkvdec_ctx {
783         struct v4l2_ctrl_handler ctrl_hdl;
784         struct rkvdec_dev *dev;
785         void *priv;
786 +       void *sps;
787  };
788  
789  static inline struct rkvdec_ctx *fh_to_rkvdec_ctx(struct v4l2_fh *fh)
790
791 From patchwork Thu Jan 12 12:56:21 2023
792 Content-Type: text/plain; charset="utf-8"
793 MIME-Version: 1.0
794 Content-Transfer-Encoding: 7bit
795 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
796 X-Patchwork-Id: 13097954
797 Return-Path: <linux-media-owner@vger.kernel.org>
798 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
799         aws-us-west-2-korg-lkml-1.web.codeaurora.org
800 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
801         by smtp.lore.kernel.org (Postfix) with ESMTP id 4CD68C54EBD
802         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:57:08 +0000 (UTC)
803 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
804         id S231660AbjALM5G (ORCPT <rfc822;linux-media@archiver.kernel.org>);
805         Thu, 12 Jan 2023 07:57:06 -0500
806 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43318 "EHLO
807         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
808         with ESMTP id S231679AbjALM4v (ORCPT
809         <rfc822;linux-media@vger.kernel.org>);
810         Thu, 12 Jan 2023 07:56:51 -0500
811 Received: from madras.collabora.co.uk (madras.collabora.co.uk
812  [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab])
813         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 10D2939F81;
814         Thu, 12 Jan 2023 04:56:49 -0800 (PST)
815 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
816  [89.26.75.29])
817         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
818          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
819  server-digest SHA256)
820         (No client certificate requested)
821         (Authenticated sender: sebastianfricke)
822         by madras.collabora.co.uk (Postfix) with ESMTPSA id BA61F6602DB1;
823         Thu, 12 Jan 2023 12:56:47 +0000 (GMT)
824 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
825         s=mail; t=1673528207;
826         bh=Da6QtFYOuId0q8spuTSgR9gP0GfvHSM7GfQl76avmIU=;
827         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
828         b=dHzAuxLpAj79iY9LVET5QkBL9VPhVA1ioJQwPn2iFXHU4fDdFn9jzLrSF87VecJ2y
829          1g4/d6x53E0SC3CNDg90z3NYtWNIMSmbDKQL9hU958IXnDuafam/WNGpmJbUwSYfrB
830          7XAEnIX34wDmWKijisW8hShchRspOnId3nGqxD0wNFptvHvdLBIZ2hP5HxLP0mbtsB
831          8vfs4fP10dIJERtoHYCSiY6fm95Y2n60qeW6NRfZAfazo04rhOlRNAw44VAk+2TSC5
832          Y/yrD0dScreg28gKD8HaSfR1/oASNvZ/pY/7vp1xqbDHuvtoJq1cHwigZI9Im2CVlN
833          e0Za9curbjdng==
834 From: Sebastian Fricke <sebastian.fricke@collabora.com>
835 Date: Thu, 12 Jan 2023 13:56:21 +0100
836 Subject: [PATCH v2 06/12] staging: media: rkvdec: Add a valid pixel format
837  check as callback
838 MIME-Version: 1.0
839 Message-Id: <20230101-patch-series-v2-6-2-rc1-v2-6-fa1897efac14@collabora.com>
840 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
841 In-Reply-To: 
842  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
843 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
844         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
845         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
846 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
847         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
848         Jonas Karlman <jonas@kwiboo.se>,
849         Alex Bee <knaerzche@gmail.com>,
850         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
851         Collabora Kernel-domain <kernel@collabora.com>,
852         Robert Beckett <bob.beckett@collabora.com>,
853         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
854         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
855         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
856         Sebastian Fricke <sebastian.fricke@collabora.com>
857 X-Mailer: b4 0.11.1
858 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=3923;
859  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
860  bh=Da6QtFYOuId0q8spuTSgR9gP0GfvHSM7GfQl76avmIU=;
861  b=Ei9OhrN5lMhBxVdjk4LBAl2cBQ2833Mt1irFmo2edGvikdXUqvhqqNyW0wxQ84YZ9drS3FRc9gZs
862  0Ef1O9TjAyFyFdBeAO/IeTnNjUYTD+y6bGpxE1du+FdS0vTDEOur
863 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
864  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
865 Precedence: bulk
866 List-ID: <linux-media.vger.kernel.org>
867 X-Mailing-List: linux-media@vger.kernel.org
868
869 Provide a callback for codec variant drivers to indicate the correct
870 output pixel-format. It will either utilize the SPS structure stored via
871 the S_CTRL IOCTL or return the default pixel-format.
872
873 Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
874 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
875 ---
876  drivers/staging/media/rkvdec/rkvdec.c | 45 +++++++++++++++++++++++++++++------
877  drivers/staging/media/rkvdec/rkvdec.h |  1 +
878  2 files changed, 39 insertions(+), 7 deletions(-)
879
880 diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
881 index e0e95d06e216..a46f918926a2 100644
882 --- a/drivers/staging/media/rkvdec/rkvdec.c
883 +++ b/drivers/staging/media/rkvdec/rkvdec.c
884 @@ -38,6 +38,20 @@ static int rkvdec_queue_busy(struct rkvdec_ctx *ctx, enum v4l2_buf_type buf_type
885                 return 0;
886  }
887  
888 +/*
889 + * Use the current SPS, set by the user via the VIDIOC_S_CTRL IOCTL,
890 + * to determine the optimal pixel-format. Each codec is responsible
891 + * for choosing the appropriate pixel-format for a given parameter set.
892 + */
893 +static int rkvdec_get_valid_fmt(struct rkvdec_ctx *ctx)
894 +{
895 +       const struct rkvdec_coded_fmt_desc *coded_desc = ctx->coded_fmt_desc;
896 +
897 +       if (coded_desc->ops->valid_fmt)
898 +               return coded_desc->ops->valid_fmt(ctx);
899 +       return ctx->coded_fmt_desc->decoded_fmts[0];
900 +}
901 +
902  static int rkvdec_try_ctrl(struct v4l2_ctrl *ctrl)
903  {
904         struct rkvdec_ctx *ctx = container_of(ctrl->handler, struct rkvdec_ctx, ctrl_hdl);
905 @@ -200,8 +214,9 @@ static void rkvdec_reset_coded_fmt(struct rkvdec_ctx *ctx)
906  static void rkvdec_reset_decoded_fmt(struct rkvdec_ctx *ctx)
907  {
908         struct v4l2_format *f = &ctx->decoded_fmt;
909 +       u32 valid_fmt = rkvdec_get_valid_fmt(ctx);
910  
911 -       rkvdec_reset_fmt(ctx, f, ctx->coded_fmt_desc->decoded_fmts[0]);
912 +       rkvdec_reset_fmt(ctx, f, valid_fmt);
913         f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
914         v4l2_fill_pixfmt_mp(&f->fmt.pix_mp,
915                             ctx->coded_fmt_desc->decoded_fmts[0],
916 @@ -260,13 +275,17 @@ static int rkvdec_try_capture_fmt(struct file *file, void *priv,
917         if (WARN_ON(!coded_desc))
918                 return -EINVAL;
919  
920 -       for (i = 0; i < coded_desc->num_decoded_fmts; i++) {
921 -               if (coded_desc->decoded_fmts[i] == pix_mp->pixelformat)
922 -                       break;
923 -       }
924 +       if (ctx->sps) {
925 +               pix_mp->pixelformat = rkvdec_get_valid_fmt(ctx);
926 +       } else {
927 +               for (i = 0; i < coded_desc->num_decoded_fmts; i++) {
928 +                       if (coded_desc->decoded_fmts[i] == pix_mp->pixelformat)
929 +                               break;
930 +               }
931  
932 -       if (i == coded_desc->num_decoded_fmts)
933 -               pix_mp->pixelformat = coded_desc->decoded_fmts[0];
934 +               if (i == coded_desc->num_decoded_fmts)
935 +                       pix_mp->pixelformat = coded_desc->decoded_fmts[0];
936 +       }
937  
938         /* Always apply the frmsize constraint of the coded end. */
939         pix_mp->width = max(pix_mp->width, ctx->coded_fmt.fmt.pix_mp.width);
940 @@ -435,6 +454,18 @@ static int rkvdec_enum_capture_fmt(struct file *file, void *priv,
941         if (WARN_ON(!ctx->coded_fmt_desc))
942                 return -EINVAL;
943  
944 +       /*
945 +        * According to the specification the driver can only return formats
946 +        * that are supported by both the current encoded format and the
947 +        * provided controls
948 +        */
949 +       if (ctx->sps) {
950 +               if (f->index)
951 +                       return -EINVAL;
952 +               f->pixelformat = rkvdec_get_valid_fmt(ctx);
953 +               return 0;
954 +       }
955 +
956         if (f->index >= ctx->coded_fmt_desc->num_decoded_fmts)
957                 return -EINVAL;
958  
959 diff --git a/drivers/staging/media/rkvdec/rkvdec.h b/drivers/staging/media/rkvdec/rkvdec.h
960 index 332126e7b812..e353a4403e5b 100644
961 --- a/drivers/staging/media/rkvdec/rkvdec.h
962 +++ b/drivers/staging/media/rkvdec/rkvdec.h
963 @@ -66,6 +66,7 @@ vb2_to_rkvdec_decoded_buf(struct vb2_buffer *buf)
964  struct rkvdec_coded_fmt_ops {
965         int (*adjust_fmt)(struct rkvdec_ctx *ctx,
966                           struct v4l2_format *f);
967 +       u32 (*valid_fmt)(struct rkvdec_ctx *ctx);
968         int (*start)(struct rkvdec_ctx *ctx);
969         void (*stop)(struct rkvdec_ctx *ctx);
970         int (*run)(struct rkvdec_ctx *ctx);
971
972 From patchwork Thu Jan 12 12:56:22 2023
973 Content-Type: text/plain; charset="utf-8"
974 MIME-Version: 1.0
975 Content-Transfer-Encoding: 7bit
976 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
977 X-Patchwork-Id: 13097953
978 Return-Path: <linux-media-owner@vger.kernel.org>
979 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
980         aws-us-west-2-korg-lkml-1.web.codeaurora.org
981 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
982         by smtp.lore.kernel.org (Postfix) with ESMTP id 2108CC54EBD
983         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:57:06 +0000 (UTC)
984 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
985         id S232083AbjALM5C (ORCPT <rfc822;linux-media@archiver.kernel.org>);
986         Thu, 12 Jan 2023 07:57:02 -0500
987 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42858 "EHLO
988         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
989         with ESMTP id S231761AbjALM4x (ORCPT
990         <rfc822;linux-media@vger.kernel.org>);
991         Thu, 12 Jan 2023 07:56:53 -0500
992 Received: from madras.collabora.co.uk (madras.collabora.co.uk
993  [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab])
994         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7421050E41;
995         Thu, 12 Jan 2023 04:56:52 -0800 (PST)
996 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
997  [89.26.75.29])
998         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
999          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
1000  server-digest SHA256)
1001         (No client certificate requested)
1002         (Authenticated sender: sebastianfricke)
1003         by madras.collabora.co.uk (Postfix) with ESMTPSA id 2CAEF6602DB9;
1004         Thu, 12 Jan 2023 12:56:51 +0000 (GMT)
1005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
1006         s=mail; t=1673528211;
1007         bh=L7yUo+Zy/WcujWFgTjyCDy8xs7O/0zxdTxZIPyBpgSk=;
1008         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
1009         b=P22F8isb/92Gjf4AENjAKMgGWDmFwC0qIFR7iMIgoD9bBf9rFm664WPACZSLAr8E2
1010          qfajrA7qgYi5RoMLhupOs4cAP6zWL05znXgyChFWLKpziSUCzxy+2hrjfXNN7dXHWa
1011          0zHFrQsP6FZvz+0ew0u+No52ksa3xqB8VjYR74M0OaS8qN0CRB7YojDQSo6ZoAJGtr
1012          EjQL9xHzvjcnsFjrFiMR93+H8rstCGkRnMCshoJu05db/zuBOPM9wqLLatm//9x0TE
1013          jcl1H3/M/lAi6hMVNz6qQI+rELbEZeur5dMwA2IIuaY/+ydg2CE91YAxI1jb1XVVY/
1014          wI3oUA0Z1tQ7A==
1015 From: Sebastian Fricke <sebastian.fricke@collabora.com>
1016 Date: Thu, 12 Jan 2023 13:56:22 +0100
1017 Subject: [PATCH v2 07/12] staging: media: rkvdec: Add a routine to fetch SPS
1018  attributes as a callback
1019 MIME-Version: 1.0
1020 Message-Id: <20230101-patch-series-v2-6-2-rc1-v2-7-fa1897efac14@collabora.com>
1021 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1022 In-Reply-To: 
1023  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1024 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
1025         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
1026         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1027 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
1028         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
1029         Jonas Karlman <jonas@kwiboo.se>,
1030         Alex Bee <knaerzche@gmail.com>,
1031         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
1032         Collabora Kernel-domain <kernel@collabora.com>,
1033         Robert Beckett <bob.beckett@collabora.com>,
1034         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
1035         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
1036         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
1037         Sebastian Fricke <sebastian.fricke@collabora.com>
1038 X-Mailer: b4 0.11.1
1039 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=2158;
1040  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
1041  bh=L7yUo+Zy/WcujWFgTjyCDy8xs7O/0zxdTxZIPyBpgSk=;
1042  b=BQBpXVr9E3Fn2xXJWy5utkd9tAkwvp5ZmvKorxmvoteBpq2FSBbzIP1smBJqXM3OVtIox4UT7+qw
1043  qNzHyG+6AZYM2KNQS3zMp/Hpk0VCVIgsydDjavwdm+2IKSiWNpT1
1044 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
1045  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
1046 Precedence: bulk
1047 List-ID: <linux-media.vger.kernel.org>
1048 X-Mailing-List: linux-media@vger.kernel.org
1049
1050 Add a callback for each codec variant, that fetches basic information
1051 like resolution, bit-depth and sub-sampling from a SPS structure. This
1052 data is used to verify whether a new SPS structure is valid.
1053
1054 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
1055 ---
1056  drivers/staging/media/rkvdec/rkvdec.c | 10 ++++++++++
1057  drivers/staging/media/rkvdec/rkvdec.h | 10 ++++++++++
1058  2 files changed, 20 insertions(+)
1059
1060 diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
1061 index a46f918926a2..e8c750a7343a 100644
1062 --- a/drivers/staging/media/rkvdec/rkvdec.c
1063 +++ b/drivers/staging/media/rkvdec/rkvdec.c
1064 @@ -52,6 +52,16 @@ static int rkvdec_get_valid_fmt(struct rkvdec_ctx *ctx)
1065         return ctx->coded_fmt_desc->decoded_fmts[0];
1066  }
1067  
1068 +static int rkvdec_get_sps_attributes(struct rkvdec_ctx *ctx, void *sps,
1069 +                                    struct sps_attributes *attributes)
1070 +{
1071 +       const struct rkvdec_coded_fmt_desc *coded_desc = ctx->coded_fmt_desc;
1072 +
1073 +       if (coded_desc->ops->get_sps_attributes)
1074 +               return coded_desc->ops->get_sps_attributes(ctx, sps, attributes);
1075 +       return 0;
1076 +}
1077 +
1078  static int rkvdec_try_ctrl(struct v4l2_ctrl *ctrl)
1079  {
1080         struct rkvdec_ctx *ctx = container_of(ctrl->handler, struct rkvdec_ctx, ctrl_hdl);
1081 diff --git a/drivers/staging/media/rkvdec/rkvdec.h b/drivers/staging/media/rkvdec/rkvdec.h
1082 index e353a4403e5b..7b6702c360fd 100644
1083 --- a/drivers/staging/media/rkvdec/rkvdec.h
1084 +++ b/drivers/staging/media/rkvdec/rkvdec.h
1085 @@ -63,10 +63,20 @@ vb2_to_rkvdec_decoded_buf(struct vb2_buffer *buf)
1086                             base.vb.vb2_buf);
1087  }
1088  
1089 +struct sps_attributes {
1090 +       unsigned int width;
1091 +       unsigned int height;
1092 +       unsigned int luma_bitdepth;
1093 +       unsigned int chroma_bitdepth;
1094 +       unsigned int subsampling;
1095 +};
1096 +
1097  struct rkvdec_coded_fmt_ops {
1098         int (*adjust_fmt)(struct rkvdec_ctx *ctx,
1099                           struct v4l2_format *f);
1100         u32 (*valid_fmt)(struct rkvdec_ctx *ctx);
1101 +       int (*get_sps_attributes)(struct rkvdec_ctx *ctx, void *sps,
1102 +                                 struct sps_attributes *attributes);
1103         int (*start)(struct rkvdec_ctx *ctx);
1104         void (*stop)(struct rkvdec_ctx *ctx);
1105         int (*run)(struct rkvdec_ctx *ctx);
1106
1107 From patchwork Thu Jan 12 12:56:23 2023
1108 Content-Type: text/plain; charset="utf-8"
1109 MIME-Version: 1.0
1110 Content-Transfer-Encoding: 7bit
1111 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
1112 X-Patchwork-Id: 13097958
1113 Return-Path: <linux-media-owner@vger.kernel.org>
1114 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
1115         aws-us-west-2-korg-lkml-1.web.codeaurora.org
1116 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
1117         by smtp.lore.kernel.org (Postfix) with ESMTP id 941CFC54EBC
1118         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:57:19 +0000 (UTC)
1119 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
1120         id S232241AbjALM5Q (ORCPT <rfc822;linux-media@archiver.kernel.org>);
1121         Thu, 12 Jan 2023 07:57:16 -0500
1122 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42866 "EHLO
1123         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
1124         with ESMTP id S231946AbjALM44 (ORCPT
1125         <rfc822;linux-media@vger.kernel.org>);
1126         Thu, 12 Jan 2023 07:56:56 -0500
1127 Received: from madras.collabora.co.uk (madras.collabora.co.uk
1128  [46.235.227.172])
1129         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5C097661;
1130         Thu, 12 Jan 2023 04:56:55 -0800 (PST)
1131 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
1132  [89.26.75.29])
1133         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
1134          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
1135  server-digest SHA256)
1136         (No client certificate requested)
1137         (Authenticated sender: sebastianfricke)
1138         by madras.collabora.co.uk (Postfix) with ESMTPSA id 71D096602DB1;
1139         Thu, 12 Jan 2023 12:56:54 +0000 (GMT)
1140 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
1141         s=mail; t=1673528214;
1142         bh=NR4NgmAwqSKt432W3wHLkNsbDlb7Ku6yU6hoKm5PFhw=;
1143         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
1144         b=iFWWVGd0PM+MpyqfisZJ8ZATeRpN9ueRYPloz+zab6riogtw9/H/jMvGclFgaXL27
1145          Iecy/xV1AUO4NhXd2HknaBrbA0KNS+e4fS8zCri1Gh8xW2Nod13mZ+LxeV5n8F5yjc
1146          +cURbe6rY59CdaVeW9cYcNKzo9bRGgp7M0wXHO+aM/vRP9rOQbnS+mBCiM8vilslz/
1147          G93/nO79P39GLfJEMTbEWrRV42SsXRH753uhUx1YgS5OC67wi014XyGjHPU2+rin1H
1148          7X5xq9KghhFbMBukRC+/7069InJwB7ymRkR6URNI299eTDzRWoAjRSU5t8Ca41MoFF
1149          wfWWZlcj7oERg==
1150 From: Sebastian Fricke <sebastian.fricke@collabora.com>
1151 Date: Thu, 12 Jan 2023 13:56:23 +0100
1152 Subject: [PATCH v2 08/12] staging: media: rkvdec: Add a valid SPS check as a
1153  callback
1154 MIME-Version: 1.0
1155 Message-Id: <20230101-patch-series-v2-6-2-rc1-v2-8-fa1897efac14@collabora.com>
1156 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1157 In-Reply-To: 
1158  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1159 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
1160         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
1161         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1162 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
1163         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
1164         Jonas Karlman <jonas@kwiboo.se>,
1165         Alex Bee <knaerzche@gmail.com>,
1166         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
1167         Collabora Kernel-domain <kernel@collabora.com>,
1168         Robert Beckett <bob.beckett@collabora.com>,
1169         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
1170         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
1171         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
1172         Sebastian Fricke <sebastian.fricke@collabora.com>
1173 X-Mailer: b4 0.11.1
1174 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=3157;
1175  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
1176  bh=NR4NgmAwqSKt432W3wHLkNsbDlb7Ku6yU6hoKm5PFhw=;
1177  b=IQDkaNXJm1EiGyDmWoVKY4f+RD7CQ6A9pSeRltErtvX0pqcjW0RWXs2BZkhZonGnlhJ66v4IbQHv
1178  T3KBCKDWAP+0YbahHXPuYtABeVBdfI70Rp3wIpLpoKQRRGG5TI/Z
1179 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
1180  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
1181 Precedence: bulk
1182 List-ID: <linux-media.vger.kernel.org>
1183 X-Mailing-List: linux-media@vger.kernel.org
1184
1185 Add a callback for each codec variant, that ensures that a given format
1186 is compatible with the SPS that is stored in the context of the
1187 instance.
1188 This is used for two scenarios:
1189 - New output queue format is set, which is incompatible with the
1190   currently stored SPS
1191 - Start streaming is called but the SPS doesn't match the current format
1192   anymore
1193
1194 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
1195 ---
1196  drivers/staging/media/rkvdec/rkvdec.c | 35 +++++++++++++++++++++++++++++++++++
1197  drivers/staging/media/rkvdec/rkvdec.h |  1 +
1198  2 files changed, 36 insertions(+)
1199
1200 diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
1201 index e8c750a7343a..8d948bcc4e46 100644
1202 --- a/drivers/staging/media/rkvdec/rkvdec.c
1203 +++ b/drivers/staging/media/rkvdec/rkvdec.c
1204 @@ -52,6 +52,26 @@ static int rkvdec_get_valid_fmt(struct rkvdec_ctx *ctx)
1205         return ctx->coded_fmt_desc->decoded_fmts[0];
1206  }
1207  
1208 +static int rkvdec_sps_check(struct rkvdec_ctx *ctx, struct v4l2_pix_format_mplane *pix_mp)
1209 +{
1210 +       const struct rkvdec_coded_fmt_desc *coded_desc = ctx->coded_fmt_desc;
1211 +
1212 +       /*
1213 +        * When a codec doesn't implement the SPS check, handle it as if no
1214 +        * SPS exists for the codec.
1215 +        */
1216 +       if (coded_desc->ops->sps_check) {
1217 +               if (!ctx->sps)
1218 +                       return -EINVAL;
1219 +
1220 +               if (!pix_mp)
1221 +                       pix_mp = &ctx->decoded_fmt.fmt.pix_mp;
1222 +               return coded_desc->ops->sps_check(ctx, ctx->sps, pix_mp);
1223 +       }
1224 +
1225 +       return 0;
1226 +}
1227 +
1228  static int rkvdec_get_sps_attributes(struct rkvdec_ctx *ctx, void *sps,
1229                                      struct sps_attributes *attributes)
1230  {
1231 @@ -375,6 +395,13 @@ static int rkvdec_s_output_fmt(struct file *file, void *priv,
1232         struct vb2_queue *vq;
1233         int ret;
1234  
1235 +       /*
1236 +        * When the new output format doesn't match the existing SPS stored in
1237 +        * the context, then the SPS needs to be reset by user-space.
1238 +        */
1239 +       if (rkvdec_sps_check(ctx, &f->fmt.pix_mp) < 0)
1240 +               ctx->sps = NULL;
1241 +
1242         /*
1243          * In order to support dynamic resolution change, the decoder admits
1244          * a resolution change, as long as the pixelformat remains. Can't be
1245 @@ -603,6 +630,14 @@ static int rkvdec_start_streaming(struct vb2_queue *q, unsigned int count)
1246         if (V4L2_TYPE_IS_CAPTURE(q->type))
1247                 return 0;
1248  
1249 +       /*
1250 +        * An incompatible SPS at this point is invalid, abort the process.
1251 +        */
1252 +       if (rkvdec_sps_check(ctx, NULL) < 0) {
1253 +               ctx->sps = NULL;
1254 +               return -EINVAL;
1255 +       }
1256 +
1257         /*
1258          * Make sure that both the output and the capture queue are running
1259          */
1260 diff --git a/drivers/staging/media/rkvdec/rkvdec.h b/drivers/staging/media/rkvdec/rkvdec.h
1261 index 7b6702c360fd..d74821f9fd0b 100644
1262 --- a/drivers/staging/media/rkvdec/rkvdec.h
1263 +++ b/drivers/staging/media/rkvdec/rkvdec.h
1264 @@ -75,6 +75,7 @@ struct rkvdec_coded_fmt_ops {
1265         int (*adjust_fmt)(struct rkvdec_ctx *ctx,
1266                           struct v4l2_format *f);
1267         u32 (*valid_fmt)(struct rkvdec_ctx *ctx);
1268 +       int (*sps_check)(struct rkvdec_ctx *ctx, void *sps, struct v4l2_pix_format_mplane *pix_mp);
1269         int (*get_sps_attributes)(struct rkvdec_ctx *ctx, void *sps,
1270                                   struct sps_attributes *attributes);
1271         int (*start)(struct rkvdec_ctx *ctx);
1272
1273 From patchwork Thu Jan 12 12:56:24 2023
1274 Content-Type: text/plain; charset="utf-8"
1275 MIME-Version: 1.0
1276 Content-Transfer-Encoding: 7bit
1277 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
1278 X-Patchwork-Id: 13097957
1279 Return-Path: <linux-media-owner@vger.kernel.org>
1280 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
1281         aws-us-west-2-korg-lkml-1.web.codeaurora.org
1282 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
1283         by smtp.lore.kernel.org (Postfix) with ESMTP id D28FAC54EBC
1284         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:57:16 +0000 (UTC)
1285 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
1286         id S232195AbjALM5O (ORCPT <rfc822;linux-media@archiver.kernel.org>);
1287         Thu, 12 Jan 2023 07:57:14 -0500
1288 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43136 "EHLO
1289         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
1290         with ESMTP id S231934AbjALM5A (ORCPT
1291         <rfc822;linux-media@vger.kernel.org>);
1292         Thu, 12 Jan 2023 07:57:00 -0500
1293 Received: from madras.collabora.co.uk (madras.collabora.co.uk
1294  [46.235.227.172])
1295         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BF9C638BC;
1296         Thu, 12 Jan 2023 04:56:58 -0800 (PST)
1297 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
1298  [89.26.75.29])
1299         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
1300          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
1301  server-digest SHA256)
1302         (No client certificate requested)
1303         (Authenticated sender: sebastianfricke)
1304         by madras.collabora.co.uk (Postfix) with ESMTPSA id 7A1636602DBA;
1305         Thu, 12 Jan 2023 12:56:57 +0000 (GMT)
1306 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
1307         s=mail; t=1673528217;
1308         bh=19U+A00eX7GomcVZ4hwuwzX1XI4Jf/K9mYqNNP1Mc6c=;
1309         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
1310         b=d7S8hzbl9CZf9tINvxTrwAjOPyZGpYeDkOqtO15LV6A+mhlACIc8cO4x/l0QhLMDV
1311          RKtUTsC7nqNRAguPa6HrSTppiAP+1MA8FDk9ZHJ6IeS3YiPDk9+Z0RHqgXca364iyY
1312          kPl9M+S+OxTFPmU58ZejKKYo/UXx+XjYE7gInFp8dzFpr6PjgyppTspRMHeBo6B0vR
1313          wGh0SrbnkraovnN/1QBadr3FDZT4PVFJePnsNXM/Ey47S0Kgc8cBk0q4HU3KAmJ+AT
1314          CSQoFV/3kRVQDouTMqx+p/j/egX/DTbgfWmQixUEaho3i+DQosC1e3d9d3RjYAvhRy
1315          txFyOGKwsixbA==
1316 From: Sebastian Fricke <sebastian.fricke@collabora.com>
1317 Date: Thu, 12 Jan 2023 13:56:24 +0100
1318 Subject: [PATCH v2 09/12] staging: media: rkvdec: h264: Add callbacks for h264
1319 MIME-Version: 1.0
1320 Message-Id: <20230101-patch-series-v2-6-2-rc1-v2-9-fa1897efac14@collabora.com>
1321 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1322 In-Reply-To: 
1323  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1324 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
1325         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
1326         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1327 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
1328         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
1329         Jonas Karlman <jonas@kwiboo.se>,
1330         Alex Bee <knaerzche@gmail.com>,
1331         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
1332         Collabora Kernel-domain <kernel@collabora.com>,
1333         Robert Beckett <bob.beckett@collabora.com>,
1334         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
1335         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
1336         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
1337         Sebastian Fricke <sebastian.fricke@collabora.com>
1338 X-Mailer: b4 0.11.1
1339 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=5576;
1340  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
1341  bh=19U+A00eX7GomcVZ4hwuwzX1XI4Jf/K9mYqNNP1Mc6c=;
1342  b=q/7dHZEZC7Om5sfZ593nhkIVNVGwUmKnKRnaq5y/97IVmaJeS8raTGDHwcL5TyDW1rqoym9zCAKB
1343  cUypHMjIB7YqWAGX5s3xun+/JDEUBTd5vaUDxzWqeURvM7C16Agw
1344 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
1345  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
1346 Precedence: bulk
1347 List-ID: <linux-media.vger.kernel.org>
1348 X-Mailing-List: linux-media@vger.kernel.org
1349
1350 Implement the valid format and sps validation callbacks for H264.
1351 H264 already has a SPS validation function, adjust it to fit the
1352 function the declaration and add error messages.
1353 Additionally, add a function to fetch attributes from the SPS in a human
1354 readable format to make the code more self documenting.
1355
1356 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
1357 ---
1358  drivers/staging/media/rkvdec/rkvdec-h264.c | 105 ++++++++++++++++++++++-------
1359  1 file changed, 80 insertions(+), 25 deletions(-)
1360
1361 diff --git a/drivers/staging/media/rkvdec/rkvdec-h264.c b/drivers/staging/media/rkvdec/rkvdec-h264.c
1362 index 4fc167b42cf0..17b215874ddd 100644
1363 --- a/drivers/staging/media/rkvdec/rkvdec-h264.c
1364 +++ b/drivers/staging/media/rkvdec/rkvdec-h264.c
1365 @@ -1026,40 +1026,80 @@ static int rkvdec_h264_adjust_fmt(struct rkvdec_ctx *ctx,
1366         return 0;
1367  }
1368  
1369 -static int rkvdec_h264_validate_sps(struct rkvdec_ctx *ctx,
1370 -                                   const struct v4l2_ctrl_h264_sps *sps)
1371 +/*
1372 + * Convert some fields from the SPS structure into human readable attributes.
1373 + */
1374 +static int rkvdec_h264_get_sps_attributes(struct rkvdec_ctx *ctx, void *sps,
1375 +                                         struct sps_attributes *attributes)
1376 +{
1377 +       struct v4l2_ctrl_h264_sps *h264_sps = sps;
1378 +       unsigned int width = (h264_sps->pic_width_in_mbs_minus1 + 1) * 16;
1379 +       unsigned int height = (h264_sps->pic_height_in_map_units_minus1 + 1) * 16;
1380 +       /*
1381 +        * When frame_mbs_only_flag is not set, this is field height,
1382 +        * which is half the final height (see (7-18) in the
1383 +        * specification)
1384 +        */
1385 +       if (!(h264_sps->flags & V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY))
1386 +               height *= 2;
1387 +
1388 +       attributes->width = width;
1389 +       attributes->height = height;
1390 +       attributes->luma_bitdepth = h264_sps->bit_depth_luma_minus8 + 8;
1391 +       attributes->chroma_bitdepth = h264_sps->bit_depth_chroma_minus8 + 8;
1392 +       switch (h264_sps->chroma_format_idc) {
1393 +       case 0:
1394 +               attributes->subsampling = 400;
1395 +               break;
1396 +       case 1:
1397 +               attributes->subsampling = 420;
1398 +               break;
1399 +       case 2:
1400 +               attributes->subsampling = 422;
1401 +               break;
1402 +       case 3:
1403 +               attributes->subsampling = 444;
1404 +               break;
1405 +       };
1406 +       return 0;
1407 +}
1408 +
1409 +static int rkvdec_h264_validate_sps(struct rkvdec_ctx *ctx, void *sps,
1410 +                                   struct v4l2_pix_format_mplane *pix_mp)
1411  {
1412 -       unsigned int width, height;
1413 +       struct sps_attributes attributes = {0};
1414 +
1415 +       rkvdec_h264_get_sps_attributes(ctx, sps, &attributes);
1416  
1417         /*
1418          * TODO: The hardware supports 10-bit and 4:2:2 profiles,
1419          * but it's currently broken in the driver.
1420          * Reject them for now, until it's fixed.
1421          */
1422 -       if (sps->chroma_format_idc > 1)
1423 -               /* Only 4:0:0 and 4:2:0 are supported */
1424 +       if (attributes.subsampling > 420) {
1425 +               dev_err(ctx->dev->dev,
1426 +                       "Only 4:0:0 and 4:2:0 subsampling schemes are supported, got: %d\n",
1427 +                       attributes.subsampling);
1428                 return -EINVAL;
1429 -       if (sps->bit_depth_luma_minus8 != sps->bit_depth_chroma_minus8)
1430 -               /* Luma and chroma bit depth mismatch */
1431 +       }
1432 +       if (attributes.luma_bitdepth != attributes.chroma_bitdepth) {
1433 +               dev_err(ctx->dev->dev,
1434 +                       "Luma and chroma bit depth mismatch, luma %d, chroma %d\n",
1435 +                       attributes.luma_bitdepth, attributes.chroma_bitdepth);
1436                 return -EINVAL;
1437 -       if (sps->bit_depth_luma_minus8 != 0)
1438 -               /* Only 8-bit is supported */
1439 +       }
1440 +       if (attributes.luma_bitdepth != 8) {
1441 +               dev_err(ctx->dev->dev, "Only 8-bit H264 formats supported, SPS %d\n",
1442 +                       attributes.luma_bitdepth);
1443                 return -EINVAL;
1444 +       }
1445  
1446 -       width = (sps->pic_width_in_mbs_minus1 + 1) * 16;
1447 -       height = (sps->pic_height_in_map_units_minus1 + 1) * 16;
1448 -
1449 -       /*
1450 -        * When frame_mbs_only_flag is not set, this is field height,
1451 -        * which is half the final height (see (7-18) in the
1452 -        * specification)
1453 -        */
1454 -       if (!(sps->flags & V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY))
1455 -               height *= 2;
1456 -
1457 -       if (width > ctx->coded_fmt.fmt.pix_mp.width ||
1458 -           height > ctx->coded_fmt.fmt.pix_mp.height)
1459 +       if (attributes.width > pix_mp->width || attributes.height > pix_mp->height) {
1460 +               dev_err(ctx->dev->dev,
1461 +                       "Incompatible SPS dimension, SPS %dx%d, Pixel format %dx%d.",
1462 +                       attributes.width, attributes.height, pix_mp->width, pix_mp->height);
1463                 return -EINVAL;
1464 +       }
1465  
1466         return 0;
1467  }
1468 @@ -1077,8 +1117,9 @@ static int rkvdec_h264_start(struct rkvdec_ctx *ctx)
1469         if (!ctrl)
1470                 return -EINVAL;
1471  
1472 -       ret = rkvdec_h264_validate_sps(ctx, ctrl->p_new.p_h264_sps);
1473 -       if (ret)
1474 +       ret = rkvdec_h264_validate_sps(ctx, ctrl->p_new.p_h264_sps,
1475 +                                      &ctx->coded_fmt.fmt.pix_mp);
1476 +       if (ret < 0)
1477                 return ret;
1478  
1479         h264_ctx = kzalloc(sizeof(*h264_ctx), GFP_KERNEL);
1480 @@ -1175,10 +1216,21 @@ static int rkvdec_h264_run(struct rkvdec_ctx *ctx)
1481         return 0;
1482  }
1483  
1484 +static u32 rkvdec_h264_valid_fmt(struct rkvdec_ctx *ctx)
1485 +{
1486 +       /*
1487 +        * Only 8 bit 4:0:0 and 4:2:0 formats supported for now.
1488 +        * The SPS is validated at a different function thus we can assume that
1489 +        * it is correct.
1490 +        */
1491 +       return V4L2_PIX_FMT_NV12;
1492 +}
1493 +
1494  static int rkvdec_h264_try_ctrl(struct rkvdec_ctx *ctx, struct v4l2_ctrl *ctrl)
1495  {
1496         if (ctrl->id == V4L2_CID_STATELESS_H264_SPS)
1497 -               return rkvdec_h264_validate_sps(ctx, ctrl->p_new.p_h264_sps);
1498 +               return rkvdec_h264_validate_sps(ctx, ctrl->p_new.p_h264_sps,
1499 +                                               &ctx->coded_fmt.fmt.pix_mp);
1500  
1501         return 0;
1502  }
1503 @@ -1189,4 +1241,7 @@ const struct rkvdec_coded_fmt_ops rkvdec_h264_fmt_ops = {
1504         .stop = rkvdec_h264_stop,
1505         .run = rkvdec_h264_run,
1506         .try_ctrl = rkvdec_h264_try_ctrl,
1507 +       .valid_fmt = rkvdec_h264_valid_fmt,
1508 +       .sps_check = rkvdec_h264_validate_sps,
1509 +       .get_sps_attributes = rkvdec_h264_get_sps_attributes,
1510  };
1511
1512 From patchwork Thu Jan 12 12:56:25 2023
1513 Content-Type: text/plain; charset="utf-8"
1514 MIME-Version: 1.0
1515 Content-Transfer-Encoding: 7bit
1516 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
1517 X-Patchwork-Id: 13097959
1518 Return-Path: <linux-media-owner@vger.kernel.org>
1519 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
1520         aws-us-west-2-korg-lkml-1.web.codeaurora.org
1521 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
1522         by smtp.lore.kernel.org (Postfix) with ESMTP id D24E3C54EBC
1523         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:57:23 +0000 (UTC)
1524 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
1525         id S231443AbjALM5U (ORCPT <rfc822;linux-media@archiver.kernel.org>);
1526         Thu, 12 Jan 2023 07:57:20 -0500
1527 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43440 "EHLO
1528         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
1529         with ESMTP id S232099AbjALM5C (ORCPT
1530         <rfc822;linux-media@vger.kernel.org>);
1531         Thu, 12 Jan 2023 07:57:02 -0500
1532 Received: from madras.collabora.co.uk (madras.collabora.co.uk
1533  [46.235.227.172])
1534         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F020DEC9;
1535         Thu, 12 Jan 2023 04:57:01 -0800 (PST)
1536 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
1537  [89.26.75.29])
1538         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
1539          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
1540  server-digest SHA256)
1541         (No client certificate requested)
1542         (Authenticated sender: sebastianfricke)
1543         by madras.collabora.co.uk (Postfix) with ESMTPSA id 3DE736602DBC;
1544         Thu, 12 Jan 2023 12:57:00 +0000 (GMT)
1545 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
1546         s=mail; t=1673528220;
1547         bh=s+EQFfhyAuhQn7YicE5XWPWi6yC+rHeMTsHsU87SIDc=;
1548         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
1549         b=Eyo/iGEhDGKhLVHuYynBUcGxCA0HxniOOj0YZEwal5LZ6soLeyCp4E7HfoRrLRjJE
1550          +7CPbCElblJWl5FLdwz5ki6VcLqRHunXVfOk/eeKydjm0nZd0xMDazQUYyNDBj6KxP
1551          pOezH+PpLuIjcqzHCmBymhOJ5i4eCyoG8Tdk8lhF2uVIwCX9ezQEfpfV95CsbSWAL6
1552          ho+dTUNgvObJF1HFAQd6jiIyZ+etRpjnfwynf0OCN1ddZHY6lqgq7fAPdhBJSa+TWf
1553          B9yaXLU7wS/F0pZHXWBbL4XLWNpAP/pUEEVBjcnVkSgjvhIFuzNkBDg4tft8sNJKIL
1554          2S8s260THKobA==
1555 From: Sebastian Fricke <sebastian.fricke@collabora.com>
1556 Date: Thu, 12 Jan 2023 13:56:25 +0100
1557 Subject: [PATCH v2 10/12] staging: media: rkvdec: Wrapper for pixel format
1558  preparation
1559 MIME-Version: 1.0
1560 Message-Id: 
1561  <20230101-patch-series-v2-6-2-rc1-v2-10-fa1897efac14@collabora.com>
1562 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1563 In-Reply-To: 
1564  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1565 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
1566         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
1567         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1568 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
1569         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
1570         Jonas Karlman <jonas@kwiboo.se>,
1571         Alex Bee <knaerzche@gmail.com>,
1572         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
1573         Collabora Kernel-domain <kernel@collabora.com>,
1574         Robert Beckett <bob.beckett@collabora.com>,
1575         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
1576         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
1577         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
1578         Sebastian Fricke <sebastian.fricke@collabora.com>
1579 X-Mailer: b4 0.11.1
1580 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=2354;
1581  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
1582  bh=s+EQFfhyAuhQn7YicE5XWPWi6yC+rHeMTsHsU87SIDc=;
1583  b=oUnmXcIum/7DI0U2ej2rfr/P1PixLPwOAObjiKfMcquGxYFvoCILsKjwmY7ITmfCmaF2++etqDiM
1584  TEkWc0fzCCv3jOdJWB4kONL9IPeV96X/47kcNH//+CB+vl9DcchG
1585 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
1586  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
1587 Precedence: bulk
1588 List-ID: <linux-media.vger.kernel.org>
1589 X-Mailing-List: linux-media@vger.kernel.org
1590
1591 Reduce code duplication by creating a wrapper around the preparation of
1592 the `v4l2_pix_format_mplane` structure and the calculation of the
1593 image size.
1594
1595 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
1596 ---
1597  drivers/staging/media/rkvdec/rkvdec.c | 29 +++++++++++++++--------------
1598  1 file changed, 15 insertions(+), 14 deletions(-)
1599
1600 diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
1601 index 8d948bcc4e46..b303c6e0286d 100644
1602 --- a/drivers/staging/media/rkvdec/rkvdec.c
1603 +++ b/drivers/staging/media/rkvdec/rkvdec.c
1604 @@ -27,6 +27,17 @@
1605  #include "rkvdec.h"
1606  #include "rkvdec-regs.h"
1607  
1608 +static void rkvdec_fill_decoded_pixfmt(struct rkvdec_ctx *ctx,
1609 +                                      struct v4l2_pix_format_mplane *pix_mp)
1610 +{
1611 +       v4l2_fill_pixfmt_mp(pix_mp, pix_mp->pixelformat,
1612 +                           pix_mp->width, pix_mp->height);
1613 +       pix_mp->plane_fmt[0].sizeimage += 128 *
1614 +               DIV_ROUND_UP(pix_mp->width, 16) *
1615 +               DIV_ROUND_UP(pix_mp->height, 16);
1616 +       pix_mp->field = V4L2_FIELD_NONE;
1617 +}
1618 +
1619  static int rkvdec_queue_busy(struct rkvdec_ctx *ctx, enum v4l2_buf_type buf_type)
1620  {
1621         struct vb2_queue *vq;
1622 @@ -248,13 +259,9 @@ static void rkvdec_reset_decoded_fmt(struct rkvdec_ctx *ctx)
1623  
1624         rkvdec_reset_fmt(ctx, f, valid_fmt);
1625         f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
1626 -       v4l2_fill_pixfmt_mp(&f->fmt.pix_mp,
1627 -                           ctx->coded_fmt_desc->decoded_fmts[0],
1628 -                           ctx->coded_fmt.fmt.pix_mp.width,
1629 -                           ctx->coded_fmt.fmt.pix_mp.height);
1630 -       f->fmt.pix_mp.plane_fmt[0].sizeimage += 128 *
1631 -               DIV_ROUND_UP(f->fmt.pix_mp.width, 16) *
1632 -               DIV_ROUND_UP(f->fmt.pix_mp.height, 16);
1633 +       f->fmt.pix_mp.width = ctx->coded_fmt.fmt.pix_mp.width;
1634 +       f->fmt.pix_mp.height = ctx->coded_fmt.fmt.pix_mp.height;
1635 +       rkvdec_fill_decoded_pixfmt(ctx, &f->fmt.pix_mp);
1636  }
1637  
1638  static int rkvdec_enum_framesizes(struct file *file, void *priv,
1639 @@ -324,13 +331,7 @@ static int rkvdec_try_capture_fmt(struct file *file, void *priv,
1640                                        &pix_mp->height,
1641                                        &coded_desc->frmsize);
1642  
1643 -       v4l2_fill_pixfmt_mp(pix_mp, pix_mp->pixelformat,
1644 -                           pix_mp->width, pix_mp->height);
1645 -       pix_mp->plane_fmt[0].sizeimage +=
1646 -               128 *
1647 -               DIV_ROUND_UP(pix_mp->width, 16) *
1648 -               DIV_ROUND_UP(pix_mp->height, 16);
1649 -       pix_mp->field = V4L2_FIELD_NONE;
1650 +       rkvdec_fill_decoded_pixfmt(ctx, pix_mp);
1651  
1652         return 0;
1653  }
1654
1655 From patchwork Thu Jan 12 12:56:26 2023
1656 Content-Type: text/plain; charset="utf-8"
1657 MIME-Version: 1.0
1658 Content-Transfer-Encoding: 7bit
1659 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
1660 X-Patchwork-Id: 13097960
1661 Return-Path: <linux-media-owner@vger.kernel.org>
1662 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
1663         aws-us-west-2-korg-lkml-1.web.codeaurora.org
1664 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
1665         by smtp.lore.kernel.org (Postfix) with ESMTP id 02E41C54EBD
1666         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:57:44 +0000 (UTC)
1667 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
1668         id S232658AbjALM5n (ORCPT <rfc822;linux-media@archiver.kernel.org>);
1669         Thu, 12 Jan 2023 07:57:43 -0500
1670 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44106 "EHLO
1671         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
1672         with ESMTP id S232322AbjALM5d (ORCPT
1673         <rfc822;linux-media@vger.kernel.org>);
1674         Thu, 12 Jan 2023 07:57:33 -0500
1675 Received: from madras.collabora.co.uk (madras.collabora.co.uk
1676  [46.235.227.172])
1677         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0501A5130D;
1678         Thu, 12 Jan 2023 04:57:05 -0800 (PST)
1679 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
1680  [89.26.75.29])
1681         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
1682          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
1683  server-digest SHA256)
1684         (No client certificate requested)
1685         (Authenticated sender: sebastianfricke)
1686         by madras.collabora.co.uk (Postfix) with ESMTPSA id B56856602DB1;
1687         Thu, 12 Jan 2023 12:57:03 +0000 (GMT)
1688 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
1689         s=mail; t=1673528223;
1690         bh=KAJmQ51TusAs/OBMlUcE6FAB/zXgKsXdACD+yS0cJJs=;
1691         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
1692         b=abuLMAtI+0Ssmb0Qet0J4hPnVAdraA31EB3fvZ/zDjZvc2UyLQpbuGpOiFbxXhOqc
1693          S9NUy9xnqLwAqNNtyQFTUiP7+lJpwbtRYRwTevw/9OIF62BM43kv9v/Y8O5Dan8zJD
1694          zy3+0jfREptqFrzuMIuITsGVocKGn8VB9qrbRTUXlbka8E6UkheBghOkMgwWlfjhJ6
1695          bvU2BcEkzGokpvaFOODMzAKJe3+Xa3+EXgkqaaYK3u3a9zVb6+KOCsN5F9v9WFMQIW
1696          dAqSQiVNpyzqaypDHC12Df8AFUhQ4HVKlMv25c6RbKfbpJOAj4W627U9Xoa2Xkd1Up
1697          n9oHDOyuMFo1Q==
1698 From: Sebastian Fricke <sebastian.fricke@collabora.com>
1699 Date: Thu, 12 Jan 2023 13:56:26 +0100
1700 Subject: [PATCH v2 11/12] staging: media: rkvdec: Enable S_CTRL IOCTL
1701 MIME-Version: 1.0
1702 Message-Id: 
1703  <20230101-patch-series-v2-6-2-rc1-v2-11-fa1897efac14@collabora.com>
1704 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1705 In-Reply-To: 
1706  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1707 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
1708         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
1709         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1710 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
1711         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
1712         Jonas Karlman <jonas@kwiboo.se>,
1713         Alex Bee <knaerzche@gmail.com>,
1714         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
1715         Collabora Kernel-domain <kernel@collabora.com>,
1716         Robert Beckett <bob.beckett@collabora.com>,
1717         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
1718         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
1719         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
1720         Sebastian Fricke <sebastian.fricke@collabora.com>
1721 X-Mailer: b4 0.11.1
1722 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=3704;
1723  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
1724  bh=KAJmQ51TusAs/OBMlUcE6FAB/zXgKsXdACD+yS0cJJs=;
1725  b=3Q8dYQ7JJV91gBKcZI7SdzmsUpSj8tSF8FmAoOpA4+8doicKKzpHZXOKqfCS3w0RSMTTwbQ545S3
1726  /EmOOuLQCwWk/liG7p+9gfjw2YEBe+DwYIkP0cAdOuppKUob+jYn
1727 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
1728  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
1729 Precedence: bulk
1730 List-ID: <linux-media.vger.kernel.org>
1731 X-Mailing-List: linux-media@vger.kernel.org
1732
1733 Enable user-space to set the SPS of the current byte-stream on the
1734 decoder. This action will enable the decoder to pick the optimal
1735 pixel-format for the capture queue, whenever it is required.
1736
1737 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
1738 Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
1739 ---
1740  drivers/staging/media/rkvdec/rkvdec.c | 81 +++++++++++++++++++++++++++++++++++
1741  1 file changed, 81 insertions(+)
1742
1743 diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
1744 index b303c6e0286d..3d413c5ad1d2 100644
1745 --- a/drivers/staging/media/rkvdec/rkvdec.c
1746 +++ b/drivers/staging/media/rkvdec/rkvdec.c
1747 @@ -93,6 +93,79 @@ static int rkvdec_get_sps_attributes(struct rkvdec_ctx *ctx, void *sps,
1748         return 0;
1749  }
1750  
1751 +static int rkvdec_set_sps(struct rkvdec_ctx *ctx, struct v4l2_ctrl *ctrl)
1752 +{
1753 +       struct v4l2_pix_format_mplane *pix_mp;
1754 +       struct sps_attributes attributes = {0};
1755 +       void *new_sps = NULL;
1756 +
1757 +       /*
1758 +        * SPS structures are not filled until the control handler is set up
1759 +        */
1760 +       if (!ctx->fh.ctrl_handler)
1761 +               return 0;
1762 +
1763 +       switch (ctrl->id) {
1764 +       case V4L2_CID_STATELESS_H264_SPS:
1765 +               new_sps = (void *)ctrl->p_new.p_h264_sps;
1766 +               break;
1767 +       case V4L2_CID_STATELESS_HEVC_SPS:
1768 +               new_sps = (void *)ctrl->p_new.p_hevc_sps;
1769 +               break;
1770 +       default:
1771 +               dev_err(ctx->dev->dev, "Unsupported stateless control ID: %x\n", ctrl->id);
1772 +               return -EINVAL;
1773 +       };
1774 +       rkvdec_get_sps_attributes(ctx, new_sps, &attributes);
1775 +
1776 +       /*
1777 +        * Providing an empty SPS is valid but we do not store it.
1778 +        */
1779 +       if (attributes.width == 0 && attributes.height == 0)
1780 +               return 0;
1781 +
1782 +       pix_mp = &ctx->decoded_fmt.fmt.pix_mp;
1783 +
1784 +       /*
1785 +        * SPS must match the provided format dimension, if it doesn't userspace has to
1786 +        * first reset the output format
1787 +        */
1788 +       if ((attributes.width > pix_mp->width) || (attributes.height > pix_mp->height)) {
1789 +               dev_err(ctx->dev->dev,
1790 +                       "Dimension mismatch. [%s SPS] W: %d, H: %d, [Format] W: %d, H: %d)\n",
1791 +                       ctrl->id == V4L2_CID_STATELESS_HEVC_SPS ? "HEVC" : "H264",
1792 +                       attributes.width, attributes.height, pix_mp->width, pix_mp->height);
1793 +               return -EINVAL;
1794 +       }
1795 +
1796 +       if (ctx->sps && pix_mp->pixelformat == rkvdec_get_valid_fmt(ctx)) {
1797 +               /*
1798 +                * Userspace is allowed to change the SPS at any point, if the
1799 +                * pixel format doesn't differ from the format in the context,
1800 +                * just accept the change even if buffers are queued
1801 +                */
1802 +               ctx->sps = new_sps;
1803 +       } else {
1804 +               /*
1805 +                * Do not accept changing the SPS, while buffers are queued,
1806 +                * when the new SPS would cause switching the CAPTURE pixel format
1807 +                */
1808 +               if (pix_mp->pixelformat != rkvdec_get_valid_fmt(ctx)) {
1809 +                       if (rkvdec_queue_busy(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE))
1810 +                               return -EBUSY;
1811 +               }
1812 +               ctx->sps = new_sps;
1813 +               /*
1814 +                * For the initial SPS setting and when the pixel format is
1815 +                * changed adjust the pixel format stored in the context
1816 +                */
1817 +               pix_mp->pixelformat = rkvdec_get_valid_fmt(ctx);
1818 +               rkvdec_fill_decoded_pixfmt(ctx, pix_mp);
1819 +       }
1820 +
1821 +       return 0;
1822 +}
1823 +
1824  static int rkvdec_try_ctrl(struct v4l2_ctrl *ctrl)
1825  {
1826         struct rkvdec_ctx *ctx = container_of(ctrl->handler, struct rkvdec_ctx, ctrl_hdl);
1827 @@ -104,8 +177,16 @@ static int rkvdec_try_ctrl(struct v4l2_ctrl *ctrl)
1828         return 0;
1829  }
1830  
1831 +static int rkvdec_s_ctrl(struct v4l2_ctrl *ctrl)
1832 +{
1833 +       struct rkvdec_ctx *ctx = container_of(ctrl->handler, struct rkvdec_ctx, ctrl_hdl);
1834 +
1835 +       return rkvdec_set_sps(ctx, ctrl);
1836 +}
1837 +
1838  static const struct v4l2_ctrl_ops rkvdec_ctrl_ops = {
1839         .try_ctrl = rkvdec_try_ctrl,
1840 +       .s_ctrl = rkvdec_s_ctrl,
1841  };
1842  
1843  static const struct rkvdec_ctrl_desc rkvdec_h264_ctrl_descs[] = {
1844
1845 From patchwork Thu Jan 12 12:56:27 2023
1846 Content-Type: text/plain; charset="utf-8"
1847 MIME-Version: 1.0
1848 Content-Transfer-Encoding: 7bit
1849 X-Patchwork-Submitter: Sebastian Fricke <sebastian.fricke@collabora.com>
1850 X-Patchwork-Id: 13097961
1851 Return-Path: <linux-media-owner@vger.kernel.org>
1852 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
1853         aws-us-west-2-korg-lkml-1.web.codeaurora.org
1854 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
1855         by smtp.lore.kernel.org (Postfix) with ESMTP id 5D209C54EBD
1856         for <linux-media@archiver.kernel.org>; Thu, 12 Jan 2023 12:58:22 +0000 (UTC)
1857 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
1858         id S232135AbjALM6U (ORCPT <rfc822;linux-media@archiver.kernel.org>);
1859         Thu, 12 Jan 2023 07:58:20 -0500
1860 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44132 "EHLO
1861         lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
1862         with ESMTP id S232822AbjALM5u (ORCPT
1863         <rfc822;linux-media@vger.kernel.org>);
1864         Thu, 12 Jan 2023 07:57:50 -0500
1865 Received: from madras.collabora.co.uk (madras.collabora.co.uk
1866  [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab])
1867         by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 98EC539F81;
1868         Thu, 12 Jan 2023 04:57:08 -0800 (PST)
1869 Received: from localhost (89-26-75-29.goll.dyn.salzburg-online.at
1870  [89.26.75.29])
1871         (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
1872          key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits)
1873  server-digest SHA256)
1874         (No client certificate requested)
1875         (Authenticated sender: sebastianfricke)
1876         by madras.collabora.co.uk (Postfix) with ESMTPSA id 099706602DB9;
1877         Thu, 12 Jan 2023 12:57:07 +0000 (GMT)
1878 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
1879         s=mail; t=1673528227;
1880         bh=pm+8+YSV1gNiZGXugXBzMsEYogDn1ApTCdetzlcVJrQ=;
1881         h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
1882         b=VnsGrgCHFmlORitNIU9rHOIym3yFT5s3PzDpx5cwZOHT6rIih7/2i6AM6oIe5UIGu
1883          CelHh94pV0zGkElZaxLSAO30kovBidEmjUiI0MrhdB7Jpc+c/VXW7q0EMnLf5F8S6m
1884          ITi0wNU5zA7XrlajUuRGcKIUxRgHA07s/KbcOqrYYPePblDar63nemG1qc1kvNNj3O
1885          wI8fiapnTqintzm76PDST+RGhfnOvoUl9NZYlZrWkDrW8fmqOCXmGqDuj69jw3Ak3R
1886          /MUuaVHpbIkopxkQUGJogP4Sz/QA3uUsfTF3MQcqnCEEPiTK9HLM991wmyC2sFZYth
1887          7/dUJynw4yHcg==
1888 From: Sebastian Fricke <sebastian.fricke@collabora.com>
1889 Date: Thu, 12 Jan 2023 13:56:27 +0100
1890 Subject: [PATCH v2 12/12] staging: media: rkvdec: Add HEVC backend
1891 MIME-Version: 1.0
1892 Message-Id: 
1893  <20230101-patch-series-v2-6-2-rc1-v2-12-fa1897efac14@collabora.com>
1894 References: <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1895 In-Reply-To: 
1896  <20230101-patch-series-v2-6-2-rc1-v2-0-fa1897efac14@collabora.com>
1897 To: Mauro Carvalho Chehab <mchehab@kernel.org>,
1898         Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
1899         Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1900 Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
1901         linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev,
1902         Jonas Karlman <jonas@kwiboo.se>,
1903         Alex Bee <knaerzche@gmail.com>,
1904         Nicolas Dufresne <nicolas.dufresne@collabora.com>,
1905         Collabora Kernel-domain <kernel@collabora.com>,
1906         Robert Beckett <bob.beckett@collabora.com>,
1907         Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
1908         Andrzej Pietrasiewicz <andrzej.p@collabora.com>,
1909         Benjamin Gaignard <benjamin.gaignard@collabora.com>,
1910         Sebastian Fricke <sebastian.fricke@collabora.com>
1911 X-Mailer: b4 0.11.1
1912 X-Developer-Signature: v=1; a=ed25519-sha256; t=1673528186; l=212070;
1913  i=sebastian.fricke@collabora.com; s=linux-media; h=from:subject:message-id;
1914  bh=pm+8+YSV1gNiZGXugXBzMsEYogDn1ApTCdetzlcVJrQ=;
1915  b=ivYlPMVhGccrpB90PzjCCFa5sBo/IrUkhl7ipx96EORF/rVhRoRMPJkz5C1D2+3iXO1p1j6uBlLv
1916  U9BczBMaAT3ZKDW06UMe06Iuxdzxsn4MlYCNyE6u8c42K53/K7By
1917 X-Developer-Key: i=sebastian.fricke@collabora.com; a=ed25519;
1918  pk=pYXedPwrTtErcj7ERYeo/IpTrpe4QbJuEzSB52fslBg=
1919 Precedence: bulk
1920 List-ID: <linux-media.vger.kernel.org>
1921 X-Mailing-List: linux-media@vger.kernel.org
1922
1923 The Rockchip VDEC supports the HEVC codec with the Main and Main10
1924 Profile up to Level 5.1 High Tier: 4096x2304@60 fps.
1925 Add the backend for that format to the decoder.
1926
1927 Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
1928 Signed-off-by: Alex Bee <knaerzche@gmail.com>
1929 Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
1930 Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
1931 ---
1932  drivers/staging/media/rkvdec/Makefile           |    2 +-
1933  drivers/staging/media/rkvdec/TODO               |   11 +-
1934  drivers/staging/media/rkvdec/rkvdec-hevc-data.c | 1845 +++++++++++++++++++++++
1935  drivers/staging/media/rkvdec/rkvdec-hevc.c      |  910 +++++++++++
1936  drivers/staging/media/rkvdec/rkvdec-regs.h      |    1 +
1937  drivers/staging/media/rkvdec/rkvdec.c           |   72 +
1938  drivers/staging/media/rkvdec/rkvdec.h           |    1 +
1939  7 files changed, 2834 insertions(+), 8 deletions(-)
1940
1941 diff --git a/drivers/staging/media/rkvdec/Makefile b/drivers/staging/media/rkvdec/Makefile
1942 index cb86b429cfaa..a77122641d14 100644
1943 --- a/drivers/staging/media/rkvdec/Makefile
1944 +++ b/drivers/staging/media/rkvdec/Makefile
1945 @@ -1,3 +1,3 @@
1946  obj-$(CONFIG_VIDEO_ROCKCHIP_VDEC) += rockchip-vdec.o
1947  
1948 -rockchip-vdec-y += rkvdec.o rkvdec-h264.o rkvdec-vp9.o
1949 +rockchip-vdec-y += rkvdec.o rkvdec-h264.o rkvdec-hevc.o rkvdec-vp9.o
1950 diff --git a/drivers/staging/media/rkvdec/TODO b/drivers/staging/media/rkvdec/TODO
1951 index 2c0779383276..58652251241b 100644
1952 --- a/drivers/staging/media/rkvdec/TODO
1953 +++ b/drivers/staging/media/rkvdec/TODO
1954 @@ -1,11 +1,8 @@
1955 -* Support for HEVC is planned for this driver.
1956 -
1957 -  Given the V4L controls for that CODEC will be part of
1958 -  the uABI, it will be required to have the driver in staging.
1959 -
1960 -  For this reason, we are keeping this driver in staging for now.
1961 -
1962  * Evaluate introducing a helper to consolidate duplicated
1963    code in rkvdec_request_validate and cedrus_request_validate.
1964    The helper needs to the driver private data associated with
1965    the videobuf2 queue, from a media request.
1966 +
1967 +* Add support for other hardware revisions (like RK3288 etc.)
1968 +
1969 +* Fix concurrent decoding for the HEVC codec
1970 diff --git a/drivers/staging/media/rkvdec/rkvdec-hevc-data.c b/drivers/staging/media/rkvdec/rkvdec-hevc-data.c
1971 new file mode 100644
1972 index 000000000000..d3b7760063ef
1973 --- /dev/null
1974 +++ b/drivers/staging/media/rkvdec/rkvdec-hevc-data.c
1975 @@ -0,0 +1,1845 @@
1976 +// SPDX-License-Identifier: GPL-2.0
1977 +/*
1978 + * Rockchip Video Decoder driver
1979 + *
1980 + * Copyright (C) 2023 Collabora, Ltd.
1981 + *     Sebastian Fricke <sebastian.fricke@collabora.com>
1982 + */
1983 +#include <linux/types.h>
1984 +
1985 +#define RKV_CABAC_TABLE_SIZE           27456
1986 +
1987 +static const u8 rkvdec_hevc_cabac_table[RKV_CABAC_TABLE_SIZE] = {
1988 +       0x07, 0x0f, 0x48, 0x58, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0f, 0x40, 0x40, 0x40, 0x0f,
1989 +       0x68, 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x40,
1990 +       0x40, 0x68, 0x58, 0x60, 0x40, 0x1f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, 0x48, 0x60,
1991 +       0x60, 0x50, 0x58, 0x50, 0x07, 0x58, 0x68, 0x50, 0x58, 0x68, 0x68, 0x68, 0x68, 0x68, 0x50,
1992 +       0x48, 0x68, 0x60, 0x60, 0x50, 0x58, 0x50, 0x07, 0x58, 0x68, 0x50, 0x58, 0x68, 0x68, 0x68,
1993 +       0x68, 0x68, 0x50, 0x48, 0x68, 0x48, 0x48, 0x1f, 0x58, 0x68, 0x68, 0x58, 0x60, 0x60, 0x60,
1994 +       0x50, 0x50, 0x50, 0x48, 0x58, 0x58, 0x37, 0x07, 0x58, 0x48, 0x58, 0x58, 0x37, 0x07, 0x58,
1995 +       0x48, 0x58, 0x58, 0x37, 0x07, 0x58, 0x50, 0x48, 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07,
1996 +       0x0f, 0x48, 0x68, 0x0f, 0x48, 0x68, 0x40, 0x40, 0x50, 0x50, 0x07, 0x40, 0x50, 0x0f, 0x40,
1997 +       0x48, 0x07, 0x40, 0x27, 0x50, 0x48, 0x48, 0x40, 0x0f, 0x50, 0x37, 0x1f, 0x1f, 0x50, 0x37,
1998 +       0x40, 0x27, 0x40, 0x07, 0x0f, 0x17, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
1999 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x47, 0x57,
2000 +       0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0f, 0x40, 0x40, 0x40, 0x0f, 0x66, 0x47, 0x40, 0x40,
2001 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x00, 0x00, 0x67, 0x57, 0x5e,
2002 +       0x00, 0x1f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x47, 0x47, 0x5f, 0x5f, 0x4f, 0x57, 0x4f,
2003 +       0x07, 0x57, 0x67, 0x4f, 0x57, 0x67, 0x67, 0x67, 0x67, 0x66, 0x4f, 0x47, 0x66, 0x5f, 0x5f,
2004 +       0x4f, 0x57, 0x4f, 0x07, 0x57, 0x67, 0x4f, 0x57, 0x67, 0x67, 0x67, 0x67, 0x66, 0x4f, 0x47,
2005 +       0x66, 0x46, 0x48, 0x20, 0x57, 0x67, 0x67, 0x57, 0x5f, 0x5f, 0x5e, 0x4f, 0x4f, 0x4f, 0x47,
2006 +       0x57, 0x57, 0x37, 0x07, 0x57, 0x47, 0x57, 0x57, 0x37, 0x07, 0x57, 0x47, 0x57, 0x57, 0x37,
2007 +       0x07, 0x57, 0x4f, 0x47, 0x1f, 0x1f, 0x0f, 0x10, 0x0f, 0x10, 0x07, 0x10, 0x47, 0x67, 0x10,
2008 +       0x47, 0x67, 0x40, 0x40, 0x4f, 0x4e, 0x08, 0x00, 0x4f, 0x0f, 0x00, 0x47, 0x07, 0x01, 0x27,
2009 +       0x4e, 0x47, 0x47, 0x00, 0x0f, 0x4f, 0x37, 0x1f, 0x1f, 0x4f, 0x36, 0x00, 0x27, 0x00, 0x07,
2010 +       0x10, 0x17, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
2011 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x47, 0x57, 0x58, 0x40, 0x40, 0x40,
2012 +       0x40, 0x40, 0x0e, 0x40, 0x40, 0x40, 0x0e, 0x64, 0x47, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2013 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x00, 0x00, 0x66, 0x57, 0x5d, 0x00, 0x1e, 0x40, 0x40,
2014 +       0x40, 0x40, 0x40, 0x40, 0x47, 0x47, 0x5e, 0x5e, 0x4e, 0x56, 0x4f, 0x07, 0x56, 0x66, 0x4f,
2015 +       0x56, 0x66, 0x67, 0x66, 0x66, 0x64, 0x4e, 0x46, 0x64, 0x5e, 0x5e, 0x4e, 0x56, 0x4f, 0x07,
2016 +       0x56, 0x66, 0x4f, 0x56, 0x66, 0x67, 0x66, 0x66, 0x64, 0x4e, 0x46, 0x64, 0x45, 0x48, 0x20,
2017 +       0x57, 0x66, 0x66, 0x56, 0x5e, 0x5e, 0x5d, 0x4e, 0x4e, 0x4e, 0x46, 0x56, 0x57, 0x36, 0x07,
2018 +       0x56, 0x46, 0x56, 0x57, 0x36, 0x07, 0x56, 0x46, 0x56, 0x57, 0x36, 0x07, 0x56, 0x4f, 0x47,
2019 +       0x1e, 0x1e, 0x0f, 0x10, 0x0f, 0x10, 0x07, 0x10, 0x47, 0x66, 0x10, 0x47, 0x66, 0x40, 0x40,
2020 +       0x4f, 0x4d, 0x08, 0x00, 0x4f, 0x0f, 0x00, 0x47, 0x07, 0x03, 0x27, 0x4d, 0x47, 0x46, 0x01,
2021 +       0x0f, 0x4f, 0x36, 0x1f, 0x1e, 0x4f, 0x34, 0x01, 0x26, 0x00, 0x07, 0x10, 0x17, 0x0f, 0x0f,
2022 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2023 +       0x00, 0x00, 0x00, 0x07, 0x0d, 0x47, 0x57, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0e, 0x40,
2024 +       0x40, 0x40, 0x0e, 0x62, 0x47, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2025 +       0x40, 0x07, 0x00, 0x00, 0x65, 0x57, 0x5c, 0x00, 0x1e, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2026 +       0x47, 0x47, 0x5d, 0x5d, 0x4e, 0x56, 0x4f, 0x07, 0x56, 0x66, 0x4f, 0x55, 0x65, 0x67, 0x66,
2027 +       0x65, 0x63, 0x4d, 0x46, 0x62, 0x5d, 0x5d, 0x4e, 0x56, 0x4f, 0x07, 0x56, 0x66, 0x4f, 0x55,
2028 +       0x65, 0x67, 0x66, 0x65, 0x63, 0x4d, 0x46, 0x62, 0x44, 0x48, 0x20, 0x57, 0x65, 0x65, 0x56,
2029 +       0x5d, 0x5d, 0x5c, 0x4e, 0x4d, 0x4e, 0x45, 0x56, 0x57, 0x36, 0x07, 0x56, 0x45, 0x56, 0x57,
2030 +       0x36, 0x07, 0x56, 0x45, 0x56, 0x57, 0x36, 0x07, 0x56, 0x4f, 0x47, 0x1e, 0x1e, 0x0f, 0x10,
2031 +       0x0f, 0x10, 0x07, 0x10, 0x47, 0x65, 0x10, 0x47, 0x65, 0x40, 0x40, 0x4f, 0x4c, 0x08, 0x00,
2032 +       0x4f, 0x0f, 0x00, 0x47, 0x07, 0x04, 0x27, 0x4c, 0x47, 0x45, 0x01, 0x0f, 0x4f, 0x36, 0x1f,
2033 +       0x1e, 0x4f, 0x33, 0x01, 0x25, 0x00, 0x07, 0x10, 0x17, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40,
2034 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
2035 +       0x0c, 0x46, 0x56, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0d, 0x40, 0x40, 0x40, 0x0d, 0x60,
2036 +       0x46, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x01, 0x01,
2037 +       0x64, 0x56, 0x5b, 0x01, 0x1d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x46, 0x46, 0x5c, 0x5c,
2038 +       0x4d, 0x55, 0x4e, 0x07, 0x55, 0x65, 0x4e, 0x54, 0x64, 0x66, 0x65, 0x64, 0x61, 0x4c, 0x45,
2039 +       0x60, 0x5c, 0x5c, 0x4d, 0x55, 0x4e, 0x07, 0x55, 0x65, 0x4e, 0x54, 0x64, 0x66, 0x65, 0x64,
2040 +       0x61, 0x4c, 0x45, 0x60, 0x43, 0x49, 0x21, 0x56, 0x64, 0x64, 0x55, 0x5c, 0x5c, 0x5b, 0x4d,
2041 +       0x4c, 0x4d, 0x44, 0x55, 0x56, 0x35, 0x07, 0x55, 0x44, 0x55, 0x56, 0x35, 0x07, 0x55, 0x44,
2042 +       0x55, 0x56, 0x35, 0x07, 0x55, 0x4e, 0x46, 0x1d, 0x1d, 0x0f, 0x11, 0x0f, 0x11, 0x07, 0x11,
2043 +       0x46, 0x64, 0x11, 0x46, 0x64, 0x40, 0x40, 0x4e, 0x4b, 0x09, 0x01, 0x4e, 0x0f, 0x01, 0x46,
2044 +       0x07, 0x06, 0x27, 0x4b, 0x46, 0x44, 0x02, 0x0f, 0x4e, 0x35, 0x1e, 0x1d, 0x4e, 0x31, 0x02,
2045 +       0x24, 0x01, 0x07, 0x11, 0x16, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
2046 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0b, 0x46, 0x56, 0x58,
2047 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x0c, 0x40, 0x40, 0x40, 0x0c, 0x5e, 0x46, 0x40, 0x40, 0x40,
2048 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x01, 0x01, 0x63, 0x56, 0x59, 0x01,
2049 +       0x1c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x46, 0x46, 0x5b, 0x5b, 0x4c, 0x54, 0x4e, 0x07,
2050 +       0x54, 0x64, 0x4e, 0x53, 0x63, 0x66, 0x64, 0x63, 0x60, 0x4b, 0x44, 0x5e, 0x5b, 0x5b, 0x4c,
2051 +       0x54, 0x4e, 0x07, 0x54, 0x64, 0x4e, 0x53, 0x63, 0x66, 0x64, 0x63, 0x60, 0x4b, 0x44, 0x5e,
2052 +       0x41, 0x49, 0x21, 0x56, 0x63, 0x63, 0x54, 0x5b, 0x5b, 0x59, 0x4c, 0x4b, 0x4c, 0x43, 0x54,
2053 +       0x56, 0x34, 0x07, 0x54, 0x43, 0x54, 0x56, 0x34, 0x07, 0x54, 0x43, 0x54, 0x56, 0x34, 0x07,
2054 +       0x54, 0x4e, 0x46, 0x1c, 0x1c, 0x0f, 0x11, 0x0f, 0x11, 0x07, 0x11, 0x46, 0x63, 0x11, 0x46,
2055 +       0x63, 0x40, 0x40, 0x4e, 0x49, 0x09, 0x01, 0x4e, 0x0f, 0x01, 0x46, 0x07, 0x07, 0x27, 0x49,
2056 +       0x46, 0x43, 0x03, 0x0f, 0x4e, 0x34, 0x1e, 0x1c, 0x4e, 0x30, 0x03, 0x23, 0x01, 0x07, 0x11,
2057 +       0x16, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
2058 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x46, 0x56, 0x58, 0x40, 0x40, 0x40, 0x40,
2059 +       0x40, 0x0c, 0x40, 0x40, 0x40, 0x0c, 0x5c, 0x46, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2060 +       0x40, 0x40, 0x40, 0x40, 0x07, 0x01, 0x01, 0x62, 0x56, 0x58, 0x01, 0x1c, 0x40, 0x40, 0x40,
2061 +       0x40, 0x40, 0x40, 0x46, 0x46, 0x5a, 0x5a, 0x4c, 0x54, 0x4e, 0x07, 0x54, 0x64, 0x4e, 0x52,
2062 +       0x62, 0x66, 0x64, 0x62, 0x5e, 0x4a, 0x44, 0x5c, 0x5a, 0x5a, 0x4c, 0x54, 0x4e, 0x07, 0x54,
2063 +       0x64, 0x4e, 0x52, 0x62, 0x66, 0x64, 0x62, 0x5e, 0x4a, 0x44, 0x5c, 0x40, 0x49, 0x21, 0x56,
2064 +       0x62, 0x62, 0x54, 0x5a, 0x5a, 0x58, 0x4c, 0x4a, 0x4c, 0x42, 0x54, 0x56, 0x34, 0x07, 0x54,
2065 +       0x42, 0x54, 0x56, 0x34, 0x07, 0x54, 0x42, 0x54, 0x56, 0x34, 0x07, 0x54, 0x4e, 0x46, 0x1c,
2066 +       0x1c, 0x0f, 0x11, 0x0f, 0x11, 0x07, 0x11, 0x46, 0x62, 0x11, 0x46, 0x62, 0x40, 0x40, 0x4e,
2067 +       0x48, 0x09, 0x01, 0x4e, 0x0f, 0x01, 0x46, 0x07, 0x09, 0x27, 0x48, 0x46, 0x42, 0x03, 0x0f,
2068 +       0x4e, 0x34, 0x1e, 0x1c, 0x4e, 0x2e, 0x03, 0x22, 0x01, 0x07, 0x11, 0x16, 0x0f, 0x0f, 0x40,
2069 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2070 +       0x00, 0x00, 0x07, 0x09, 0x45, 0x55, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0b, 0x40, 0x40,
2071 +       0x40, 0x0b, 0x5a, 0x45, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2072 +       0x07, 0x02, 0x02, 0x61, 0x55, 0x57, 0x02, 0x1b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x45,
2073 +       0x45, 0x59, 0x59, 0x4b, 0x53, 0x4d, 0x07, 0x53, 0x63, 0x4d, 0x51, 0x61, 0x65, 0x63, 0x61,
2074 +       0x5d, 0x49, 0x43, 0x5a, 0x59, 0x59, 0x4b, 0x53, 0x4d, 0x07, 0x53, 0x63, 0x4d, 0x51, 0x61,
2075 +       0x65, 0x63, 0x61, 0x5d, 0x49, 0x43, 0x5a, 0x00, 0x4a, 0x22, 0x55, 0x61, 0x61, 0x53, 0x59,
2076 +       0x59, 0x57, 0x4b, 0x49, 0x4b, 0x41, 0x53, 0x55, 0x33, 0x07, 0x53, 0x41, 0x53, 0x55, 0x33,
2077 +       0x07, 0x53, 0x41, 0x53, 0x55, 0x33, 0x07, 0x53, 0x4d, 0x45, 0x1b, 0x1b, 0x0f, 0x12, 0x0f,
2078 +       0x12, 0x07, 0x12, 0x45, 0x61, 0x12, 0x45, 0x61, 0x40, 0x40, 0x4d, 0x47, 0x0a, 0x02, 0x4d,
2079 +       0x0f, 0x02, 0x45, 0x07, 0x0a, 0x27, 0x47, 0x45, 0x41, 0x04, 0x0f, 0x4d, 0x33, 0x1d, 0x1b,
2080 +       0x4d, 0x2d, 0x04, 0x21, 0x02, 0x07, 0x12, 0x15, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40,
2081 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08,
2082 +       0x45, 0x55, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0a, 0x40, 0x40, 0x40, 0x0a, 0x59, 0x45,
2083 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x02, 0x02, 0x60,
2084 +       0x55, 0x56, 0x02, 0x1a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x45, 0x45, 0x58, 0x58, 0x4b,
2085 +       0x53, 0x4d, 0x07, 0x53, 0x63, 0x4d, 0x50, 0x60, 0x65, 0x63, 0x60, 0x5b, 0x48, 0x43, 0x59,
2086 +       0x58, 0x58, 0x4b, 0x53, 0x4d, 0x07, 0x53, 0x63, 0x4d, 0x50, 0x60, 0x65, 0x63, 0x60, 0x5b,
2087 +       0x48, 0x43, 0x59, 0x01, 0x4a, 0x22, 0x55, 0x60, 0x60, 0x53, 0x58, 0x58, 0x56, 0x4b, 0x48,
2088 +       0x4b, 0x40, 0x53, 0x55, 0x32, 0x07, 0x53, 0x40, 0x53, 0x55, 0x32, 0x07, 0x53, 0x40, 0x53,
2089 +       0x55, 0x32, 0x07, 0x53, 0x4d, 0x45, 0x1a, 0x1a, 0x0f, 0x12, 0x0f, 0x12, 0x07, 0x12, 0x45,
2090 +       0x60, 0x12, 0x45, 0x60, 0x40, 0x40, 0x4d, 0x46, 0x0a, 0x02, 0x4d, 0x0f, 0x02, 0x45, 0x07,
2091 +       0x0c, 0x27, 0x46, 0x45, 0x40, 0x04, 0x0f, 0x4d, 0x32, 0x1d, 0x1a, 0x4d, 0x2b, 0x04, 0x20,
2092 +       0x02, 0x07, 0x12, 0x15, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
2093 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x45, 0x55, 0x58, 0x40,
2094 +       0x40, 0x40, 0x40, 0x40, 0x0a, 0x40, 0x40, 0x40, 0x0a, 0x57, 0x45, 0x40, 0x40, 0x40, 0x40,
2095 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x02, 0x02, 0x5f, 0x55, 0x54, 0x02, 0x1a,
2096 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x45, 0x45, 0x57, 0x57, 0x4a, 0x52, 0x4d, 0x07, 0x52,
2097 +       0x62, 0x4d, 0x4f, 0x5f, 0x65, 0x62, 0x5f, 0x59, 0x47, 0x42, 0x57, 0x57, 0x57, 0x4a, 0x52,
2098 +       0x4d, 0x07, 0x52, 0x62, 0x4d, 0x4f, 0x5f, 0x65, 0x62, 0x5f, 0x59, 0x47, 0x42, 0x57, 0x03,
2099 +       0x4a, 0x22, 0x55, 0x5f, 0x5f, 0x52, 0x57, 0x57, 0x54, 0x4a, 0x47, 0x4a, 0x00, 0x52, 0x55,
2100 +       0x32, 0x07, 0x52, 0x00, 0x52, 0x55, 0x32, 0x07, 0x52, 0x00, 0x52, 0x55, 0x32, 0x07, 0x52,
2101 +       0x4d, 0x45, 0x1a, 0x1a, 0x0f, 0x12, 0x0f, 0x12, 0x07, 0x12, 0x45, 0x5f, 0x12, 0x45, 0x5f,
2102 +       0x40, 0x40, 0x4d, 0x44, 0x0a, 0x02, 0x4d, 0x0f, 0x02, 0x45, 0x07, 0x0e, 0x27, 0x44, 0x45,
2103 +       0x00, 0x05, 0x0f, 0x4d, 0x32, 0x1d, 0x1a, 0x4d, 0x29, 0x05, 0x1f, 0x02, 0x07, 0x12, 0x15,
2104 +       0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2105 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x44, 0x54, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40,
2106 +       0x09, 0x40, 0x40, 0x40, 0x09, 0x55, 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2107 +       0x40, 0x40, 0x40, 0x07, 0x03, 0x03, 0x5e, 0x54, 0x53, 0x03, 0x19, 0x40, 0x40, 0x40, 0x40,
2108 +       0x40, 0x40, 0x44, 0x44, 0x56, 0x56, 0x49, 0x51, 0x4c, 0x07, 0x51, 0x61, 0x4c, 0x4e, 0x5e,
2109 +       0x64, 0x61, 0x5e, 0x58, 0x46, 0x41, 0x55, 0x56, 0x56, 0x49, 0x51, 0x4c, 0x07, 0x51, 0x61,
2110 +       0x4c, 0x4e, 0x5e, 0x64, 0x61, 0x5e, 0x58, 0x46, 0x41, 0x55, 0x04, 0x4b, 0x23, 0x54, 0x5e,
2111 +       0x5e, 0x51, 0x56, 0x56, 0x53, 0x49, 0x46, 0x49, 0x01, 0x51, 0x54, 0x31, 0x07, 0x51, 0x01,
2112 +       0x51, 0x54, 0x31, 0x07, 0x51, 0x01, 0x51, 0x54, 0x31, 0x07, 0x51, 0x4c, 0x44, 0x19, 0x19,
2113 +       0x0f, 0x13, 0x0f, 0x13, 0x07, 0x13, 0x44, 0x5e, 0x13, 0x44, 0x5e, 0x40, 0x40, 0x4c, 0x43,
2114 +       0x0b, 0x03, 0x4c, 0x0f, 0x03, 0x44, 0x07, 0x0f, 0x27, 0x43, 0x44, 0x01, 0x06, 0x0f, 0x4c,
2115 +       0x31, 0x1c, 0x19, 0x4c, 0x28, 0x06, 0x1e, 0x03, 0x07, 0x13, 0x14, 0x0f, 0x0f, 0x40, 0x40,
2116 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2117 +       0x00, 0x07, 0x05, 0x44, 0x54, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x09, 0x40, 0x40, 0x40,
2118 +       0x09, 0x53, 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07,
2119 +       0x03, 0x03, 0x5d, 0x54, 0x52, 0x03, 0x19, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x44, 0x44,
2120 +       0x55, 0x55, 0x49, 0x51, 0x4c, 0x07, 0x51, 0x61, 0x4c, 0x4d, 0x5d, 0x64, 0x61, 0x5d, 0x56,
2121 +       0x45, 0x41, 0x53, 0x55, 0x55, 0x49, 0x51, 0x4c, 0x07, 0x51, 0x61, 0x4c, 0x4d, 0x5d, 0x64,
2122 +       0x61, 0x5d, 0x56, 0x45, 0x41, 0x53, 0x05, 0x4b, 0x23, 0x54, 0x5d, 0x5d, 0x51, 0x55, 0x55,
2123 +       0x52, 0x49, 0x45, 0x49, 0x02, 0x51, 0x54, 0x31, 0x07, 0x51, 0x02, 0x51, 0x54, 0x31, 0x07,
2124 +       0x51, 0x02, 0x51, 0x54, 0x31, 0x07, 0x51, 0x4c, 0x44, 0x19, 0x19, 0x0f, 0x13, 0x0f, 0x13,
2125 +       0x07, 0x13, 0x44, 0x5d, 0x13, 0x44, 0x5d, 0x40, 0x40, 0x4c, 0x42, 0x0b, 0x03, 0x4c, 0x0f,
2126 +       0x03, 0x44, 0x07, 0x11, 0x27, 0x42, 0x44, 0x02, 0x06, 0x0f, 0x4c, 0x31, 0x1c, 0x19, 0x4c,
2127 +       0x26, 0x06, 0x1d, 0x03, 0x07, 0x13, 0x14, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2128 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x44,
2129 +       0x54, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x08, 0x40, 0x40, 0x40, 0x08, 0x51, 0x44, 0x40,
2130 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x03, 0x03, 0x5c, 0x54,
2131 +       0x51, 0x03, 0x18, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x44, 0x44, 0x54, 0x54, 0x48, 0x50,
2132 +       0x4c, 0x07, 0x50, 0x60, 0x4c, 0x4c, 0x5c, 0x64, 0x60, 0x5c, 0x55, 0x44, 0x40, 0x51, 0x54,
2133 +       0x54, 0x48, 0x50, 0x4c, 0x07, 0x50, 0x60, 0x4c, 0x4c, 0x5c, 0x64, 0x60, 0x5c, 0x55, 0x44,
2134 +       0x40, 0x51, 0x06, 0x4b, 0x23, 0x54, 0x5c, 0x5c, 0x50, 0x54, 0x54, 0x51, 0x48, 0x44, 0x48,
2135 +       0x03, 0x50, 0x54, 0x30, 0x07, 0x50, 0x03, 0x50, 0x54, 0x30, 0x07, 0x50, 0x03, 0x50, 0x54,
2136 +       0x30, 0x07, 0x50, 0x4c, 0x44, 0x18, 0x18, 0x0f, 0x13, 0x0f, 0x13, 0x07, 0x13, 0x44, 0x5c,
2137 +       0x13, 0x44, 0x5c, 0x40, 0x40, 0x4c, 0x41, 0x0b, 0x03, 0x4c, 0x0f, 0x03, 0x44, 0x07, 0x12,
2138 +       0x27, 0x41, 0x44, 0x03, 0x07, 0x0f, 0x4c, 0x30, 0x1c, 0x18, 0x4c, 0x25, 0x07, 0x1c, 0x03,
2139 +       0x07, 0x13, 0x14, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
2140 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0x43, 0x53, 0x58, 0x40, 0x40,
2141 +       0x40, 0x40, 0x40, 0x07, 0x40, 0x40, 0x40, 0x07, 0x4f, 0x43, 0x40, 0x40, 0x40, 0x40, 0x40,
2142 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x04, 0x04, 0x5b, 0x53, 0x4f, 0x04, 0x17, 0x40,
2143 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x43, 0x53, 0x53, 0x47, 0x4f, 0x4b, 0x07, 0x4f, 0x5f,
2144 +       0x4b, 0x4b, 0x5b, 0x63, 0x5f, 0x5b, 0x53, 0x43, 0x00, 0x4f, 0x53, 0x53, 0x47, 0x4f, 0x4b,
2145 +       0x07, 0x4f, 0x5f, 0x4b, 0x4b, 0x5b, 0x63, 0x5f, 0x5b, 0x53, 0x43, 0x00, 0x4f, 0x08, 0x4c,
2146 +       0x24, 0x53, 0x5b, 0x5b, 0x4f, 0x53, 0x53, 0x4f, 0x47, 0x43, 0x47, 0x04, 0x4f, 0x53, 0x2f,
2147 +       0x07, 0x4f, 0x04, 0x4f, 0x53, 0x2f, 0x07, 0x4f, 0x04, 0x4f, 0x53, 0x2f, 0x07, 0x4f, 0x4b,
2148 +       0x43, 0x17, 0x17, 0x0f, 0x14, 0x0f, 0x14, 0x07, 0x14, 0x43, 0x5b, 0x14, 0x43, 0x5b, 0x40,
2149 +       0x40, 0x4b, 0x00, 0x0c, 0x04, 0x4b, 0x0f, 0x04, 0x43, 0x07, 0x14, 0x27, 0x00, 0x43, 0x04,
2150 +       0x08, 0x0f, 0x4b, 0x2f, 0x1b, 0x17, 0x4b, 0x23, 0x08, 0x1b, 0x04, 0x07, 0x14, 0x13, 0x0f,
2151 +       0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2152 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x43, 0x53, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07,
2153 +       0x40, 0x40, 0x40, 0x07, 0x4d, 0x43, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2154 +       0x40, 0x40, 0x07, 0x04, 0x04, 0x5a, 0x53, 0x4e, 0x04, 0x17, 0x40, 0x40, 0x40, 0x40, 0x40,
2155 +       0x40, 0x43, 0x43, 0x52, 0x52, 0x47, 0x4f, 0x4b, 0x07, 0x4f, 0x5f, 0x4b, 0x4a, 0x5a, 0x63,
2156 +       0x5f, 0x5a, 0x52, 0x42, 0x00, 0x4d, 0x52, 0x52, 0x47, 0x4f, 0x4b, 0x07, 0x4f, 0x5f, 0x4b,
2157 +       0x4a, 0x5a, 0x63, 0x5f, 0x5a, 0x52, 0x42, 0x00, 0x4d, 0x09, 0x4c, 0x24, 0x53, 0x5a, 0x5a,
2158 +       0x4f, 0x52, 0x52, 0x4e, 0x47, 0x42, 0x47, 0x05, 0x4f, 0x53, 0x2f, 0x07, 0x4f, 0x05, 0x4f,
2159 +       0x53, 0x2f, 0x07, 0x4f, 0x05, 0x4f, 0x53, 0x2f, 0x07, 0x4f, 0x4b, 0x43, 0x17, 0x17, 0x0f,
2160 +       0x14, 0x0f, 0x14, 0x07, 0x14, 0x43, 0x5a, 0x14, 0x43, 0x5a, 0x40, 0x40, 0x4b, 0x01, 0x0c,
2161 +       0x04, 0x4b, 0x0f, 0x04, 0x43, 0x07, 0x15, 0x27, 0x01, 0x43, 0x05, 0x08, 0x0f, 0x4b, 0x2f,
2162 +       0x1b, 0x17, 0x4b, 0x22, 0x08, 0x1a, 0x04, 0x07, 0x14, 0x13, 0x0f, 0x0f, 0x40, 0x40, 0x40,
2163 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2164 +       0x07, 0x01, 0x43, 0x53, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x06, 0x40, 0x40, 0x40, 0x06,
2165 +       0x4b, 0x43, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x04,
2166 +       0x04, 0x59, 0x53, 0x4d, 0x04, 0x16, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x43, 0x51,
2167 +       0x51, 0x46, 0x4e, 0x4b, 0x07, 0x4e, 0x5e, 0x4b, 0x49, 0x59, 0x63, 0x5e, 0x59, 0x50, 0x41,
2168 +       0x01, 0x4b, 0x51, 0x51, 0x46, 0x4e, 0x4b, 0x07, 0x4e, 0x5e, 0x4b, 0x49, 0x59, 0x63, 0x5e,
2169 +       0x59, 0x50, 0x41, 0x01, 0x4b, 0x0a, 0x4c, 0x24, 0x53, 0x59, 0x59, 0x4e, 0x51, 0x51, 0x4d,
2170 +       0x46, 0x41, 0x46, 0x06, 0x4e, 0x53, 0x2e, 0x07, 0x4e, 0x06, 0x4e, 0x53, 0x2e, 0x07, 0x4e,
2171 +       0x06, 0x4e, 0x53, 0x2e, 0x07, 0x4e, 0x4b, 0x43, 0x16, 0x16, 0x0f, 0x14, 0x0f, 0x14, 0x07,
2172 +       0x14, 0x43, 0x59, 0x14, 0x43, 0x59, 0x40, 0x40, 0x4b, 0x02, 0x0c, 0x04, 0x4b, 0x0f, 0x04,
2173 +       0x43, 0x07, 0x17, 0x27, 0x02, 0x43, 0x06, 0x09, 0x0f, 0x4b, 0x2e, 0x1b, 0x16, 0x4b, 0x20,
2174 +       0x09, 0x19, 0x04, 0x07, 0x14, 0x13, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2175 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x43, 0x53,
2176 +       0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x05, 0x40, 0x40, 0x40, 0x05, 0x4a, 0x43, 0x40, 0x40,
2177 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x04, 0x04, 0x59, 0x53, 0x4c,
2178 +       0x04, 0x15, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x43, 0x51, 0x51, 0x46, 0x4e, 0x4b,
2179 +       0x07, 0x4e, 0x5e, 0x4b, 0x49, 0x59, 0x63, 0x5e, 0x59, 0x4f, 0x41, 0x01, 0x4a, 0x51, 0x51,
2180 +       0x46, 0x4e, 0x4b, 0x07, 0x4e, 0x5e, 0x4b, 0x49, 0x59, 0x63, 0x5e, 0x59, 0x4f, 0x41, 0x01,
2181 +       0x4a, 0x0b, 0x4d, 0x24, 0x53, 0x59, 0x59, 0x4e, 0x51, 0x51, 0x4c, 0x46, 0x41, 0x46, 0x06,
2182 +       0x4e, 0x53, 0x2d, 0x07, 0x4e, 0x06, 0x4e, 0x53, 0x2d, 0x07, 0x4e, 0x06, 0x4e, 0x53, 0x2d,
2183 +       0x07, 0x4e, 0x4b, 0x43, 0x15, 0x15, 0x0f, 0x14, 0x0f, 0x14, 0x07, 0x14, 0x43, 0x59, 0x14,
2184 +       0x43, 0x59, 0x40, 0x40, 0x4b, 0x03, 0x0c, 0x04, 0x4b, 0x0f, 0x04, 0x43, 0x07, 0x18, 0x27,
2185 +       0x03, 0x43, 0x06, 0x09, 0x0f, 0x4b, 0x2d, 0x1a, 0x15, 0x4b, 0x1e, 0x09, 0x18, 0x04, 0x07,
2186 +       0x14, 0x12, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
2187 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x42, 0x52, 0x58, 0x40, 0x40, 0x40,
2188 +       0x40, 0x40, 0x05, 0x40, 0x40, 0x40, 0x05, 0x48, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2189 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x05, 0x05, 0x58, 0x52, 0x4a, 0x05, 0x15, 0x40, 0x40,
2190 +       0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x50, 0x50, 0x45, 0x4d, 0x4a, 0x07, 0x4d, 0x5d, 0x4a,
2191 +       0x48, 0x58, 0x62, 0x5d, 0x58, 0x4d, 0x40, 0x02, 0x48, 0x50, 0x50, 0x45, 0x4d, 0x4a, 0x07,
2192 +       0x4d, 0x5d, 0x4a, 0x48, 0x58, 0x62, 0x5d, 0x58, 0x4d, 0x40, 0x02, 0x48, 0x0d, 0x4d, 0x25,
2193 +       0x52, 0x58, 0x58, 0x4d, 0x50, 0x50, 0x4a, 0x45, 0x40, 0x45, 0x07, 0x4d, 0x52, 0x2d, 0x07,
2194 +       0x4d, 0x07, 0x4d, 0x52, 0x2d, 0x07, 0x4d, 0x07, 0x4d, 0x52, 0x2d, 0x07, 0x4d, 0x4a, 0x42,
2195 +       0x15, 0x15, 0x0f, 0x15, 0x0f, 0x15, 0x07, 0x15, 0x42, 0x58, 0x15, 0x42, 0x58, 0x40, 0x40,
2196 +       0x4a, 0x05, 0x0d, 0x05, 0x4a, 0x0f, 0x05, 0x42, 0x07, 0x1a, 0x27, 0x05, 0x42, 0x07, 0x0a,
2197 +       0x0f, 0x4a, 0x2d, 0x1a, 0x15, 0x4a, 0x1d, 0x0a, 0x18, 0x05, 0x07, 0x15, 0x12, 0x0f, 0x0f,
2198 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2199 +       0x00, 0x00, 0x00, 0x07, 0x40, 0x42, 0x52, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x04, 0x40,
2200 +       0x40, 0x40, 0x04, 0x46, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2201 +       0x40, 0x07, 0x05, 0x05, 0x57, 0x52, 0x49, 0x05, 0x14, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2202 +       0x42, 0x42, 0x4f, 0x4f, 0x44, 0x4c, 0x4a, 0x07, 0x4c, 0x5c, 0x4a, 0x47, 0x57, 0x62, 0x5c,
2203 +       0x57, 0x4b, 0x00, 0x03, 0x46, 0x4f, 0x4f, 0x44, 0x4c, 0x4a, 0x07, 0x4c, 0x5c, 0x4a, 0x47,
2204 +       0x57, 0x62, 0x5c, 0x57, 0x4b, 0x00, 0x03, 0x46, 0x0e, 0x4d, 0x25, 0x52, 0x57, 0x57, 0x4c,
2205 +       0x4f, 0x4f, 0x49, 0x44, 0x00, 0x44, 0x08, 0x4c, 0x52, 0x2c, 0x07, 0x4c, 0x08, 0x4c, 0x52,
2206 +       0x2c, 0x07, 0x4c, 0x08, 0x4c, 0x52, 0x2c, 0x07, 0x4c, 0x4a, 0x42, 0x14, 0x14, 0x0f, 0x15,
2207 +       0x0f, 0x15, 0x07, 0x15, 0x42, 0x57, 0x15, 0x42, 0x57, 0x40, 0x40, 0x4a, 0x06, 0x0d, 0x05,
2208 +       0x4a, 0x0f, 0x05, 0x42, 0x07, 0x1c, 0x27, 0x06, 0x42, 0x08, 0x0b, 0x0f, 0x4a, 0x2c, 0x1a,
2209 +       0x14, 0x4a, 0x1b, 0x0b, 0x17, 0x05, 0x07, 0x15, 0x12, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40,
2210 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
2211 +       0x41, 0x42, 0x52, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x04, 0x40, 0x40, 0x40, 0x04, 0x44,
2212 +       0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x05, 0x05,
2213 +       0x56, 0x52, 0x48, 0x05, 0x14, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4e, 0x4e,
2214 +       0x44, 0x4c, 0x4a, 0x07, 0x4c, 0x5c, 0x4a, 0x46, 0x56, 0x62, 0x5c, 0x56, 0x4a, 0x01, 0x03,
2215 +       0x44, 0x4e, 0x4e, 0x44, 0x4c, 0x4a, 0x07, 0x4c, 0x5c, 0x4a, 0x46, 0x56, 0x62, 0x5c, 0x56,
2216 +       0x4a, 0x01, 0x03, 0x44, 0x0f, 0x4d, 0x25, 0x52, 0x56, 0x56, 0x4c, 0x4e, 0x4e, 0x48, 0x44,
2217 +       0x01, 0x44, 0x09, 0x4c, 0x52, 0x2c, 0x07, 0x4c, 0x09, 0x4c, 0x52, 0x2c, 0x07, 0x4c, 0x09,
2218 +       0x4c, 0x52, 0x2c, 0x07, 0x4c, 0x4a, 0x42, 0x14, 0x14, 0x0f, 0x15, 0x0f, 0x15, 0x07, 0x15,
2219 +       0x42, 0x56, 0x15, 0x42, 0x56, 0x40, 0x40, 0x4a, 0x07, 0x0d, 0x05, 0x4a, 0x0f, 0x05, 0x42,
2220 +       0x07, 0x1d, 0x27, 0x07, 0x42, 0x09, 0x0b, 0x0f, 0x4a, 0x2c, 0x1a, 0x14, 0x4a, 0x1a, 0x0b,
2221 +       0x16, 0x05, 0x07, 0x15, 0x12, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
2222 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x42, 0x41, 0x51, 0x58,
2223 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x03, 0x40, 0x40, 0x40, 0x03, 0x42, 0x41, 0x40, 0x40, 0x40,
2224 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x06, 0x06, 0x55, 0x51, 0x47, 0x06,
2225 +       0x13, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4d, 0x4d, 0x43, 0x4b, 0x49, 0x07,
2226 +       0x4b, 0x5b, 0x49, 0x45, 0x55, 0x61, 0x5b, 0x55, 0x48, 0x02, 0x04, 0x42, 0x4d, 0x4d, 0x43,
2227 +       0x4b, 0x49, 0x07, 0x4b, 0x5b, 0x49, 0x45, 0x55, 0x61, 0x5b, 0x55, 0x48, 0x02, 0x04, 0x42,
2228 +       0x10, 0x4e, 0x26, 0x51, 0x55, 0x55, 0x4b, 0x4d, 0x4d, 0x47, 0x43, 0x02, 0x43, 0x0a, 0x4b,
2229 +       0x51, 0x2b, 0x07, 0x4b, 0x0a, 0x4b, 0x51, 0x2b, 0x07, 0x4b, 0x0a, 0x4b, 0x51, 0x2b, 0x07,
2230 +       0x4b, 0x49, 0x41, 0x13, 0x13, 0x0f, 0x16, 0x0f, 0x16, 0x07, 0x16, 0x41, 0x55, 0x16, 0x41,
2231 +       0x55, 0x40, 0x40, 0x49, 0x08, 0x0e, 0x06, 0x49, 0x0f, 0x06, 0x41, 0x07, 0x1f, 0x27, 0x08,
2232 +       0x41, 0x0a, 0x0c, 0x0f, 0x49, 0x2b, 0x19, 0x13, 0x49, 0x18, 0x0c, 0x15, 0x06, 0x07, 0x16,
2233 +       0x11, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
2234 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x43, 0x41, 0x51, 0x58, 0x40, 0x40, 0x40, 0x40,
2235 +       0x40, 0x02, 0x40, 0x40, 0x40, 0x02, 0x40, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2236 +       0x40, 0x40, 0x40, 0x40, 0x07, 0x06, 0x06, 0x54, 0x51, 0x45, 0x06, 0x12, 0x40, 0x40, 0x40,
2237 +       0x40, 0x40, 0x40, 0x41, 0x41, 0x4c, 0x4c, 0x42, 0x4a, 0x49, 0x07, 0x4a, 0x5a, 0x49, 0x44,
2238 +       0x54, 0x61, 0x5a, 0x54, 0x47, 0x03, 0x05, 0x40, 0x4c, 0x4c, 0x42, 0x4a, 0x49, 0x07, 0x4a,
2239 +       0x5a, 0x49, 0x44, 0x54, 0x61, 0x5a, 0x54, 0x47, 0x03, 0x05, 0x40, 0x12, 0x4e, 0x26, 0x51,
2240 +       0x54, 0x54, 0x4a, 0x4c, 0x4c, 0x45, 0x42, 0x03, 0x42, 0x0b, 0x4a, 0x51, 0x2a, 0x07, 0x4a,
2241 +       0x0b, 0x4a, 0x51, 0x2a, 0x07, 0x4a, 0x0b, 0x4a, 0x51, 0x2a, 0x07, 0x4a, 0x49, 0x41, 0x12,
2242 +       0x12, 0x0f, 0x16, 0x0f, 0x16, 0x07, 0x16, 0x41, 0x54, 0x16, 0x41, 0x54, 0x40, 0x40, 0x49,
2243 +       0x0a, 0x0e, 0x06, 0x49, 0x0f, 0x06, 0x41, 0x07, 0x20, 0x27, 0x0a, 0x41, 0x0b, 0x0d, 0x0f,
2244 +       0x49, 0x2a, 0x19, 0x12, 0x49, 0x17, 0x0d, 0x14, 0x06, 0x07, 0x16, 0x11, 0x0f, 0x0f, 0x40,
2245 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2246 +       0x00, 0x00, 0x07, 0x44, 0x41, 0x51, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x40, 0x40,
2247 +       0x40, 0x02, 0x01, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2248 +       0x07, 0x06, 0x06, 0x53, 0x51, 0x44, 0x06, 0x12, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41,
2249 +       0x41, 0x4b, 0x4b, 0x42, 0x4a, 0x49, 0x07, 0x4a, 0x5a, 0x49, 0x43, 0x53, 0x61, 0x5a, 0x53,
2250 +       0x45, 0x04, 0x05, 0x01, 0x4b, 0x4b, 0x42, 0x4a, 0x49, 0x07, 0x4a, 0x5a, 0x49, 0x43, 0x53,
2251 +       0x61, 0x5a, 0x53, 0x45, 0x04, 0x05, 0x01, 0x13, 0x4e, 0x26, 0x51, 0x53, 0x53, 0x4a, 0x4b,
2252 +       0x4b, 0x44, 0x42, 0x04, 0x42, 0x0c, 0x4a, 0x51, 0x2a, 0x07, 0x4a, 0x0c, 0x4a, 0x51, 0x2a,
2253 +       0x07, 0x4a, 0x0c, 0x4a, 0x51, 0x2a, 0x07, 0x4a, 0x49, 0x41, 0x12, 0x12, 0x0f, 0x16, 0x0f,
2254 +       0x16, 0x07, 0x16, 0x41, 0x53, 0x16, 0x41, 0x53, 0x40, 0x40, 0x49, 0x0b, 0x0e, 0x06, 0x49,
2255 +       0x0f, 0x06, 0x41, 0x07, 0x22, 0x27, 0x0b, 0x41, 0x0c, 0x0d, 0x0f, 0x49, 0x2a, 0x19, 0x12,
2256 +       0x49, 0x15, 0x0d, 0x13, 0x06, 0x07, 0x16, 0x11, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40,
2257 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x45,
2258 +       0x40, 0x50, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x01, 0x40, 0x40, 0x40, 0x01, 0x03, 0x40,
2259 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x52,
2260 +       0x50, 0x43, 0x07, 0x11, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4a, 0x4a, 0x41,
2261 +       0x49, 0x48, 0x07, 0x49, 0x59, 0x48, 0x42, 0x52, 0x60, 0x59, 0x52, 0x44, 0x05, 0x06, 0x03,
2262 +       0x4a, 0x4a, 0x41, 0x49, 0x48, 0x07, 0x49, 0x59, 0x48, 0x42, 0x52, 0x60, 0x59, 0x52, 0x44,
2263 +       0x05, 0x06, 0x03, 0x14, 0x4f, 0x27, 0x50, 0x52, 0x52, 0x49, 0x4a, 0x4a, 0x43, 0x41, 0x05,
2264 +       0x41, 0x0d, 0x49, 0x50, 0x29, 0x07, 0x49, 0x0d, 0x49, 0x50, 0x29, 0x07, 0x49, 0x0d, 0x49,
2265 +       0x50, 0x29, 0x07, 0x49, 0x48, 0x40, 0x11, 0x11, 0x0f, 0x17, 0x0f, 0x17, 0x07, 0x17, 0x40,
2266 +       0x52, 0x17, 0x40, 0x52, 0x40, 0x40, 0x48, 0x0c, 0x0f, 0x07, 0x48, 0x0f, 0x07, 0x40, 0x07,
2267 +       0x23, 0x27, 0x0c, 0x40, 0x0d, 0x0e, 0x0f, 0x48, 0x29, 0x18, 0x11, 0x48, 0x14, 0x0e, 0x12,
2268 +       0x07, 0x07, 0x17, 0x10, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
2269 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x46, 0x40, 0x50, 0x58, 0x40,
2270 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x40, 0x40, 0x40, 0x00, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40,
2271 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x51, 0x50, 0x42, 0x07, 0x10,
2272 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x49, 0x41, 0x49, 0x48, 0x07, 0x49,
2273 +       0x59, 0x48, 0x41, 0x51, 0x60, 0x59, 0x51, 0x42, 0x06, 0x06, 0x04, 0x49, 0x49, 0x41, 0x49,
2274 +       0x48, 0x07, 0x49, 0x59, 0x48, 0x41, 0x51, 0x60, 0x59, 0x51, 0x42, 0x06, 0x06, 0x04, 0x15,
2275 +       0x4f, 0x27, 0x50, 0x51, 0x51, 0x49, 0x49, 0x49, 0x42, 0x41, 0x06, 0x41, 0x0e, 0x49, 0x50,
2276 +       0x28, 0x07, 0x49, 0x0e, 0x49, 0x50, 0x28, 0x07, 0x49, 0x0e, 0x49, 0x50, 0x28, 0x07, 0x49,
2277 +       0x48, 0x40, 0x10, 0x10, 0x0f, 0x17, 0x0f, 0x17, 0x07, 0x17, 0x40, 0x51, 0x17, 0x40, 0x51,
2278 +       0x40, 0x40, 0x48, 0x0d, 0x0f, 0x07, 0x48, 0x0f, 0x07, 0x40, 0x07, 0x25, 0x27, 0x0d, 0x40,
2279 +       0x0e, 0x0e, 0x0f, 0x48, 0x28, 0x18, 0x10, 0x48, 0x12, 0x0e, 0x11, 0x07, 0x07, 0x17, 0x10,
2280 +       0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2281 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x47, 0x40, 0x50, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40,
2282 +       0x00, 0x40, 0x40, 0x40, 0x00, 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2283 +       0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x50, 0x50, 0x40, 0x07, 0x10, 0x40, 0x40, 0x40, 0x40,
2284 +       0x40, 0x40, 0x40, 0x40, 0x48, 0x48, 0x40, 0x48, 0x48, 0x07, 0x48, 0x58, 0x48, 0x40, 0x50,
2285 +       0x60, 0x58, 0x50, 0x40, 0x07, 0x07, 0x06, 0x48, 0x48, 0x40, 0x48, 0x48, 0x07, 0x48, 0x58,
2286 +       0x48, 0x40, 0x50, 0x60, 0x58, 0x50, 0x40, 0x07, 0x07, 0x06, 0x17, 0x4f, 0x27, 0x50, 0x50,
2287 +       0x50, 0x48, 0x48, 0x48, 0x40, 0x40, 0x07, 0x40, 0x0f, 0x48, 0x50, 0x28, 0x07, 0x48, 0x0f,
2288 +       0x48, 0x50, 0x28, 0x07, 0x48, 0x0f, 0x48, 0x50, 0x28, 0x07, 0x48, 0x48, 0x40, 0x10, 0x10,
2289 +       0x0f, 0x17, 0x0f, 0x17, 0x07, 0x17, 0x40, 0x50, 0x17, 0x40, 0x50, 0x40, 0x40, 0x48, 0x0f,
2290 +       0x0f, 0x07, 0x48, 0x0f, 0x07, 0x40, 0x07, 0x27, 0x27, 0x0f, 0x40, 0x0f, 0x0f, 0x0f, 0x48,
2291 +       0x28, 0x18, 0x10, 0x48, 0x10, 0x0f, 0x10, 0x07, 0x07, 0x17, 0x10, 0x0f, 0x0f, 0x40, 0x40,
2292 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2293 +       0x00, 0x07, 0x48, 0x00, 0x4f, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2294 +       0x40, 0x08, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07,
2295 +       0x08, 0x08, 0x4f, 0x4f, 0x00, 0x08, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
2296 +       0x47, 0x47, 0x00, 0x47, 0x47, 0x07, 0x47, 0x57, 0x47, 0x00, 0x4f, 0x5f, 0x57, 0x4f, 0x00,
2297 +       0x08, 0x08, 0x08, 0x47, 0x47, 0x00, 0x47, 0x47, 0x07, 0x47, 0x57, 0x47, 0x00, 0x4f, 0x5f,
2298 +       0x57, 0x4f, 0x00, 0x08, 0x08, 0x08, 0x18, 0x50, 0x28, 0x4f, 0x4f, 0x4f, 0x47, 0x47, 0x47,
2299 +       0x00, 0x00, 0x08, 0x00, 0x10, 0x47, 0x4f, 0x27, 0x07, 0x47, 0x10, 0x47, 0x4f, 0x27, 0x07,
2300 +       0x47, 0x10, 0x47, 0x4f, 0x27, 0x07, 0x47, 0x47, 0x00, 0x0f, 0x0f, 0x0f, 0x18, 0x0f, 0x18,
2301 +       0x07, 0x18, 0x00, 0x4f, 0x18, 0x00, 0x4f, 0x40, 0x40, 0x47, 0x10, 0x10, 0x08, 0x47, 0x0f,
2302 +       0x08, 0x00, 0x07, 0x28, 0x27, 0x10, 0x00, 0x10, 0x10, 0x0f, 0x47, 0x27, 0x17, 0x0f, 0x47,
2303 +       0x0f, 0x10, 0x0f, 0x08, 0x07, 0x18, 0x0f, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2304 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x49, 0x00,
2305 +       0x4f, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0a, 0x00, 0x40,
2306 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x08, 0x08, 0x4e, 0x4f,
2307 +       0x01, 0x08, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x46, 0x46, 0x00, 0x47,
2308 +       0x47, 0x07, 0x47, 0x57, 0x47, 0x01, 0x4e, 0x5f, 0x57, 0x4e, 0x02, 0x09, 0x08, 0x0a, 0x46,
2309 +       0x46, 0x00, 0x47, 0x47, 0x07, 0x47, 0x57, 0x47, 0x01, 0x4e, 0x5f, 0x57, 0x4e, 0x02, 0x09,
2310 +       0x08, 0x0a, 0x19, 0x50, 0x28, 0x4f, 0x4e, 0x4e, 0x47, 0x46, 0x46, 0x01, 0x00, 0x09, 0x00,
2311 +       0x11, 0x47, 0x4f, 0x27, 0x07, 0x47, 0x11, 0x47, 0x4f, 0x27, 0x07, 0x47, 0x11, 0x47, 0x4f,
2312 +       0x27, 0x07, 0x47, 0x47, 0x00, 0x0f, 0x0f, 0x0f, 0x18, 0x0f, 0x18, 0x07, 0x18, 0x00, 0x4e,
2313 +       0x18, 0x00, 0x4e, 0x40, 0x40, 0x47, 0x11, 0x10, 0x08, 0x47, 0x0f, 0x08, 0x00, 0x07, 0x2a,
2314 +       0x27, 0x11, 0x00, 0x11, 0x10, 0x0f, 0x47, 0x27, 0x17, 0x0f, 0x47, 0x0d, 0x10, 0x0e, 0x08,
2315 +       0x07, 0x18, 0x0f, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
2316 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4a, 0x00, 0x4f, 0x58, 0x40, 0x40,
2317 +       0x40, 0x40, 0x40, 0x41, 0x40, 0x40, 0x40, 0x41, 0x0c, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40,
2318 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x08, 0x08, 0x4d, 0x4f, 0x02, 0x08, 0x0e, 0x40,
2319 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x45, 0x45, 0x01, 0x46, 0x47, 0x07, 0x46, 0x56,
2320 +       0x47, 0x02, 0x4d, 0x5f, 0x56, 0x4d, 0x03, 0x0a, 0x09, 0x0c, 0x45, 0x45, 0x01, 0x46, 0x47,
2321 +       0x07, 0x46, 0x56, 0x47, 0x02, 0x4d, 0x5f, 0x56, 0x4d, 0x03, 0x0a, 0x09, 0x0c, 0x1a, 0x50,
2322 +       0x28, 0x4f, 0x4d, 0x4d, 0x46, 0x45, 0x45, 0x02, 0x01, 0x0a, 0x01, 0x12, 0x46, 0x4f, 0x26,
2323 +       0x07, 0x46, 0x12, 0x46, 0x4f, 0x26, 0x07, 0x46, 0x12, 0x46, 0x4f, 0x26, 0x07, 0x46, 0x47,
2324 +       0x00, 0x0e, 0x0e, 0x0f, 0x18, 0x0f, 0x18, 0x07, 0x18, 0x00, 0x4d, 0x18, 0x00, 0x4d, 0x40,
2325 +       0x40, 0x47, 0x12, 0x10, 0x08, 0x47, 0x0f, 0x08, 0x00, 0x07, 0x2b, 0x27, 0x12, 0x00, 0x12,
2326 +       0x11, 0x0f, 0x47, 0x26, 0x17, 0x0e, 0x47, 0x0c, 0x11, 0x0d, 0x08, 0x07, 0x18, 0x0f, 0x0f,
2327 +       0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2328 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x4b, 0x01, 0x4e, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42,
2329 +       0x40, 0x40, 0x40, 0x42, 0x0e, 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2330 +       0x40, 0x40, 0x07, 0x09, 0x09, 0x4c, 0x4e, 0x04, 0x09, 0x0d, 0x40, 0x40, 0x40, 0x40, 0x40,
2331 +       0x40, 0x01, 0x01, 0x44, 0x44, 0x02, 0x45, 0x46, 0x07, 0x45, 0x55, 0x46, 0x03, 0x4c, 0x5e,
2332 +       0x55, 0x4c, 0x05, 0x0b, 0x0a, 0x0e, 0x44, 0x44, 0x02, 0x45, 0x46, 0x07, 0x45, 0x55, 0x46,
2333 +       0x03, 0x4c, 0x5e, 0x55, 0x4c, 0x05, 0x0b, 0x0a, 0x0e, 0x1c, 0x51, 0x29, 0x4e, 0x4c, 0x4c,
2334 +       0x45, 0x44, 0x44, 0x04, 0x02, 0x0b, 0x02, 0x13, 0x45, 0x4e, 0x25, 0x07, 0x45, 0x13, 0x45,
2335 +       0x4e, 0x25, 0x07, 0x45, 0x13, 0x45, 0x4e, 0x25, 0x07, 0x45, 0x46, 0x01, 0x0d, 0x0d, 0x0f,
2336 +       0x19, 0x0f, 0x19, 0x07, 0x19, 0x01, 0x4c, 0x19, 0x01, 0x4c, 0x40, 0x40, 0x46, 0x14, 0x11,
2337 +       0x09, 0x46, 0x0f, 0x09, 0x01, 0x07, 0x2d, 0x27, 0x14, 0x01, 0x13, 0x12, 0x0f, 0x46, 0x25,
2338 +       0x16, 0x0d, 0x46, 0x0a, 0x12, 0x0c, 0x09, 0x07, 0x19, 0x0e, 0x0f, 0x0f, 0x40, 0x40, 0x40,
2339 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2340 +       0x07, 0x4c, 0x01, 0x4e, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x42,
2341 +       0x10, 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x09,
2342 +       0x09, 0x4b, 0x4e, 0x05, 0x09, 0x0d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x01, 0x01, 0x43,
2343 +       0x43, 0x02, 0x45, 0x46, 0x07, 0x45, 0x55, 0x46, 0x04, 0x4b, 0x5e, 0x55, 0x4b, 0x06, 0x0c,
2344 +       0x0a, 0x10, 0x43, 0x43, 0x02, 0x45, 0x46, 0x07, 0x45, 0x55, 0x46, 0x04, 0x4b, 0x5e, 0x55,
2345 +       0x4b, 0x06, 0x0c, 0x0a, 0x10, 0x1d, 0x51, 0x29, 0x4e, 0x4b, 0x4b, 0x45, 0x43, 0x43, 0x05,
2346 +       0x02, 0x0c, 0x02, 0x14, 0x45, 0x4e, 0x25, 0x07, 0x45, 0x14, 0x45, 0x4e, 0x25, 0x07, 0x45,
2347 +       0x14, 0x45, 0x4e, 0x25, 0x07, 0x45, 0x46, 0x01, 0x0d, 0x0d, 0x0f, 0x19, 0x0f, 0x19, 0x07,
2348 +       0x19, 0x01, 0x4b, 0x19, 0x01, 0x4b, 0x40, 0x40, 0x46, 0x15, 0x11, 0x09, 0x46, 0x0f, 0x09,
2349 +       0x01, 0x07, 0x2e, 0x27, 0x15, 0x01, 0x14, 0x12, 0x0f, 0x46, 0x25, 0x16, 0x0d, 0x46, 0x09,
2350 +       0x12, 0x0b, 0x09, 0x07, 0x19, 0x0e, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2351 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4d, 0x01, 0x4e,
2352 +       0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x40, 0x40, 0x40, 0x43, 0x12, 0x01, 0x40, 0x40,
2353 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x09, 0x09, 0x4a, 0x4e, 0x06,
2354 +       0x09, 0x0c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x01, 0x01, 0x42, 0x42, 0x03, 0x44, 0x46,
2355 +       0x07, 0x44, 0x54, 0x46, 0x05, 0x4a, 0x5e, 0x54, 0x4a, 0x08, 0x0d, 0x0b, 0x12, 0x42, 0x42,
2356 +       0x03, 0x44, 0x46, 0x07, 0x44, 0x54, 0x46, 0x05, 0x4a, 0x5e, 0x54, 0x4a, 0x08, 0x0d, 0x0b,
2357 +       0x12, 0x1e, 0x51, 0x29, 0x4e, 0x4a, 0x4a, 0x44, 0x42, 0x42, 0x06, 0x03, 0x0d, 0x03, 0x15,
2358 +       0x44, 0x4e, 0x24, 0x07, 0x44, 0x15, 0x44, 0x4e, 0x24, 0x07, 0x44, 0x15, 0x44, 0x4e, 0x24,
2359 +       0x07, 0x44, 0x46, 0x01, 0x0c, 0x0c, 0x0f, 0x19, 0x0f, 0x19, 0x07, 0x19, 0x01, 0x4a, 0x19,
2360 +       0x01, 0x4a, 0x40, 0x40, 0x46, 0x16, 0x11, 0x09, 0x46, 0x0f, 0x09, 0x01, 0x07, 0x30, 0x27,
2361 +       0x16, 0x01, 0x15, 0x13, 0x0f, 0x46, 0x24, 0x16, 0x0c, 0x46, 0x07, 0x13, 0x0a, 0x09, 0x07,
2362 +       0x19, 0x0e, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
2363 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4e, 0x01, 0x4e, 0x58, 0x40, 0x40, 0x40,
2364 +       0x40, 0x40, 0x44, 0x40, 0x40, 0x40, 0x44, 0x13, 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2365 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x09, 0x09, 0x4a, 0x4e, 0x07, 0x09, 0x0b, 0x40, 0x40,
2366 +       0x40, 0x40, 0x40, 0x40, 0x01, 0x01, 0x42, 0x42, 0x03, 0x44, 0x46, 0x07, 0x44, 0x54, 0x46,
2367 +       0x05, 0x4a, 0x5e, 0x54, 0x4a, 0x09, 0x0d, 0x0b, 0x13, 0x42, 0x42, 0x03, 0x44, 0x46, 0x07,
2368 +       0x44, 0x54, 0x46, 0x05, 0x4a, 0x5e, 0x54, 0x4a, 0x09, 0x0d, 0x0b, 0x13, 0x1f, 0x52, 0x29,
2369 +       0x4e, 0x4a, 0x4a, 0x44, 0x42, 0x42, 0x07, 0x03, 0x0d, 0x03, 0x15, 0x44, 0x4e, 0x23, 0x07,
2370 +       0x44, 0x15, 0x44, 0x4e, 0x23, 0x07, 0x44, 0x15, 0x44, 0x4e, 0x23, 0x07, 0x44, 0x46, 0x01,
2371 +       0x0b, 0x0b, 0x0f, 0x19, 0x0f, 0x19, 0x07, 0x19, 0x01, 0x4a, 0x19, 0x01, 0x4a, 0x40, 0x40,
2372 +       0x46, 0x17, 0x11, 0x09, 0x46, 0x0f, 0x09, 0x01, 0x07, 0x31, 0x27, 0x17, 0x01, 0x15, 0x13,
2373 +       0x0f, 0x46, 0x23, 0x15, 0x0b, 0x46, 0x05, 0x13, 0x09, 0x09, 0x07, 0x19, 0x0d, 0x0f, 0x0f,
2374 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2375 +       0x00, 0x00, 0x00, 0x07, 0x4e, 0x02, 0x4d, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x44, 0x40,
2376 +       0x40, 0x40, 0x44, 0x15, 0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2377 +       0x40, 0x07, 0x0a, 0x0a, 0x49, 0x4d, 0x09, 0x0a, 0x0b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2378 +       0x02, 0x02, 0x41, 0x41, 0x04, 0x43, 0x45, 0x07, 0x43, 0x53, 0x45, 0x06, 0x49, 0x5d, 0x53,
2379 +       0x49, 0x0b, 0x0e, 0x0c, 0x15, 0x41, 0x41, 0x04, 0x43, 0x45, 0x07, 0x43, 0x53, 0x45, 0x06,
2380 +       0x49, 0x5d, 0x53, 0x49, 0x0b, 0x0e, 0x0c, 0x15, 0x21, 0x52, 0x2a, 0x4d, 0x49, 0x49, 0x43,
2381 +       0x41, 0x41, 0x09, 0x04, 0x0e, 0x04, 0x16, 0x43, 0x4d, 0x23, 0x07, 0x43, 0x16, 0x43, 0x4d,
2382 +       0x23, 0x07, 0x43, 0x16, 0x43, 0x4d, 0x23, 0x07, 0x43, 0x45, 0x02, 0x0b, 0x0b, 0x0f, 0x1a,
2383 +       0x0f, 0x1a, 0x07, 0x1a, 0x02, 0x49, 0x1a, 0x02, 0x49, 0x40, 0x40, 0x45, 0x19, 0x12, 0x0a,
2384 +       0x45, 0x0f, 0x0a, 0x02, 0x07, 0x33, 0x27, 0x19, 0x02, 0x16, 0x14, 0x0f, 0x45, 0x23, 0x15,
2385 +       0x0b, 0x45, 0x04, 0x14, 0x09, 0x0a, 0x07, 0x1a, 0x0d, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40,
2386 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
2387 +       0x4f, 0x02, 0x4d, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x45, 0x40, 0x40, 0x40, 0x45, 0x17,
2388 +       0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0a, 0x0a,
2389 +       0x48, 0x4d, 0x0a, 0x0a, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x40, 0x40,
2390 +       0x05, 0x42, 0x45, 0x07, 0x42, 0x52, 0x45, 0x07, 0x48, 0x5d, 0x52, 0x48, 0x0d, 0x0f, 0x0d,
2391 +       0x17, 0x40, 0x40, 0x05, 0x42, 0x45, 0x07, 0x42, 0x52, 0x45, 0x07, 0x48, 0x5d, 0x52, 0x48,
2392 +       0x0d, 0x0f, 0x0d, 0x17, 0x22, 0x52, 0x2a, 0x4d, 0x48, 0x48, 0x42, 0x40, 0x40, 0x0a, 0x05,
2393 +       0x0f, 0x05, 0x17, 0x42, 0x4d, 0x22, 0x07, 0x42, 0x17, 0x42, 0x4d, 0x22, 0x07, 0x42, 0x17,
2394 +       0x42, 0x4d, 0x22, 0x07, 0x42, 0x45, 0x02, 0x0a, 0x0a, 0x0f, 0x1a, 0x0f, 0x1a, 0x07, 0x1a,
2395 +       0x02, 0x48, 0x1a, 0x02, 0x48, 0x40, 0x40, 0x45, 0x1a, 0x12, 0x0a, 0x45, 0x0f, 0x0a, 0x02,
2396 +       0x07, 0x35, 0x27, 0x1a, 0x02, 0x17, 0x15, 0x0f, 0x45, 0x22, 0x15, 0x0a, 0x45, 0x02, 0x15,
2397 +       0x08, 0x0a, 0x07, 0x1a, 0x0d, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
2398 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x50, 0x02, 0x4d, 0x58,
2399 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x45, 0x40, 0x40, 0x40, 0x45, 0x19, 0x02, 0x40, 0x40, 0x40,
2400 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0a, 0x0a, 0x47, 0x4d, 0x0b, 0x0a,
2401 +       0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x00, 0x00, 0x05, 0x42, 0x45, 0x07,
2402 +       0x42, 0x52, 0x45, 0x08, 0x47, 0x5d, 0x52, 0x47, 0x0e, 0x10, 0x0d, 0x19, 0x00, 0x00, 0x05,
2403 +       0x42, 0x45, 0x07, 0x42, 0x52, 0x45, 0x08, 0x47, 0x5d, 0x52, 0x47, 0x0e, 0x10, 0x0d, 0x19,
2404 +       0x23, 0x52, 0x2a, 0x4d, 0x47, 0x47, 0x42, 0x00, 0x00, 0x0b, 0x05, 0x10, 0x05, 0x18, 0x42,
2405 +       0x4d, 0x22, 0x07, 0x42, 0x18, 0x42, 0x4d, 0x22, 0x07, 0x42, 0x18, 0x42, 0x4d, 0x22, 0x07,
2406 +       0x42, 0x45, 0x02, 0x0a, 0x0a, 0x0f, 0x1a, 0x0f, 0x1a, 0x07, 0x1a, 0x02, 0x47, 0x1a, 0x02,
2407 +       0x47, 0x40, 0x40, 0x45, 0x1b, 0x12, 0x0a, 0x45, 0x0f, 0x0a, 0x02, 0x07, 0x36, 0x27, 0x1b,
2408 +       0x02, 0x18, 0x15, 0x0f, 0x45, 0x22, 0x15, 0x0a, 0x45, 0x01, 0x15, 0x07, 0x0a, 0x07, 0x1a,
2409 +       0x0d, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
2410 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x51, 0x03, 0x4c, 0x58, 0x40, 0x40, 0x40, 0x40,
2411 +       0x40, 0x46, 0x40, 0x40, 0x40, 0x46, 0x1b, 0x03, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2412 +       0x40, 0x40, 0x40, 0x40, 0x07, 0x0b, 0x0b, 0x46, 0x4c, 0x0c, 0x0b, 0x09, 0x40, 0x40, 0x40,
2413 +       0x40, 0x40, 0x40, 0x03, 0x03, 0x01, 0x01, 0x06, 0x41, 0x44, 0x07, 0x41, 0x51, 0x44, 0x09,
2414 +       0x46, 0x5c, 0x51, 0x46, 0x10, 0x11, 0x0e, 0x1b, 0x01, 0x01, 0x06, 0x41, 0x44, 0x07, 0x41,
2415 +       0x51, 0x44, 0x09, 0x46, 0x5c, 0x51, 0x46, 0x10, 0x11, 0x0e, 0x1b, 0x24, 0x53, 0x2b, 0x4c,
2416 +       0x46, 0x46, 0x41, 0x01, 0x01, 0x0c, 0x06, 0x11, 0x06, 0x19, 0x41, 0x4c, 0x21, 0x07, 0x41,
2417 +       0x19, 0x41, 0x4c, 0x21, 0x07, 0x41, 0x19, 0x41, 0x4c, 0x21, 0x07, 0x41, 0x44, 0x03, 0x09,
2418 +       0x09, 0x0f, 0x1b, 0x0f, 0x1b, 0x07, 0x1b, 0x03, 0x46, 0x1b, 0x03, 0x46, 0x40, 0x40, 0x44,
2419 +       0x1c, 0x13, 0x0b, 0x44, 0x0f, 0x0b, 0x03, 0x07, 0x38, 0x27, 0x1c, 0x03, 0x19, 0x16, 0x0f,
2420 +       0x44, 0x21, 0x14, 0x09, 0x44, 0x40, 0x16, 0x06, 0x0b, 0x07, 0x1b, 0x0c, 0x0f, 0x0f, 0x40,
2421 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2422 +       0x00, 0x00, 0x07, 0x52, 0x03, 0x4c, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x47, 0x40, 0x40,
2423 +       0x40, 0x47, 0x1d, 0x03, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2424 +       0x07, 0x0b, 0x0b, 0x45, 0x4c, 0x0e, 0x0b, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x03,
2425 +       0x03, 0x02, 0x02, 0x07, 0x40, 0x44, 0x07, 0x40, 0x50, 0x44, 0x0a, 0x45, 0x5c, 0x50, 0x45,
2426 +       0x11, 0x12, 0x0f, 0x1d, 0x02, 0x02, 0x07, 0x40, 0x44, 0x07, 0x40, 0x50, 0x44, 0x0a, 0x45,
2427 +       0x5c, 0x50, 0x45, 0x11, 0x12, 0x0f, 0x1d, 0x26, 0x53, 0x2b, 0x4c, 0x45, 0x45, 0x40, 0x02,
2428 +       0x02, 0x0e, 0x07, 0x12, 0x07, 0x1a, 0x40, 0x4c, 0x20, 0x07, 0x40, 0x1a, 0x40, 0x4c, 0x20,
2429 +       0x07, 0x40, 0x1a, 0x40, 0x4c, 0x20, 0x07, 0x40, 0x44, 0x03, 0x08, 0x08, 0x0f, 0x1b, 0x0f,
2430 +       0x1b, 0x07, 0x1b, 0x03, 0x45, 0x1b, 0x03, 0x45, 0x40, 0x40, 0x44, 0x1e, 0x13, 0x0b, 0x44,
2431 +       0x0f, 0x0b, 0x03, 0x07, 0x39, 0x27, 0x1e, 0x03, 0x1a, 0x17, 0x0f, 0x44, 0x20, 0x14, 0x08,
2432 +       0x44, 0x41, 0x17, 0x05, 0x0b, 0x07, 0x1b, 0x0c, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40,
2433 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x53,
2434 +       0x03, 0x4c, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x47, 0x40, 0x40, 0x40, 0x47, 0x1f, 0x03,
2435 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0b, 0x0b, 0x44,
2436 +       0x4c, 0x0f, 0x0b, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x03, 0x03, 0x03, 0x03, 0x07,
2437 +       0x40, 0x44, 0x07, 0x40, 0x50, 0x44, 0x0b, 0x44, 0x5c, 0x50, 0x44, 0x13, 0x13, 0x0f, 0x1f,
2438 +       0x03, 0x03, 0x07, 0x40, 0x44, 0x07, 0x40, 0x50, 0x44, 0x0b, 0x44, 0x5c, 0x50, 0x44, 0x13,
2439 +       0x13, 0x0f, 0x1f, 0x27, 0x53, 0x2b, 0x4c, 0x44, 0x44, 0x40, 0x03, 0x03, 0x0f, 0x07, 0x13,
2440 +       0x07, 0x1b, 0x40, 0x4c, 0x20, 0x07, 0x40, 0x1b, 0x40, 0x4c, 0x20, 0x07, 0x40, 0x1b, 0x40,
2441 +       0x4c, 0x20, 0x07, 0x40, 0x44, 0x03, 0x08, 0x08, 0x0f, 0x1b, 0x0f, 0x1b, 0x07, 0x1b, 0x03,
2442 +       0x44, 0x1b, 0x03, 0x44, 0x40, 0x40, 0x44, 0x1f, 0x13, 0x0b, 0x44, 0x0f, 0x0b, 0x03, 0x07,
2443 +       0x3b, 0x27, 0x1f, 0x03, 0x1b, 0x17, 0x0f, 0x44, 0x20, 0x14, 0x08, 0x44, 0x43, 0x17, 0x04,
2444 +       0x0b, 0x07, 0x1b, 0x0c, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
2445 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x54, 0x04, 0x4b, 0x58, 0x40,
2446 +       0x40, 0x40, 0x40, 0x40, 0x48, 0x40, 0x40, 0x40, 0x48, 0x21, 0x04, 0x40, 0x40, 0x40, 0x40,
2447 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0c, 0x0c, 0x43, 0x4b, 0x10, 0x0c, 0x07,
2448 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x04, 0x04, 0x04, 0x04, 0x08, 0x00, 0x43, 0x07, 0x00,
2449 +       0x4f, 0x43, 0x0c, 0x43, 0x5b, 0x4f, 0x43, 0x14, 0x14, 0x10, 0x21, 0x04, 0x04, 0x08, 0x00,
2450 +       0x43, 0x07, 0x00, 0x4f, 0x43, 0x0c, 0x43, 0x5b, 0x4f, 0x43, 0x14, 0x14, 0x10, 0x21, 0x28,
2451 +       0x54, 0x2c, 0x4b, 0x43, 0x43, 0x00, 0x04, 0x04, 0x10, 0x08, 0x14, 0x08, 0x1c, 0x00, 0x4b,
2452 +       0x1f, 0x07, 0x00, 0x1c, 0x00, 0x4b, 0x1f, 0x07, 0x00, 0x1c, 0x00, 0x4b, 0x1f, 0x07, 0x00,
2453 +       0x43, 0x04, 0x07, 0x07, 0x0f, 0x1c, 0x0f, 0x1c, 0x07, 0x1c, 0x04, 0x43, 0x1c, 0x04, 0x43,
2454 +       0x40, 0x40, 0x43, 0x20, 0x14, 0x0c, 0x43, 0x0f, 0x0c, 0x04, 0x07, 0x3c, 0x27, 0x20, 0x04,
2455 +       0x1c, 0x18, 0x0f, 0x43, 0x1f, 0x13, 0x07, 0x43, 0x44, 0x18, 0x03, 0x0c, 0x07, 0x1c, 0x0b,
2456 +       0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2457 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x55, 0x04, 0x4b, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40,
2458 +       0x49, 0x40, 0x40, 0x40, 0x49, 0x22, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2459 +       0x40, 0x40, 0x40, 0x07, 0x0c, 0x0c, 0x42, 0x4b, 0x11, 0x0c, 0x06, 0x40, 0x40, 0x40, 0x40,
2460 +       0x40, 0x40, 0x04, 0x04, 0x05, 0x05, 0x08, 0x00, 0x43, 0x07, 0x00, 0x4f, 0x43, 0x0d, 0x42,
2461 +       0x5b, 0x4f, 0x42, 0x16, 0x15, 0x10, 0x22, 0x05, 0x05, 0x08, 0x00, 0x43, 0x07, 0x00, 0x4f,
2462 +       0x43, 0x0d, 0x42, 0x5b, 0x4f, 0x42, 0x16, 0x15, 0x10, 0x22, 0x29, 0x54, 0x2c, 0x4b, 0x42,
2463 +       0x42, 0x00, 0x05, 0x05, 0x11, 0x08, 0x15, 0x08, 0x1d, 0x00, 0x4b, 0x1e, 0x07, 0x00, 0x1d,
2464 +       0x00, 0x4b, 0x1e, 0x07, 0x00, 0x1d, 0x00, 0x4b, 0x1e, 0x07, 0x00, 0x43, 0x04, 0x06, 0x06,
2465 +       0x0f, 0x1c, 0x0f, 0x1c, 0x07, 0x1c, 0x04, 0x42, 0x1c, 0x04, 0x42, 0x40, 0x40, 0x43, 0x21,
2466 +       0x14, 0x0c, 0x43, 0x0f, 0x0c, 0x04, 0x07, 0x3e, 0x27, 0x21, 0x04, 0x1d, 0x18, 0x0f, 0x43,
2467 +       0x1e, 0x13, 0x06, 0x43, 0x46, 0x18, 0x02, 0x0c, 0x07, 0x1c, 0x0b, 0x0f, 0x0f, 0x40, 0x40,
2468 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2469 +       0x00, 0x07, 0x56, 0x04, 0x4b, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x40, 0x40, 0x40,
2470 +       0x49, 0x24, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07,
2471 +       0x0c, 0x0c, 0x41, 0x4b, 0x13, 0x0c, 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x04, 0x04,
2472 +       0x06, 0x06, 0x09, 0x01, 0x43, 0x07, 0x01, 0x4e, 0x43, 0x0e, 0x41, 0x5b, 0x4e, 0x41, 0x18,
2473 +       0x16, 0x11, 0x24, 0x06, 0x06, 0x09, 0x01, 0x43, 0x07, 0x01, 0x4e, 0x43, 0x0e, 0x41, 0x5b,
2474 +       0x4e, 0x41, 0x18, 0x16, 0x11, 0x24, 0x2b, 0x54, 0x2c, 0x4b, 0x41, 0x41, 0x01, 0x06, 0x06,
2475 +       0x13, 0x09, 0x16, 0x09, 0x1e, 0x01, 0x4b, 0x1e, 0x07, 0x01, 0x1e, 0x01, 0x4b, 0x1e, 0x07,
2476 +       0x01, 0x1e, 0x01, 0x4b, 0x1e, 0x07, 0x01, 0x43, 0x04, 0x06, 0x06, 0x0f, 0x1c, 0x0f, 0x1c,
2477 +       0x07, 0x1c, 0x04, 0x41, 0x1c, 0x04, 0x41, 0x40, 0x40, 0x43, 0x23, 0x14, 0x0c, 0x43, 0x0f,
2478 +       0x0c, 0x04, 0x07, 0x3e, 0x27, 0x23, 0x04, 0x1e, 0x19, 0x0f, 0x43, 0x1e, 0x13, 0x06, 0x43,
2479 +       0x48, 0x19, 0x01, 0x0c, 0x07, 0x1c, 0x0b, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2480 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x57, 0x05,
2481 +       0x4a, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4a, 0x40, 0x40, 0x40, 0x4a, 0x26, 0x05, 0x40,
2482 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0d, 0x0d, 0x40, 0x4a,
2483 +       0x14, 0x0d, 0x05, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x05, 0x05, 0x07, 0x07, 0x0a, 0x02,
2484 +       0x42, 0x07, 0x02, 0x4d, 0x42, 0x0f, 0x40, 0x5a, 0x4d, 0x40, 0x19, 0x17, 0x12, 0x26, 0x07,
2485 +       0x07, 0x0a, 0x02, 0x42, 0x07, 0x02, 0x4d, 0x42, 0x0f, 0x40, 0x5a, 0x4d, 0x40, 0x19, 0x17,
2486 +       0x12, 0x26, 0x2c, 0x55, 0x2d, 0x4a, 0x40, 0x40, 0x02, 0x07, 0x07, 0x14, 0x0a, 0x17, 0x0a,
2487 +       0x1f, 0x02, 0x4a, 0x1d, 0x07, 0x02, 0x1f, 0x02, 0x4a, 0x1d, 0x07, 0x02, 0x1f, 0x02, 0x4a,
2488 +       0x1d, 0x07, 0x02, 0x42, 0x05, 0x05, 0x05, 0x0f, 0x1d, 0x0f, 0x1d, 0x07, 0x1d, 0x05, 0x40,
2489 +       0x1d, 0x05, 0x40, 0x40, 0x40, 0x42, 0x24, 0x15, 0x0d, 0x42, 0x0f, 0x0d, 0x05, 0x07, 0x3e,
2490 +       0x27, 0x24, 0x05, 0x1f, 0x1a, 0x0f, 0x42, 0x1d, 0x12, 0x05, 0x42, 0x49, 0x1a, 0x00, 0x0d,
2491 +       0x07, 0x1d, 0x0a, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
2492 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x58, 0x05, 0x4a, 0x58, 0x40, 0x40,
2493 +       0x40, 0x40, 0x40, 0x4a, 0x40, 0x40, 0x40, 0x4a, 0x28, 0x05, 0x40, 0x40, 0x40, 0x40, 0x40,
2494 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0d, 0x0d, 0x00, 0x4a, 0x15, 0x0d, 0x05, 0x40,
2495 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x05, 0x05, 0x08, 0x08, 0x0a, 0x02, 0x42, 0x07, 0x02, 0x4d,
2496 +       0x42, 0x10, 0x00, 0x5a, 0x4d, 0x00, 0x1b, 0x18, 0x12, 0x28, 0x08, 0x08, 0x0a, 0x02, 0x42,
2497 +       0x07, 0x02, 0x4d, 0x42, 0x10, 0x00, 0x5a, 0x4d, 0x00, 0x1b, 0x18, 0x12, 0x28, 0x2d, 0x55,
2498 +       0x2d, 0x4a, 0x00, 0x00, 0x02, 0x08, 0x08, 0x15, 0x0a, 0x18, 0x0a, 0x20, 0x02, 0x4a, 0x1d,
2499 +       0x07, 0x02, 0x20, 0x02, 0x4a, 0x1d, 0x07, 0x02, 0x20, 0x02, 0x4a, 0x1d, 0x07, 0x02, 0x42,
2500 +       0x05, 0x05, 0x05, 0x0f, 0x1d, 0x0f, 0x1d, 0x07, 0x1d, 0x05, 0x00, 0x1d, 0x05, 0x00, 0x40,
2501 +       0x40, 0x42, 0x25, 0x15, 0x0d, 0x42, 0x0f, 0x0d, 0x05, 0x07, 0x3e, 0x27, 0x25, 0x05, 0x20,
2502 +       0x1a, 0x0f, 0x42, 0x1d, 0x12, 0x05, 0x42, 0x4b, 0x1a, 0x40, 0x0d, 0x07, 0x1d, 0x0a, 0x0f,
2503 +       0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2504 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x59, 0x05, 0x4a, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4b,
2505 +       0x40, 0x40, 0x40, 0x4b, 0x2a, 0x05, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2506 +       0x40, 0x40, 0x07, 0x0d, 0x0d, 0x01, 0x4a, 0x16, 0x0d, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40,
2507 +       0x40, 0x05, 0x05, 0x09, 0x09, 0x0b, 0x03, 0x42, 0x07, 0x03, 0x4c, 0x42, 0x11, 0x01, 0x5a,
2508 +       0x4c, 0x01, 0x1c, 0x19, 0x13, 0x2a, 0x09, 0x09, 0x0b, 0x03, 0x42, 0x07, 0x03, 0x4c, 0x42,
2509 +       0x11, 0x01, 0x5a, 0x4c, 0x01, 0x1c, 0x19, 0x13, 0x2a, 0x2e, 0x55, 0x2d, 0x4a, 0x01, 0x01,
2510 +       0x03, 0x09, 0x09, 0x16, 0x0b, 0x19, 0x0b, 0x21, 0x03, 0x4a, 0x1c, 0x07, 0x03, 0x21, 0x03,
2511 +       0x4a, 0x1c, 0x07, 0x03, 0x21, 0x03, 0x4a, 0x1c, 0x07, 0x03, 0x42, 0x05, 0x04, 0x04, 0x0f,
2512 +       0x1d, 0x0f, 0x1d, 0x07, 0x1d, 0x05, 0x01, 0x1d, 0x05, 0x01, 0x40, 0x40, 0x42, 0x26, 0x15,
2513 +       0x0d, 0x42, 0x0f, 0x0d, 0x05, 0x07, 0x3e, 0x27, 0x26, 0x05, 0x21, 0x1b, 0x0f, 0x42, 0x1c,
2514 +       0x12, 0x04, 0x42, 0x4c, 0x1b, 0x41, 0x0d, 0x07, 0x1d, 0x0a, 0x0f, 0x0f, 0x40, 0x40, 0x40,
2515 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2516 +       0x07, 0x5a, 0x06, 0x49, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4c, 0x40, 0x40, 0x40, 0x4c,
2517 +       0x2c, 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0e,
2518 +       0x0e, 0x02, 0x49, 0x18, 0x0e, 0x03, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x06, 0x06, 0x0a,
2519 +       0x0a, 0x0c, 0x04, 0x41, 0x07, 0x04, 0x4b, 0x41, 0x12, 0x02, 0x59, 0x4b, 0x02, 0x1e, 0x1a,
2520 +       0x14, 0x2c, 0x0a, 0x0a, 0x0c, 0x04, 0x41, 0x07, 0x04, 0x4b, 0x41, 0x12, 0x02, 0x59, 0x4b,
2521 +       0x02, 0x1e, 0x1a, 0x14, 0x2c, 0x30, 0x56, 0x2e, 0x49, 0x02, 0x02, 0x04, 0x0a, 0x0a, 0x18,
2522 +       0x0c, 0x1a, 0x0c, 0x22, 0x04, 0x49, 0x1b, 0x07, 0x04, 0x22, 0x04, 0x49, 0x1b, 0x07, 0x04,
2523 +       0x22, 0x04, 0x49, 0x1b, 0x07, 0x04, 0x41, 0x06, 0x03, 0x03, 0x0f, 0x1e, 0x0f, 0x1e, 0x07,
2524 +       0x1e, 0x06, 0x02, 0x1e, 0x06, 0x02, 0x40, 0x40, 0x41, 0x28, 0x16, 0x0e, 0x41, 0x0f, 0x0e,
2525 +       0x06, 0x07, 0x3e, 0x27, 0x28, 0x06, 0x22, 0x1c, 0x0f, 0x41, 0x1b, 0x11, 0x03, 0x41, 0x4e,
2526 +       0x1c, 0x42, 0x0e, 0x07, 0x1e, 0x09, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2527 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x5b, 0x06, 0x49,
2528 +       0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4c, 0x40, 0x40, 0x40, 0x4c, 0x2e, 0x06, 0x40, 0x40,
2529 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0e, 0x0e, 0x03, 0x49, 0x19,
2530 +       0x0e, 0x03, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x06, 0x06, 0x0b, 0x0b, 0x0c, 0x04, 0x41,
2531 +       0x07, 0x04, 0x4b, 0x41, 0x13, 0x03, 0x59, 0x4b, 0x03, 0x1f, 0x1b, 0x14, 0x2e, 0x0b, 0x0b,
2532 +       0x0c, 0x04, 0x41, 0x07, 0x04, 0x4b, 0x41, 0x13, 0x03, 0x59, 0x4b, 0x03, 0x1f, 0x1b, 0x14,
2533 +       0x2e, 0x31, 0x56, 0x2e, 0x49, 0x03, 0x03, 0x04, 0x0b, 0x0b, 0x19, 0x0c, 0x1b, 0x0c, 0x23,
2534 +       0x04, 0x49, 0x1b, 0x07, 0x04, 0x23, 0x04, 0x49, 0x1b, 0x07, 0x04, 0x23, 0x04, 0x49, 0x1b,
2535 +       0x07, 0x04, 0x41, 0x06, 0x03, 0x03, 0x0f, 0x1e, 0x0f, 0x1e, 0x07, 0x1e, 0x06, 0x03, 0x1e,
2536 +       0x06, 0x03, 0x40, 0x40, 0x41, 0x29, 0x16, 0x0e, 0x41, 0x0f, 0x0e, 0x06, 0x07, 0x3e, 0x27,
2537 +       0x29, 0x06, 0x23, 0x1c, 0x0f, 0x41, 0x1b, 0x11, 0x03, 0x41, 0x4f, 0x1c, 0x43, 0x0e, 0x07,
2538 +       0x1e, 0x09, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
2539 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x5c, 0x06, 0x49, 0x58, 0x40, 0x40, 0x40,
2540 +       0x40, 0x40, 0x4d, 0x40, 0x40, 0x40, 0x4d, 0x30, 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2541 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0e, 0x0e, 0x04, 0x49, 0x1a, 0x0e, 0x02, 0x40, 0x40,
2542 +       0x40, 0x40, 0x40, 0x40, 0x06, 0x06, 0x0c, 0x0c, 0x0d, 0x05, 0x41, 0x07, 0x05, 0x4a, 0x41,
2543 +       0x14, 0x04, 0x59, 0x4a, 0x04, 0x21, 0x1c, 0x15, 0x30, 0x0c, 0x0c, 0x0d, 0x05, 0x41, 0x07,
2544 +       0x05, 0x4a, 0x41, 0x14, 0x04, 0x59, 0x4a, 0x04, 0x21, 0x1c, 0x15, 0x30, 0x32, 0x56, 0x2e,
2545 +       0x49, 0x04, 0x04, 0x05, 0x0c, 0x0c, 0x1a, 0x0d, 0x1c, 0x0d, 0x24, 0x05, 0x49, 0x1a, 0x07,
2546 +       0x05, 0x24, 0x05, 0x49, 0x1a, 0x07, 0x05, 0x24, 0x05, 0x49, 0x1a, 0x07, 0x05, 0x41, 0x06,
2547 +       0x02, 0x02, 0x0f, 0x1e, 0x0f, 0x1e, 0x07, 0x1e, 0x06, 0x04, 0x1e, 0x06, 0x04, 0x40, 0x40,
2548 +       0x41, 0x2a, 0x16, 0x0e, 0x41, 0x0f, 0x0e, 0x06, 0x07, 0x3e, 0x27, 0x2a, 0x06, 0x24, 0x1d,
2549 +       0x0f, 0x41, 0x1a, 0x11, 0x02, 0x41, 0x51, 0x1d, 0x44, 0x0e, 0x07, 0x1e, 0x09, 0x0f, 0x0f,
2550 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2551 +       0x00, 0x00, 0x00, 0x07, 0x5d, 0x06, 0x49, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4e, 0x40,
2552 +       0x40, 0x40, 0x4e, 0x31, 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2553 +       0x40, 0x07, 0x0e, 0x0e, 0x04, 0x49, 0x1b, 0x0e, 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2554 +       0x06, 0x06, 0x0c, 0x0c, 0x0d, 0x05, 0x41, 0x07, 0x05, 0x4a, 0x41, 0x14, 0x04, 0x59, 0x4a,
2555 +       0x04, 0x22, 0x1c, 0x15, 0x31, 0x0c, 0x0c, 0x0d, 0x05, 0x41, 0x07, 0x05, 0x4a, 0x41, 0x14,
2556 +       0x04, 0x59, 0x4a, 0x04, 0x22, 0x1c, 0x15, 0x31, 0x33, 0x57, 0x2e, 0x49, 0x04, 0x04, 0x05,
2557 +       0x0c, 0x0c, 0x1b, 0x0d, 0x1c, 0x0d, 0x24, 0x05, 0x49, 0x19, 0x07, 0x05, 0x24, 0x05, 0x49,
2558 +       0x19, 0x07, 0x05, 0x24, 0x05, 0x49, 0x19, 0x07, 0x05, 0x41, 0x06, 0x01, 0x01, 0x0f, 0x1e,
2559 +       0x0f, 0x1e, 0x07, 0x1e, 0x06, 0x04, 0x1e, 0x06, 0x04, 0x40, 0x40, 0x41, 0x2b, 0x16, 0x0e,
2560 +       0x41, 0x0f, 0x0e, 0x06, 0x07, 0x3e, 0x27, 0x2b, 0x06, 0x24, 0x1d, 0x0f, 0x41, 0x19, 0x10,
2561 +       0x01, 0x41, 0x53, 0x1d, 0x45, 0x0e, 0x07, 0x1e, 0x08, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40,
2562 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
2563 +       0x5d, 0x07, 0x48, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4e, 0x40, 0x40, 0x40, 0x4e, 0x33,
2564 +       0x07, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0f, 0x0f,
2565 +       0x05, 0x48, 0x1d, 0x0f, 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x0d, 0x0d,
2566 +       0x0e, 0x06, 0x40, 0x07, 0x06, 0x49, 0x40, 0x15, 0x05, 0x58, 0x49, 0x05, 0x24, 0x1d, 0x16,
2567 +       0x33, 0x0d, 0x0d, 0x0e, 0x06, 0x40, 0x07, 0x06, 0x49, 0x40, 0x15, 0x05, 0x58, 0x49, 0x05,
2568 +       0x24, 0x1d, 0x16, 0x33, 0x35, 0x57, 0x2f, 0x48, 0x05, 0x05, 0x06, 0x0d, 0x0d, 0x1d, 0x0e,
2569 +       0x1d, 0x0e, 0x25, 0x06, 0x48, 0x19, 0x07, 0x06, 0x25, 0x06, 0x48, 0x19, 0x07, 0x06, 0x25,
2570 +       0x06, 0x48, 0x19, 0x07, 0x06, 0x40, 0x07, 0x01, 0x01, 0x0f, 0x1f, 0x0f, 0x1f, 0x07, 0x1f,
2571 +       0x07, 0x05, 0x1f, 0x07, 0x05, 0x40, 0x40, 0x40, 0x2d, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x07,
2572 +       0x07, 0x3e, 0x27, 0x2d, 0x07, 0x25, 0x1e, 0x0f, 0x40, 0x19, 0x10, 0x01, 0x40, 0x54, 0x1e,
2573 +       0x45, 0x0f, 0x07, 0x1f, 0x08, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
2574 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x5e, 0x07, 0x48, 0x58,
2575 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x4f, 0x35, 0x07, 0x40, 0x40, 0x40,
2576 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0f, 0x0f, 0x06, 0x48, 0x1e, 0x0f,
2577 +       0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x0e, 0x0e, 0x0f, 0x07, 0x40, 0x07,
2578 +       0x07, 0x48, 0x40, 0x16, 0x06, 0x58, 0x48, 0x06, 0x26, 0x1e, 0x17, 0x35, 0x0e, 0x0e, 0x0f,
2579 +       0x07, 0x40, 0x07, 0x07, 0x48, 0x40, 0x16, 0x06, 0x58, 0x48, 0x06, 0x26, 0x1e, 0x17, 0x35,
2580 +       0x36, 0x57, 0x2f, 0x48, 0x06, 0x06, 0x07, 0x0e, 0x0e, 0x1e, 0x0f, 0x1e, 0x0f, 0x26, 0x07,
2581 +       0x48, 0x18, 0x07, 0x07, 0x26, 0x07, 0x48, 0x18, 0x07, 0x07, 0x26, 0x07, 0x48, 0x18, 0x07,
2582 +       0x07, 0x40, 0x07, 0x00, 0x00, 0x0f, 0x1f, 0x0f, 0x1f, 0x07, 0x1f, 0x07, 0x06, 0x1f, 0x07,
2583 +       0x06, 0x40, 0x40, 0x40, 0x2e, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x07, 0x07, 0x3e, 0x27, 0x2e,
2584 +       0x07, 0x26, 0x1f, 0x0f, 0x40, 0x18, 0x10, 0x00, 0x40, 0x56, 0x1f, 0x46, 0x0f, 0x07, 0x1f,
2585 +       0x08, 0x0f, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
2586 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x5f, 0x07, 0x48, 0x58, 0x40, 0x40, 0x40, 0x40,
2587 +       0x40, 0x4f, 0x40, 0x40, 0x40, 0x4f, 0x37, 0x07, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2588 +       0x40, 0x40, 0x40, 0x40, 0x07, 0x0f, 0x0f, 0x07, 0x48, 0x1f, 0x0f, 0x00, 0x40, 0x40, 0x40,
2589 +       0x40, 0x40, 0x40, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x07, 0x40, 0x07, 0x07, 0x48, 0x40, 0x17,
2590 +       0x07, 0x58, 0x48, 0x07, 0x27, 0x1f, 0x17, 0x37, 0x0f, 0x0f, 0x0f, 0x07, 0x40, 0x07, 0x07,
2591 +       0x48, 0x40, 0x17, 0x07, 0x58, 0x48, 0x07, 0x27, 0x1f, 0x17, 0x37, 0x37, 0x57, 0x2f, 0x48,
2592 +       0x07, 0x07, 0x07, 0x0f, 0x0f, 0x1f, 0x0f, 0x1f, 0x0f, 0x27, 0x07, 0x48, 0x18, 0x07, 0x07,
2593 +       0x27, 0x07, 0x48, 0x18, 0x07, 0x07, 0x27, 0x07, 0x48, 0x18, 0x07, 0x07, 0x40, 0x07, 0x00,
2594 +       0x00, 0x0f, 0x1f, 0x0f, 0x1f, 0x07, 0x1f, 0x07, 0x07, 0x1f, 0x07, 0x07, 0x40, 0x40, 0x40,
2595 +       0x2f, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x07, 0x07, 0x3e, 0x27, 0x2f, 0x07, 0x27, 0x1f, 0x0f,
2596 +       0x40, 0x18, 0x10, 0x00, 0x40, 0x57, 0x1f, 0x47, 0x0f, 0x07, 0x1f, 0x08, 0x0f, 0x0f, 0x40,
2597 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2598 +       0x00, 0x00, 0x07, 0x07, 0x48, 0x48, 0x60, 0x40, 0x27, 0x07, 0x07, 0x27, 0x40, 0x48, 0x40,
2599 +       0x40, 0x40, 0x0f, 0x48, 0x68, 0x60, 0x40, 0x68, 0x68, 0x68, 0x68, 0x68, 0x07, 0x07, 0x0f,
2600 +       0x50, 0x40, 0x60, 0x07, 0x68, 0x27, 0x48, 0x17, 0x40, 0x50, 0x1f, 0x40, 0x40, 0x40, 0x48,
2601 +       0x48, 0x58, 0x60, 0x60, 0x60, 0x68, 0x68, 0x58, 0x68, 0x60, 0x60, 0x60, 0x68, 0x68, 0x68,
2602 +       0x60, 0x50, 0x48, 0x50, 0x58, 0x60, 0x60, 0x60, 0x68, 0x68, 0x58, 0x68, 0x60, 0x60, 0x60,
2603 +       0x68, 0x68, 0x68, 0x60, 0x50, 0x48, 0x50, 0x07, 0x50, 0x58, 0x40, 0x48, 0x40, 0x48, 0x07,
2604 +       0x48, 0x48, 0x48, 0x68, 0x07, 0x1f, 0x17, 0x50, 0x0f, 0x07, 0x40, 0x1f, 0x17, 0x50, 0x0f,
2605 +       0x07, 0x40, 0x1f, 0x17, 0x50, 0x0f, 0x07, 0x40, 0x40, 0x07, 0x48, 0x48, 0x48, 0x07, 0x48,
2606 +       0x07, 0x17, 0x17, 0x17, 0x50, 0x17, 0x17, 0x50, 0x40, 0x40, 0x40, 0x2f, 0x2f, 0x17, 0x40,
2607 +       0x0f, 0x17, 0x1f, 0x1f, 0x1f, 0x27, 0x0f, 0x07, 0x07, 0x0f, 0x07, 0x07, 0x3e, 0x1f, 0x17,
2608 +       0x40, 0x17, 0x07, 0x1f, 0x48, 0x17, 0x48, 0x40, 0x48, 0x17, 0x40, 0x40, 0x40, 0x40, 0x40,
2609 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
2610 +       0x47, 0x47, 0x5f, 0x40, 0x27, 0x07, 0x07, 0x27, 0x40, 0x47, 0x40, 0x40, 0x40, 0x0f, 0x47,
2611 +       0x66, 0x5f, 0x00, 0x66, 0x66, 0x66, 0x65, 0x65, 0x07, 0x07, 0x0f, 0x4f, 0x00, 0x5e, 0x07,
2612 +       0x67, 0x27, 0x47, 0x17, 0x40, 0x4f, 0x1f, 0x40, 0x40, 0x40, 0x47, 0x47, 0x57, 0x5f, 0x5e,
2613 +       0x5f, 0x66, 0x66, 0x57, 0x67, 0x5f, 0x5e, 0x5f, 0x67, 0x67, 0x66, 0x5e, 0x4f, 0x47, 0x4f,
2614 +       0x57, 0x5f, 0x5e, 0x5f, 0x66, 0x66, 0x57, 0x67, 0x5f, 0x5e, 0x5f, 0x67, 0x67, 0x66, 0x5e,
2615 +       0x4f, 0x47, 0x4f, 0x08, 0x4f, 0x56, 0x40, 0x48, 0x40, 0x47, 0x07, 0x47, 0x47, 0x47, 0x66,
2616 +       0x07, 0x1f, 0x17, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x17, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x17,
2617 +       0x4f, 0x10, 0x07, 0x40, 0x40, 0x07, 0x47, 0x47, 0x47, 0x08, 0x47, 0x08, 0x17, 0x17, 0x17,
2618 +       0x4f, 0x17, 0x17, 0x4f, 0x40, 0x40, 0x40, 0x2f, 0x2f, 0x17, 0x40, 0x0f, 0x17, 0x1f, 0x1f,
2619 +       0x20, 0x27, 0x10, 0x07, 0x08, 0x10, 0x08, 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x17, 0x08, 0x1f,
2620 +       0x47, 0x17, 0x46, 0x00, 0x47, 0x17, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
2621 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x46, 0x47, 0x5e, 0x40,
2622 +       0x26, 0x06, 0x06, 0x27, 0x40, 0x47, 0x40, 0x40, 0x40, 0x0f, 0x47, 0x64, 0x5e, 0x01, 0x65,
2623 +       0x64, 0x64, 0x63, 0x63, 0x07, 0x07, 0x0f, 0x4e, 0x00, 0x5d, 0x07, 0x66, 0x27, 0x46, 0x17,
2624 +       0x40, 0x4f, 0x1e, 0x40, 0x40, 0x40, 0x47, 0x47, 0x56, 0x5e, 0x5d, 0x5e, 0x65, 0x64, 0x56,
2625 +       0x66, 0x5e, 0x5c, 0x5e, 0x66, 0x66, 0x65, 0x5d, 0x4e, 0x46, 0x4e, 0x56, 0x5e, 0x5d, 0x5e,
2626 +       0x65, 0x64, 0x56, 0x66, 0x5e, 0x5c, 0x5e, 0x66, 0x66, 0x65, 0x5d, 0x4e, 0x46, 0x4e, 0x09,
2627 +       0x4f, 0x54, 0x40, 0x48, 0x40, 0x47, 0x07, 0x47, 0x46, 0x46, 0x64, 0x07, 0x1f, 0x16, 0x4f,
2628 +       0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40,
2629 +       0x40, 0x07, 0x46, 0x46, 0x46, 0x09, 0x46, 0x09, 0x17, 0x17, 0x16, 0x4f, 0x17, 0x16, 0x4f,
2630 +       0x40, 0x40, 0x40, 0x2e, 0x2e, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x1e, 0x20, 0x27, 0x10, 0x07,
2631 +       0x09, 0x10, 0x08, 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x17, 0x08, 0x1e, 0x46, 0x17, 0x45, 0x01,
2632 +       0x46, 0x17, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2633 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x45, 0x47, 0x5e, 0x40, 0x25, 0x06, 0x05, 0x27,
2634 +       0x40, 0x47, 0x40, 0x40, 0x40, 0x0f, 0x47, 0x63, 0x5d, 0x01, 0x64, 0x63, 0x62, 0x60, 0x60,
2635 +       0x07, 0x07, 0x0f, 0x4e, 0x00, 0x5c, 0x07, 0x65, 0x27, 0x45, 0x17, 0x40, 0x4f, 0x1d, 0x40,
2636 +       0x40, 0x40, 0x47, 0x47, 0x56, 0x5d, 0x5c, 0x5d, 0x64, 0x63, 0x56, 0x65, 0x5d, 0x5b, 0x5d,
2637 +       0x65, 0x65, 0x64, 0x5c, 0x4d, 0x46, 0x4d, 0x56, 0x5d, 0x5c, 0x5d, 0x64, 0x63, 0x56, 0x65,
2638 +       0x5d, 0x5b, 0x5d, 0x65, 0x65, 0x64, 0x5c, 0x4d, 0x46, 0x4d, 0x09, 0x4f, 0x52, 0x40, 0x48,
2639 +       0x40, 0x47, 0x07, 0x47, 0x46, 0x46, 0x62, 0x07, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f,
2640 +       0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x40, 0x07, 0x46, 0x46,
2641 +       0x45, 0x09, 0x45, 0x09, 0x17, 0x17, 0x16, 0x4f, 0x17, 0x16, 0x4f, 0x40, 0x40, 0x40, 0x2d,
2642 +       0x2d, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x1e, 0x20, 0x27, 0x10, 0x07, 0x09, 0x10, 0x08, 0x07,
2643 +       0x3d, 0x1f, 0x17, 0x40, 0x17, 0x08, 0x1e, 0x45, 0x17, 0x44, 0x01, 0x45, 0x17, 0x40, 0x40,
2644 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2645 +       0x00, 0x07, 0x05, 0x44, 0x46, 0x5d, 0x40, 0x24, 0x05, 0x04, 0x27, 0x40, 0x46, 0x40, 0x40,
2646 +       0x40, 0x0f, 0x46, 0x61, 0x5c, 0x02, 0x63, 0x61, 0x60, 0x5e, 0x5e, 0x07, 0x07, 0x0e, 0x4d,
2647 +       0x01, 0x5b, 0x07, 0x64, 0x27, 0x44, 0x16, 0x40, 0x4e, 0x1c, 0x40, 0x40, 0x40, 0x46, 0x46,
2648 +       0x55, 0x5c, 0x5b, 0x5c, 0x63, 0x61, 0x55, 0x64, 0x5c, 0x59, 0x5c, 0x64, 0x64, 0x63, 0x5b,
2649 +       0x4c, 0x45, 0x4c, 0x55, 0x5c, 0x5b, 0x5c, 0x63, 0x61, 0x55, 0x64, 0x5c, 0x59, 0x5c, 0x64,
2650 +       0x64, 0x63, 0x5b, 0x4c, 0x45, 0x4c, 0x0a, 0x4e, 0x50, 0x40, 0x48, 0x40, 0x46, 0x07, 0x46,
2651 +       0x45, 0x45, 0x60, 0x07, 0x1e, 0x15, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x15, 0x4e, 0x11, 0x07,
2652 +       0x40, 0x1e, 0x15, 0x4e, 0x11, 0x07, 0x40, 0x41, 0x07, 0x45, 0x45, 0x44, 0x0a, 0x44, 0x0a,
2653 +       0x16, 0x17, 0x15, 0x4e, 0x17, 0x15, 0x4e, 0x40, 0x40, 0x40, 0x2c, 0x2c, 0x16, 0x40, 0x0f,
2654 +       0x16, 0x1d, 0x1d, 0x21, 0x27, 0x11, 0x07, 0x0a, 0x11, 0x09, 0x06, 0x3c, 0x1e, 0x16, 0x40,
2655 +       0x16, 0x09, 0x1d, 0x44, 0x16, 0x43, 0x02, 0x44, 0x16, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2656 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x43,
2657 +       0x46, 0x5c, 0x40, 0x23, 0x04, 0x03, 0x27, 0x40, 0x46, 0x40, 0x40, 0x40, 0x0f, 0x46, 0x60,
2658 +       0x5b, 0x03, 0x61, 0x60, 0x5e, 0x5b, 0x5b, 0x07, 0x07, 0x0e, 0x4c, 0x01, 0x59, 0x07, 0x63,
2659 +       0x27, 0x43, 0x16, 0x40, 0x4e, 0x1b, 0x40, 0x40, 0x40, 0x46, 0x46, 0x54, 0x5b, 0x59, 0x5b,
2660 +       0x61, 0x60, 0x54, 0x63, 0x5b, 0x58, 0x5b, 0x63, 0x63, 0x61, 0x59, 0x4b, 0x44, 0x4b, 0x54,
2661 +       0x5b, 0x59, 0x5b, 0x61, 0x60, 0x54, 0x63, 0x5b, 0x58, 0x5b, 0x63, 0x63, 0x61, 0x59, 0x4b,
2662 +       0x44, 0x4b, 0x0b, 0x4e, 0x4e, 0x40, 0x48, 0x40, 0x46, 0x07, 0x46, 0x44, 0x44, 0x5e, 0x07,
2663 +       0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e,
2664 +       0x11, 0x07, 0x40, 0x41, 0x07, 0x44, 0x44, 0x43, 0x0b, 0x43, 0x0b, 0x16, 0x17, 0x14, 0x4e,
2665 +       0x17, 0x14, 0x4e, 0x40, 0x40, 0x40, 0x2b, 0x2b, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x1c, 0x21,
2666 +       0x27, 0x11, 0x07, 0x0b, 0x11, 0x09, 0x06, 0x3b, 0x1e, 0x16, 0x40, 0x16, 0x09, 0x1c, 0x43,
2667 +       0x16, 0x41, 0x03, 0x43, 0x16, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
2668 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x42, 0x46, 0x5c, 0x40, 0x22,
2669 +       0x04, 0x02, 0x27, 0x40, 0x46, 0x40, 0x40, 0x40, 0x0f, 0x46, 0x5e, 0x5a, 0x03, 0x60, 0x5e,
2670 +       0x5c, 0x59, 0x59, 0x07, 0x07, 0x0e, 0x4c, 0x01, 0x58, 0x07, 0x62, 0x27, 0x42, 0x16, 0x40,
2671 +       0x4e, 0x1a, 0x40, 0x40, 0x40, 0x46, 0x46, 0x54, 0x5a, 0x58, 0x5a, 0x60, 0x5e, 0x54, 0x62,
2672 +       0x5a, 0x56, 0x5a, 0x62, 0x62, 0x60, 0x58, 0x4a, 0x44, 0x4a, 0x54, 0x5a, 0x58, 0x5a, 0x60,
2673 +       0x5e, 0x54, 0x62, 0x5a, 0x56, 0x5a, 0x62, 0x62, 0x60, 0x58, 0x4a, 0x44, 0x4a, 0x0b, 0x4e,
2674 +       0x4c, 0x40, 0x48, 0x40, 0x46, 0x07, 0x46, 0x44, 0x44, 0x5c, 0x07, 0x1e, 0x14, 0x4e, 0x11,
2675 +       0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x41,
2676 +       0x07, 0x44, 0x44, 0x42, 0x0b, 0x42, 0x0b, 0x16, 0x17, 0x14, 0x4e, 0x17, 0x14, 0x4e, 0x40,
2677 +       0x40, 0x40, 0x2a, 0x2a, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x1c, 0x21, 0x27, 0x11, 0x07, 0x0b,
2678 +       0x11, 0x09, 0x06, 0x3a, 0x1e, 0x16, 0x40, 0x16, 0x09, 0x1c, 0x42, 0x16, 0x40, 0x03, 0x42,
2679 +       0x16, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2680 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0x41, 0x45, 0x5b, 0x40, 0x21, 0x03, 0x01, 0x27, 0x40,
2681 +       0x45, 0x40, 0x40, 0x40, 0x0f, 0x45, 0x5d, 0x59, 0x04, 0x5f, 0x5d, 0x5a, 0x56, 0x56, 0x07,
2682 +       0x07, 0x0d, 0x4b, 0x02, 0x57, 0x07, 0x61, 0x27, 0x41, 0x15, 0x40, 0x4d, 0x19, 0x40, 0x40,
2683 +       0x40, 0x45, 0x45, 0x53, 0x59, 0x57, 0x59, 0x5f, 0x5d, 0x53, 0x61, 0x59, 0x55, 0x59, 0x61,
2684 +       0x61, 0x5f, 0x57, 0x49, 0x43, 0x49, 0x53, 0x59, 0x57, 0x59, 0x5f, 0x5d, 0x53, 0x61, 0x59,
2685 +       0x55, 0x59, 0x61, 0x61, 0x5f, 0x57, 0x49, 0x43, 0x49, 0x0c, 0x4d, 0x4a, 0x40, 0x48, 0x40,
2686 +       0x45, 0x07, 0x45, 0x43, 0x43, 0x5a, 0x07, 0x1d, 0x13, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x13,
2687 +       0x4d, 0x12, 0x07, 0x40, 0x1d, 0x13, 0x4d, 0x12, 0x07, 0x40, 0x42, 0x07, 0x43, 0x43, 0x41,
2688 +       0x0c, 0x41, 0x0c, 0x15, 0x17, 0x13, 0x4d, 0x17, 0x13, 0x4d, 0x40, 0x40, 0x40, 0x29, 0x29,
2689 +       0x15, 0x40, 0x0f, 0x15, 0x1b, 0x1b, 0x22, 0x27, 0x12, 0x07, 0x0c, 0x12, 0x0a, 0x05, 0x39,
2690 +       0x1d, 0x15, 0x40, 0x15, 0x0a, 0x1b, 0x41, 0x15, 0x00, 0x04, 0x41, 0x15, 0x40, 0x40, 0x40,
2691 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2692 +       0x07, 0x02, 0x40, 0x45, 0x5b, 0x40, 0x20, 0x02, 0x00, 0x27, 0x40, 0x45, 0x40, 0x40, 0x40,
2693 +       0x0f, 0x45, 0x5b, 0x58, 0x04, 0x5e, 0x5b, 0x59, 0x54, 0x54, 0x07, 0x07, 0x0d, 0x4b, 0x02,
2694 +       0x56, 0x07, 0x60, 0x27, 0x40, 0x15, 0x40, 0x4d, 0x18, 0x40, 0x40, 0x40, 0x45, 0x45, 0x53,
2695 +       0x58, 0x56, 0x58, 0x5e, 0x5b, 0x53, 0x60, 0x58, 0x53, 0x58, 0x60, 0x60, 0x5e, 0x56, 0x48,
2696 +       0x43, 0x48, 0x53, 0x58, 0x56, 0x58, 0x5e, 0x5b, 0x53, 0x60, 0x58, 0x53, 0x58, 0x60, 0x60,
2697 +       0x5e, 0x56, 0x48, 0x43, 0x48, 0x0c, 0x4d, 0x49, 0x40, 0x48, 0x40, 0x45, 0x07, 0x45, 0x43,
2698 +       0x43, 0x59, 0x07, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40,
2699 +       0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x42, 0x07, 0x43, 0x43, 0x40, 0x0c, 0x40, 0x0c, 0x15,
2700 +       0x17, 0x12, 0x4d, 0x17, 0x12, 0x4d, 0x40, 0x40, 0x40, 0x28, 0x28, 0x15, 0x40, 0x0f, 0x15,
2701 +       0x1a, 0x1a, 0x22, 0x27, 0x12, 0x07, 0x0c, 0x12, 0x0a, 0x05, 0x38, 0x1d, 0x15, 0x40, 0x15,
2702 +       0x0a, 0x1a, 0x40, 0x15, 0x01, 0x04, 0x40, 0x15, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2703 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x45,
2704 +       0x5a, 0x40, 0x1f, 0x02, 0x40, 0x27, 0x40, 0x45, 0x40, 0x40, 0x40, 0x0f, 0x45, 0x59, 0x57,
2705 +       0x05, 0x5c, 0x59, 0x57, 0x51, 0x51, 0x07, 0x07, 0x0d, 0x4a, 0x02, 0x54, 0x07, 0x5f, 0x27,
2706 +       0x00, 0x15, 0x40, 0x4d, 0x17, 0x40, 0x40, 0x40, 0x45, 0x45, 0x52, 0x57, 0x54, 0x57, 0x5c,
2707 +       0x59, 0x52, 0x5f, 0x57, 0x51, 0x57, 0x5f, 0x5f, 0x5c, 0x54, 0x47, 0x42, 0x47, 0x52, 0x57,
2708 +       0x54, 0x57, 0x5c, 0x59, 0x52, 0x5f, 0x57, 0x51, 0x57, 0x5f, 0x5f, 0x5c, 0x54, 0x47, 0x42,
2709 +       0x47, 0x0d, 0x4d, 0x47, 0x40, 0x48, 0x40, 0x45, 0x07, 0x45, 0x42, 0x42, 0x57, 0x07, 0x1d,
2710 +       0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12,
2711 +       0x07, 0x40, 0x42, 0x07, 0x42, 0x42, 0x00, 0x0d, 0x00, 0x0d, 0x15, 0x17, 0x12, 0x4d, 0x17,
2712 +       0x12, 0x4d, 0x40, 0x40, 0x40, 0x27, 0x27, 0x15, 0x40, 0x0f, 0x15, 0x1a, 0x1a, 0x22, 0x27,
2713 +       0x12, 0x07, 0x0d, 0x12, 0x0a, 0x05, 0x37, 0x1d, 0x15, 0x40, 0x15, 0x0a, 0x1a, 0x00, 0x15,
2714 +       0x03, 0x05, 0x00, 0x15, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
2715 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x01, 0x44, 0x59, 0x40, 0x1e, 0x01,
2716 +       0x41, 0x27, 0x40, 0x44, 0x40, 0x40, 0x40, 0x0f, 0x44, 0x58, 0x56, 0x06, 0x5b, 0x58, 0x55,
2717 +       0x4f, 0x4f, 0x07, 0x07, 0x0c, 0x49, 0x03, 0x53, 0x07, 0x5e, 0x27, 0x01, 0x14, 0x40, 0x4c,
2718 +       0x16, 0x40, 0x40, 0x40, 0x44, 0x44, 0x51, 0x56, 0x53, 0x56, 0x5b, 0x58, 0x51, 0x5e, 0x56,
2719 +       0x50, 0x56, 0x5e, 0x5e, 0x5b, 0x53, 0x46, 0x41, 0x46, 0x51, 0x56, 0x53, 0x56, 0x5b, 0x58,
2720 +       0x51, 0x5e, 0x56, 0x50, 0x56, 0x5e, 0x5e, 0x5b, 0x53, 0x46, 0x41, 0x46, 0x0e, 0x4c, 0x45,
2721 +       0x40, 0x48, 0x40, 0x44, 0x07, 0x44, 0x41, 0x41, 0x55, 0x07, 0x1c, 0x11, 0x4c, 0x13, 0x07,
2722 +       0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x43, 0x07,
2723 +       0x41, 0x41, 0x01, 0x0e, 0x01, 0x0e, 0x14, 0x17, 0x11, 0x4c, 0x17, 0x11, 0x4c, 0x40, 0x40,
2724 +       0x40, 0x26, 0x26, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x19, 0x23, 0x27, 0x13, 0x07, 0x0e, 0x13,
2725 +       0x0b, 0x04, 0x36, 0x1c, 0x14, 0x40, 0x14, 0x0b, 0x19, 0x01, 0x14, 0x04, 0x06, 0x01, 0x14,
2726 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2727 +       0x00, 0x00, 0x00, 0x07, 0x01, 0x02, 0x44, 0x59, 0x40, 0x1d, 0x01, 0x42, 0x27, 0x40, 0x44,
2728 +       0x40, 0x40, 0x40, 0x0f, 0x44, 0x56, 0x55, 0x06, 0x5a, 0x56, 0x53, 0x4c, 0x4c, 0x07, 0x07,
2729 +       0x0c, 0x49, 0x03, 0x52, 0x07, 0x5d, 0x27, 0x02, 0x14, 0x40, 0x4c, 0x15, 0x40, 0x40, 0x40,
2730 +       0x44, 0x44, 0x51, 0x55, 0x52, 0x55, 0x5a, 0x56, 0x51, 0x5d, 0x55, 0x4e, 0x55, 0x5d, 0x5d,
2731 +       0x5a, 0x52, 0x45, 0x41, 0x45, 0x51, 0x55, 0x52, 0x55, 0x5a, 0x56, 0x51, 0x5d, 0x55, 0x4e,
2732 +       0x55, 0x5d, 0x5d, 0x5a, 0x52, 0x45, 0x41, 0x45, 0x0e, 0x4c, 0x43, 0x40, 0x48, 0x40, 0x44,
2733 +       0x07, 0x44, 0x41, 0x41, 0x53, 0x07, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c,
2734 +       0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x43, 0x07, 0x41, 0x41, 0x02, 0x0e,
2735 +       0x02, 0x0e, 0x14, 0x17, 0x11, 0x4c, 0x17, 0x11, 0x4c, 0x40, 0x40, 0x40, 0x25, 0x25, 0x14,
2736 +       0x40, 0x0f, 0x14, 0x19, 0x19, 0x23, 0x27, 0x13, 0x07, 0x0e, 0x13, 0x0b, 0x04, 0x35, 0x1c,
2737 +       0x14, 0x40, 0x14, 0x0b, 0x19, 0x02, 0x14, 0x05, 0x06, 0x02, 0x14, 0x40, 0x40, 0x40, 0x40,
2738 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
2739 +       0x00, 0x03, 0x44, 0x58, 0x40, 0x1c, 0x00, 0x43, 0x27, 0x40, 0x44, 0x40, 0x40, 0x40, 0x0f,
2740 +       0x44, 0x55, 0x54, 0x07, 0x59, 0x55, 0x51, 0x4a, 0x4a, 0x07, 0x07, 0x0c, 0x48, 0x03, 0x51,
2741 +       0x07, 0x5c, 0x27, 0x03, 0x14, 0x40, 0x4c, 0x14, 0x40, 0x40, 0x40, 0x44, 0x44, 0x50, 0x54,
2742 +       0x51, 0x54, 0x59, 0x55, 0x50, 0x5c, 0x54, 0x4d, 0x54, 0x5c, 0x5c, 0x59, 0x51, 0x44, 0x40,
2743 +       0x44, 0x50, 0x54, 0x51, 0x54, 0x59, 0x55, 0x50, 0x5c, 0x54, 0x4d, 0x54, 0x5c, 0x5c, 0x59,
2744 +       0x51, 0x44, 0x40, 0x44, 0x0f, 0x4c, 0x41, 0x40, 0x48, 0x40, 0x44, 0x07, 0x44, 0x40, 0x40,
2745 +       0x51, 0x07, 0x1c, 0x10, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x10, 0x4c, 0x13, 0x07, 0x40, 0x1c,
2746 +       0x10, 0x4c, 0x13, 0x07, 0x40, 0x43, 0x07, 0x40, 0x40, 0x03, 0x0f, 0x03, 0x0f, 0x14, 0x17,
2747 +       0x10, 0x4c, 0x17, 0x10, 0x4c, 0x40, 0x40, 0x40, 0x24, 0x24, 0x14, 0x40, 0x0f, 0x14, 0x18,
2748 +       0x18, 0x23, 0x27, 0x13, 0x07, 0x0f, 0x13, 0x0b, 0x04, 0x34, 0x1c, 0x14, 0x40, 0x14, 0x0b,
2749 +       0x18, 0x03, 0x14, 0x06, 0x07, 0x03, 0x14, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
2750 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x04, 0x43, 0x57,
2751 +       0x40, 0x1b, 0x40, 0x44, 0x27, 0x40, 0x43, 0x40, 0x40, 0x40, 0x0f, 0x43, 0x53, 0x53, 0x08,
2752 +       0x57, 0x53, 0x4f, 0x47, 0x47, 0x07, 0x07, 0x0b, 0x47, 0x04, 0x4f, 0x07, 0x5b, 0x27, 0x04,
2753 +       0x13, 0x40, 0x4b, 0x13, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4f, 0x53, 0x4f, 0x53, 0x57, 0x53,
2754 +       0x4f, 0x5b, 0x53, 0x4b, 0x53, 0x5b, 0x5b, 0x57, 0x4f, 0x43, 0x00, 0x43, 0x4f, 0x53, 0x4f,
2755 +       0x53, 0x57, 0x53, 0x4f, 0x5b, 0x53, 0x4b, 0x53, 0x5b, 0x5b, 0x57, 0x4f, 0x43, 0x00, 0x43,
2756 +       0x10, 0x4b, 0x00, 0x40, 0x48, 0x40, 0x43, 0x07, 0x43, 0x00, 0x00, 0x4f, 0x07, 0x1b, 0x0f,
2757 +       0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07,
2758 +       0x40, 0x44, 0x07, 0x00, 0x00, 0x04, 0x10, 0x04, 0x10, 0x13, 0x17, 0x0f, 0x4b, 0x17, 0x0f,
2759 +       0x4b, 0x40, 0x40, 0x40, 0x23, 0x23, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x17, 0x24, 0x27, 0x14,
2760 +       0x07, 0x10, 0x14, 0x0c, 0x03, 0x33, 0x1b, 0x13, 0x40, 0x13, 0x0c, 0x17, 0x04, 0x13, 0x08,
2761 +       0x08, 0x04, 0x13, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
2762 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x05, 0x43, 0x57, 0x40, 0x1a, 0x40, 0x45,
2763 +       0x27, 0x40, 0x43, 0x40, 0x40, 0x40, 0x0f, 0x43, 0x52, 0x52, 0x08, 0x56, 0x52, 0x4d, 0x45,
2764 +       0x45, 0x07, 0x07, 0x0b, 0x47, 0x04, 0x4e, 0x07, 0x5a, 0x27, 0x05, 0x13, 0x40, 0x4b, 0x12,
2765 +       0x40, 0x40, 0x40, 0x43, 0x43, 0x4f, 0x52, 0x4e, 0x52, 0x56, 0x52, 0x4f, 0x5a, 0x52, 0x4a,
2766 +       0x52, 0x5a, 0x5a, 0x56, 0x4e, 0x42, 0x00, 0x42, 0x4f, 0x52, 0x4e, 0x52, 0x56, 0x52, 0x4f,
2767 +       0x5a, 0x52, 0x4a, 0x52, 0x5a, 0x5a, 0x56, 0x4e, 0x42, 0x00, 0x42, 0x10, 0x4b, 0x02, 0x40,
2768 +       0x48, 0x40, 0x43, 0x07, 0x43, 0x00, 0x00, 0x4d, 0x07, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40,
2769 +       0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x44, 0x07, 0x00,
2770 +       0x00, 0x05, 0x10, 0x05, 0x10, 0x13, 0x17, 0x0f, 0x4b, 0x17, 0x0f, 0x4b, 0x40, 0x40, 0x40,
2771 +       0x22, 0x22, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x17, 0x24, 0x27, 0x14, 0x07, 0x10, 0x14, 0x0c,
2772 +       0x03, 0x32, 0x1b, 0x13, 0x40, 0x13, 0x0c, 0x17, 0x05, 0x13, 0x09, 0x08, 0x05, 0x13, 0x40,
2773 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2774 +       0x00, 0x00, 0x07, 0x41, 0x06, 0x43, 0x56, 0x40, 0x19, 0x41, 0x46, 0x27, 0x40, 0x43, 0x40,
2775 +       0x40, 0x40, 0x0f, 0x43, 0x50, 0x51, 0x09, 0x55, 0x50, 0x4b, 0x42, 0x42, 0x07, 0x07, 0x0b,
2776 +       0x46, 0x04, 0x4d, 0x07, 0x59, 0x27, 0x06, 0x13, 0x40, 0x4b, 0x11, 0x40, 0x40, 0x40, 0x43,
2777 +       0x43, 0x4e, 0x51, 0x4d, 0x51, 0x55, 0x50, 0x4e, 0x59, 0x51, 0x48, 0x51, 0x59, 0x59, 0x55,
2778 +       0x4d, 0x41, 0x01, 0x41, 0x4e, 0x51, 0x4d, 0x51, 0x55, 0x50, 0x4e, 0x59, 0x51, 0x48, 0x51,
2779 +       0x59, 0x59, 0x55, 0x4d, 0x41, 0x01, 0x41, 0x11, 0x4b, 0x04, 0x40, 0x48, 0x40, 0x43, 0x07,
2780 +       0x43, 0x01, 0x01, 0x4b, 0x07, 0x1b, 0x0e, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0e, 0x4b, 0x14,
2781 +       0x07, 0x40, 0x1b, 0x0e, 0x4b, 0x14, 0x07, 0x40, 0x44, 0x07, 0x01, 0x01, 0x06, 0x11, 0x06,
2782 +       0x11, 0x13, 0x17, 0x0e, 0x4b, 0x17, 0x0e, 0x4b, 0x40, 0x40, 0x40, 0x21, 0x21, 0x13, 0x40,
2783 +       0x0f, 0x13, 0x16, 0x16, 0x24, 0x27, 0x14, 0x07, 0x11, 0x14, 0x0c, 0x03, 0x31, 0x1b, 0x13,
2784 +       0x40, 0x13, 0x0c, 0x16, 0x06, 0x13, 0x0a, 0x09, 0x06, 0x13, 0x40, 0x40, 0x40, 0x40, 0x40,
2785 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x42,
2786 +       0x06, 0x43, 0x56, 0x40, 0x18, 0x42, 0x47, 0x27, 0x40, 0x43, 0x40, 0x40, 0x40, 0x0f, 0x43,
2787 +       0x4f, 0x51, 0x09, 0x54, 0x4f, 0x4a, 0x40, 0x40, 0x07, 0x07, 0x0a, 0x46, 0x04, 0x4c, 0x07,
2788 +       0x59, 0x27, 0x06, 0x12, 0x40, 0x4b, 0x10, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4e, 0x51, 0x4c,
2789 +       0x51, 0x54, 0x4f, 0x4e, 0x59, 0x51, 0x47, 0x51, 0x59, 0x59, 0x54, 0x4c, 0x41, 0x01, 0x41,
2790 +       0x4e, 0x51, 0x4c, 0x51, 0x54, 0x4f, 0x4e, 0x59, 0x51, 0x47, 0x51, 0x59, 0x59, 0x54, 0x4c,
2791 +       0x41, 0x01, 0x41, 0x11, 0x4b, 0x05, 0x40, 0x48, 0x40, 0x43, 0x07, 0x43, 0x01, 0x01, 0x4a,
2792 +       0x07, 0x1a, 0x0d, 0x4b, 0x14, 0x07, 0x40, 0x1a, 0x0d, 0x4b, 0x14, 0x07, 0x40, 0x1a, 0x0d,
2793 +       0x4b, 0x14, 0x07, 0x40, 0x45, 0x07, 0x01, 0x01, 0x06, 0x11, 0x06, 0x11, 0x12, 0x17, 0x0d,
2794 +       0x4b, 0x17, 0x0d, 0x4b, 0x40, 0x40, 0x40, 0x20, 0x20, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x15,
2795 +       0x24, 0x27, 0x14, 0x07, 0x11, 0x14, 0x0c, 0x02, 0x30, 0x1a, 0x12, 0x40, 0x12, 0x0c, 0x15,
2796 +       0x06, 0x12, 0x0b, 0x09, 0x06, 0x12, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
2797 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x42, 0x07, 0x42, 0x55, 0x40,
2798 +       0x18, 0x42, 0x47, 0x27, 0x40, 0x42, 0x40, 0x40, 0x40, 0x0f, 0x42, 0x4d, 0x50, 0x0a, 0x52,
2799 +       0x4d, 0x48, 0x02, 0x02, 0x07, 0x07, 0x0a, 0x45, 0x05, 0x4a, 0x07, 0x58, 0x27, 0x07, 0x12,
2800 +       0x40, 0x4a, 0x10, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4d, 0x50, 0x4a, 0x50, 0x52, 0x4d, 0x4d,
2801 +       0x58, 0x50, 0x45, 0x50, 0x58, 0x58, 0x52, 0x4a, 0x40, 0x02, 0x40, 0x4d, 0x50, 0x4a, 0x50,
2802 +       0x52, 0x4d, 0x4d, 0x58, 0x50, 0x45, 0x50, 0x58, 0x58, 0x52, 0x4a, 0x40, 0x02, 0x40, 0x12,
2803 +       0x4a, 0x07, 0x40, 0x48, 0x40, 0x42, 0x07, 0x42, 0x02, 0x02, 0x48, 0x07, 0x1a, 0x0d, 0x4a,
2804 +       0x15, 0x07, 0x40, 0x1a, 0x0d, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0d, 0x4a, 0x15, 0x07, 0x40,
2805 +       0x45, 0x07, 0x02, 0x02, 0x07, 0x12, 0x07, 0x12, 0x12, 0x17, 0x0d, 0x4a, 0x17, 0x0d, 0x4a,
2806 +       0x40, 0x40, 0x40, 0x20, 0x20, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x15, 0x25, 0x27, 0x15, 0x07,
2807 +       0x12, 0x15, 0x0d, 0x02, 0x30, 0x1a, 0x12, 0x40, 0x12, 0x0d, 0x15, 0x07, 0x12, 0x0d, 0x0a,
2808 +       0x07, 0x12, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2809 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x43, 0x08, 0x42, 0x54, 0x40, 0x17, 0x43, 0x48, 0x27,
2810 +       0x40, 0x42, 0x40, 0x40, 0x40, 0x0f, 0x42, 0x4b, 0x4f, 0x0b, 0x51, 0x4b, 0x46, 0x04, 0x04,
2811 +       0x07, 0x07, 0x0a, 0x44, 0x05, 0x49, 0x07, 0x57, 0x27, 0x08, 0x12, 0x40, 0x4a, 0x0f, 0x40,
2812 +       0x40, 0x40, 0x42, 0x42, 0x4c, 0x4f, 0x49, 0x4f, 0x51, 0x4b, 0x4c, 0x57, 0x4f, 0x43, 0x4f,
2813 +       0x57, 0x57, 0x51, 0x49, 0x00, 0x03, 0x00, 0x4c, 0x4f, 0x49, 0x4f, 0x51, 0x4b, 0x4c, 0x57,
2814 +       0x4f, 0x43, 0x4f, 0x57, 0x57, 0x51, 0x49, 0x00, 0x03, 0x00, 0x13, 0x4a, 0x09, 0x40, 0x48,
2815 +       0x40, 0x42, 0x07, 0x42, 0x03, 0x03, 0x46, 0x07, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x1a,
2816 +       0x0c, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x45, 0x07, 0x03, 0x03,
2817 +       0x08, 0x13, 0x08, 0x13, 0x12, 0x17, 0x0c, 0x4a, 0x17, 0x0c, 0x4a, 0x40, 0x40, 0x40, 0x1f,
2818 +       0x1f, 0x12, 0x40, 0x0f, 0x12, 0x14, 0x14, 0x25, 0x27, 0x15, 0x07, 0x13, 0x15, 0x0d, 0x02,
2819 +       0x2f, 0x1a, 0x12, 0x40, 0x12, 0x0d, 0x14, 0x08, 0x12, 0x0e, 0x0b, 0x08, 0x12, 0x40, 0x40,
2820 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2821 +       0x00, 0x07, 0x43, 0x09, 0x42, 0x54, 0x40, 0x16, 0x43, 0x49, 0x27, 0x40, 0x42, 0x40, 0x40,
2822 +       0x40, 0x0f, 0x42, 0x4a, 0x4e, 0x0b, 0x50, 0x4a, 0x44, 0x07, 0x07, 0x07, 0x07, 0x0a, 0x44,
2823 +       0x05, 0x48, 0x07, 0x56, 0x27, 0x09, 0x12, 0x40, 0x4a, 0x0e, 0x40, 0x40, 0x40, 0x42, 0x42,
2824 +       0x4c, 0x4e, 0x48, 0x4e, 0x50, 0x4a, 0x4c, 0x56, 0x4e, 0x42, 0x4e, 0x56, 0x56, 0x50, 0x48,
2825 +       0x01, 0x03, 0x01, 0x4c, 0x4e, 0x48, 0x4e, 0x50, 0x4a, 0x4c, 0x56, 0x4e, 0x42, 0x4e, 0x56,
2826 +       0x56, 0x50, 0x48, 0x01, 0x03, 0x01, 0x13, 0x4a, 0x0b, 0x40, 0x48, 0x40, 0x42, 0x07, 0x42,
2827 +       0x03, 0x03, 0x44, 0x07, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07,
2828 +       0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x45, 0x07, 0x03, 0x03, 0x09, 0x13, 0x09, 0x13,
2829 +       0x12, 0x17, 0x0c, 0x4a, 0x17, 0x0c, 0x4a, 0x40, 0x40, 0x40, 0x1e, 0x1e, 0x12, 0x40, 0x0f,
2830 +       0x12, 0x14, 0x14, 0x25, 0x27, 0x15, 0x07, 0x13, 0x15, 0x0d, 0x02, 0x2e, 0x1a, 0x12, 0x40,
2831 +       0x12, 0x0d, 0x14, 0x09, 0x12, 0x0f, 0x0b, 0x09, 0x12, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2832 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0x0a,
2833 +       0x41, 0x53, 0x40, 0x15, 0x44, 0x4a, 0x27, 0x40, 0x41, 0x40, 0x40, 0x40, 0x0f, 0x41, 0x48,
2834 +       0x4d, 0x0c, 0x4f, 0x48, 0x42, 0x09, 0x09, 0x07, 0x07, 0x09, 0x43, 0x06, 0x47, 0x07, 0x55,
2835 +       0x27, 0x0a, 0x11, 0x40, 0x49, 0x0d, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4b, 0x4d, 0x47, 0x4d,
2836 +       0x4f, 0x48, 0x4b, 0x55, 0x4d, 0x40, 0x4d, 0x55, 0x55, 0x4f, 0x47, 0x02, 0x04, 0x02, 0x4b,
2837 +       0x4d, 0x47, 0x4d, 0x4f, 0x48, 0x4b, 0x55, 0x4d, 0x40, 0x4d, 0x55, 0x55, 0x4f, 0x47, 0x02,
2838 +       0x04, 0x02, 0x14, 0x49, 0x0d, 0x40, 0x48, 0x40, 0x41, 0x07, 0x41, 0x04, 0x04, 0x42, 0x07,
2839 +       0x19, 0x0b, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0b, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0b, 0x49,
2840 +       0x16, 0x07, 0x40, 0x46, 0x07, 0x04, 0x04, 0x0a, 0x14, 0x0a, 0x14, 0x11, 0x17, 0x0b, 0x49,
2841 +       0x17, 0x0b, 0x49, 0x40, 0x40, 0x40, 0x1d, 0x1d, 0x11, 0x40, 0x0f, 0x11, 0x13, 0x13, 0x26,
2842 +       0x27, 0x16, 0x07, 0x14, 0x16, 0x0e, 0x01, 0x2d, 0x19, 0x11, 0x40, 0x11, 0x0e, 0x13, 0x0a,
2843 +       0x11, 0x10, 0x0c, 0x0a, 0x11, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
2844 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x45, 0x0b, 0x41, 0x52, 0x40, 0x14,
2845 +       0x45, 0x4b, 0x27, 0x40, 0x41, 0x40, 0x40, 0x40, 0x0f, 0x41, 0x47, 0x4c, 0x0d, 0x4d, 0x47,
2846 +       0x40, 0x0c, 0x0c, 0x07, 0x07, 0x09, 0x42, 0x06, 0x45, 0x07, 0x54, 0x27, 0x0b, 0x11, 0x40,
2847 +       0x49, 0x0c, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4a, 0x4c, 0x45, 0x4c, 0x4d, 0x47, 0x4a, 0x54,
2848 +       0x4c, 0x00, 0x4c, 0x54, 0x54, 0x4d, 0x45, 0x03, 0x05, 0x03, 0x4a, 0x4c, 0x45, 0x4c, 0x4d,
2849 +       0x47, 0x4a, 0x54, 0x4c, 0x00, 0x4c, 0x54, 0x54, 0x4d, 0x45, 0x03, 0x05, 0x03, 0x15, 0x49,
2850 +       0x0f, 0x40, 0x48, 0x40, 0x41, 0x07, 0x41, 0x05, 0x05, 0x40, 0x07, 0x19, 0x0a, 0x49, 0x16,
2851 +       0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x46,
2852 +       0x07, 0x05, 0x05, 0x0b, 0x15, 0x0b, 0x15, 0x11, 0x17, 0x0a, 0x49, 0x17, 0x0a, 0x49, 0x40,
2853 +       0x40, 0x40, 0x1c, 0x1c, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x12, 0x26, 0x27, 0x16, 0x07, 0x15,
2854 +       0x16, 0x0e, 0x01, 0x2c, 0x19, 0x11, 0x40, 0x11, 0x0e, 0x12, 0x0b, 0x11, 0x12, 0x0d, 0x0b,
2855 +       0x11, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2856 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x45, 0x0c, 0x41, 0x52, 0x40, 0x13, 0x45, 0x4c, 0x27, 0x40,
2857 +       0x41, 0x40, 0x40, 0x40, 0x0f, 0x41, 0x45, 0x4b, 0x0d, 0x4c, 0x45, 0x01, 0x0e, 0x0e, 0x07,
2858 +       0x07, 0x09, 0x42, 0x06, 0x44, 0x07, 0x53, 0x27, 0x0c, 0x11, 0x40, 0x49, 0x0b, 0x40, 0x40,
2859 +       0x40, 0x41, 0x41, 0x4a, 0x4b, 0x44, 0x4b, 0x4c, 0x45, 0x4a, 0x53, 0x4b, 0x02, 0x4b, 0x53,
2860 +       0x53, 0x4c, 0x44, 0x04, 0x05, 0x04, 0x4a, 0x4b, 0x44, 0x4b, 0x4c, 0x45, 0x4a, 0x53, 0x4b,
2861 +       0x02, 0x4b, 0x53, 0x53, 0x4c, 0x44, 0x04, 0x05, 0x04, 0x15, 0x49, 0x11, 0x40, 0x48, 0x40,
2862 +       0x41, 0x07, 0x41, 0x05, 0x05, 0x01, 0x07, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0a,
2863 +       0x49, 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x46, 0x07, 0x05, 0x05, 0x0c,
2864 +       0x15, 0x0c, 0x15, 0x11, 0x17, 0x0a, 0x49, 0x17, 0x0a, 0x49, 0x40, 0x40, 0x40, 0x1b, 0x1b,
2865 +       0x11, 0x40, 0x0f, 0x11, 0x12, 0x12, 0x26, 0x27, 0x16, 0x07, 0x15, 0x16, 0x0e, 0x01, 0x2b,
2866 +       0x19, 0x11, 0x40, 0x11, 0x0e, 0x12, 0x0c, 0x11, 0x13, 0x0d, 0x0c, 0x11, 0x40, 0x40, 0x40,
2867 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2868 +       0x07, 0x46, 0x0d, 0x40, 0x51, 0x40, 0x12, 0x46, 0x4d, 0x27, 0x40, 0x40, 0x40, 0x40, 0x40,
2869 +       0x0f, 0x40, 0x44, 0x4a, 0x0e, 0x4b, 0x44, 0x03, 0x11, 0x11, 0x07, 0x07, 0x08, 0x41, 0x07,
2870 +       0x43, 0x07, 0x52, 0x27, 0x0d, 0x10, 0x40, 0x48, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49,
2871 +       0x4a, 0x43, 0x4a, 0x4b, 0x44, 0x49, 0x52, 0x4a, 0x03, 0x4a, 0x52, 0x52, 0x4b, 0x43, 0x05,
2872 +       0x06, 0x05, 0x49, 0x4a, 0x43, 0x4a, 0x4b, 0x44, 0x49, 0x52, 0x4a, 0x03, 0x4a, 0x52, 0x52,
2873 +       0x4b, 0x43, 0x05, 0x06, 0x05, 0x16, 0x48, 0x13, 0x40, 0x48, 0x40, 0x40, 0x07, 0x40, 0x06,
2874 +       0x06, 0x03, 0x07, 0x18, 0x09, 0x48, 0x17, 0x07, 0x40, 0x18, 0x09, 0x48, 0x17, 0x07, 0x40,
2875 +       0x18, 0x09, 0x48, 0x17, 0x07, 0x40, 0x47, 0x07, 0x06, 0x06, 0x0d, 0x16, 0x0d, 0x16, 0x10,
2876 +       0x17, 0x09, 0x48, 0x17, 0x09, 0x48, 0x40, 0x40, 0x40, 0x1a, 0x1a, 0x10, 0x40, 0x0f, 0x10,
2877 +       0x11, 0x11, 0x27, 0x27, 0x17, 0x07, 0x16, 0x17, 0x0f, 0x00, 0x2a, 0x18, 0x10, 0x40, 0x10,
2878 +       0x0f, 0x11, 0x0d, 0x10, 0x14, 0x0e, 0x0d, 0x10, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
2879 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x47, 0x0e, 0x40,
2880 +       0x51, 0x40, 0x11, 0x47, 0x4e, 0x27, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0f, 0x40, 0x42, 0x49,
2881 +       0x0e, 0x4a, 0x42, 0x04, 0x13, 0x13, 0x07, 0x07, 0x08, 0x41, 0x07, 0x42, 0x07, 0x51, 0x27,
2882 +       0x0e, 0x10, 0x40, 0x48, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x49, 0x42, 0x49, 0x4a,
2883 +       0x42, 0x49, 0x51, 0x49, 0x05, 0x49, 0x51, 0x51, 0x4a, 0x42, 0x06, 0x06, 0x06, 0x49, 0x49,
2884 +       0x42, 0x49, 0x4a, 0x42, 0x49, 0x51, 0x49, 0x05, 0x49, 0x51, 0x51, 0x4a, 0x42, 0x06, 0x06,
2885 +       0x06, 0x16, 0x48, 0x14, 0x40, 0x48, 0x40, 0x40, 0x07, 0x40, 0x06, 0x06, 0x04, 0x07, 0x18,
2886 +       0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17,
2887 +       0x07, 0x40, 0x47, 0x07, 0x06, 0x06, 0x0e, 0x16, 0x0e, 0x16, 0x10, 0x17, 0x08, 0x48, 0x17,
2888 +       0x08, 0x48, 0x40, 0x40, 0x40, 0x19, 0x19, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x10, 0x27, 0x27,
2889 +       0x17, 0x07, 0x16, 0x17, 0x0f, 0x00, 0x29, 0x18, 0x10, 0x40, 0x10, 0x0f, 0x10, 0x0e, 0x10,
2890 +       0x15, 0x0e, 0x0e, 0x10, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
2891 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x47, 0x0f, 0x40, 0x50, 0x40, 0x10, 0x47,
2892 +       0x4f, 0x27, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0f, 0x40, 0x40, 0x48, 0x0f, 0x48, 0x40, 0x06,
2893 +       0x16, 0x16, 0x07, 0x07, 0x08, 0x40, 0x07, 0x40, 0x07, 0x50, 0x27, 0x0f, 0x10, 0x40, 0x48,
2894 +       0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, 0x48, 0x40, 0x48, 0x48, 0x40, 0x48, 0x50, 0x48,
2895 +       0x07, 0x48, 0x50, 0x50, 0x48, 0x40, 0x07, 0x07, 0x07, 0x48, 0x48, 0x40, 0x48, 0x48, 0x40,
2896 +       0x48, 0x50, 0x48, 0x07, 0x48, 0x50, 0x50, 0x48, 0x40, 0x07, 0x07, 0x07, 0x17, 0x48, 0x16,
2897 +       0x40, 0x48, 0x40, 0x40, 0x07, 0x40, 0x07, 0x07, 0x06, 0x07, 0x18, 0x08, 0x48, 0x17, 0x07,
2898 +       0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x47, 0x07,
2899 +       0x07, 0x07, 0x0f, 0x17, 0x0f, 0x17, 0x10, 0x17, 0x08, 0x48, 0x17, 0x08, 0x48, 0x40, 0x40,
2900 +       0x40, 0x18, 0x18, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x10, 0x27, 0x27, 0x17, 0x07, 0x17, 0x17,
2901 +       0x0f, 0x00, 0x28, 0x18, 0x10, 0x40, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x17, 0x0f, 0x0f, 0x10,
2902 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2903 +       0x00, 0x00, 0x00, 0x07, 0x48, 0x10, 0x00, 0x4f, 0x40, 0x0f, 0x48, 0x50, 0x27, 0x40, 0x00,
2904 +       0x40, 0x40, 0x40, 0x0f, 0x00, 0x00, 0x47, 0x10, 0x47, 0x00, 0x08, 0x18, 0x18, 0x07, 0x07,
2905 +       0x07, 0x00, 0x08, 0x00, 0x07, 0x4f, 0x27, 0x10, 0x0f, 0x40, 0x47, 0x07, 0x40, 0x40, 0x40,
2906 +       0x00, 0x00, 0x47, 0x47, 0x00, 0x47, 0x47, 0x00, 0x47, 0x4f, 0x47, 0x08, 0x47, 0x4f, 0x4f,
2907 +       0x47, 0x00, 0x08, 0x08, 0x08, 0x47, 0x47, 0x00, 0x47, 0x47, 0x00, 0x47, 0x4f, 0x47, 0x08,
2908 +       0x47, 0x4f, 0x4f, 0x47, 0x00, 0x08, 0x08, 0x08, 0x18, 0x47, 0x18, 0x40, 0x48, 0x40, 0x00,
2909 +       0x07, 0x00, 0x08, 0x08, 0x08, 0x07, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x17, 0x07, 0x47,
2910 +       0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x48, 0x07, 0x08, 0x08, 0x10, 0x18,
2911 +       0x10, 0x18, 0x0f, 0x17, 0x07, 0x47, 0x17, 0x07, 0x47, 0x40, 0x40, 0x40, 0x17, 0x17, 0x0f,
2912 +       0x40, 0x0f, 0x0f, 0x0f, 0x0f, 0x28, 0x27, 0x18, 0x07, 0x18, 0x18, 0x10, 0x40, 0x27, 0x17,
2913 +       0x0f, 0x40, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x18, 0x10, 0x10, 0x0f, 0x40, 0x40, 0x40, 0x40,
2914 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
2915 +       0x48, 0x11, 0x00, 0x4f, 0x40, 0x0e, 0x48, 0x51, 0x27, 0x40, 0x00, 0x40, 0x40, 0x40, 0x0f,
2916 +       0x00, 0x02, 0x46, 0x10, 0x46, 0x02, 0x0a, 0x1b, 0x1b, 0x07, 0x07, 0x07, 0x00, 0x08, 0x01,
2917 +       0x07, 0x4e, 0x27, 0x11, 0x0f, 0x40, 0x47, 0x06, 0x40, 0x40, 0x40, 0x00, 0x00, 0x47, 0x46,
2918 +       0x01, 0x46, 0x46, 0x02, 0x47, 0x4e, 0x46, 0x0a, 0x46, 0x4e, 0x4e, 0x46, 0x01, 0x09, 0x08,
2919 +       0x09, 0x47, 0x46, 0x01, 0x46, 0x46, 0x02, 0x47, 0x4e, 0x46, 0x0a, 0x46, 0x4e, 0x4e, 0x46,
2920 +       0x01, 0x09, 0x08, 0x09, 0x18, 0x47, 0x1a, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00, 0x08, 0x08,
2921 +       0x0a, 0x07, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x17,
2922 +       0x07, 0x47, 0x18, 0x07, 0x40, 0x48, 0x07, 0x08, 0x08, 0x11, 0x18, 0x11, 0x18, 0x0f, 0x17,
2923 +       0x07, 0x47, 0x17, 0x07, 0x47, 0x40, 0x40, 0x40, 0x16, 0x16, 0x0f, 0x40, 0x0f, 0x0f, 0x0f,
2924 +       0x0f, 0x28, 0x27, 0x18, 0x07, 0x18, 0x18, 0x10, 0x40, 0x26, 0x17, 0x0f, 0x40, 0x0f, 0x10,
2925 +       0x0f, 0x11, 0x0f, 0x19, 0x10, 0x11, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
2926 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x49, 0x12, 0x00, 0x4e,
2927 +       0x40, 0x0d, 0x49, 0x52, 0x27, 0x40, 0x00, 0x40, 0x40, 0x40, 0x0f, 0x00, 0x03, 0x45, 0x11,
2928 +       0x45, 0x03, 0x0c, 0x1d, 0x1d, 0x07, 0x07, 0x07, 0x01, 0x08, 0x02, 0x07, 0x4d, 0x27, 0x12,
2929 +       0x0f, 0x40, 0x47, 0x05, 0x40, 0x40, 0x40, 0x00, 0x00, 0x46, 0x45, 0x02, 0x45, 0x45, 0x03,
2930 +       0x46, 0x4d, 0x45, 0x0b, 0x45, 0x4d, 0x4d, 0x45, 0x02, 0x0a, 0x09, 0x0a, 0x46, 0x45, 0x02,
2931 +       0x45, 0x45, 0x03, 0x46, 0x4d, 0x45, 0x0b, 0x45, 0x4d, 0x4d, 0x45, 0x02, 0x0a, 0x09, 0x0a,
2932 +       0x19, 0x47, 0x1c, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00, 0x09, 0x09, 0x0c, 0x07, 0x17, 0x06,
2933 +       0x47, 0x18, 0x07, 0x40, 0x17, 0x06, 0x47, 0x18, 0x07, 0x40, 0x17, 0x06, 0x47, 0x18, 0x07,
2934 +       0x40, 0x48, 0x07, 0x09, 0x09, 0x12, 0x19, 0x12, 0x19, 0x0f, 0x17, 0x06, 0x47, 0x17, 0x06,
2935 +       0x47, 0x40, 0x40, 0x40, 0x15, 0x15, 0x0f, 0x40, 0x0f, 0x0f, 0x0e, 0x0e, 0x28, 0x27, 0x18,
2936 +       0x07, 0x19, 0x18, 0x10, 0x40, 0x25, 0x17, 0x0f, 0x40, 0x0f, 0x10, 0x0e, 0x12, 0x0f, 0x1a,
2937 +       0x11, 0x12, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
2938 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4a, 0x13, 0x01, 0x4d, 0x40, 0x0c, 0x4a, 0x53,
2939 +       0x27, 0x40, 0x01, 0x40, 0x40, 0x40, 0x0f, 0x01, 0x05, 0x44, 0x12, 0x43, 0x05, 0x0e, 0x20,
2940 +       0x20, 0x07, 0x07, 0x06, 0x02, 0x09, 0x04, 0x07, 0x4c, 0x27, 0x13, 0x0e, 0x40, 0x46, 0x04,
2941 +       0x40, 0x40, 0x40, 0x01, 0x01, 0x45, 0x44, 0x04, 0x44, 0x43, 0x05, 0x45, 0x4c, 0x44, 0x0d,
2942 +       0x44, 0x4c, 0x4c, 0x43, 0x04, 0x0b, 0x0a, 0x0b, 0x45, 0x44, 0x04, 0x44, 0x43, 0x05, 0x45,
2943 +       0x4c, 0x44, 0x0d, 0x44, 0x4c, 0x4c, 0x43, 0x04, 0x0b, 0x0a, 0x0b, 0x1a, 0x46, 0x1e, 0x40,
2944 +       0x48, 0x40, 0x01, 0x07, 0x01, 0x0a, 0x0a, 0x0e, 0x07, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40,
2945 +       0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x49, 0x07, 0x0a,
2946 +       0x0a, 0x13, 0x1a, 0x13, 0x1a, 0x0e, 0x17, 0x05, 0x46, 0x17, 0x05, 0x46, 0x40, 0x40, 0x40,
2947 +       0x14, 0x14, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x0d, 0x29, 0x27, 0x19, 0x07, 0x1a, 0x19, 0x11,
2948 +       0x41, 0x24, 0x16, 0x0e, 0x40, 0x0e, 0x11, 0x0d, 0x13, 0x0e, 0x1c, 0x12, 0x13, 0x0e, 0x40,
2949 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2950 +       0x00, 0x00, 0x07, 0x4a, 0x14, 0x01, 0x4d, 0x40, 0x0b, 0x4a, 0x54, 0x27, 0x40, 0x01, 0x40,
2951 +       0x40, 0x40, 0x0f, 0x01, 0x06, 0x43, 0x12, 0x42, 0x06, 0x10, 0x22, 0x22, 0x07, 0x07, 0x06,
2952 +       0x02, 0x09, 0x05, 0x07, 0x4b, 0x27, 0x14, 0x0e, 0x40, 0x46, 0x03, 0x40, 0x40, 0x40, 0x01,
2953 +       0x01, 0x45, 0x43, 0x05, 0x43, 0x42, 0x06, 0x45, 0x4b, 0x43, 0x0e, 0x43, 0x4b, 0x4b, 0x42,
2954 +       0x05, 0x0c, 0x0a, 0x0c, 0x45, 0x43, 0x05, 0x43, 0x42, 0x06, 0x45, 0x4b, 0x43, 0x0e, 0x43,
2955 +       0x4b, 0x4b, 0x42, 0x05, 0x0c, 0x0a, 0x0c, 0x1a, 0x46, 0x20, 0x40, 0x48, 0x40, 0x01, 0x07,
2956 +       0x01, 0x0a, 0x0a, 0x10, 0x07, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19,
2957 +       0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x49, 0x07, 0x0a, 0x0a, 0x14, 0x1a, 0x14,
2958 +       0x1a, 0x0e, 0x17, 0x05, 0x46, 0x17, 0x05, 0x46, 0x40, 0x40, 0x40, 0x13, 0x13, 0x0e, 0x40,
2959 +       0x0f, 0x0e, 0x0d, 0x0d, 0x29, 0x27, 0x19, 0x07, 0x1a, 0x19, 0x11, 0x41, 0x23, 0x16, 0x0e,
2960 +       0x40, 0x0e, 0x11, 0x0d, 0x14, 0x0e, 0x1d, 0x12, 0x14, 0x0e, 0x40, 0x40, 0x40, 0x40, 0x40,
2961 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4b,
2962 +       0x15, 0x01, 0x4c, 0x40, 0x0a, 0x4b, 0x55, 0x27, 0x40, 0x01, 0x40, 0x40, 0x40, 0x0f, 0x01,
2963 +       0x08, 0x42, 0x13, 0x41, 0x08, 0x12, 0x25, 0x25, 0x07, 0x07, 0x06, 0x03, 0x09, 0x06, 0x07,
2964 +       0x4a, 0x27, 0x15, 0x0e, 0x40, 0x46, 0x02, 0x40, 0x40, 0x40, 0x01, 0x01, 0x44, 0x42, 0x06,
2965 +       0x42, 0x41, 0x08, 0x44, 0x4a, 0x42, 0x10, 0x42, 0x4a, 0x4a, 0x41, 0x06, 0x0d, 0x0b, 0x0d,
2966 +       0x44, 0x42, 0x06, 0x42, 0x41, 0x08, 0x44, 0x4a, 0x42, 0x10, 0x42, 0x4a, 0x4a, 0x41, 0x06,
2967 +       0x0d, 0x0b, 0x0d, 0x1b, 0x46, 0x22, 0x40, 0x48, 0x40, 0x01, 0x07, 0x01, 0x0b, 0x0b, 0x12,
2968 +       0x07, 0x16, 0x04, 0x46, 0x19, 0x07, 0x40, 0x16, 0x04, 0x46, 0x19, 0x07, 0x40, 0x16, 0x04,
2969 +       0x46, 0x19, 0x07, 0x40, 0x49, 0x07, 0x0b, 0x0b, 0x15, 0x1b, 0x15, 0x1b, 0x0e, 0x17, 0x04,
2970 +       0x46, 0x17, 0x04, 0x46, 0x40, 0x40, 0x40, 0x12, 0x12, 0x0e, 0x40, 0x0f, 0x0e, 0x0c, 0x0c,
2971 +       0x29, 0x27, 0x19, 0x07, 0x1b, 0x19, 0x11, 0x41, 0x22, 0x16, 0x0e, 0x40, 0x0e, 0x11, 0x0c,
2972 +       0x15, 0x0e, 0x1e, 0x13, 0x15, 0x0e, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
2973 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4c, 0x15, 0x01, 0x4c, 0x40,
2974 +       0x09, 0x4c, 0x56, 0x27, 0x40, 0x01, 0x40, 0x40, 0x40, 0x0f, 0x01, 0x09, 0x42, 0x13, 0x40,
2975 +       0x09, 0x13, 0x27, 0x27, 0x07, 0x07, 0x05, 0x03, 0x09, 0x07, 0x07, 0x4a, 0x27, 0x15, 0x0d,
2976 +       0x40, 0x46, 0x01, 0x40, 0x40, 0x40, 0x01, 0x01, 0x44, 0x42, 0x07, 0x42, 0x40, 0x09, 0x44,
2977 +       0x4a, 0x42, 0x11, 0x42, 0x4a, 0x4a, 0x40, 0x07, 0x0d, 0x0b, 0x0d, 0x44, 0x42, 0x07, 0x42,
2978 +       0x40, 0x09, 0x44, 0x4a, 0x42, 0x11, 0x42, 0x4a, 0x4a, 0x40, 0x07, 0x0d, 0x0b, 0x0d, 0x1b,
2979 +       0x46, 0x23, 0x40, 0x48, 0x40, 0x01, 0x07, 0x01, 0x0b, 0x0b, 0x13, 0x07, 0x15, 0x03, 0x46,
2980 +       0x19, 0x07, 0x40, 0x15, 0x03, 0x46, 0x19, 0x07, 0x40, 0x15, 0x03, 0x46, 0x19, 0x07, 0x40,
2981 +       0x4a, 0x07, 0x0b, 0x0b, 0x15, 0x1b, 0x15, 0x1b, 0x0d, 0x17, 0x03, 0x46, 0x17, 0x03, 0x46,
2982 +       0x40, 0x40, 0x40, 0x11, 0x11, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x0b, 0x29, 0x27, 0x19, 0x07,
2983 +       0x1b, 0x19, 0x11, 0x42, 0x21, 0x15, 0x0d, 0x40, 0x0d, 0x11, 0x0b, 0x15, 0x0d, 0x1f, 0x13,
2984 +       0x15, 0x0d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2985 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4c, 0x16, 0x02, 0x4b, 0x40, 0x09, 0x4c, 0x56, 0x27,
2986 +       0x40, 0x02, 0x40, 0x40, 0x40, 0x0f, 0x02, 0x0b, 0x41, 0x14, 0x01, 0x0b, 0x15, 0x2a, 0x2a,
2987 +       0x07, 0x07, 0x05, 0x04, 0x0a, 0x09, 0x07, 0x49, 0x27, 0x16, 0x0d, 0x40, 0x45, 0x01, 0x40,
2988 +       0x40, 0x40, 0x02, 0x02, 0x43, 0x41, 0x09, 0x41, 0x01, 0x0b, 0x43, 0x49, 0x41, 0x13, 0x41,
2989 +       0x49, 0x49, 0x01, 0x09, 0x0e, 0x0c, 0x0e, 0x43, 0x41, 0x09, 0x41, 0x01, 0x0b, 0x43, 0x49,
2990 +       0x41, 0x13, 0x41, 0x49, 0x49, 0x01, 0x09, 0x0e, 0x0c, 0x0e, 0x1c, 0x45, 0x25, 0x40, 0x48,
2991 +       0x40, 0x02, 0x07, 0x02, 0x0c, 0x0c, 0x15, 0x07, 0x15, 0x03, 0x45, 0x1a, 0x07, 0x40, 0x15,
2992 +       0x03, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x03, 0x45, 0x1a, 0x07, 0x40, 0x4a, 0x07, 0x0c, 0x0c,
2993 +       0x16, 0x1c, 0x16, 0x1c, 0x0d, 0x17, 0x03, 0x45, 0x17, 0x03, 0x45, 0x40, 0x40, 0x40, 0x11,
2994 +       0x11, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x0b, 0x2a, 0x27, 0x1a, 0x07, 0x1c, 0x1a, 0x12, 0x42,
2995 +       0x21, 0x15, 0x0d, 0x40, 0x0d, 0x12, 0x0b, 0x16, 0x0d, 0x21, 0x14, 0x16, 0x0d, 0x40, 0x40,
2996 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2997 +       0x00, 0x07, 0x4d, 0x17, 0x02, 0x4a, 0x40, 0x08, 0x4d, 0x57, 0x27, 0x40, 0x02, 0x40, 0x40,
2998 +       0x40, 0x0f, 0x02, 0x0d, 0x40, 0x15, 0x02, 0x0d, 0x17, 0x2c, 0x2c, 0x07, 0x07, 0x05, 0x05,
2999 +       0x0a, 0x0a, 0x07, 0x48, 0x27, 0x17, 0x0d, 0x40, 0x45, 0x00, 0x40, 0x40, 0x40, 0x02, 0x02,
3000 +       0x42, 0x40, 0x0a, 0x40, 0x02, 0x0d, 0x42, 0x48, 0x40, 0x15, 0x40, 0x48, 0x48, 0x02, 0x0a,
3001 +       0x0f, 0x0d, 0x0f, 0x42, 0x40, 0x0a, 0x40, 0x02, 0x0d, 0x42, 0x48, 0x40, 0x15, 0x40, 0x48,
3002 +       0x48, 0x02, 0x0a, 0x0f, 0x0d, 0x0f, 0x1d, 0x45, 0x27, 0x40, 0x48, 0x40, 0x02, 0x07, 0x02,
3003 +       0x0d, 0x0d, 0x17, 0x07, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07,
3004 +       0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x4a, 0x07, 0x0d, 0x0d, 0x17, 0x1d, 0x17, 0x1d,
3005 +       0x0d, 0x17, 0x02, 0x45, 0x17, 0x02, 0x45, 0x40, 0x40, 0x40, 0x10, 0x10, 0x0d, 0x40, 0x0f,
3006 +       0x0d, 0x0a, 0x0a, 0x2a, 0x27, 0x1a, 0x07, 0x1d, 0x1a, 0x12, 0x42, 0x20, 0x15, 0x0d, 0x40,
3007 +       0x0d, 0x12, 0x0a, 0x17, 0x0d, 0x22, 0x15, 0x17, 0x0d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3008 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4d, 0x18,
3009 +       0x02, 0x4a, 0x40, 0x07, 0x4d, 0x58, 0x27, 0x40, 0x02, 0x40, 0x40, 0x40, 0x0f, 0x02, 0x0e,
3010 +       0x00, 0x15, 0x03, 0x0e, 0x19, 0x2f, 0x2f, 0x07, 0x07, 0x05, 0x05, 0x0a, 0x0b, 0x07, 0x47,
3011 +       0x27, 0x18, 0x0d, 0x40, 0x45, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x42, 0x00, 0x0b, 0x00,
3012 +       0x03, 0x0e, 0x42, 0x47, 0x00, 0x16, 0x00, 0x47, 0x47, 0x03, 0x0b, 0x10, 0x0d, 0x10, 0x42,
3013 +       0x00, 0x0b, 0x00, 0x03, 0x0e, 0x42, 0x47, 0x00, 0x16, 0x00, 0x47, 0x47, 0x03, 0x0b, 0x10,
3014 +       0x0d, 0x10, 0x1d, 0x45, 0x29, 0x40, 0x48, 0x40, 0x02, 0x07, 0x02, 0x0d, 0x0d, 0x19, 0x07,
3015 +       0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45,
3016 +       0x1a, 0x07, 0x40, 0x4a, 0x07, 0x0d, 0x0d, 0x18, 0x1d, 0x18, 0x1d, 0x0d, 0x17, 0x02, 0x45,
3017 +       0x17, 0x02, 0x45, 0x40, 0x40, 0x40, 0x0f, 0x0f, 0x0d, 0x40, 0x0f, 0x0d, 0x0a, 0x0a, 0x2a,
3018 +       0x27, 0x1a, 0x07, 0x1d, 0x1a, 0x12, 0x42, 0x1f, 0x15, 0x0d, 0x40, 0x0d, 0x12, 0x0a, 0x18,
3019 +       0x0d, 0x23, 0x15, 0x18, 0x0d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
3020 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4e, 0x19, 0x03, 0x49, 0x40, 0x06,
3021 +       0x4e, 0x59, 0x27, 0x40, 0x03, 0x40, 0x40, 0x40, 0x0f, 0x03, 0x10, 0x01, 0x16, 0x04, 0x10,
3022 +       0x1b, 0x31, 0x31, 0x07, 0x07, 0x04, 0x06, 0x0b, 0x0c, 0x07, 0x46, 0x27, 0x19, 0x0c, 0x40,
3023 +       0x44, 0x41, 0x40, 0x40, 0x40, 0x03, 0x03, 0x41, 0x01, 0x0c, 0x01, 0x04, 0x10, 0x41, 0x46,
3024 +       0x01, 0x18, 0x01, 0x46, 0x46, 0x04, 0x0c, 0x11, 0x0e, 0x11, 0x41, 0x01, 0x0c, 0x01, 0x04,
3025 +       0x10, 0x41, 0x46, 0x01, 0x18, 0x01, 0x46, 0x46, 0x04, 0x0c, 0x11, 0x0e, 0x11, 0x1e, 0x44,
3026 +       0x2b, 0x40, 0x48, 0x40, 0x03, 0x07, 0x03, 0x0e, 0x0e, 0x1b, 0x07, 0x14, 0x01, 0x44, 0x1b,
3027 +       0x07, 0x40, 0x14, 0x01, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x01, 0x44, 0x1b, 0x07, 0x40, 0x4b,
3028 +       0x07, 0x0e, 0x0e, 0x19, 0x1e, 0x19, 0x1e, 0x0c, 0x17, 0x01, 0x44, 0x17, 0x01, 0x44, 0x40,
3029 +       0x40, 0x40, 0x0e, 0x0e, 0x0c, 0x40, 0x0f, 0x0c, 0x09, 0x09, 0x2b, 0x27, 0x1b, 0x07, 0x1e,
3030 +       0x1b, 0x13, 0x43, 0x1e, 0x14, 0x0c, 0x40, 0x0c, 0x13, 0x09, 0x19, 0x0c, 0x24, 0x16, 0x19,
3031 +       0x0c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3032 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x4f, 0x1a, 0x03, 0x48, 0x40, 0x05, 0x4f, 0x5a, 0x27, 0x40,
3033 +       0x03, 0x40, 0x40, 0x40, 0x0f, 0x03, 0x11, 0x02, 0x17, 0x06, 0x11, 0x1d, 0x34, 0x34, 0x07,
3034 +       0x07, 0x04, 0x07, 0x0b, 0x0e, 0x07, 0x45, 0x27, 0x1a, 0x0c, 0x40, 0x44, 0x42, 0x40, 0x40,
3035 +       0x40, 0x03, 0x03, 0x40, 0x02, 0x0e, 0x02, 0x06, 0x11, 0x40, 0x45, 0x02, 0x19, 0x02, 0x45,
3036 +       0x45, 0x06, 0x0e, 0x12, 0x0f, 0x12, 0x40, 0x02, 0x0e, 0x02, 0x06, 0x11, 0x40, 0x45, 0x02,
3037 +       0x19, 0x02, 0x45, 0x45, 0x06, 0x0e, 0x12, 0x0f, 0x12, 0x1f, 0x44, 0x2d, 0x40, 0x48, 0x40,
3038 +       0x03, 0x07, 0x03, 0x0f, 0x0f, 0x1d, 0x07, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x00,
3039 +       0x44, 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x4b, 0x07, 0x0f, 0x0f, 0x1a,
3040 +       0x1f, 0x1a, 0x1f, 0x0c, 0x17, 0x00, 0x44, 0x17, 0x00, 0x44, 0x40, 0x40, 0x40, 0x0d, 0x0d,
3041 +       0x0c, 0x40, 0x0f, 0x0c, 0x08, 0x08, 0x2b, 0x27, 0x1b, 0x07, 0x1f, 0x1b, 0x13, 0x43, 0x1d,
3042 +       0x14, 0x0c, 0x40, 0x0c, 0x13, 0x08, 0x1a, 0x0c, 0x26, 0x17, 0x1a, 0x0c, 0x40, 0x40, 0x40,
3043 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3044 +       0x07, 0x4f, 0x1b, 0x03, 0x48, 0x40, 0x04, 0x4f, 0x5b, 0x27, 0x40, 0x03, 0x40, 0x40, 0x40,
3045 +       0x0f, 0x03, 0x13, 0x03, 0x17, 0x07, 0x13, 0x1f, 0x36, 0x36, 0x07, 0x07, 0x04, 0x07, 0x0b,
3046 +       0x0f, 0x07, 0x44, 0x27, 0x1b, 0x0c, 0x40, 0x44, 0x43, 0x40, 0x40, 0x40, 0x03, 0x03, 0x40,
3047 +       0x03, 0x0f, 0x03, 0x07, 0x13, 0x40, 0x44, 0x03, 0x1b, 0x03, 0x44, 0x44, 0x07, 0x0f, 0x13,
3048 +       0x0f, 0x13, 0x40, 0x03, 0x0f, 0x03, 0x07, 0x13, 0x40, 0x44, 0x03, 0x1b, 0x03, 0x44, 0x44,
3049 +       0x07, 0x0f, 0x13, 0x0f, 0x13, 0x1f, 0x44, 0x2f, 0x40, 0x48, 0x40, 0x03, 0x07, 0x03, 0x0f,
3050 +       0x0f, 0x1f, 0x07, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40,
3051 +       0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x4b, 0x07, 0x0f, 0x0f, 0x1b, 0x1f, 0x1b, 0x1f, 0x0c,
3052 +       0x17, 0x00, 0x44, 0x17, 0x00, 0x44, 0x40, 0x40, 0x40, 0x0c, 0x0c, 0x0c, 0x40, 0x0f, 0x0c,
3053 +       0x08, 0x08, 0x2b, 0x27, 0x1b, 0x07, 0x1f, 0x1b, 0x13, 0x43, 0x1c, 0x14, 0x0c, 0x40, 0x0c,
3054 +       0x13, 0x08, 0x1b, 0x0c, 0x27, 0x17, 0x1b, 0x0c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3055 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x50, 0x1c, 0x04,
3056 +       0x47, 0x40, 0x03, 0x50, 0x5c, 0x27, 0x40, 0x04, 0x40, 0x40, 0x40, 0x0f, 0x04, 0x14, 0x04,
3057 +       0x18, 0x08, 0x14, 0x21, 0x39, 0x39, 0x07, 0x07, 0x03, 0x08, 0x0c, 0x10, 0x07, 0x43, 0x27,
3058 +       0x1c, 0x0b, 0x40, 0x43, 0x44, 0x40, 0x40, 0x40, 0x04, 0x04, 0x00, 0x04, 0x10, 0x04, 0x08,
3059 +       0x14, 0x00, 0x43, 0x04, 0x1c, 0x04, 0x43, 0x43, 0x08, 0x10, 0x14, 0x10, 0x14, 0x00, 0x04,
3060 +       0x10, 0x04, 0x08, 0x14, 0x00, 0x43, 0x04, 0x1c, 0x04, 0x43, 0x43, 0x08, 0x10, 0x14, 0x10,
3061 +       0x14, 0x20, 0x43, 0x31, 0x40, 0x48, 0x40, 0x04, 0x07, 0x04, 0x10, 0x10, 0x21, 0x07, 0x13,
3062 +       0x40, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x40, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x40, 0x43, 0x1c,
3063 +       0x07, 0x40, 0x4c, 0x07, 0x10, 0x10, 0x1c, 0x20, 0x1c, 0x20, 0x0b, 0x17, 0x40, 0x43, 0x17,
3064 +       0x40, 0x43, 0x40, 0x40, 0x40, 0x0b, 0x0b, 0x0b, 0x40, 0x0f, 0x0b, 0x07, 0x07, 0x2c, 0x27,
3065 +       0x1c, 0x07, 0x20, 0x1c, 0x14, 0x44, 0x1b, 0x13, 0x0b, 0x40, 0x0b, 0x14, 0x07, 0x1c, 0x0b,
3066 +       0x28, 0x18, 0x1c, 0x0b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
3067 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x51, 0x1d, 0x04, 0x47, 0x40, 0x02, 0x51,
3068 +       0x5d, 0x27, 0x40, 0x04, 0x40, 0x40, 0x40, 0x0f, 0x04, 0x16, 0x05, 0x18, 0x09, 0x16, 0x22,
3069 +       0x3b, 0x3b, 0x07, 0x07, 0x03, 0x08, 0x0c, 0x11, 0x07, 0x42, 0x27, 0x1d, 0x0b, 0x40, 0x43,
3070 +       0x45, 0x40, 0x40, 0x40, 0x04, 0x04, 0x00, 0x05, 0x11, 0x05, 0x09, 0x16, 0x00, 0x42, 0x05,
3071 +       0x1e, 0x05, 0x42, 0x42, 0x09, 0x11, 0x15, 0x10, 0x15, 0x00, 0x05, 0x11, 0x05, 0x09, 0x16,
3072 +       0x00, 0x42, 0x05, 0x1e, 0x05, 0x42, 0x42, 0x09, 0x11, 0x15, 0x10, 0x15, 0x20, 0x43, 0x32,
3073 +       0x40, 0x48, 0x40, 0x04, 0x07, 0x04, 0x10, 0x10, 0x22, 0x07, 0x13, 0x41, 0x43, 0x1c, 0x07,
3074 +       0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x4c, 0x07,
3075 +       0x10, 0x10, 0x1d, 0x20, 0x1d, 0x20, 0x0b, 0x17, 0x41, 0x43, 0x17, 0x41, 0x43, 0x40, 0x40,
3076 +       0x40, 0x0a, 0x0a, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x06, 0x2c, 0x27, 0x1c, 0x07, 0x20, 0x1c,
3077 +       0x14, 0x44, 0x1a, 0x13, 0x0b, 0x40, 0x0b, 0x14, 0x06, 0x1d, 0x0b, 0x29, 0x18, 0x1d, 0x0b,
3078 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3079 +       0x00, 0x00, 0x00, 0x07, 0x51, 0x1e, 0x04, 0x46, 0x40, 0x01, 0x51, 0x5e, 0x27, 0x40, 0x04,
3080 +       0x40, 0x40, 0x40, 0x0f, 0x04, 0x18, 0x06, 0x19, 0x0b, 0x18, 0x24, 0x3e, 0x3e, 0x07, 0x07,
3081 +       0x03, 0x09, 0x0c, 0x13, 0x07, 0x41, 0x27, 0x1e, 0x0b, 0x40, 0x43, 0x46, 0x40, 0x40, 0x40,
3082 +       0x04, 0x04, 0x01, 0x06, 0x13, 0x06, 0x0b, 0x18, 0x01, 0x41, 0x06, 0x20, 0x06, 0x41, 0x41,
3083 +       0x0b, 0x13, 0x16, 0x11, 0x16, 0x01, 0x06, 0x13, 0x06, 0x0b, 0x18, 0x01, 0x41, 0x06, 0x20,
3084 +       0x06, 0x41, 0x41, 0x0b, 0x13, 0x16, 0x11, 0x16, 0x21, 0x43, 0x34, 0x40, 0x48, 0x40, 0x04,
3085 +       0x07, 0x04, 0x11, 0x11, 0x24, 0x07, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43,
3086 +       0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x4c, 0x07, 0x11, 0x11, 0x1e, 0x21,
3087 +       0x1e, 0x21, 0x0b, 0x17, 0x41, 0x43, 0x17, 0x41, 0x43, 0x40, 0x40, 0x40, 0x09, 0x09, 0x0b,
3088 +       0x40, 0x0f, 0x0b, 0x06, 0x06, 0x2c, 0x27, 0x1c, 0x07, 0x21, 0x1c, 0x14, 0x44, 0x19, 0x13,
3089 +       0x0b, 0x40, 0x0b, 0x14, 0x06, 0x1e, 0x0b, 0x2b, 0x19, 0x1e, 0x0b, 0x40, 0x40, 0x40, 0x40,
3090 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
3091 +       0x52, 0x1f, 0x05, 0x45, 0x40, 0x00, 0x52, 0x5f, 0x27, 0x40, 0x05, 0x40, 0x40, 0x40, 0x0f,
3092 +       0x05, 0x19, 0x07, 0x1a, 0x0c, 0x19, 0x26, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0a, 0x0d, 0x14,
3093 +       0x07, 0x40, 0x27, 0x1f, 0x0a, 0x40, 0x42, 0x47, 0x40, 0x40, 0x40, 0x05, 0x05, 0x02, 0x07,
3094 +       0x14, 0x07, 0x0c, 0x19, 0x02, 0x40, 0x07, 0x21, 0x07, 0x40, 0x40, 0x0c, 0x14, 0x17, 0x12,
3095 +       0x17, 0x02, 0x07, 0x14, 0x07, 0x0c, 0x19, 0x02, 0x40, 0x07, 0x21, 0x07, 0x40, 0x40, 0x0c,
3096 +       0x14, 0x17, 0x12, 0x17, 0x22, 0x42, 0x36, 0x40, 0x48, 0x40, 0x05, 0x07, 0x05, 0x12, 0x12,
3097 +       0x26, 0x07, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12,
3098 +       0x42, 0x42, 0x1d, 0x07, 0x40, 0x4d, 0x07, 0x12, 0x12, 0x1f, 0x22, 0x1f, 0x22, 0x0a, 0x17,
3099 +       0x42, 0x42, 0x17, 0x42, 0x42, 0x40, 0x40, 0x40, 0x08, 0x08, 0x0a, 0x40, 0x0f, 0x0a, 0x05,
3100 +       0x05, 0x2d, 0x27, 0x1d, 0x07, 0x22, 0x1d, 0x15, 0x45, 0x18, 0x12, 0x0a, 0x40, 0x0a, 0x15,
3101 +       0x05, 0x1f, 0x0a, 0x2c, 0x1a, 0x1f, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
3102 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x52, 0x20, 0x05, 0x45,
3103 +       0x40, 0x40, 0x52, 0x60, 0x27, 0x40, 0x05, 0x40, 0x40, 0x40, 0x0f, 0x05, 0x1b, 0x08, 0x1a,
3104 +       0x0d, 0x1b, 0x28, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0a, 0x0d, 0x15, 0x07, 0x00, 0x27, 0x20,
3105 +       0x0a, 0x40, 0x42, 0x48, 0x40, 0x40, 0x40, 0x05, 0x05, 0x02, 0x08, 0x15, 0x08, 0x0d, 0x1b,
3106 +       0x02, 0x00, 0x08, 0x23, 0x08, 0x00, 0x00, 0x0d, 0x15, 0x18, 0x12, 0x18, 0x02, 0x08, 0x15,
3107 +       0x08, 0x0d, 0x1b, 0x02, 0x00, 0x08, 0x23, 0x08, 0x00, 0x00, 0x0d, 0x15, 0x18, 0x12, 0x18,
3108 +       0x22, 0x42, 0x38, 0x40, 0x48, 0x40, 0x05, 0x07, 0x05, 0x12, 0x12, 0x28, 0x07, 0x12, 0x42,
3109 +       0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07,
3110 +       0x40, 0x4d, 0x07, 0x12, 0x12, 0x20, 0x22, 0x20, 0x22, 0x0a, 0x17, 0x42, 0x42, 0x17, 0x42,
3111 +       0x42, 0x40, 0x40, 0x40, 0x07, 0x07, 0x0a, 0x40, 0x0f, 0x0a, 0x05, 0x05, 0x2d, 0x27, 0x1d,
3112 +       0x07, 0x22, 0x1d, 0x15, 0x45, 0x17, 0x12, 0x0a, 0x40, 0x0a, 0x15, 0x05, 0x20, 0x0a, 0x2d,
3113 +       0x1a, 0x20, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
3114 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x53, 0x21, 0x05, 0x44, 0x40, 0x41, 0x53, 0x61,
3115 +       0x27, 0x40, 0x05, 0x40, 0x40, 0x40, 0x0f, 0x05, 0x1c, 0x09, 0x1b, 0x0e, 0x1c, 0x2a, 0x3e,
3116 +       0x3e, 0x07, 0x07, 0x02, 0x0b, 0x0d, 0x16, 0x07, 0x01, 0x27, 0x21, 0x0a, 0x40, 0x42, 0x49,
3117 +       0x40, 0x40, 0x40, 0x05, 0x05, 0x03, 0x09, 0x16, 0x09, 0x0e, 0x1c, 0x03, 0x01, 0x09, 0x24,
3118 +       0x09, 0x01, 0x01, 0x0e, 0x16, 0x19, 0x13, 0x19, 0x03, 0x09, 0x16, 0x09, 0x0e, 0x1c, 0x03,
3119 +       0x01, 0x09, 0x24, 0x09, 0x01, 0x01, 0x0e, 0x16, 0x19, 0x13, 0x19, 0x23, 0x42, 0x3a, 0x40,
3120 +       0x48, 0x40, 0x05, 0x07, 0x05, 0x13, 0x13, 0x2a, 0x07, 0x12, 0x43, 0x42, 0x1d, 0x07, 0x40,
3121 +       0x12, 0x43, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x43, 0x42, 0x1d, 0x07, 0x40, 0x4d, 0x07, 0x13,
3122 +       0x13, 0x21, 0x23, 0x21, 0x23, 0x0a, 0x17, 0x43, 0x42, 0x17, 0x43, 0x42, 0x40, 0x40, 0x40,
3123 +       0x06, 0x06, 0x0a, 0x40, 0x0f, 0x0a, 0x04, 0x04, 0x2d, 0x27, 0x1d, 0x07, 0x23, 0x1d, 0x15,
3124 +       0x45, 0x16, 0x12, 0x0a, 0x40, 0x0a, 0x15, 0x04, 0x21, 0x0a, 0x2e, 0x1b, 0x21, 0x0a, 0x40,
3125 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3126 +       0x00, 0x00, 0x07, 0x54, 0x22, 0x06, 0x43, 0x40, 0x42, 0x54, 0x62, 0x27, 0x40, 0x06, 0x40,
3127 +       0x40, 0x40, 0x0f, 0x06, 0x1e, 0x0a, 0x1c, 0x10, 0x1e, 0x2c, 0x3e, 0x3e, 0x07, 0x07, 0x01,
3128 +       0x0c, 0x0e, 0x18, 0x07, 0x02, 0x27, 0x22, 0x09, 0x40, 0x41, 0x4a, 0x40, 0x40, 0x40, 0x06,
3129 +       0x06, 0x04, 0x0a, 0x18, 0x0a, 0x10, 0x1e, 0x04, 0x02, 0x0a, 0x26, 0x0a, 0x02, 0x02, 0x10,
3130 +       0x18, 0x1a, 0x14, 0x1a, 0x04, 0x0a, 0x18, 0x0a, 0x10, 0x1e, 0x04, 0x02, 0x0a, 0x26, 0x0a,
3131 +       0x02, 0x02, 0x10, 0x18, 0x1a, 0x14, 0x1a, 0x24, 0x41, 0x3c, 0x40, 0x48, 0x40, 0x06, 0x07,
3132 +       0x06, 0x14, 0x14, 0x2c, 0x07, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e,
3133 +       0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x4e, 0x07, 0x14, 0x14, 0x22, 0x24, 0x22,
3134 +       0x24, 0x09, 0x17, 0x44, 0x41, 0x17, 0x44, 0x41, 0x40, 0x40, 0x40, 0x05, 0x05, 0x09, 0x40,
3135 +       0x0f, 0x09, 0x03, 0x03, 0x2e, 0x27, 0x1e, 0x07, 0x24, 0x1e, 0x16, 0x46, 0x15, 0x11, 0x09,
3136 +       0x40, 0x09, 0x16, 0x03, 0x22, 0x09, 0x30, 0x1c, 0x22, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40,
3137 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x54,
3138 +       0x23, 0x06, 0x43, 0x40, 0x43, 0x54, 0x63, 0x27, 0x40, 0x06, 0x40, 0x40, 0x40, 0x0f, 0x06,
3139 +       0x1f, 0x0b, 0x1c, 0x11, 0x1f, 0x2e, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x0c, 0x0e, 0x19, 0x07,
3140 +       0x03, 0x27, 0x23, 0x09, 0x40, 0x41, 0x4b, 0x40, 0x40, 0x40, 0x06, 0x06, 0x04, 0x0b, 0x19,
3141 +       0x0b, 0x11, 0x1f, 0x04, 0x03, 0x0b, 0x27, 0x0b, 0x03, 0x03, 0x11, 0x19, 0x1b, 0x14, 0x1b,
3142 +       0x04, 0x0b, 0x19, 0x0b, 0x11, 0x1f, 0x04, 0x03, 0x0b, 0x27, 0x0b, 0x03, 0x03, 0x11, 0x19,
3143 +       0x1b, 0x14, 0x1b, 0x24, 0x41, 0x3e, 0x40, 0x48, 0x40, 0x06, 0x07, 0x06, 0x14, 0x14, 0x2e,
3144 +       0x07, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x44,
3145 +       0x41, 0x1e, 0x07, 0x40, 0x4e, 0x07, 0x14, 0x14, 0x23, 0x24, 0x23, 0x24, 0x09, 0x17, 0x44,
3146 +       0x41, 0x17, 0x44, 0x41, 0x40, 0x40, 0x40, 0x04, 0x04, 0x09, 0x40, 0x0f, 0x09, 0x03, 0x03,
3147 +       0x2e, 0x27, 0x1e, 0x07, 0x24, 0x1e, 0x16, 0x46, 0x14, 0x11, 0x09, 0x40, 0x09, 0x16, 0x03,
3148 +       0x23, 0x09, 0x31, 0x1c, 0x23, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
3149 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x55, 0x24, 0x06, 0x42, 0x40,
3150 +       0x44, 0x55, 0x64, 0x27, 0x40, 0x06, 0x40, 0x40, 0x40, 0x0f, 0x06, 0x21, 0x0c, 0x1d, 0x12,
3151 +       0x21, 0x30, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x0d, 0x0e, 0x1a, 0x07, 0x04, 0x27, 0x24, 0x09,
3152 +       0x40, 0x41, 0x4c, 0x40, 0x40, 0x40, 0x06, 0x06, 0x05, 0x0c, 0x1a, 0x0c, 0x12, 0x21, 0x05,
3153 +       0x04, 0x0c, 0x29, 0x0c, 0x04, 0x04, 0x12, 0x1a, 0x1c, 0x15, 0x1c, 0x05, 0x0c, 0x1a, 0x0c,
3154 +       0x12, 0x21, 0x05, 0x04, 0x0c, 0x29, 0x0c, 0x04, 0x04, 0x12, 0x1a, 0x1c, 0x15, 0x1c, 0x25,
3155 +       0x41, 0x3e, 0x40, 0x48, 0x40, 0x06, 0x07, 0x06, 0x15, 0x15, 0x30, 0x07, 0x11, 0x45, 0x41,
3156 +       0x1e, 0x07, 0x40, 0x11, 0x45, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x45, 0x41, 0x1e, 0x07, 0x40,
3157 +       0x4e, 0x07, 0x15, 0x15, 0x24, 0x25, 0x24, 0x25, 0x09, 0x17, 0x45, 0x41, 0x17, 0x45, 0x41,
3158 +       0x40, 0x40, 0x40, 0x03, 0x03, 0x09, 0x40, 0x0f, 0x09, 0x02, 0x02, 0x2e, 0x27, 0x1e, 0x07,
3159 +       0x25, 0x1e, 0x16, 0x46, 0x13, 0x11, 0x09, 0x40, 0x09, 0x16, 0x02, 0x24, 0x09, 0x32, 0x1d,
3160 +       0x24, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3161 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x56, 0x24, 0x06, 0x42, 0x40, 0x45, 0x56, 0x65, 0x27,
3162 +       0x40, 0x06, 0x40, 0x40, 0x40, 0x0f, 0x06, 0x22, 0x0c, 0x1d, 0x13, 0x22, 0x31, 0x3e, 0x3e,
3163 +       0x07, 0x07, 0x00, 0x0d, 0x0e, 0x1b, 0x07, 0x04, 0x27, 0x24, 0x08, 0x40, 0x41, 0x4d, 0x40,
3164 +       0x40, 0x40, 0x06, 0x06, 0x05, 0x0c, 0x1b, 0x0c, 0x13, 0x22, 0x05, 0x04, 0x0c, 0x2a, 0x0c,
3165 +       0x04, 0x04, 0x13, 0x1b, 0x1c, 0x15, 0x1c, 0x05, 0x0c, 0x1b, 0x0c, 0x13, 0x22, 0x05, 0x04,
3166 +       0x0c, 0x2a, 0x0c, 0x04, 0x04, 0x13, 0x1b, 0x1c, 0x15, 0x1c, 0x25, 0x41, 0x3e, 0x40, 0x48,
3167 +       0x40, 0x06, 0x07, 0x06, 0x15, 0x15, 0x31, 0x07, 0x10, 0x46, 0x41, 0x1e, 0x07, 0x40, 0x10,
3168 +       0x46, 0x41, 0x1e, 0x07, 0x40, 0x10, 0x46, 0x41, 0x1e, 0x07, 0x40, 0x4f, 0x07, 0x15, 0x15,
3169 +       0x24, 0x25, 0x24, 0x25, 0x08, 0x17, 0x46, 0x41, 0x17, 0x46, 0x41, 0x40, 0x40, 0x40, 0x02,
3170 +       0x02, 0x08, 0x40, 0x0f, 0x08, 0x01, 0x01, 0x2e, 0x27, 0x1e, 0x07, 0x25, 0x1e, 0x16, 0x47,
3171 +       0x12, 0x10, 0x08, 0x40, 0x08, 0x16, 0x01, 0x24, 0x08, 0x33, 0x1d, 0x24, 0x08, 0x40, 0x40,
3172 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3173 +       0x00, 0x07, 0x56, 0x25, 0x07, 0x41, 0x40, 0x45, 0x56, 0x65, 0x27, 0x40, 0x07, 0x40, 0x40,
3174 +       0x40, 0x0f, 0x07, 0x24, 0x0d, 0x1e, 0x15, 0x24, 0x33, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x0e,
3175 +       0x0f, 0x1d, 0x07, 0x05, 0x27, 0x25, 0x08, 0x40, 0x40, 0x4d, 0x40, 0x40, 0x40, 0x07, 0x07,
3176 +       0x06, 0x0d, 0x1d, 0x0d, 0x15, 0x24, 0x06, 0x05, 0x0d, 0x2c, 0x0d, 0x05, 0x05, 0x15, 0x1d,
3177 +       0x1d, 0x16, 0x1d, 0x06, 0x0d, 0x1d, 0x0d, 0x15, 0x24, 0x06, 0x05, 0x0d, 0x2c, 0x0d, 0x05,
3178 +       0x05, 0x15, 0x1d, 0x1d, 0x16, 0x1d, 0x26, 0x40, 0x3e, 0x40, 0x48, 0x40, 0x07, 0x07, 0x07,
3179 +       0x16, 0x16, 0x33, 0x07, 0x10, 0x46, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x46, 0x40, 0x1f, 0x07,
3180 +       0x40, 0x10, 0x46, 0x40, 0x1f, 0x07, 0x40, 0x4f, 0x07, 0x16, 0x16, 0x25, 0x26, 0x25, 0x26,
3181 +       0x08, 0x17, 0x46, 0x40, 0x17, 0x46, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x08, 0x40, 0x0f,
3182 +       0x08, 0x01, 0x01, 0x2f, 0x27, 0x1f, 0x07, 0x26, 0x1f, 0x17, 0x47, 0x12, 0x10, 0x08, 0x40,
3183 +       0x08, 0x17, 0x01, 0x25, 0x08, 0x35, 0x1e, 0x25, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3184 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x57, 0x26,
3185 +       0x07, 0x40, 0x40, 0x46, 0x57, 0x66, 0x27, 0x40, 0x07, 0x40, 0x40, 0x40, 0x0f, 0x07, 0x26,
3186 +       0x0e, 0x1f, 0x16, 0x26, 0x35, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x0f, 0x0f, 0x1e, 0x07, 0x06,
3187 +       0x27, 0x26, 0x08, 0x40, 0x40, 0x4e, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x0e, 0x1e, 0x0e,
3188 +       0x16, 0x26, 0x07, 0x06, 0x0e, 0x2e, 0x0e, 0x06, 0x06, 0x16, 0x1e, 0x1e, 0x17, 0x1e, 0x07,
3189 +       0x0e, 0x1e, 0x0e, 0x16, 0x26, 0x07, 0x06, 0x0e, 0x2e, 0x0e, 0x06, 0x06, 0x16, 0x1e, 0x1e,
3190 +       0x17, 0x1e, 0x27, 0x40, 0x3e, 0x40, 0x48, 0x40, 0x07, 0x07, 0x07, 0x17, 0x17, 0x35, 0x07,
3191 +       0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40,
3192 +       0x1f, 0x07, 0x40, 0x4f, 0x07, 0x17, 0x17, 0x26, 0x27, 0x26, 0x27, 0x08, 0x17, 0x47, 0x40,
3193 +       0x17, 0x47, 0x40, 0x40, 0x40, 0x40, 0x01, 0x01, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x00, 0x2f,
3194 +       0x27, 0x1f, 0x07, 0x27, 0x1f, 0x17, 0x47, 0x11, 0x10, 0x08, 0x40, 0x08, 0x17, 0x00, 0x26,
3195 +       0x08, 0x36, 0x1f, 0x26, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
3196 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x57, 0x27, 0x07, 0x40, 0x40, 0x47,
3197 +       0x57, 0x67, 0x27, 0x40, 0x07, 0x40, 0x40, 0x40, 0x0f, 0x07, 0x27, 0x0f, 0x1f, 0x17, 0x27,
3198 +       0x37, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x0f, 0x0f, 0x1f, 0x07, 0x07, 0x27, 0x27, 0x08, 0x40,
3199 +       0x40, 0x4f, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x0f, 0x1f, 0x0f, 0x17, 0x27, 0x07, 0x07,
3200 +       0x0f, 0x2f, 0x0f, 0x07, 0x07, 0x17, 0x1f, 0x1f, 0x17, 0x1f, 0x07, 0x0f, 0x1f, 0x0f, 0x17,
3201 +       0x27, 0x07, 0x07, 0x0f, 0x2f, 0x0f, 0x07, 0x07, 0x17, 0x1f, 0x1f, 0x17, 0x1f, 0x27, 0x40,
3202 +       0x3e, 0x40, 0x48, 0x40, 0x07, 0x07, 0x07, 0x17, 0x17, 0x37, 0x07, 0x10, 0x47, 0x40, 0x1f,
3203 +       0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x4f,
3204 +       0x07, 0x17, 0x17, 0x27, 0x27, 0x27, 0x27, 0x08, 0x17, 0x47, 0x40, 0x17, 0x47, 0x40, 0x40,
3205 +       0x40, 0x40, 0x00, 0x00, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x00, 0x2f, 0x27, 0x1f, 0x07, 0x27,
3206 +       0x1f, 0x17, 0x47, 0x10, 0x10, 0x08, 0x40, 0x08, 0x17, 0x00, 0x27, 0x08, 0x37, 0x1f, 0x27,
3207 +       0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3208 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x48, 0x48, 0x60, 0x40, 0x27, 0x07, 0x07, 0x1f, 0x40,
3209 +       0x48, 0x40, 0x40, 0x17, 0x0f, 0x48, 0x68, 0x40, 0x07, 0x68, 0x68, 0x68, 0x68, 0x68, 0x07,
3210 +       0x07, 0x0f, 0x3e, 0x17, 0x40, 0x07, 0x68, 0x27, 0x50, 0x17, 0x40, 0x07, 0x1f, 0x40, 0x40,
3211 +       0x40, 0x48, 0x48, 0x58, 0x60, 0x50, 0x60, 0x68, 0x60, 0x58, 0x68, 0x68, 0x68, 0x58, 0x60,
3212 +       0x68, 0x68, 0x68, 0x50, 0x48, 0x58, 0x58, 0x60, 0x50, 0x60, 0x68, 0x60, 0x58, 0x68, 0x68,
3213 +       0x68, 0x58, 0x60, 0x68, 0x68, 0x68, 0x50, 0x48, 0x58, 0x07, 0x50, 0x58, 0x40, 0x40, 0x40,
3214 +       0x48, 0x07, 0x48, 0x48, 0x48, 0x68, 0x50, 0x1f, 0x17, 0x50, 0x0f, 0x07, 0x40, 0x1f, 0x17,
3215 +       0x50, 0x0f, 0x07, 0x40, 0x1f, 0x17, 0x50, 0x0f, 0x07, 0x40, 0x40, 0x07, 0x40, 0x40, 0x40,
3216 +       0x07, 0x40, 0x07, 0x17, 0x17, 0x17, 0x50, 0x17, 0x17, 0x50, 0x40, 0x40, 0x40, 0x2f, 0x17,
3217 +       0x17, 0x40, 0x0f, 0x17, 0x1f, 0x1f, 0x1f, 0x27, 0x0f, 0x07, 0x07, 0x0f, 0x40, 0x07, 0x3e,
3218 +       0x1f, 0x17, 0x40, 0x0f, 0x17, 0x1f, 0x48, 0x17, 0x48, 0x48, 0x48, 0x17, 0x40, 0x40, 0x40,
3219 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3220 +       0x07, 0x3e, 0x47, 0x47, 0x5f, 0x40, 0x27, 0x07, 0x07, 0x20, 0x40, 0x47, 0x40, 0x40, 0x17,
3221 +       0x0f, 0x47, 0x66, 0x40, 0x08, 0x66, 0x66, 0x66, 0x65, 0x65, 0x07, 0x07, 0x0f, 0x3e, 0x17,
3222 +       0x00, 0x07, 0x67, 0x27, 0x4e, 0x17, 0x40, 0x07, 0x1f, 0x40, 0x40, 0x40, 0x47, 0x47, 0x57,
3223 +       0x5f, 0x4f, 0x5f, 0x66, 0x5e, 0x57, 0x67, 0x67, 0x66, 0x57, 0x5f, 0x67, 0x67, 0x66, 0x4f,
3224 +       0x47, 0x56, 0x57, 0x5f, 0x4f, 0x5f, 0x66, 0x5e, 0x57, 0x67, 0x67, 0x66, 0x57, 0x5f, 0x67,
3225 +       0x67, 0x66, 0x4f, 0x47, 0x56, 0x08, 0x4f, 0x56, 0x40, 0x40, 0x40, 0x47, 0x07, 0x47, 0x47,
3226 +       0x47, 0x66, 0x4f, 0x1f, 0x17, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x17, 0x4f, 0x10, 0x07, 0x40,
3227 +       0x1f, 0x17, 0x4f, 0x10, 0x07, 0x40, 0x40, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x17,
3228 +       0x17, 0x17, 0x4f, 0x17, 0x17, 0x4f, 0x40, 0x40, 0x40, 0x2f, 0x17, 0x17, 0x40, 0x0f, 0x17,
3229 +       0x1f, 0x1f, 0x20, 0x27, 0x10, 0x07, 0x08, 0x10, 0x00, 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x0f,
3230 +       0x17, 0x1f, 0x47, 0x17, 0x46, 0x47, 0x47, 0x17, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3231 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x46, 0x47,
3232 +       0x5e, 0x40, 0x26, 0x06, 0x06, 0x20, 0x40, 0x47, 0x40, 0x40, 0x16, 0x0f, 0x47, 0x64, 0x40,
3233 +       0x08, 0x65, 0x64, 0x64, 0x63, 0x63, 0x07, 0x07, 0x0f, 0x3e, 0x17, 0x01, 0x07, 0x66, 0x27,
3234 +       0x4d, 0x17, 0x40, 0x07, 0x1e, 0x40, 0x40, 0x40, 0x47, 0x47, 0x56, 0x5e, 0x4e, 0x5e, 0x65,
3235 +       0x5d, 0x56, 0x66, 0x66, 0x64, 0x56, 0x5e, 0x66, 0x66, 0x64, 0x4e, 0x46, 0x55, 0x56, 0x5e,
3236 +       0x4e, 0x5e, 0x65, 0x5d, 0x56, 0x66, 0x66, 0x64, 0x56, 0x5e, 0x66, 0x66, 0x64, 0x4e, 0x46,
3237 +       0x55, 0x09, 0x4f, 0x54, 0x40, 0x40, 0x40, 0x47, 0x07, 0x47, 0x46, 0x46, 0x64, 0x4e, 0x1f,
3238 +       0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10,
3239 +       0x07, 0x40, 0x40, 0x07, 0x00, 0x00, 0x01, 0x09, 0x01, 0x09, 0x17, 0x17, 0x16, 0x4f, 0x17,
3240 +       0x16, 0x4f, 0x40, 0x40, 0x40, 0x2e, 0x17, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x1e, 0x20, 0x27,
3241 +       0x10, 0x07, 0x09, 0x10, 0x01, 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x46, 0x17,
3242 +       0x45, 0x46, 0x46, 0x17, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
3243 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x45, 0x47, 0x5e, 0x40, 0x25, 0x06,
3244 +       0x05, 0x20, 0x40, 0x47, 0x40, 0x40, 0x16, 0x0f, 0x47, 0x63, 0x40, 0x08, 0x64, 0x63, 0x62,
3245 +       0x60, 0x60, 0x07, 0x07, 0x0f, 0x3e, 0x17, 0x01, 0x07, 0x65, 0x27, 0x4c, 0x17, 0x40, 0x07,
3246 +       0x1d, 0x40, 0x40, 0x40, 0x47, 0x47, 0x56, 0x5d, 0x4e, 0x5d, 0x64, 0x5c, 0x56, 0x65, 0x65,
3247 +       0x63, 0x56, 0x5e, 0x65, 0x65, 0x63, 0x4d, 0x46, 0x54, 0x56, 0x5d, 0x4e, 0x5d, 0x64, 0x5c,
3248 +       0x56, 0x65, 0x65, 0x63, 0x56, 0x5e, 0x65, 0x65, 0x63, 0x4d, 0x46, 0x54, 0x09, 0x4f, 0x52,
3249 +       0x40, 0x40, 0x40, 0x47, 0x07, 0x47, 0x46, 0x46, 0x62, 0x4e, 0x1f, 0x16, 0x4f, 0x10, 0x07,
3250 +       0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x40, 0x07,
3251 +       0x00, 0x00, 0x01, 0x09, 0x01, 0x09, 0x17, 0x17, 0x16, 0x4f, 0x17, 0x16, 0x4f, 0x40, 0x40,
3252 +       0x40, 0x2d, 0x17, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x1e, 0x20, 0x27, 0x10, 0x07, 0x09, 0x10,
3253 +       0x01, 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x45, 0x17, 0x44, 0x45, 0x45, 0x17,
3254 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3255 +       0x00, 0x00, 0x00, 0x07, 0x3e, 0x44, 0x46, 0x5d, 0x40, 0x24, 0x05, 0x04, 0x21, 0x40, 0x46,
3256 +       0x40, 0x40, 0x15, 0x0f, 0x46, 0x61, 0x40, 0x09, 0x63, 0x61, 0x60, 0x5e, 0x5e, 0x07, 0x07,
3257 +       0x0e, 0x3e, 0x16, 0x02, 0x07, 0x64, 0x27, 0x4b, 0x16, 0x40, 0x06, 0x1c, 0x40, 0x40, 0x40,
3258 +       0x46, 0x46, 0x55, 0x5c, 0x4d, 0x5c, 0x63, 0x5b, 0x55, 0x64, 0x64, 0x61, 0x55, 0x5d, 0x64,
3259 +       0x64, 0x61, 0x4c, 0x45, 0x53, 0x55, 0x5c, 0x4d, 0x5c, 0x63, 0x5b, 0x55, 0x64, 0x64, 0x61,
3260 +       0x55, 0x5d, 0x64, 0x64, 0x61, 0x4c, 0x45, 0x53, 0x0a, 0x4e, 0x50, 0x40, 0x41, 0x40, 0x46,
3261 +       0x07, 0x46, 0x45, 0x45, 0x60, 0x4d, 0x1e, 0x15, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x15, 0x4e,
3262 +       0x11, 0x07, 0x40, 0x1e, 0x15, 0x4e, 0x11, 0x07, 0x40, 0x41, 0x07, 0x01, 0x01, 0x02, 0x0a,
3263 +       0x02, 0x0a, 0x16, 0x17, 0x15, 0x4e, 0x17, 0x15, 0x4e, 0x40, 0x40, 0x40, 0x2c, 0x16, 0x16,
3264 +       0x40, 0x0f, 0x16, 0x1d, 0x1d, 0x21, 0x27, 0x11, 0x07, 0x0a, 0x11, 0x02, 0x06, 0x3e, 0x1e,
3265 +       0x16, 0x40, 0x0f, 0x16, 0x1d, 0x44, 0x16, 0x43, 0x44, 0x44, 0x16, 0x40, 0x40, 0x40, 0x40,
3266 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
3267 +       0x3e, 0x43, 0x46, 0x5c, 0x40, 0x23, 0x04, 0x03, 0x21, 0x40, 0x46, 0x40, 0x40, 0x14, 0x0f,
3268 +       0x46, 0x60, 0x40, 0x09, 0x61, 0x60, 0x5e, 0x5b, 0x5b, 0x07, 0x07, 0x0e, 0x3e, 0x16, 0x03,
3269 +       0x07, 0x63, 0x27, 0x49, 0x16, 0x40, 0x06, 0x1b, 0x40, 0x40, 0x40, 0x46, 0x46, 0x54, 0x5b,
3270 +       0x4c, 0x5b, 0x61, 0x59, 0x54, 0x63, 0x63, 0x60, 0x54, 0x5c, 0x63, 0x63, 0x60, 0x4b, 0x44,
3271 +       0x51, 0x54, 0x5b, 0x4c, 0x5b, 0x61, 0x59, 0x54, 0x63, 0x63, 0x60, 0x54, 0x5c, 0x63, 0x63,
3272 +       0x60, 0x4b, 0x44, 0x51, 0x0b, 0x4e, 0x4e, 0x40, 0x41, 0x40, 0x46, 0x07, 0x46, 0x44, 0x44,
3273 +       0x5e, 0x4c, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e,
3274 +       0x14, 0x4e, 0x11, 0x07, 0x40, 0x41, 0x07, 0x01, 0x01, 0x03, 0x0b, 0x03, 0x0b, 0x16, 0x17,
3275 +       0x14, 0x4e, 0x17, 0x14, 0x4e, 0x40, 0x40, 0x40, 0x2b, 0x16, 0x16, 0x40, 0x0f, 0x16, 0x1c,
3276 +       0x1c, 0x21, 0x27, 0x11, 0x07, 0x0b, 0x11, 0x03, 0x06, 0x3e, 0x1e, 0x16, 0x40, 0x0f, 0x16,
3277 +       0x1c, 0x43, 0x16, 0x41, 0x43, 0x43, 0x16, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
3278 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x42, 0x46, 0x5c,
3279 +       0x40, 0x22, 0x04, 0x02, 0x21, 0x40, 0x46, 0x40, 0x40, 0x14, 0x0f, 0x46, 0x5e, 0x40, 0x09,
3280 +       0x60, 0x5e, 0x5c, 0x59, 0x59, 0x07, 0x07, 0x0e, 0x3e, 0x16, 0x03, 0x07, 0x62, 0x27, 0x48,
3281 +       0x16, 0x40, 0x06, 0x1a, 0x40, 0x40, 0x40, 0x46, 0x46, 0x54, 0x5a, 0x4c, 0x5a, 0x60, 0x58,
3282 +       0x54, 0x62, 0x62, 0x5e, 0x54, 0x5c, 0x62, 0x62, 0x5e, 0x4a, 0x44, 0x50, 0x54, 0x5a, 0x4c,
3283 +       0x5a, 0x60, 0x58, 0x54, 0x62, 0x62, 0x5e, 0x54, 0x5c, 0x62, 0x62, 0x5e, 0x4a, 0x44, 0x50,
3284 +       0x0b, 0x4e, 0x4c, 0x40, 0x41, 0x40, 0x46, 0x07, 0x46, 0x44, 0x44, 0x5c, 0x4c, 0x1e, 0x14,
3285 +       0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07,
3286 +       0x40, 0x41, 0x07, 0x01, 0x01, 0x03, 0x0b, 0x03, 0x0b, 0x16, 0x17, 0x14, 0x4e, 0x17, 0x14,
3287 +       0x4e, 0x40, 0x40, 0x40, 0x2a, 0x16, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x1c, 0x21, 0x27, 0x11,
3288 +       0x07, 0x0b, 0x11, 0x03, 0x06, 0x3e, 0x1e, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x42, 0x16, 0x40,
3289 +       0x42, 0x42, 0x16, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
3290 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x41, 0x45, 0x5b, 0x40, 0x21, 0x03, 0x01,
3291 +       0x22, 0x40, 0x45, 0x40, 0x40, 0x13, 0x0f, 0x45, 0x5d, 0x40, 0x0a, 0x5f, 0x5d, 0x5a, 0x56,
3292 +       0x56, 0x07, 0x07, 0x0d, 0x3e, 0x15, 0x04, 0x07, 0x61, 0x27, 0x47, 0x15, 0x40, 0x05, 0x19,
3293 +       0x40, 0x40, 0x40, 0x45, 0x45, 0x53, 0x59, 0x4b, 0x59, 0x5f, 0x57, 0x53, 0x61, 0x61, 0x5d,
3294 +       0x53, 0x5b, 0x61, 0x61, 0x5d, 0x49, 0x43, 0x4f, 0x53, 0x59, 0x4b, 0x59, 0x5f, 0x57, 0x53,
3295 +       0x61, 0x61, 0x5d, 0x53, 0x5b, 0x61, 0x61, 0x5d, 0x49, 0x43, 0x4f, 0x0c, 0x4d, 0x4a, 0x40,
3296 +       0x42, 0x40, 0x45, 0x07, 0x45, 0x43, 0x43, 0x5a, 0x4b, 0x1d, 0x13, 0x4d, 0x12, 0x07, 0x40,
3297 +       0x1d, 0x13, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x13, 0x4d, 0x12, 0x07, 0x40, 0x42, 0x07, 0x02,
3298 +       0x02, 0x04, 0x0c, 0x04, 0x0c, 0x15, 0x17, 0x13, 0x4d, 0x17, 0x13, 0x4d, 0x40, 0x40, 0x40,
3299 +       0x29, 0x15, 0x15, 0x40, 0x0f, 0x15, 0x1b, 0x1b, 0x22, 0x27, 0x12, 0x07, 0x0c, 0x12, 0x04,
3300 +       0x05, 0x3e, 0x1d, 0x15, 0x40, 0x0f, 0x15, 0x1b, 0x41, 0x15, 0x00, 0x41, 0x41, 0x15, 0x40,
3301 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3302 +       0x00, 0x00, 0x07, 0x3e, 0x40, 0x45, 0x5b, 0x40, 0x20, 0x02, 0x00, 0x22, 0x40, 0x45, 0x40,
3303 +       0x40, 0x12, 0x0f, 0x45, 0x5b, 0x40, 0x0a, 0x5e, 0x5b, 0x59, 0x54, 0x54, 0x07, 0x07, 0x0d,
3304 +       0x3e, 0x15, 0x04, 0x07, 0x60, 0x27, 0x46, 0x15, 0x40, 0x05, 0x18, 0x40, 0x40, 0x40, 0x45,
3305 +       0x45, 0x53, 0x58, 0x4b, 0x58, 0x5e, 0x56, 0x53, 0x60, 0x60, 0x5b, 0x53, 0x5b, 0x60, 0x60,
3306 +       0x5b, 0x48, 0x43, 0x4e, 0x53, 0x58, 0x4b, 0x58, 0x5e, 0x56, 0x53, 0x60, 0x60, 0x5b, 0x53,
3307 +       0x5b, 0x60, 0x60, 0x5b, 0x48, 0x43, 0x4e, 0x0c, 0x4d, 0x49, 0x40, 0x42, 0x40, 0x45, 0x07,
3308 +       0x45, 0x43, 0x43, 0x59, 0x4b, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12,
3309 +       0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x42, 0x07, 0x02, 0x02, 0x04, 0x0c, 0x04,
3310 +       0x0c, 0x15, 0x17, 0x12, 0x4d, 0x17, 0x12, 0x4d, 0x40, 0x40, 0x40, 0x28, 0x15, 0x15, 0x40,
3311 +       0x0f, 0x15, 0x1a, 0x1a, 0x22, 0x27, 0x12, 0x07, 0x0c, 0x12, 0x04, 0x05, 0x3e, 0x1d, 0x15,
3312 +       0x40, 0x0f, 0x15, 0x1a, 0x40, 0x15, 0x01, 0x40, 0x40, 0x15, 0x40, 0x40, 0x40, 0x40, 0x40,
3313 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e,
3314 +       0x00, 0x45, 0x5a, 0x40, 0x1f, 0x02, 0x40, 0x22, 0x40, 0x45, 0x40, 0x40, 0x12, 0x0f, 0x45,
3315 +       0x59, 0x40, 0x0a, 0x5c, 0x59, 0x57, 0x51, 0x51, 0x07, 0x07, 0x0d, 0x3e, 0x15, 0x05, 0x07,
3316 +       0x5f, 0x27, 0x44, 0x15, 0x40, 0x05, 0x17, 0x40, 0x40, 0x40, 0x45, 0x45, 0x52, 0x57, 0x4a,
3317 +       0x57, 0x5c, 0x54, 0x52, 0x5f, 0x5f, 0x59, 0x52, 0x5a, 0x5f, 0x5f, 0x59, 0x47, 0x42, 0x4c,
3318 +       0x52, 0x57, 0x4a, 0x57, 0x5c, 0x54, 0x52, 0x5f, 0x5f, 0x59, 0x52, 0x5a, 0x5f, 0x5f, 0x59,
3319 +       0x47, 0x42, 0x4c, 0x0d, 0x4d, 0x47, 0x40, 0x42, 0x40, 0x45, 0x07, 0x45, 0x42, 0x42, 0x57,
3320 +       0x4a, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12,
3321 +       0x4d, 0x12, 0x07, 0x40, 0x42, 0x07, 0x02, 0x02, 0x05, 0x0d, 0x05, 0x0d, 0x15, 0x17, 0x12,
3322 +       0x4d, 0x17, 0x12, 0x4d, 0x40, 0x40, 0x40, 0x27, 0x15, 0x15, 0x40, 0x0f, 0x15, 0x1a, 0x1a,
3323 +       0x22, 0x27, 0x12, 0x07, 0x0d, 0x12, 0x05, 0x05, 0x3e, 0x1d, 0x15, 0x40, 0x0f, 0x15, 0x1a,
3324 +       0x00, 0x15, 0x03, 0x00, 0x00, 0x15, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
3325 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x01, 0x44, 0x59, 0x40,
3326 +       0x1e, 0x01, 0x41, 0x23, 0x40, 0x44, 0x40, 0x40, 0x11, 0x0f, 0x44, 0x58, 0x40, 0x0b, 0x5b,
3327 +       0x58, 0x55, 0x4f, 0x4f, 0x07, 0x07, 0x0c, 0x3e, 0x14, 0x06, 0x07, 0x5e, 0x27, 0x43, 0x14,
3328 +       0x40, 0x04, 0x16, 0x40, 0x40, 0x40, 0x44, 0x44, 0x51, 0x56, 0x49, 0x56, 0x5b, 0x53, 0x51,
3329 +       0x5e, 0x5e, 0x58, 0x51, 0x59, 0x5e, 0x5e, 0x58, 0x46, 0x41, 0x4b, 0x51, 0x56, 0x49, 0x56,
3330 +       0x5b, 0x53, 0x51, 0x5e, 0x5e, 0x58, 0x51, 0x59, 0x5e, 0x5e, 0x58, 0x46, 0x41, 0x4b, 0x0e,
3331 +       0x4c, 0x45, 0x40, 0x43, 0x40, 0x44, 0x07, 0x44, 0x41, 0x41, 0x55, 0x49, 0x1c, 0x11, 0x4c,
3332 +       0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40,
3333 +       0x43, 0x07, 0x03, 0x03, 0x06, 0x0e, 0x06, 0x0e, 0x14, 0x17, 0x11, 0x4c, 0x17, 0x11, 0x4c,
3334 +       0x40, 0x40, 0x40, 0x26, 0x14, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x19, 0x23, 0x27, 0x13, 0x07,
3335 +       0x0e, 0x13, 0x06, 0x04, 0x3e, 0x1c, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x01, 0x14, 0x04, 0x01,
3336 +       0x01, 0x14, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3337 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x02, 0x44, 0x59, 0x40, 0x1d, 0x01, 0x42, 0x23,
3338 +       0x40, 0x44, 0x40, 0x40, 0x11, 0x0f, 0x44, 0x56, 0x40, 0x0b, 0x5a, 0x56, 0x53, 0x4c, 0x4c,
3339 +       0x07, 0x07, 0x0c, 0x3e, 0x14, 0x06, 0x07, 0x5d, 0x27, 0x42, 0x14, 0x40, 0x04, 0x15, 0x40,
3340 +       0x40, 0x40, 0x44, 0x44, 0x51, 0x55, 0x49, 0x55, 0x5a, 0x52, 0x51, 0x5d, 0x5d, 0x56, 0x51,
3341 +       0x59, 0x5d, 0x5d, 0x56, 0x45, 0x41, 0x4a, 0x51, 0x55, 0x49, 0x55, 0x5a, 0x52, 0x51, 0x5d,
3342 +       0x5d, 0x56, 0x51, 0x59, 0x5d, 0x5d, 0x56, 0x45, 0x41, 0x4a, 0x0e, 0x4c, 0x43, 0x40, 0x43,
3343 +       0x40, 0x44, 0x07, 0x44, 0x41, 0x41, 0x53, 0x49, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x1c,
3344 +       0x11, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x43, 0x07, 0x03, 0x03,
3345 +       0x06, 0x0e, 0x06, 0x0e, 0x14, 0x17, 0x11, 0x4c, 0x17, 0x11, 0x4c, 0x40, 0x40, 0x40, 0x25,
3346 +       0x14, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x19, 0x23, 0x27, 0x13, 0x07, 0x0e, 0x13, 0x06, 0x04,
3347 +       0x3e, 0x1c, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x02, 0x14, 0x05, 0x02, 0x02, 0x14, 0x40, 0x40,
3348 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3349 +       0x00, 0x07, 0x3e, 0x03, 0x44, 0x58, 0x40, 0x1c, 0x00, 0x43, 0x23, 0x40, 0x44, 0x40, 0x40,
3350 +       0x10, 0x0f, 0x44, 0x55, 0x40, 0x0b, 0x59, 0x55, 0x51, 0x4a, 0x4a, 0x07, 0x07, 0x0c, 0x3d,
3351 +       0x14, 0x07, 0x07, 0x5c, 0x27, 0x41, 0x14, 0x40, 0x04, 0x14, 0x40, 0x40, 0x40, 0x44, 0x44,
3352 +       0x50, 0x54, 0x48, 0x54, 0x59, 0x51, 0x50, 0x5c, 0x5c, 0x55, 0x50, 0x58, 0x5c, 0x5c, 0x55,
3353 +       0x44, 0x40, 0x49, 0x50, 0x54, 0x48, 0x54, 0x59, 0x51, 0x50, 0x5c, 0x5c, 0x55, 0x50, 0x58,
3354 +       0x5c, 0x5c, 0x55, 0x44, 0x40, 0x49, 0x0f, 0x4c, 0x41, 0x40, 0x43, 0x40, 0x44, 0x07, 0x44,
3355 +       0x40, 0x40, 0x51, 0x48, 0x1c, 0x10, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x10, 0x4c, 0x13, 0x07,
3356 +       0x40, 0x1c, 0x10, 0x4c, 0x13, 0x07, 0x40, 0x43, 0x07, 0x03, 0x03, 0x07, 0x0f, 0x07, 0x0f,
3357 +       0x14, 0x17, 0x10, 0x4c, 0x17, 0x10, 0x4c, 0x40, 0x40, 0x40, 0x24, 0x14, 0x14, 0x40, 0x0f,
3358 +       0x14, 0x18, 0x18, 0x23, 0x27, 0x13, 0x07, 0x0f, 0x13, 0x07, 0x04, 0x3e, 0x1c, 0x14, 0x40,
3359 +       0x0f, 0x14, 0x18, 0x03, 0x14, 0x06, 0x03, 0x03, 0x14, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3360 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x04,
3361 +       0x43, 0x57, 0x40, 0x1b, 0x40, 0x44, 0x24, 0x40, 0x43, 0x40, 0x40, 0x0f, 0x0f, 0x43, 0x53,
3362 +       0x40, 0x0c, 0x57, 0x53, 0x4f, 0x47, 0x47, 0x07, 0x07, 0x0b, 0x3b, 0x13, 0x08, 0x07, 0x5b,
3363 +       0x27, 0x00, 0x13, 0x40, 0x03, 0x13, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4f, 0x53, 0x47, 0x53,
3364 +       0x57, 0x4f, 0x4f, 0x5b, 0x5b, 0x53, 0x4f, 0x57, 0x5b, 0x5b, 0x53, 0x43, 0x00, 0x47, 0x4f,
3365 +       0x53, 0x47, 0x53, 0x57, 0x4f, 0x4f, 0x5b, 0x5b, 0x53, 0x4f, 0x57, 0x5b, 0x5b, 0x53, 0x43,
3366 +       0x00, 0x47, 0x10, 0x4b, 0x00, 0x40, 0x44, 0x40, 0x43, 0x07, 0x43, 0x00, 0x00, 0x4f, 0x47,
3367 +       0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b,
3368 +       0x14, 0x07, 0x40, 0x44, 0x07, 0x04, 0x04, 0x08, 0x10, 0x08, 0x10, 0x13, 0x17, 0x0f, 0x4b,
3369 +       0x17, 0x0f, 0x4b, 0x40, 0x40, 0x40, 0x23, 0x13, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x17, 0x24,
3370 +       0x27, 0x14, 0x07, 0x10, 0x14, 0x08, 0x03, 0x3e, 0x1b, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x04,
3371 +       0x13, 0x08, 0x04, 0x04, 0x13, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
3372 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x05, 0x43, 0x57, 0x40, 0x1a,
3373 +       0x40, 0x45, 0x24, 0x40, 0x43, 0x40, 0x40, 0x0f, 0x0f, 0x43, 0x52, 0x40, 0x0c, 0x56, 0x52,
3374 +       0x4d, 0x45, 0x45, 0x07, 0x07, 0x0b, 0x3a, 0x13, 0x08, 0x07, 0x5a, 0x27, 0x01, 0x13, 0x40,
3375 +       0x03, 0x12, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4f, 0x52, 0x47, 0x52, 0x56, 0x4e, 0x4f, 0x5a,
3376 +       0x5a, 0x52, 0x4f, 0x57, 0x5a, 0x5a, 0x52, 0x42, 0x00, 0x46, 0x4f, 0x52, 0x47, 0x52, 0x56,
3377 +       0x4e, 0x4f, 0x5a, 0x5a, 0x52, 0x4f, 0x57, 0x5a, 0x5a, 0x52, 0x42, 0x00, 0x46, 0x10, 0x4b,
3378 +       0x02, 0x40, 0x44, 0x40, 0x43, 0x07, 0x43, 0x00, 0x00, 0x4d, 0x47, 0x1b, 0x0f, 0x4b, 0x14,
3379 +       0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x44,
3380 +       0x07, 0x04, 0x04, 0x08, 0x10, 0x08, 0x10, 0x13, 0x17, 0x0f, 0x4b, 0x17, 0x0f, 0x4b, 0x40,
3381 +       0x40, 0x40, 0x22, 0x13, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x17, 0x24, 0x27, 0x14, 0x07, 0x10,
3382 +       0x14, 0x08, 0x03, 0x3e, 0x1b, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x05, 0x13, 0x09, 0x05, 0x05,
3383 +       0x13, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3384 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x06, 0x43, 0x56, 0x40, 0x19, 0x41, 0x46, 0x24, 0x40,
3385 +       0x43, 0x40, 0x40, 0x0e, 0x0f, 0x43, 0x50, 0x40, 0x0c, 0x55, 0x50, 0x4b, 0x42, 0x42, 0x07,
3386 +       0x07, 0x0b, 0x38, 0x13, 0x09, 0x07, 0x59, 0x27, 0x02, 0x13, 0x40, 0x03, 0x11, 0x40, 0x40,
3387 +       0x40, 0x43, 0x43, 0x4e, 0x51, 0x46, 0x51, 0x55, 0x4d, 0x4e, 0x59, 0x59, 0x50, 0x4e, 0x56,
3388 +       0x59, 0x59, 0x50, 0x41, 0x01, 0x45, 0x4e, 0x51, 0x46, 0x51, 0x55, 0x4d, 0x4e, 0x59, 0x59,
3389 +       0x50, 0x4e, 0x56, 0x59, 0x59, 0x50, 0x41, 0x01, 0x45, 0x11, 0x4b, 0x04, 0x40, 0x44, 0x40,
3390 +       0x43, 0x07, 0x43, 0x01, 0x01, 0x4b, 0x46, 0x1b, 0x0e, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0e,
3391 +       0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0e, 0x4b, 0x14, 0x07, 0x40, 0x44, 0x07, 0x04, 0x04, 0x09,
3392 +       0x11, 0x09, 0x11, 0x13, 0x17, 0x0e, 0x4b, 0x17, 0x0e, 0x4b, 0x40, 0x40, 0x40, 0x21, 0x13,
3393 +       0x13, 0x40, 0x0f, 0x13, 0x16, 0x16, 0x24, 0x27, 0x14, 0x07, 0x11, 0x14, 0x09, 0x03, 0x3d,
3394 +       0x1b, 0x13, 0x40, 0x0f, 0x13, 0x16, 0x06, 0x13, 0x0a, 0x06, 0x06, 0x13, 0x40, 0x40, 0x40,
3395 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3396 +       0x07, 0x3e, 0x06, 0x43, 0x56, 0x40, 0x18, 0x42, 0x47, 0x24, 0x40, 0x43, 0x40, 0x40, 0x0d,
3397 +       0x0f, 0x43, 0x4f, 0x40, 0x0c, 0x54, 0x4f, 0x4a, 0x40, 0x40, 0x07, 0x07, 0x0a, 0x36, 0x12,
3398 +       0x09, 0x07, 0x59, 0x27, 0x03, 0x12, 0x40, 0x02, 0x10, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4e,
3399 +       0x51, 0x46, 0x51, 0x54, 0x4c, 0x4e, 0x59, 0x59, 0x4f, 0x4e, 0x56, 0x59, 0x59, 0x4f, 0x41,
3400 +       0x01, 0x44, 0x4e, 0x51, 0x46, 0x51, 0x54, 0x4c, 0x4e, 0x59, 0x59, 0x4f, 0x4e, 0x56, 0x59,
3401 +       0x59, 0x4f, 0x41, 0x01, 0x44, 0x11, 0x4b, 0x05, 0x40, 0x45, 0x40, 0x43, 0x07, 0x43, 0x01,
3402 +       0x01, 0x4a, 0x46, 0x1a, 0x0d, 0x4b, 0x14, 0x07, 0x40, 0x1a, 0x0d, 0x4b, 0x14, 0x07, 0x40,
3403 +       0x1a, 0x0d, 0x4b, 0x14, 0x07, 0x40, 0x45, 0x07, 0x04, 0x04, 0x09, 0x11, 0x09, 0x11, 0x12,
3404 +       0x17, 0x0d, 0x4b, 0x17, 0x0d, 0x4b, 0x40, 0x40, 0x40, 0x20, 0x12, 0x12, 0x40, 0x0f, 0x12,
3405 +       0x15, 0x15, 0x24, 0x27, 0x14, 0x07, 0x11, 0x14, 0x09, 0x02, 0x3b, 0x1a, 0x12, 0x40, 0x0f,
3406 +       0x12, 0x15, 0x06, 0x12, 0x0b, 0x06, 0x06, 0x12, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3407 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x07, 0x42,
3408 +       0x55, 0x40, 0x18, 0x42, 0x47, 0x25, 0x40, 0x42, 0x40, 0x40, 0x0d, 0x0f, 0x42, 0x4d, 0x40,
3409 +       0x0d, 0x52, 0x4d, 0x48, 0x02, 0x02, 0x07, 0x07, 0x0a, 0x35, 0x12, 0x0a, 0x07, 0x58, 0x27,
3410 +       0x05, 0x12, 0x40, 0x02, 0x10, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4d, 0x50, 0x45, 0x50, 0x52,
3411 +       0x4a, 0x4d, 0x58, 0x58, 0x4d, 0x4d, 0x55, 0x58, 0x58, 0x4d, 0x40, 0x02, 0x42, 0x4d, 0x50,
3412 +       0x45, 0x50, 0x52, 0x4a, 0x4d, 0x58, 0x58, 0x4d, 0x4d, 0x55, 0x58, 0x58, 0x4d, 0x40, 0x02,
3413 +       0x42, 0x12, 0x4a, 0x07, 0x40, 0x45, 0x40, 0x42, 0x07, 0x42, 0x02, 0x02, 0x48, 0x45, 0x1a,
3414 +       0x0d, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0d, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0d, 0x4a, 0x15,
3415 +       0x07, 0x40, 0x45, 0x07, 0x05, 0x05, 0x0a, 0x12, 0x0a, 0x12, 0x12, 0x17, 0x0d, 0x4a, 0x17,
3416 +       0x0d, 0x4a, 0x40, 0x40, 0x40, 0x20, 0x12, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x15, 0x25, 0x27,
3417 +       0x15, 0x07, 0x12, 0x15, 0x0a, 0x02, 0x3a, 0x1a, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x07, 0x12,
3418 +       0x0d, 0x07, 0x07, 0x12, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
3419 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x08, 0x42, 0x54, 0x40, 0x17, 0x43,
3420 +       0x48, 0x25, 0x40, 0x42, 0x40, 0x40, 0x0c, 0x0f, 0x42, 0x4b, 0x40, 0x0d, 0x51, 0x4b, 0x46,
3421 +       0x04, 0x04, 0x07, 0x07, 0x0a, 0x33, 0x12, 0x0b, 0x07, 0x57, 0x27, 0x06, 0x12, 0x40, 0x02,
3422 +       0x0f, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4c, 0x4f, 0x44, 0x4f, 0x51, 0x49, 0x4c, 0x57, 0x57,
3423 +       0x4b, 0x4c, 0x54, 0x57, 0x57, 0x4b, 0x00, 0x03, 0x41, 0x4c, 0x4f, 0x44, 0x4f, 0x51, 0x49,
3424 +       0x4c, 0x57, 0x57, 0x4b, 0x4c, 0x54, 0x57, 0x57, 0x4b, 0x00, 0x03, 0x41, 0x13, 0x4a, 0x09,
3425 +       0x40, 0x45, 0x40, 0x42, 0x07, 0x42, 0x03, 0x03, 0x46, 0x44, 0x1a, 0x0c, 0x4a, 0x15, 0x07,
3426 +       0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x45, 0x07,
3427 +       0x05, 0x05, 0x0b, 0x13, 0x0b, 0x13, 0x12, 0x17, 0x0c, 0x4a, 0x17, 0x0c, 0x4a, 0x40, 0x40,
3428 +       0x40, 0x1f, 0x12, 0x12, 0x40, 0x0f, 0x12, 0x14, 0x14, 0x25, 0x27, 0x15, 0x07, 0x13, 0x15,
3429 +       0x0b, 0x02, 0x39, 0x1a, 0x12, 0x40, 0x0f, 0x12, 0x14, 0x08, 0x12, 0x0e, 0x08, 0x08, 0x12,
3430 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3431 +       0x00, 0x00, 0x00, 0x07, 0x3e, 0x09, 0x42, 0x54, 0x40, 0x16, 0x43, 0x49, 0x25, 0x40, 0x42,
3432 +       0x40, 0x40, 0x0c, 0x0f, 0x42, 0x4a, 0x40, 0x0d, 0x50, 0x4a, 0x44, 0x07, 0x07, 0x07, 0x07,
3433 +       0x0a, 0x32, 0x12, 0x0b, 0x07, 0x56, 0x27, 0x07, 0x12, 0x40, 0x02, 0x0e, 0x40, 0x40, 0x40,
3434 +       0x42, 0x42, 0x4c, 0x4e, 0x44, 0x4e, 0x50, 0x48, 0x4c, 0x56, 0x56, 0x4a, 0x4c, 0x54, 0x56,
3435 +       0x56, 0x4a, 0x01, 0x03, 0x40, 0x4c, 0x4e, 0x44, 0x4e, 0x50, 0x48, 0x4c, 0x56, 0x56, 0x4a,
3436 +       0x4c, 0x54, 0x56, 0x56, 0x4a, 0x01, 0x03, 0x40, 0x13, 0x4a, 0x0b, 0x40, 0x45, 0x40, 0x42,
3437 +       0x07, 0x42, 0x03, 0x03, 0x44, 0x44, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a,
3438 +       0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x45, 0x07, 0x05, 0x05, 0x0b, 0x13,
3439 +       0x0b, 0x13, 0x12, 0x17, 0x0c, 0x4a, 0x17, 0x0c, 0x4a, 0x40, 0x40, 0x40, 0x1e, 0x12, 0x12,
3440 +       0x40, 0x0f, 0x12, 0x14, 0x14, 0x25, 0x27, 0x15, 0x07, 0x13, 0x15, 0x0b, 0x02, 0x38, 0x1a,
3441 +       0x12, 0x40, 0x0f, 0x12, 0x14, 0x09, 0x12, 0x0f, 0x09, 0x09, 0x12, 0x40, 0x40, 0x40, 0x40,
3442 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
3443 +       0x3e, 0x0a, 0x41, 0x53, 0x40, 0x15, 0x44, 0x4a, 0x26, 0x40, 0x41, 0x40, 0x40, 0x0b, 0x0f,
3444 +       0x41, 0x48, 0x40, 0x0e, 0x4f, 0x48, 0x42, 0x09, 0x09, 0x07, 0x07, 0x09, 0x30, 0x11, 0x0c,
3445 +       0x07, 0x55, 0x27, 0x08, 0x11, 0x40, 0x01, 0x0d, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4b, 0x4d,
3446 +       0x43, 0x4d, 0x4f, 0x47, 0x4b, 0x55, 0x55, 0x48, 0x4b, 0x53, 0x55, 0x55, 0x48, 0x02, 0x04,
3447 +       0x00, 0x4b, 0x4d, 0x43, 0x4d, 0x4f, 0x47, 0x4b, 0x55, 0x55, 0x48, 0x4b, 0x53, 0x55, 0x55,
3448 +       0x48, 0x02, 0x04, 0x00, 0x14, 0x49, 0x0d, 0x40, 0x46, 0x40, 0x41, 0x07, 0x41, 0x04, 0x04,
3449 +       0x42, 0x43, 0x19, 0x0b, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0b, 0x49, 0x16, 0x07, 0x40, 0x19,
3450 +       0x0b, 0x49, 0x16, 0x07, 0x40, 0x46, 0x07, 0x06, 0x06, 0x0c, 0x14, 0x0c, 0x14, 0x11, 0x17,
3451 +       0x0b, 0x49, 0x17, 0x0b, 0x49, 0x40, 0x40, 0x40, 0x1d, 0x11, 0x11, 0x40, 0x0f, 0x11, 0x13,
3452 +       0x13, 0x26, 0x27, 0x16, 0x07, 0x14, 0x16, 0x0c, 0x01, 0x36, 0x19, 0x11, 0x40, 0x0f, 0x11,
3453 +       0x13, 0x0a, 0x11, 0x10, 0x0a, 0x0a, 0x11, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
3454 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x0b, 0x41, 0x52,
3455 +       0x40, 0x14, 0x45, 0x4b, 0x26, 0x40, 0x41, 0x40, 0x40, 0x0a, 0x0f, 0x41, 0x47, 0x40, 0x0e,
3456 +       0x4d, 0x47, 0x40, 0x0c, 0x0c, 0x07, 0x07, 0x09, 0x2f, 0x11, 0x0d, 0x07, 0x54, 0x27, 0x0a,
3457 +       0x11, 0x40, 0x01, 0x0c, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4a, 0x4c, 0x42, 0x4c, 0x4d, 0x45,
3458 +       0x4a, 0x54, 0x54, 0x47, 0x4a, 0x52, 0x54, 0x54, 0x47, 0x03, 0x05, 0x02, 0x4a, 0x4c, 0x42,
3459 +       0x4c, 0x4d, 0x45, 0x4a, 0x54, 0x54, 0x47, 0x4a, 0x52, 0x54, 0x54, 0x47, 0x03, 0x05, 0x02,
3460 +       0x15, 0x49, 0x0f, 0x40, 0x46, 0x40, 0x41, 0x07, 0x41, 0x05, 0x05, 0x40, 0x42, 0x19, 0x0a,
3461 +       0x49, 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07,
3462 +       0x40, 0x46, 0x07, 0x06, 0x06, 0x0d, 0x15, 0x0d, 0x15, 0x11, 0x17, 0x0a, 0x49, 0x17, 0x0a,
3463 +       0x49, 0x40, 0x40, 0x40, 0x1c, 0x11, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x12, 0x26, 0x27, 0x16,
3464 +       0x07, 0x15, 0x16, 0x0d, 0x01, 0x35, 0x19, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x0b, 0x11, 0x12,
3465 +       0x0b, 0x0b, 0x11, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
3466 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x0c, 0x41, 0x52, 0x40, 0x13, 0x45, 0x4c,
3467 +       0x26, 0x40, 0x41, 0x40, 0x40, 0x0a, 0x0f, 0x41, 0x45, 0x40, 0x0e, 0x4c, 0x45, 0x01, 0x0e,
3468 +       0x0e, 0x07, 0x07, 0x09, 0x2d, 0x11, 0x0d, 0x07, 0x53, 0x27, 0x0b, 0x11, 0x40, 0x01, 0x0b,
3469 +       0x40, 0x40, 0x40, 0x41, 0x41, 0x4a, 0x4b, 0x42, 0x4b, 0x4c, 0x44, 0x4a, 0x53, 0x53, 0x45,
3470 +       0x4a, 0x52, 0x53, 0x53, 0x45, 0x04, 0x05, 0x03, 0x4a, 0x4b, 0x42, 0x4b, 0x4c, 0x44, 0x4a,
3471 +       0x53, 0x53, 0x45, 0x4a, 0x52, 0x53, 0x53, 0x45, 0x04, 0x05, 0x03, 0x15, 0x49, 0x11, 0x40,
3472 +       0x46, 0x40, 0x41, 0x07, 0x41, 0x05, 0x05, 0x01, 0x42, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40,
3473 +       0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x46, 0x07, 0x06,
3474 +       0x06, 0x0d, 0x15, 0x0d, 0x15, 0x11, 0x17, 0x0a, 0x49, 0x17, 0x0a, 0x49, 0x40, 0x40, 0x40,
3475 +       0x1b, 0x11, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x12, 0x26, 0x27, 0x16, 0x07, 0x15, 0x16, 0x0d,
3476 +       0x01, 0x34, 0x19, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x0c, 0x11, 0x13, 0x0c, 0x0c, 0x11, 0x40,
3477 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3478 +       0x00, 0x00, 0x07, 0x3e, 0x0d, 0x40, 0x51, 0x40, 0x12, 0x46, 0x4d, 0x27, 0x40, 0x40, 0x40,
3479 +       0x40, 0x09, 0x0f, 0x40, 0x44, 0x40, 0x0f, 0x4b, 0x44, 0x03, 0x11, 0x11, 0x07, 0x07, 0x08,
3480 +       0x2c, 0x10, 0x0e, 0x07, 0x52, 0x27, 0x0c, 0x10, 0x40, 0x00, 0x0a, 0x40, 0x40, 0x40, 0x40,
3481 +       0x40, 0x49, 0x4a, 0x41, 0x4a, 0x4b, 0x43, 0x49, 0x52, 0x52, 0x44, 0x49, 0x51, 0x52, 0x52,
3482 +       0x44, 0x05, 0x06, 0x04, 0x49, 0x4a, 0x41, 0x4a, 0x4b, 0x43, 0x49, 0x52, 0x52, 0x44, 0x49,
3483 +       0x51, 0x52, 0x52, 0x44, 0x05, 0x06, 0x04, 0x16, 0x48, 0x13, 0x40, 0x47, 0x40, 0x40, 0x07,
3484 +       0x40, 0x06, 0x06, 0x03, 0x41, 0x18, 0x09, 0x48, 0x17, 0x07, 0x40, 0x18, 0x09, 0x48, 0x17,
3485 +       0x07, 0x40, 0x18, 0x09, 0x48, 0x17, 0x07, 0x40, 0x47, 0x07, 0x07, 0x07, 0x0e, 0x16, 0x0e,
3486 +       0x16, 0x10, 0x17, 0x09, 0x48, 0x17, 0x09, 0x48, 0x40, 0x40, 0x40, 0x1a, 0x10, 0x10, 0x40,
3487 +       0x0f, 0x10, 0x11, 0x11, 0x27, 0x27, 0x17, 0x07, 0x16, 0x17, 0x0e, 0x00, 0x33, 0x18, 0x10,
3488 +       0x40, 0x0f, 0x10, 0x11, 0x0d, 0x10, 0x14, 0x0d, 0x0d, 0x10, 0x40, 0x40, 0x40, 0x40, 0x40,
3489 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e,
3490 +       0x0e, 0x40, 0x51, 0x40, 0x11, 0x47, 0x4e, 0x27, 0x40, 0x40, 0x40, 0x40, 0x08, 0x0f, 0x40,
3491 +       0x42, 0x40, 0x0f, 0x4a, 0x42, 0x04, 0x13, 0x13, 0x07, 0x07, 0x08, 0x2a, 0x10, 0x0e, 0x07,
3492 +       0x51, 0x27, 0x0d, 0x10, 0x40, 0x00, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x49, 0x41,
3493 +       0x49, 0x4a, 0x42, 0x49, 0x51, 0x51, 0x42, 0x49, 0x51, 0x51, 0x51, 0x42, 0x06, 0x06, 0x05,
3494 +       0x49, 0x49, 0x41, 0x49, 0x4a, 0x42, 0x49, 0x51, 0x51, 0x42, 0x49, 0x51, 0x51, 0x51, 0x42,
3495 +       0x06, 0x06, 0x05, 0x16, 0x48, 0x14, 0x40, 0x47, 0x40, 0x40, 0x07, 0x40, 0x06, 0x06, 0x04,
3496 +       0x41, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08,
3497 +       0x48, 0x17, 0x07, 0x40, 0x47, 0x07, 0x07, 0x07, 0x0e, 0x16, 0x0e, 0x16, 0x10, 0x17, 0x08,
3498 +       0x48, 0x17, 0x08, 0x48, 0x40, 0x40, 0x40, 0x19, 0x10, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x10,
3499 +       0x27, 0x27, 0x17, 0x07, 0x16, 0x17, 0x0e, 0x00, 0x31, 0x18, 0x10, 0x40, 0x0f, 0x10, 0x10,
3500 +       0x0e, 0x10, 0x15, 0x0e, 0x0e, 0x10, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
3501 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x0f, 0x40, 0x50, 0x40,
3502 +       0x10, 0x47, 0x4f, 0x27, 0x40, 0x40, 0x40, 0x40, 0x08, 0x0f, 0x40, 0x40, 0x40, 0x0f, 0x48,
3503 +       0x40, 0x06, 0x16, 0x16, 0x07, 0x07, 0x08, 0x28, 0x10, 0x0f, 0x07, 0x50, 0x27, 0x0f, 0x10,
3504 +       0x40, 0x00, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, 0x48, 0x40, 0x48, 0x48, 0x40, 0x48,
3505 +       0x50, 0x50, 0x40, 0x48, 0x50, 0x50, 0x50, 0x40, 0x07, 0x07, 0x07, 0x48, 0x48, 0x40, 0x48,
3506 +       0x48, 0x40, 0x48, 0x50, 0x50, 0x40, 0x48, 0x50, 0x50, 0x50, 0x40, 0x07, 0x07, 0x07, 0x17,
3507 +       0x48, 0x16, 0x40, 0x47, 0x40, 0x40, 0x07, 0x40, 0x07, 0x07, 0x06, 0x40, 0x18, 0x08, 0x48,
3508 +       0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40,
3509 +       0x47, 0x07, 0x07, 0x07, 0x0f, 0x17, 0x0f, 0x17, 0x10, 0x17, 0x08, 0x48, 0x17, 0x08, 0x48,
3510 +       0x40, 0x40, 0x40, 0x18, 0x10, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x10, 0x27, 0x27, 0x17, 0x07,
3511 +       0x17, 0x17, 0x0f, 0x00, 0x30, 0x18, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x0f, 0x10, 0x17, 0x0f,
3512 +       0x0f, 0x10, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3513 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x10, 0x00, 0x4f, 0x40, 0x0f, 0x48, 0x50, 0x28,
3514 +       0x40, 0x00, 0x40, 0x40, 0x07, 0x0f, 0x00, 0x00, 0x40, 0x10, 0x47, 0x00, 0x08, 0x18, 0x18,
3515 +       0x07, 0x07, 0x07, 0x27, 0x0f, 0x10, 0x07, 0x4f, 0x27, 0x10, 0x0f, 0x40, 0x40, 0x07, 0x40,
3516 +       0x40, 0x40, 0x00, 0x00, 0x47, 0x47, 0x00, 0x47, 0x47, 0x00, 0x47, 0x4f, 0x4f, 0x00, 0x47,
3517 +       0x4f, 0x4f, 0x4f, 0x00, 0x08, 0x08, 0x08, 0x47, 0x47, 0x00, 0x47, 0x47, 0x00, 0x47, 0x4f,
3518 +       0x4f, 0x00, 0x47, 0x4f, 0x4f, 0x4f, 0x00, 0x08, 0x08, 0x08, 0x18, 0x47, 0x18, 0x40, 0x48,
3519 +       0x40, 0x00, 0x07, 0x00, 0x08, 0x08, 0x08, 0x00, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x17,
3520 +       0x07, 0x47, 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x48, 0x07, 0x08, 0x08,
3521 +       0x10, 0x18, 0x10, 0x18, 0x0f, 0x17, 0x07, 0x47, 0x17, 0x07, 0x47, 0x40, 0x40, 0x40, 0x17,
3522 +       0x0f, 0x0f, 0x40, 0x0f, 0x0f, 0x0f, 0x0f, 0x28, 0x27, 0x18, 0x07, 0x18, 0x18, 0x10, 0x40,
3523 +       0x2f, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x0f, 0x10, 0x0f, 0x18, 0x10, 0x10, 0x0f, 0x40, 0x40,
3524 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3525 +       0x00, 0x07, 0x3e, 0x11, 0x00, 0x4f, 0x40, 0x0e, 0x48, 0x51, 0x28, 0x40, 0x00, 0x40, 0x40,
3526 +       0x07, 0x0f, 0x00, 0x02, 0x40, 0x10, 0x46, 0x02, 0x0a, 0x1b, 0x1b, 0x07, 0x07, 0x07, 0x25,
3527 +       0x0f, 0x10, 0x07, 0x4e, 0x27, 0x11, 0x0f, 0x40, 0x40, 0x06, 0x40, 0x40, 0x40, 0x00, 0x00,
3528 +       0x47, 0x46, 0x00, 0x46, 0x46, 0x01, 0x47, 0x4e, 0x4e, 0x02, 0x47, 0x4f, 0x4e, 0x4e, 0x02,
3529 +       0x09, 0x08, 0x09, 0x47, 0x46, 0x00, 0x46, 0x46, 0x01, 0x47, 0x4e, 0x4e, 0x02, 0x47, 0x4f,
3530 +       0x4e, 0x4e, 0x02, 0x09, 0x08, 0x09, 0x18, 0x47, 0x1a, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00,
3531 +       0x08, 0x08, 0x0a, 0x00, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07,
3532 +       0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x48, 0x07, 0x08, 0x08, 0x10, 0x18, 0x10, 0x18,
3533 +       0x0f, 0x17, 0x07, 0x47, 0x17, 0x07, 0x47, 0x40, 0x40, 0x40, 0x16, 0x0f, 0x0f, 0x40, 0x0f,
3534 +       0x0f, 0x0f, 0x0f, 0x28, 0x27, 0x18, 0x07, 0x18, 0x18, 0x10, 0x40, 0x2e, 0x17, 0x0f, 0x40,
3535 +       0x0f, 0x0f, 0x0f, 0x11, 0x0f, 0x19, 0x11, 0x11, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3536 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x12,
3537 +       0x00, 0x4e, 0x40, 0x0d, 0x49, 0x52, 0x28, 0x40, 0x00, 0x40, 0x40, 0x06, 0x0f, 0x00, 0x03,
3538 +       0x40, 0x10, 0x45, 0x03, 0x0c, 0x1d, 0x1d, 0x07, 0x07, 0x07, 0x24, 0x0f, 0x11, 0x07, 0x4d,
3539 +       0x27, 0x12, 0x0f, 0x40, 0x40, 0x05, 0x40, 0x40, 0x40, 0x00, 0x00, 0x46, 0x45, 0x01, 0x45,
3540 +       0x45, 0x02, 0x46, 0x4d, 0x4d, 0x03, 0x46, 0x4e, 0x4d, 0x4d, 0x03, 0x0a, 0x09, 0x0a, 0x46,
3541 +       0x45, 0x01, 0x45, 0x45, 0x02, 0x46, 0x4d, 0x4d, 0x03, 0x46, 0x4e, 0x4d, 0x4d, 0x03, 0x0a,
3542 +       0x09, 0x0a, 0x19, 0x47, 0x1c, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00, 0x09, 0x09, 0x0c, 0x01,
3543 +       0x17, 0x06, 0x47, 0x18, 0x07, 0x40, 0x17, 0x06, 0x47, 0x18, 0x07, 0x40, 0x17, 0x06, 0x47,
3544 +       0x18, 0x07, 0x40, 0x48, 0x07, 0x08, 0x08, 0x11, 0x19, 0x11, 0x19, 0x0f, 0x17, 0x06, 0x47,
3545 +       0x17, 0x06, 0x47, 0x40, 0x40, 0x40, 0x15, 0x0f, 0x0f, 0x40, 0x0f, 0x0f, 0x0e, 0x0e, 0x28,
3546 +       0x27, 0x18, 0x07, 0x19, 0x18, 0x11, 0x40, 0x2c, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x0e, 0x12,
3547 +       0x0f, 0x1a, 0x12, 0x12, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
3548 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x13, 0x01, 0x4d, 0x40, 0x0c,
3549 +       0x4a, 0x53, 0x29, 0x40, 0x01, 0x40, 0x40, 0x05, 0x0f, 0x01, 0x05, 0x40, 0x11, 0x43, 0x05,
3550 +       0x0e, 0x20, 0x20, 0x07, 0x07, 0x06, 0x22, 0x0e, 0x12, 0x07, 0x4c, 0x27, 0x14, 0x0e, 0x40,
3551 +       0x41, 0x04, 0x40, 0x40, 0x40, 0x01, 0x01, 0x45, 0x44, 0x02, 0x44, 0x43, 0x04, 0x45, 0x4c,
3552 +       0x4c, 0x05, 0x45, 0x4d, 0x4c, 0x4c, 0x05, 0x0b, 0x0a, 0x0c, 0x45, 0x44, 0x02, 0x44, 0x43,
3553 +       0x04, 0x45, 0x4c, 0x4c, 0x05, 0x45, 0x4d, 0x4c, 0x4c, 0x05, 0x0b, 0x0a, 0x0c, 0x1a, 0x46,
3554 +       0x1e, 0x40, 0x49, 0x40, 0x01, 0x07, 0x01, 0x0a, 0x0a, 0x0e, 0x02, 0x16, 0x05, 0x46, 0x19,
3555 +       0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x49,
3556 +       0x07, 0x09, 0x09, 0x12, 0x1a, 0x12, 0x1a, 0x0e, 0x17, 0x05, 0x46, 0x17, 0x05, 0x46, 0x40,
3557 +       0x40, 0x40, 0x14, 0x0e, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x0d, 0x29, 0x27, 0x19, 0x07, 0x1a,
3558 +       0x19, 0x12, 0x41, 0x2b, 0x16, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x13, 0x0e, 0x1c, 0x13, 0x13,
3559 +       0x0e, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3560 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x14, 0x01, 0x4d, 0x40, 0x0b, 0x4a, 0x54, 0x29, 0x40,
3561 +       0x01, 0x40, 0x40, 0x05, 0x0f, 0x01, 0x06, 0x40, 0x11, 0x42, 0x06, 0x10, 0x22, 0x22, 0x07,
3562 +       0x07, 0x06, 0x21, 0x0e, 0x12, 0x07, 0x4b, 0x27, 0x15, 0x0e, 0x40, 0x41, 0x03, 0x40, 0x40,
3563 +       0x40, 0x01, 0x01, 0x45, 0x43, 0x02, 0x43, 0x42, 0x05, 0x45, 0x4b, 0x4b, 0x06, 0x45, 0x4d,
3564 +       0x4b, 0x4b, 0x06, 0x0c, 0x0a, 0x0d, 0x45, 0x43, 0x02, 0x43, 0x42, 0x05, 0x45, 0x4b, 0x4b,
3565 +       0x06, 0x45, 0x4d, 0x4b, 0x4b, 0x06, 0x0c, 0x0a, 0x0d, 0x1a, 0x46, 0x20, 0x40, 0x49, 0x40,
3566 +       0x01, 0x07, 0x01, 0x0a, 0x0a, 0x10, 0x02, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x16, 0x05,
3567 +       0x46, 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x49, 0x07, 0x09, 0x09, 0x12,
3568 +       0x1a, 0x12, 0x1a, 0x0e, 0x17, 0x05, 0x46, 0x17, 0x05, 0x46, 0x40, 0x40, 0x40, 0x13, 0x0e,
3569 +       0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x0d, 0x29, 0x27, 0x19, 0x07, 0x1a, 0x19, 0x12, 0x41, 0x2a,
3570 +       0x16, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x14, 0x0e, 0x1d, 0x14, 0x14, 0x0e, 0x40, 0x40, 0x40,
3571 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3572 +       0x07, 0x3e, 0x15, 0x01, 0x4c, 0x40, 0x0a, 0x4b, 0x55, 0x29, 0x40, 0x01, 0x40, 0x40, 0x04,
3573 +       0x0f, 0x01, 0x08, 0x40, 0x11, 0x41, 0x08, 0x12, 0x25, 0x25, 0x07, 0x07, 0x06, 0x1f, 0x0e,
3574 +       0x13, 0x07, 0x4a, 0x27, 0x16, 0x0e, 0x40, 0x41, 0x02, 0x40, 0x40, 0x40, 0x01, 0x01, 0x44,
3575 +       0x42, 0x03, 0x42, 0x41, 0x06, 0x44, 0x4a, 0x4a, 0x08, 0x44, 0x4c, 0x4a, 0x4a, 0x08, 0x0d,
3576 +       0x0b, 0x0e, 0x44, 0x42, 0x03, 0x42, 0x41, 0x06, 0x44, 0x4a, 0x4a, 0x08, 0x44, 0x4c, 0x4a,
3577 +       0x4a, 0x08, 0x0d, 0x0b, 0x0e, 0x1b, 0x46, 0x22, 0x40, 0x49, 0x40, 0x01, 0x07, 0x01, 0x0b,
3578 +       0x0b, 0x12, 0x03, 0x16, 0x04, 0x46, 0x19, 0x07, 0x40, 0x16, 0x04, 0x46, 0x19, 0x07, 0x40,
3579 +       0x16, 0x04, 0x46, 0x19, 0x07, 0x40, 0x49, 0x07, 0x09, 0x09, 0x13, 0x1b, 0x13, 0x1b, 0x0e,
3580 +       0x17, 0x04, 0x46, 0x17, 0x04, 0x46, 0x40, 0x40, 0x40, 0x12, 0x0e, 0x0e, 0x40, 0x0f, 0x0e,
3581 +       0x0c, 0x0c, 0x29, 0x27, 0x19, 0x07, 0x1b, 0x19, 0x13, 0x41, 0x29, 0x16, 0x0e, 0x40, 0x0f,
3582 +       0x0e, 0x0c, 0x15, 0x0e, 0x1e, 0x15, 0x15, 0x0e, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3583 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x15, 0x01,
3584 +       0x4c, 0x40, 0x09, 0x4c, 0x56, 0x29, 0x40, 0x01, 0x40, 0x40, 0x03, 0x0f, 0x01, 0x09, 0x40,
3585 +       0x11, 0x40, 0x09, 0x13, 0x27, 0x27, 0x07, 0x07, 0x05, 0x1d, 0x0d, 0x13, 0x07, 0x4a, 0x27,
3586 +       0x17, 0x0d, 0x40, 0x42, 0x01, 0x40, 0x40, 0x40, 0x01, 0x01, 0x44, 0x42, 0x03, 0x42, 0x40,
3587 +       0x07, 0x44, 0x4a, 0x4a, 0x09, 0x44, 0x4c, 0x4a, 0x4a, 0x09, 0x0d, 0x0b, 0x0f, 0x44, 0x42,
3588 +       0x03, 0x42, 0x40, 0x07, 0x44, 0x4a, 0x4a, 0x09, 0x44, 0x4c, 0x4a, 0x4a, 0x09, 0x0d, 0x0b,
3589 +       0x0f, 0x1b, 0x46, 0x23, 0x40, 0x4a, 0x40, 0x01, 0x07, 0x01, 0x0b, 0x0b, 0x13, 0x03, 0x15,
3590 +       0x03, 0x46, 0x19, 0x07, 0x40, 0x15, 0x03, 0x46, 0x19, 0x07, 0x40, 0x15, 0x03, 0x46, 0x19,
3591 +       0x07, 0x40, 0x4a, 0x07, 0x09, 0x09, 0x13, 0x1b, 0x13, 0x1b, 0x0d, 0x17, 0x03, 0x46, 0x17,
3592 +       0x03, 0x46, 0x40, 0x40, 0x40, 0x11, 0x0d, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x0b, 0x29, 0x27,
3593 +       0x19, 0x07, 0x1b, 0x19, 0x13, 0x42, 0x27, 0x15, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x15, 0x0d,
3594 +       0x1f, 0x15, 0x15, 0x0d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
3595 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x16, 0x02, 0x4b, 0x40, 0x09, 0x4c,
3596 +       0x56, 0x2a, 0x40, 0x02, 0x40, 0x40, 0x03, 0x0f, 0x02, 0x0b, 0x40, 0x12, 0x01, 0x0b, 0x15,
3597 +       0x2a, 0x2a, 0x07, 0x07, 0x05, 0x1c, 0x0d, 0x14, 0x07, 0x49, 0x27, 0x19, 0x0d, 0x40, 0x42,
3598 +       0x01, 0x40, 0x40, 0x40, 0x02, 0x02, 0x43, 0x41, 0x04, 0x41, 0x01, 0x09, 0x43, 0x49, 0x49,
3599 +       0x0b, 0x43, 0x4b, 0x49, 0x49, 0x0b, 0x0e, 0x0c, 0x11, 0x43, 0x41, 0x04, 0x41, 0x01, 0x09,
3600 +       0x43, 0x49, 0x49, 0x0b, 0x43, 0x4b, 0x49, 0x49, 0x0b, 0x0e, 0x0c, 0x11, 0x1c, 0x45, 0x25,
3601 +       0x40, 0x4a, 0x40, 0x02, 0x07, 0x02, 0x0c, 0x0c, 0x15, 0x04, 0x15, 0x03, 0x45, 0x1a, 0x07,
3602 +       0x40, 0x15, 0x03, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x03, 0x45, 0x1a, 0x07, 0x40, 0x4a, 0x07,
3603 +       0x0a, 0x0a, 0x14, 0x1c, 0x14, 0x1c, 0x0d, 0x17, 0x03, 0x45, 0x17, 0x03, 0x45, 0x40, 0x40,
3604 +       0x40, 0x11, 0x0d, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x0b, 0x2a, 0x27, 0x1a, 0x07, 0x1c, 0x1a,
3605 +       0x14, 0x42, 0x26, 0x15, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x16, 0x0d, 0x21, 0x16, 0x16, 0x0d,
3606 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3607 +       0x00, 0x00, 0x00, 0x07, 0x3e, 0x17, 0x02, 0x4a, 0x40, 0x08, 0x4d, 0x57, 0x2a, 0x40, 0x02,
3608 +       0x40, 0x40, 0x02, 0x0f, 0x02, 0x0d, 0x40, 0x12, 0x02, 0x0d, 0x17, 0x2c, 0x2c, 0x07, 0x07,
3609 +       0x05, 0x1a, 0x0d, 0x15, 0x07, 0x48, 0x27, 0x1a, 0x0d, 0x40, 0x42, 0x00, 0x40, 0x40, 0x40,
3610 +       0x02, 0x02, 0x42, 0x40, 0x05, 0x40, 0x02, 0x0a, 0x42, 0x48, 0x48, 0x0d, 0x42, 0x4a, 0x48,
3611 +       0x48, 0x0d, 0x0f, 0x0d, 0x12, 0x42, 0x40, 0x05, 0x40, 0x02, 0x0a, 0x42, 0x48, 0x48, 0x0d,
3612 +       0x42, 0x4a, 0x48, 0x48, 0x0d, 0x0f, 0x0d, 0x12, 0x1d, 0x45, 0x27, 0x40, 0x4a, 0x40, 0x02,
3613 +       0x07, 0x02, 0x0d, 0x0d, 0x17, 0x05, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45,
3614 +       0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x4a, 0x07, 0x0a, 0x0a, 0x15, 0x1d,
3615 +       0x15, 0x1d, 0x0d, 0x17, 0x02, 0x45, 0x17, 0x02, 0x45, 0x40, 0x40, 0x40, 0x10, 0x0d, 0x0d,
3616 +       0x40, 0x0f, 0x0d, 0x0a, 0x0a, 0x2a, 0x27, 0x1a, 0x07, 0x1d, 0x1a, 0x15, 0x42, 0x25, 0x15,
3617 +       0x0d, 0x40, 0x0f, 0x0d, 0x0a, 0x17, 0x0d, 0x22, 0x17, 0x17, 0x0d, 0x40, 0x40, 0x40, 0x40,
3618 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
3619 +       0x3e, 0x18, 0x02, 0x4a, 0x40, 0x07, 0x4d, 0x58, 0x2a, 0x40, 0x02, 0x40, 0x40, 0x02, 0x0f,
3620 +       0x02, 0x0e, 0x40, 0x12, 0x03, 0x0e, 0x19, 0x2f, 0x2f, 0x07, 0x07, 0x05, 0x19, 0x0d, 0x15,
3621 +       0x07, 0x47, 0x27, 0x1b, 0x0d, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x42, 0x00,
3622 +       0x05, 0x00, 0x03, 0x0b, 0x42, 0x47, 0x47, 0x0e, 0x42, 0x4a, 0x47, 0x47, 0x0e, 0x10, 0x0d,
3623 +       0x13, 0x42, 0x00, 0x05, 0x00, 0x03, 0x0b, 0x42, 0x47, 0x47, 0x0e, 0x42, 0x4a, 0x47, 0x47,
3624 +       0x0e, 0x10, 0x0d, 0x13, 0x1d, 0x45, 0x29, 0x40, 0x4a, 0x40, 0x02, 0x07, 0x02, 0x0d, 0x0d,
3625 +       0x19, 0x05, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15,
3626 +       0x02, 0x45, 0x1a, 0x07, 0x40, 0x4a, 0x07, 0x0a, 0x0a, 0x15, 0x1d, 0x15, 0x1d, 0x0d, 0x17,
3627 +       0x02, 0x45, 0x17, 0x02, 0x45, 0x40, 0x40, 0x40, 0x0f, 0x0d, 0x0d, 0x40, 0x0f, 0x0d, 0x0a,
3628 +       0x0a, 0x2a, 0x27, 0x1a, 0x07, 0x1d, 0x1a, 0x15, 0x42, 0x24, 0x15, 0x0d, 0x40, 0x0f, 0x0d,
3629 +       0x0a, 0x18, 0x0d, 0x23, 0x18, 0x18, 0x0d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
3630 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x19, 0x03, 0x49,
3631 +       0x40, 0x06, 0x4e, 0x59, 0x2b, 0x40, 0x03, 0x40, 0x40, 0x01, 0x0f, 0x03, 0x10, 0x40, 0x13,
3632 +       0x04, 0x10, 0x1b, 0x31, 0x31, 0x07, 0x07, 0x04, 0x17, 0x0c, 0x16, 0x07, 0x46, 0x27, 0x1c,
3633 +       0x0c, 0x40, 0x43, 0x41, 0x40, 0x40, 0x40, 0x03, 0x03, 0x41, 0x01, 0x06, 0x01, 0x04, 0x0c,
3634 +       0x41, 0x46, 0x46, 0x10, 0x41, 0x49, 0x46, 0x46, 0x10, 0x11, 0x0e, 0x14, 0x41, 0x01, 0x06,
3635 +       0x01, 0x04, 0x0c, 0x41, 0x46, 0x46, 0x10, 0x41, 0x49, 0x46, 0x46, 0x10, 0x11, 0x0e, 0x14,
3636 +       0x1e, 0x44, 0x2b, 0x40, 0x4b, 0x40, 0x03, 0x07, 0x03, 0x0e, 0x0e, 0x1b, 0x06, 0x14, 0x01,
3637 +       0x44, 0x1b, 0x07, 0x40, 0x14, 0x01, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x01, 0x44, 0x1b, 0x07,
3638 +       0x40, 0x4b, 0x07, 0x0b, 0x0b, 0x16, 0x1e, 0x16, 0x1e, 0x0c, 0x17, 0x01, 0x44, 0x17, 0x01,
3639 +       0x44, 0x40, 0x40, 0x40, 0x0e, 0x0c, 0x0c, 0x40, 0x0f, 0x0c, 0x09, 0x09, 0x2b, 0x27, 0x1b,
3640 +       0x07, 0x1e, 0x1b, 0x16, 0x43, 0x22, 0x14, 0x0c, 0x40, 0x0f, 0x0c, 0x09, 0x19, 0x0c, 0x24,
3641 +       0x19, 0x19, 0x0c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
3642 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x1a, 0x03, 0x48, 0x40, 0x05, 0x4f, 0x5a,
3643 +       0x2b, 0x40, 0x03, 0x40, 0x40, 0x00, 0x0f, 0x03, 0x11, 0x40, 0x13, 0x06, 0x11, 0x1d, 0x34,
3644 +       0x34, 0x07, 0x07, 0x04, 0x16, 0x0c, 0x17, 0x07, 0x45, 0x27, 0x1e, 0x0c, 0x40, 0x43, 0x42,
3645 +       0x40, 0x40, 0x40, 0x03, 0x03, 0x40, 0x02, 0x07, 0x02, 0x06, 0x0e, 0x40, 0x45, 0x45, 0x11,
3646 +       0x40, 0x48, 0x45, 0x45, 0x11, 0x12, 0x0f, 0x16, 0x40, 0x02, 0x07, 0x02, 0x06, 0x0e, 0x40,
3647 +       0x45, 0x45, 0x11, 0x40, 0x48, 0x45, 0x45, 0x11, 0x12, 0x0f, 0x16, 0x1f, 0x44, 0x2d, 0x40,
3648 +       0x4b, 0x40, 0x03, 0x07, 0x03, 0x0f, 0x0f, 0x1d, 0x07, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40,
3649 +       0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x4b, 0x07, 0x0b,
3650 +       0x0b, 0x17, 0x1f, 0x17, 0x1f, 0x0c, 0x17, 0x00, 0x44, 0x17, 0x00, 0x44, 0x40, 0x40, 0x40,
3651 +       0x0d, 0x0c, 0x0c, 0x40, 0x0f, 0x0c, 0x08, 0x08, 0x2b, 0x27, 0x1b, 0x07, 0x1f, 0x1b, 0x17,
3652 +       0x43, 0x21, 0x14, 0x0c, 0x40, 0x0f, 0x0c, 0x08, 0x1a, 0x0c, 0x26, 0x1a, 0x1a, 0x0c, 0x40,
3653 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3654 +       0x00, 0x00, 0x07, 0x3e, 0x1b, 0x03, 0x48, 0x40, 0x04, 0x4f, 0x5b, 0x2b, 0x40, 0x03, 0x40,
3655 +       0x40, 0x00, 0x0f, 0x03, 0x13, 0x40, 0x13, 0x07, 0x13, 0x1f, 0x36, 0x36, 0x07, 0x07, 0x04,
3656 +       0x14, 0x0c, 0x17, 0x07, 0x44, 0x27, 0x1f, 0x0c, 0x40, 0x43, 0x43, 0x40, 0x40, 0x40, 0x03,
3657 +       0x03, 0x40, 0x03, 0x07, 0x03, 0x07, 0x0f, 0x40, 0x44, 0x44, 0x13, 0x40, 0x48, 0x44, 0x44,
3658 +       0x13, 0x13, 0x0f, 0x17, 0x40, 0x03, 0x07, 0x03, 0x07, 0x0f, 0x40, 0x44, 0x44, 0x13, 0x40,
3659 +       0x48, 0x44, 0x44, 0x13, 0x13, 0x0f, 0x17, 0x1f, 0x44, 0x2f, 0x40, 0x4b, 0x40, 0x03, 0x07,
3660 +       0x03, 0x0f, 0x0f, 0x1f, 0x07, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b,
3661 +       0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x4b, 0x07, 0x0b, 0x0b, 0x17, 0x1f, 0x17,
3662 +       0x1f, 0x0c, 0x17, 0x00, 0x44, 0x17, 0x00, 0x44, 0x40, 0x40, 0x40, 0x0c, 0x0c, 0x0c, 0x40,
3663 +       0x0f, 0x0c, 0x08, 0x08, 0x2b, 0x27, 0x1b, 0x07, 0x1f, 0x1b, 0x17, 0x43, 0x20, 0x14, 0x0c,
3664 +       0x40, 0x0f, 0x0c, 0x08, 0x1b, 0x0c, 0x27, 0x1b, 0x1b, 0x0c, 0x40, 0x40, 0x40, 0x40, 0x40,
3665 +       0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e,
3666 +       0x1c, 0x04, 0x47, 0x40, 0x03, 0x50, 0x5c, 0x2c, 0x40, 0x04, 0x40, 0x40, 0x40, 0x0f, 0x04,
3667 +       0x14, 0x40, 0x14, 0x08, 0x14, 0x21, 0x39, 0x39, 0x07, 0x07, 0x03, 0x13, 0x0b, 0x18, 0x07,
3668 +       0x43, 0x27, 0x20, 0x0b, 0x40, 0x44, 0x44, 0x40, 0x40, 0x40, 0x04, 0x04, 0x00, 0x04, 0x08,
3669 +       0x04, 0x08, 0x10, 0x00, 0x43, 0x43, 0x14, 0x00, 0x47, 0x43, 0x43, 0x14, 0x14, 0x10, 0x18,
3670 +       0x00, 0x04, 0x08, 0x04, 0x08, 0x10, 0x00, 0x43, 0x43, 0x14, 0x00, 0x47, 0x43, 0x43, 0x14,
3671 +       0x14, 0x10, 0x18, 0x20, 0x43, 0x31, 0x40, 0x4c, 0x40, 0x04, 0x07, 0x04, 0x10, 0x10, 0x21,
3672 +       0x08, 0x13, 0x40, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x40, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x40,
3673 +       0x43, 0x1c, 0x07, 0x40, 0x4c, 0x07, 0x0c, 0x0c, 0x18, 0x20, 0x18, 0x20, 0x0b, 0x17, 0x40,
3674 +       0x43, 0x17, 0x40, 0x43, 0x40, 0x40, 0x40, 0x0b, 0x0b, 0x0b, 0x40, 0x0f, 0x0b, 0x07, 0x07,
3675 +       0x2c, 0x27, 0x1c, 0x07, 0x20, 0x1c, 0x18, 0x44, 0x1f, 0x13, 0x0b, 0x40, 0x0f, 0x0b, 0x07,
3676 +       0x1c, 0x0b, 0x28, 0x1c, 0x1c, 0x0b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
3677 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x1d, 0x04, 0x47, 0x40,
3678 +       0x02, 0x51, 0x5d, 0x2c, 0x40, 0x04, 0x40, 0x40, 0x41, 0x0f, 0x04, 0x16, 0x40, 0x14, 0x09,
3679 +       0x16, 0x22, 0x3b, 0x3b, 0x07, 0x07, 0x03, 0x11, 0x0b, 0x18, 0x07, 0x42, 0x27, 0x21, 0x0b,
3680 +       0x40, 0x44, 0x45, 0x40, 0x40, 0x40, 0x04, 0x04, 0x00, 0x05, 0x08, 0x05, 0x09, 0x11, 0x00,
3681 +       0x42, 0x42, 0x16, 0x00, 0x47, 0x42, 0x42, 0x16, 0x15, 0x10, 0x19, 0x00, 0x05, 0x08, 0x05,
3682 +       0x09, 0x11, 0x00, 0x42, 0x42, 0x16, 0x00, 0x47, 0x42, 0x42, 0x16, 0x15, 0x10, 0x19, 0x20,
3683 +       0x43, 0x32, 0x40, 0x4c, 0x40, 0x04, 0x07, 0x04, 0x10, 0x10, 0x22, 0x08, 0x13, 0x41, 0x43,
3684 +       0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40,
3685 +       0x4c, 0x07, 0x0c, 0x0c, 0x18, 0x20, 0x18, 0x20, 0x0b, 0x17, 0x41, 0x43, 0x17, 0x41, 0x43,
3686 +       0x40, 0x40, 0x40, 0x0a, 0x0b, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x06, 0x2c, 0x27, 0x1c, 0x07,
3687 +       0x20, 0x1c, 0x18, 0x44, 0x1d, 0x13, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x1d, 0x0b, 0x29, 0x1d,
3688 +       0x1d, 0x0b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3689 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x1e, 0x04, 0x46, 0x40, 0x01, 0x51, 0x5e, 0x2c,
3690 +       0x40, 0x04, 0x40, 0x40, 0x41, 0x0f, 0x04, 0x18, 0x40, 0x14, 0x0b, 0x18, 0x24, 0x3e, 0x3e,
3691 +       0x07, 0x07, 0x03, 0x0f, 0x0b, 0x19, 0x07, 0x41, 0x27, 0x23, 0x0b, 0x40, 0x44, 0x46, 0x40,
3692 +       0x40, 0x40, 0x04, 0x04, 0x01, 0x06, 0x09, 0x06, 0x0b, 0x13, 0x01, 0x41, 0x41, 0x18, 0x01,
3693 +       0x46, 0x41, 0x41, 0x18, 0x16, 0x11, 0x1b, 0x01, 0x06, 0x09, 0x06, 0x0b, 0x13, 0x01, 0x41,
3694 +       0x41, 0x18, 0x01, 0x46, 0x41, 0x41, 0x18, 0x16, 0x11, 0x1b, 0x21, 0x43, 0x34, 0x40, 0x4c,
3695 +       0x40, 0x04, 0x07, 0x04, 0x11, 0x11, 0x24, 0x09, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x13,
3696 +       0x41, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x4c, 0x07, 0x0c, 0x0c,
3697 +       0x19, 0x21, 0x19, 0x21, 0x0b, 0x17, 0x41, 0x43, 0x17, 0x41, 0x43, 0x40, 0x40, 0x40, 0x09,
3698 +       0x0b, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x06, 0x2c, 0x27, 0x1c, 0x07, 0x21, 0x1c, 0x19, 0x44,
3699 +       0x1c, 0x13, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x1e, 0x0b, 0x2b, 0x1e, 0x1e, 0x0b, 0x40, 0x40,
3700 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3701 +       0x00, 0x07, 0x3e, 0x1f, 0x05, 0x45, 0x40, 0x00, 0x52, 0x5f, 0x2d, 0x40, 0x05, 0x40, 0x40,
3702 +       0x42, 0x0f, 0x05, 0x19, 0x40, 0x15, 0x0c, 0x19, 0x26, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0e,
3703 +       0x0a, 0x1a, 0x07, 0x40, 0x27, 0x24, 0x0a, 0x40, 0x45, 0x47, 0x40, 0x40, 0x40, 0x05, 0x05,
3704 +       0x02, 0x07, 0x0a, 0x07, 0x0c, 0x14, 0x02, 0x40, 0x40, 0x19, 0x02, 0x45, 0x40, 0x40, 0x19,
3705 +       0x17, 0x12, 0x1c, 0x02, 0x07, 0x0a, 0x07, 0x0c, 0x14, 0x02, 0x40, 0x40, 0x19, 0x02, 0x45,
3706 +       0x40, 0x40, 0x19, 0x17, 0x12, 0x1c, 0x22, 0x42, 0x36, 0x40, 0x4d, 0x40, 0x05, 0x07, 0x05,
3707 +       0x12, 0x12, 0x26, 0x0a, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07,
3708 +       0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x4d, 0x07, 0x0d, 0x0d, 0x1a, 0x22, 0x1a, 0x22,
3709 +       0x0a, 0x17, 0x42, 0x42, 0x17, 0x42, 0x42, 0x40, 0x40, 0x40, 0x08, 0x0a, 0x0a, 0x40, 0x0f,
3710 +       0x0a, 0x05, 0x05, 0x2d, 0x27, 0x1d, 0x07, 0x22, 0x1d, 0x1a, 0x45, 0x1b, 0x12, 0x0a, 0x40,
3711 +       0x0f, 0x0a, 0x05, 0x1f, 0x0a, 0x2c, 0x1f, 0x1f, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3712 +       0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x20,
3713 +       0x05, 0x45, 0x40, 0x40, 0x52, 0x60, 0x2d, 0x40, 0x05, 0x40, 0x40, 0x42, 0x0f, 0x05, 0x1b,
3714 +       0x40, 0x15, 0x0d, 0x1b, 0x28, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0c, 0x0a, 0x1a, 0x07, 0x00,
3715 +       0x27, 0x25, 0x0a, 0x40, 0x45, 0x48, 0x40, 0x40, 0x40, 0x05, 0x05, 0x02, 0x08, 0x0a, 0x08,
3716 +       0x0d, 0x15, 0x02, 0x00, 0x00, 0x1b, 0x02, 0x45, 0x00, 0x00, 0x1b, 0x18, 0x12, 0x1d, 0x02,
3717 +       0x08, 0x0a, 0x08, 0x0d, 0x15, 0x02, 0x00, 0x00, 0x1b, 0x02, 0x45, 0x00, 0x00, 0x1b, 0x18,
3718 +       0x12, 0x1d, 0x22, 0x42, 0x38, 0x40, 0x4d, 0x40, 0x05, 0x07, 0x05, 0x12, 0x12, 0x28, 0x0a,
3719 +       0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42,
3720 +       0x1d, 0x07, 0x40, 0x4d, 0x07, 0x0d, 0x0d, 0x1a, 0x22, 0x1a, 0x22, 0x0a, 0x17, 0x42, 0x42,
3721 +       0x17, 0x42, 0x42, 0x40, 0x40, 0x40, 0x07, 0x0a, 0x0a, 0x40, 0x0f, 0x0a, 0x05, 0x05, 0x2d,
3722 +       0x27, 0x1d, 0x07, 0x22, 0x1d, 0x1a, 0x45, 0x1a, 0x12, 0x0a, 0x40, 0x0f, 0x0a, 0x05, 0x20,
3723 +       0x0a, 0x2d, 0x20, 0x20, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
3724 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x21, 0x05, 0x44, 0x40, 0x41,
3725 +       0x53, 0x61, 0x2d, 0x40, 0x05, 0x40, 0x40, 0x43, 0x0f, 0x05, 0x1c, 0x40, 0x15, 0x0e, 0x1c,
3726 +       0x2a, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0b, 0x0a, 0x1b, 0x07, 0x01, 0x27, 0x26, 0x0a, 0x40,
3727 +       0x45, 0x49, 0x40, 0x40, 0x40, 0x05, 0x05, 0x03, 0x09, 0x0b, 0x09, 0x0e, 0x16, 0x03, 0x01,
3728 +       0x01, 0x1c, 0x03, 0x44, 0x01, 0x01, 0x1c, 0x19, 0x13, 0x1e, 0x03, 0x09, 0x0b, 0x09, 0x0e,
3729 +       0x16, 0x03, 0x01, 0x01, 0x1c, 0x03, 0x44, 0x01, 0x01, 0x1c, 0x19, 0x13, 0x1e, 0x23, 0x42,
3730 +       0x3a, 0x40, 0x4d, 0x40, 0x05, 0x07, 0x05, 0x13, 0x13, 0x2a, 0x0b, 0x12, 0x43, 0x42, 0x1d,
3731 +       0x07, 0x40, 0x12, 0x43, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x43, 0x42, 0x1d, 0x07, 0x40, 0x4d,
3732 +       0x07, 0x0d, 0x0d, 0x1b, 0x23, 0x1b, 0x23, 0x0a, 0x17, 0x43, 0x42, 0x17, 0x43, 0x42, 0x40,
3733 +       0x40, 0x40, 0x06, 0x0a, 0x0a, 0x40, 0x0f, 0x0a, 0x04, 0x04, 0x2d, 0x27, 0x1d, 0x07, 0x23,
3734 +       0x1d, 0x1b, 0x45, 0x18, 0x12, 0x0a, 0x40, 0x0f, 0x0a, 0x04, 0x21, 0x0a, 0x2e, 0x21, 0x21,
3735 +       0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3736 +       0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x22, 0x06, 0x43, 0x40, 0x42, 0x54, 0x62, 0x2e, 0x40,
3737 +       0x06, 0x40, 0x40, 0x44, 0x0f, 0x06, 0x1e, 0x40, 0x16, 0x10, 0x1e, 0x2c, 0x3e, 0x3e, 0x07,
3738 +       0x07, 0x01, 0x09, 0x09, 0x1c, 0x07, 0x02, 0x27, 0x28, 0x09, 0x40, 0x46, 0x4a, 0x40, 0x40,
3739 +       0x40, 0x06, 0x06, 0x04, 0x0a, 0x0c, 0x0a, 0x10, 0x18, 0x04, 0x02, 0x02, 0x1e, 0x04, 0x43,
3740 +       0x02, 0x02, 0x1e, 0x1a, 0x14, 0x20, 0x04, 0x0a, 0x0c, 0x0a, 0x10, 0x18, 0x04, 0x02, 0x02,
3741 +       0x1e, 0x04, 0x43, 0x02, 0x02, 0x1e, 0x1a, 0x14, 0x20, 0x24, 0x41, 0x3c, 0x40, 0x4e, 0x40,
3742 +       0x06, 0x07, 0x06, 0x14, 0x14, 0x2c, 0x0c, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x44,
3743 +       0x41, 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x4e, 0x07, 0x0e, 0x0e, 0x1c,
3744 +       0x24, 0x1c, 0x24, 0x09, 0x17, 0x44, 0x41, 0x17, 0x44, 0x41, 0x40, 0x40, 0x40, 0x05, 0x09,
3745 +       0x09, 0x40, 0x0f, 0x09, 0x03, 0x03, 0x2e, 0x27, 0x1e, 0x07, 0x24, 0x1e, 0x1c, 0x46, 0x17,
3746 +       0x11, 0x09, 0x40, 0x0f, 0x09, 0x03, 0x22, 0x09, 0x30, 0x22, 0x22, 0x09, 0x40, 0x40, 0x40,
3747 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3748 +       0x07, 0x3e, 0x23, 0x06, 0x43, 0x40, 0x43, 0x54, 0x63, 0x2e, 0x40, 0x06, 0x40, 0x40, 0x44,
3749 +       0x0f, 0x06, 0x1f, 0x40, 0x16, 0x11, 0x1f, 0x2e, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x08, 0x09,
3750 +       0x1c, 0x07, 0x03, 0x27, 0x29, 0x09, 0x40, 0x46, 0x4b, 0x40, 0x40, 0x40, 0x06, 0x06, 0x04,
3751 +       0x0b, 0x0c, 0x0b, 0x11, 0x19, 0x04, 0x03, 0x03, 0x1f, 0x04, 0x43, 0x03, 0x03, 0x1f, 0x1b,
3752 +       0x14, 0x21, 0x04, 0x0b, 0x0c, 0x0b, 0x11, 0x19, 0x04, 0x03, 0x03, 0x1f, 0x04, 0x43, 0x03,
3753 +       0x03, 0x1f, 0x1b, 0x14, 0x21, 0x24, 0x41, 0x3e, 0x40, 0x4e, 0x40, 0x06, 0x07, 0x06, 0x14,
3754 +       0x14, 0x2e, 0x0c, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40,
3755 +       0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x4e, 0x07, 0x0e, 0x0e, 0x1c, 0x24, 0x1c, 0x24, 0x09,
3756 +       0x17, 0x44, 0x41, 0x17, 0x44, 0x41, 0x40, 0x40, 0x40, 0x04, 0x09, 0x09, 0x40, 0x0f, 0x09,
3757 +       0x03, 0x03, 0x2e, 0x27, 0x1e, 0x07, 0x24, 0x1e, 0x1c, 0x46, 0x16, 0x11, 0x09, 0x40, 0x0f,
3758 +       0x09, 0x03, 0x23, 0x09, 0x31, 0x23, 0x23, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
3759 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x24, 0x06,
3760 +       0x42, 0x40, 0x44, 0x55, 0x64, 0x2e, 0x40, 0x06, 0x40, 0x40, 0x45, 0x0f, 0x06, 0x21, 0x40,
3761 +       0x16, 0x12, 0x21, 0x30, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x06, 0x09, 0x1d, 0x07, 0x04, 0x27,
3762 +       0x2a, 0x09, 0x40, 0x46, 0x4c, 0x40, 0x40, 0x40, 0x06, 0x06, 0x05, 0x0c, 0x0d, 0x0c, 0x12,
3763 +       0x1a, 0x05, 0x04, 0x04, 0x21, 0x05, 0x42, 0x04, 0x04, 0x21, 0x1c, 0x15, 0x22, 0x05, 0x0c,
3764 +       0x0d, 0x0c, 0x12, 0x1a, 0x05, 0x04, 0x04, 0x21, 0x05, 0x42, 0x04, 0x04, 0x21, 0x1c, 0x15,
3765 +       0x22, 0x25, 0x41, 0x3e, 0x40, 0x4e, 0x40, 0x06, 0x07, 0x06, 0x15, 0x15, 0x30, 0x0d, 0x11,
3766 +       0x45, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x45, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x45, 0x41, 0x1e,
3767 +       0x07, 0x40, 0x4e, 0x07, 0x0e, 0x0e, 0x1d, 0x25, 0x1d, 0x25, 0x09, 0x17, 0x45, 0x41, 0x17,
3768 +       0x45, 0x41, 0x40, 0x40, 0x40, 0x03, 0x09, 0x09, 0x40, 0x0f, 0x09, 0x02, 0x02, 0x2e, 0x27,
3769 +       0x1e, 0x07, 0x25, 0x1e, 0x1d, 0x46, 0x15, 0x11, 0x09, 0x40, 0x0f, 0x09, 0x02, 0x24, 0x09,
3770 +       0x32, 0x24, 0x24, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
3771 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x24, 0x06, 0x42, 0x40, 0x45, 0x56,
3772 +       0x65, 0x2e, 0x40, 0x06, 0x40, 0x40, 0x46, 0x0f, 0x06, 0x22, 0x40, 0x16, 0x13, 0x22, 0x31,
3773 +       0x3e, 0x3e, 0x07, 0x07, 0x00, 0x04, 0x08, 0x1d, 0x07, 0x04, 0x27, 0x2b, 0x08, 0x40, 0x47,
3774 +       0x4d, 0x40, 0x40, 0x40, 0x06, 0x06, 0x05, 0x0c, 0x0d, 0x0c, 0x13, 0x1b, 0x05, 0x04, 0x04,
3775 +       0x22, 0x05, 0x42, 0x04, 0x04, 0x22, 0x1c, 0x15, 0x23, 0x05, 0x0c, 0x0d, 0x0c, 0x13, 0x1b,
3776 +       0x05, 0x04, 0x04, 0x22, 0x05, 0x42, 0x04, 0x04, 0x22, 0x1c, 0x15, 0x23, 0x25, 0x41, 0x3e,
3777 +       0x40, 0x4f, 0x40, 0x06, 0x07, 0x06, 0x15, 0x15, 0x31, 0x0d, 0x10, 0x46, 0x41, 0x1e, 0x07,
3778 +       0x40, 0x10, 0x46, 0x41, 0x1e, 0x07, 0x40, 0x10, 0x46, 0x41, 0x1e, 0x07, 0x40, 0x4f, 0x07,
3779 +       0x0e, 0x0e, 0x1d, 0x25, 0x1d, 0x25, 0x08, 0x17, 0x46, 0x41, 0x17, 0x46, 0x41, 0x40, 0x40,
3780 +       0x40, 0x02, 0x08, 0x08, 0x40, 0x0f, 0x08, 0x01, 0x01, 0x2e, 0x27, 0x1e, 0x07, 0x25, 0x1e,
3781 +       0x1d, 0x47, 0x13, 0x10, 0x08, 0x40, 0x0f, 0x08, 0x01, 0x24, 0x08, 0x33, 0x24, 0x24, 0x08,
3782 +       0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3783 +       0x00, 0x00, 0x00, 0x07, 0x3e, 0x25, 0x07, 0x41, 0x40, 0x45, 0x56, 0x65, 0x2f, 0x40, 0x07,
3784 +       0x40, 0x40, 0x46, 0x0f, 0x07, 0x24, 0x40, 0x17, 0x15, 0x24, 0x33, 0x3e, 0x3e, 0x07, 0x07,
3785 +       0x00, 0x03, 0x08, 0x1e, 0x07, 0x05, 0x27, 0x2d, 0x08, 0x40, 0x47, 0x4d, 0x40, 0x40, 0x40,
3786 +       0x07, 0x07, 0x06, 0x0d, 0x0e, 0x0d, 0x15, 0x1d, 0x06, 0x05, 0x05, 0x24, 0x06, 0x41, 0x05,
3787 +       0x05, 0x24, 0x1d, 0x16, 0x25, 0x06, 0x0d, 0x0e, 0x0d, 0x15, 0x1d, 0x06, 0x05, 0x05, 0x24,
3788 +       0x06, 0x41, 0x05, 0x05, 0x24, 0x1d, 0x16, 0x25, 0x26, 0x40, 0x3e, 0x40, 0x4f, 0x40, 0x07,
3789 +       0x07, 0x07, 0x16, 0x16, 0x33, 0x0e, 0x10, 0x46, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x46, 0x40,
3790 +       0x1f, 0x07, 0x40, 0x10, 0x46, 0x40, 0x1f, 0x07, 0x40, 0x4f, 0x07, 0x0f, 0x0f, 0x1e, 0x26,
3791 +       0x1e, 0x26, 0x08, 0x17, 0x46, 0x40, 0x17, 0x46, 0x40, 0x40, 0x40, 0x40, 0x02, 0x08, 0x08,
3792 +       0x40, 0x0f, 0x08, 0x01, 0x01, 0x2f, 0x27, 0x1f, 0x07, 0x26, 0x1f, 0x1e, 0x47, 0x12, 0x10,
3793 +       0x08, 0x40, 0x0f, 0x08, 0x01, 0x25, 0x08, 0x35, 0x25, 0x25, 0x08, 0x40, 0x40, 0x40, 0x40,
3794 +       0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
3795 +       0x3e, 0x26, 0x07, 0x40, 0x40, 0x46, 0x57, 0x66, 0x2f, 0x40, 0x07, 0x40, 0x40, 0x47, 0x0f,
3796 +       0x07, 0x26, 0x40, 0x17, 0x16, 0x26, 0x35, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x01, 0x08, 0x1f,
3797 +       0x07, 0x06, 0x27, 0x2e, 0x08, 0x40, 0x47, 0x4e, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x0e,
3798 +       0x0f, 0x0e, 0x16, 0x1e, 0x07, 0x06, 0x06, 0x26, 0x07, 0x40, 0x06, 0x06, 0x26, 0x1e, 0x17,
3799 +       0x26, 0x07, 0x0e, 0x0f, 0x0e, 0x16, 0x1e, 0x07, 0x06, 0x06, 0x26, 0x07, 0x40, 0x06, 0x06,
3800 +       0x26, 0x1e, 0x17, 0x26, 0x27, 0x40, 0x3e, 0x40, 0x4f, 0x40, 0x07, 0x07, 0x07, 0x17, 0x17,
3801 +       0x35, 0x0f, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10,
3802 +       0x47, 0x40, 0x1f, 0x07, 0x40, 0x4f, 0x07, 0x0f, 0x0f, 0x1f, 0x27, 0x1f, 0x27, 0x08, 0x17,
3803 +       0x47, 0x40, 0x17, 0x47, 0x40, 0x40, 0x40, 0x40, 0x01, 0x08, 0x08, 0x40, 0x0f, 0x08, 0x00,
3804 +       0x00, 0x2f, 0x27, 0x1f, 0x07, 0x27, 0x1f, 0x1f, 0x47, 0x11, 0x10, 0x08, 0x40, 0x0f, 0x08,
3805 +       0x00, 0x26, 0x08, 0x36, 0x26, 0x26, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
3806 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x27, 0x07, 0x40,
3807 +       0x40, 0x47, 0x57, 0x67, 0x2f, 0x40, 0x07, 0x40, 0x40, 0x47, 0x0f, 0x07, 0x27, 0x40, 0x17,
3808 +       0x17, 0x27, 0x37, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x00, 0x08, 0x1f, 0x07, 0x07, 0x27, 0x2f,
3809 +       0x08, 0x40, 0x47, 0x4f, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x17, 0x1f,
3810 +       0x07, 0x07, 0x07, 0x27, 0x07, 0x40, 0x07, 0x07, 0x27, 0x1f, 0x17, 0x27, 0x07, 0x0f, 0x0f,
3811 +       0x0f, 0x17, 0x1f, 0x07, 0x07, 0x07, 0x27, 0x07, 0x40, 0x07, 0x07, 0x27, 0x1f, 0x17, 0x27,
3812 +       0x27, 0x40, 0x3e, 0x40, 0x4f, 0x40, 0x07, 0x07, 0x07, 0x17, 0x17, 0x37, 0x0f, 0x10, 0x47,
3813 +       0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07,
3814 +       0x40, 0x4f, 0x07, 0x0f, 0x0f, 0x1f, 0x27, 0x1f, 0x27, 0x08, 0x17, 0x47, 0x40, 0x17, 0x47,
3815 +       0x40, 0x40, 0x40, 0x40, 0x00, 0x08, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x00, 0x2f, 0x27, 0x1f,
3816 +       0x07, 0x27, 0x1f, 0x1f, 0x47, 0x10, 0x10, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x27, 0x08, 0x37,
3817 +       0x27, 0x27, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
3818 +       0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3819 +};
3820 +
3821 diff --git a/drivers/staging/media/rkvdec/rkvdec-hevc.c b/drivers/staging/media/rkvdec/rkvdec-hevc.c
3822 new file mode 100644
3823 index 000000000000..d3802ba613ab
3824 --- /dev/null
3825 +++ b/drivers/staging/media/rkvdec/rkvdec-hevc.c
3826 @@ -0,0 +1,910 @@
3827 +// SPDX-License-Identifier: GPL-2.0
3828 +/*
3829 + * Rockchip Video Decoder HEVC backend
3830 + *
3831 + * Copyright (C) 2023 Collabora, Ltd.
3832 + *      Sebastian Fricke <sebastian.fricke@collabora.com>
3833 + *
3834 + * Copyright (C) 2019 Collabora, Ltd.
3835 + *     Boris Brezillon <boris.brezillon@collabora.com>
3836 + *
3837 + * Copyright (C) 2016 Rockchip Electronics Co., Ltd.
3838 + *     Jeffy Chen <jeffy.chen@rock-chips.com>
3839 + */
3840 +
3841 +#include <media/v4l2-mem2mem.h>
3842 +
3843 +#include "rkvdec.h"
3844 +#include "rkvdec-regs.h"
3845 +#include "rkvdec-hevc-data.c"
3846 +
3847 +/* Size in u8/u32 units. */
3848 +#define RKV_SCALING_LIST_SIZE          1360
3849 +#define SCALING_LIST_SIZE_NUM          4
3850 +#define RKV_PPS_SIZE                   (80 / 4)
3851 +#define RKV_PPS_LEN                    64
3852 +#define RKV_RPS_SIZE                   (32 / 4)
3853 +#define RKV_RPS_LEN                    600
3854 +#define RKV_PPS_MAX_COLUMNS            20
3855 +#define RKV_PPS_MAX_ROWS               22
3856 +#define RKV_RPS_MAX_REFERENCES         15
3857 +#define RKV_MAX_DEPTH_IN_BYTES         2
3858 +
3859 +struct rkvdec_sps_pps_packet {
3860 +       u32 info[RKV_PPS_SIZE];
3861 +};
3862 +
3863 +struct rkvdec_rps_packet {
3864 +       u32 info[RKV_RPS_SIZE];
3865 +};
3866 +
3867 +struct rkvdec_ps_field {
3868 +       u16 offset;
3869 +       u8 len;
3870 +};
3871 +
3872 +#define PS_FIELD(_offset, _len) \
3873 +       ((struct rkvdec_ps_field){ _offset, _len })
3874 +
3875 +/* SPS */
3876 +#define VIDEO_PARAMETER_SET_ID                         PS_FIELD(0, 4)
3877 +#define SEQ_PARAMETER_SET_ID                           PS_FIELD(4, 4)
3878 +#define CHROMA_FORMAT_IDC                              PS_FIELD(8, 2)
3879 +#define PIC_WIDTH_IN_LUMA_SAMPLES                      PS_FIELD(10, 13)
3880 +#define PIC_HEIGHT_IN_LUMA_SAMPLES                     PS_FIELD(23, 13)
3881 +#define BIT_DEPTH_LUMA                                 PS_FIELD(36, 4)
3882 +#define BIT_DEPTH_CHROMA                               PS_FIELD(40, 4)
3883 +#define LOG2_MAX_PIC_ORDER_CNT_LSB                     PS_FIELD(44, 5)
3884 +#define LOG2_DIFF_MAX_MIN_LUMA_CODING_BLOCK_SIZE       PS_FIELD(49, 2)
3885 +#define LOG2_MIN_LUMA_CODING_BLOCK_SIZE                        PS_FIELD(51, 3)
3886 +#define LOG2_MIN_TRANSFORM_BLOCK_SIZE                  PS_FIELD(54, 3)
3887 +#define LOG2_DIFF_MAX_MIN_LUMA_TRANSFORM_BLOCK_SIZE    PS_FIELD(57, 2)
3888 +#define MAX_TRANSFORM_HIERARCHY_DEPTH_INTER            PS_FIELD(59, 3)
3889 +#define MAX_TRANSFORM_HIERARCHY_DEPTH_INTRA            PS_FIELD(62, 3)
3890 +#define SCALING_LIST_ENABLED_FLAG                      PS_FIELD(65, 1)
3891 +#define AMP_ENABLED_FLAG                               PS_FIELD(66, 1)
3892 +#define SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG            PS_FIELD(67, 1)
3893 +#define PCM_ENABLED_FLAG                               PS_FIELD(68, 1)
3894 +#define PCM_SAMPLE_BIT_DEPTH_LUMA                      PS_FIELD(69, 4)
3895 +#define PCM_SAMPLE_BIT_DEPTH_CHROMA                    PS_FIELD(73, 4)
3896 +#define PCM_LOOP_FILTER_DISABLED_FLAG                  PS_FIELD(77, 1)
3897 +#define LOG2_DIFF_MAX_MIN_PCM_LUMA_CODING_BLOCK_SIZE   PS_FIELD(78, 3)
3898 +#define LOG2_MIN_PCM_LUMA_CODING_BLOCK_SIZE            PS_FIELD(81, 3)
3899 +#define NUM_SHORT_TERM_REF_PIC_SETS                    PS_FIELD(84, 7)
3900 +#define LONG_TERM_REF_PICS_PRESENT_FLAG                        PS_FIELD(91, 1)
3901 +#define NUM_LONG_TERM_REF_PICS_SPS                     PS_FIELD(92, 6)
3902 +#define SPS_TEMPORAL_MVP_ENABLED_FLAG                  PS_FIELD(98, 1)
3903 +#define STRONG_INTRA_SMOOTHING_ENABLED_FLAG            PS_FIELD(99, 1)
3904 +#define PPS_MBZ_1                                      PS_FIELD(100, 7)
3905 +#define PPS_MBO_1                                      PS_FIELD(107, 21)
3906 +/* PPS */
3907 +#define PIC_PARAMETER_SET_ID                           PS_FIELD(128, 6)
3908 +#define PPS_SEQ_PARAMETER_SET_ID                       PS_FIELD(134, 4)
3909 +#define DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG          PS_FIELD(138, 1)
3910 +#define OUTPUT_FLAG_PRESENT_FLAG                       PS_FIELD(139, 1)
3911 +#define NUM_EXTRA_SLICE_HEADER_BITS                    PS_FIELD(140, 13)
3912 +#define SIGN_DATA_HIDING_ENABLED_FLAG                  PS_FIELD(153, 1)
3913 +#define CABAC_INIT_PRESENT_FLAG                                PS_FIELD(154, 1)
3914 +#define NUM_REF_IDX_L0_DEFAULT_ACTIVE                  PS_FIELD(155, 4)
3915 +#define NUM_REF_IDX_L1_DEFAULT_ACTIVE                  PS_FIELD(159, 4)
3916 +#define INIT_QP_MINUS26                                        PS_FIELD(163, 7)
3917 +#define CONSTRAINED_INTRA_PRED_FLAG                    PS_FIELD(170, 1)
3918 +#define TRANSFORM_SKIP_ENABLED_FLAG                    PS_FIELD(171, 1)
3919 +#define CU_QP_DELTA_ENABLED_FLAG                       PS_FIELD(172, 1)
3920 +#define LOG2_MIN_CU_QP_DELTA_SIZE                      PS_FIELD(173, 3)
3921 +#define PPS_CB_QP_OFFSET                               PS_FIELD(176, 5)
3922 +#define PPS_CR_QP_OFFSET                               PS_FIELD(181, 5)
3923 +#define PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG       PS_FIELD(186, 1)
3924 +#define WEIGHTED_PRED_FLAG                             PS_FIELD(187, 1)
3925 +#define WEIGHTED_BIPRED_FLAG                           PS_FIELD(188, 1)
3926 +#define TRANSQUANT_BYPASS_ENABLED_FLAG                 PS_FIELD(189, 1)
3927 +#define TILES_ENABLED_FLAG                             PS_FIELD(190, 1)
3928 +#define ENTROPY_CODING_SYNC_ENABLED_FLAG               PS_FIELD(191, 1)
3929 +#define PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED_FLAG     PS_FIELD(192, 1)
3930 +#define LOOP_FILTER_ACROSS_TILES_ENABLED_FLAG          PS_FIELD(193, 1)
3931 +#define DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG                PS_FIELD(194, 1)
3932 +#define PPS_DEBLOCKING_FILTER_DISABLED_FLAG            PS_FIELD(195, 1)
3933 +#define PPS_BETA_OFFSET_DIV2                           PS_FIELD(196, 4)
3934 +#define PPS_TC_OFFSET_DIV2                             PS_FIELD(200, 4)
3935 +#define LISTS_MODIFICATION_PRESENT_FLAG                        PS_FIELD(204, 1)
3936 +#define LOG2_PARALLEL_MERGE_LEVEL                      PS_FIELD(205, 3)
3937 +#define SLICE_SEGMENT_HEADER_EXTENSION_PRESENT_FLAG    PS_FIELD(208, 1)
3938 +#define PPS_MBZ_2                                      PS_FIELD(209, 3)
3939 +#define NUM_TILE_COLUMNS                               PS_FIELD(212, 5)
3940 +#define NUM_TILE_ROWS                                  PS_FIELD(217, 5)
3941 +#define PPS_M_MODE                                     PS_FIELD(222, 2)
3942 +#define PPS_MBO_2                                      PS_FIELD(224, 30)
3943 +#define COLUMN_WIDTH(i)                                        PS_FIELD(256 + ((i) * 8), 8)
3944 +#define ROW_HEIGHT(i)                                  PS_FIELD(416 + ((i) * 8), 8)
3945 +#define SCALING_LIST_ADDRESS                           PS_FIELD(592, 32)
3946 +#define PPS_MBO_3                                      PS_FIELD(624, 16)
3947 +
3948 +/* Data structure describing auxiliary buffer format. */
3949 +struct rkvdec_hevc_priv_tbl {
3950 +       u8 cabac_table[RKV_CABAC_TABLE_SIZE];
3951 +       u8 scaling_list[RKV_SCALING_LIST_SIZE];
3952 +       struct rkvdec_sps_pps_packet param_set[RKV_PPS_LEN];
3953 +       struct rkvdec_rps_packet rps[RKV_RPS_LEN];
3954 +};
3955 +
3956 +struct rkvdec_hevc_run {
3957 +       struct rkvdec_run base;
3958 +       const struct v4l2_ctrl_hevc_slice_params *slices_params;
3959 +       const struct v4l2_ctrl_hevc_decode_params *decode_params;
3960 +       const struct v4l2_ctrl_hevc_sps *sps;
3961 +       const struct v4l2_ctrl_hevc_pps *pps;
3962 +       const struct v4l2_ctrl_hevc_scaling_matrix *scaling_matrix;
3963 +       int num_slices;
3964 +};
3965 +
3966 +struct rkvdec_hevc_ctx {
3967 +       struct rkvdec_aux_buf priv_tbl;
3968 +       struct v4l2_ctrl_hevc_scaling_matrix scaling_matrix_cache;
3969 +};
3970 +
3971 +struct scaling_factor {
3972 +       u8 scalingfactor0[1248];
3973 +       u8 scalingfactor1[96];          /*4X4 TU Rotate, total 16X4*/
3974 +       u8 scalingdc[12];               /*N1005 Vienna Meeting*/
3975 +       u8 reserved[4];         /*16Bytes align*/
3976 +};
3977 +
3978 +static void set_ps_field(u32 *buf, struct rkvdec_ps_field field, u32 value)
3979 +{
3980 +       u8 bit = field.offset % 32, word = field.offset / 32;
3981 +       u64 mask = GENMASK_ULL(bit + field.len - 1, bit);
3982 +       u64 val = ((u64)value << bit) & mask;
3983 +
3984 +       buf[word] &= ~mask;
3985 +       buf[word] |= val;
3986 +       if (bit + field.len > 32) {
3987 +               buf[word + 1] &= ~(mask >> 32);
3988 +               buf[word + 1] |= val >> 32;
3989 +       }
3990 +}
3991 +
3992 +static void assemble_hw_pps(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run)
3993 +{
3994 +       struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
3995 +       const struct v4l2_ctrl_hevc_sps *sps = run->sps;
3996 +       const struct v4l2_ctrl_hevc_pps *pps = run->pps;
3997 +       struct rkvdec_hevc_priv_tbl *priv_tbl = hevc_ctx->priv_tbl.cpu;
3998 +       struct rkvdec_sps_pps_packet *hw_ps;
3999 +       u8 pcm_enabled = 0;
4000 +       u32 min_cb_log2_size_y, ctb_log2_size_y, ctb_size_y;
4001 +       u32 width, height, max_min_cb_size, x, pic_in_cts_width, pic_in_cts_height;
4002 +       u32 log2_min_cu_qp_delta_size, scaling_distance;
4003 +       dma_addr_t scaling_list_address;
4004 +       int i;
4005 +       u32 tmp_w = 0;
4006 +       u32 prev_w = 0;
4007 +       u32 tmp_h = 0;
4008 +       u32 prev_h = 0;
4009 +       u16 column_width[RKV_PPS_MAX_COLUMNS] = {0};
4010 +       u16 row_height[RKV_PPS_MAX_ROWS] = {0};
4011 +
4012 +       /*
4013 +        * HW read the SPS/PPS information from PPS packet index by PPS id.
4014 +        * offset from the base can be calculated by PPS_id * 80 (size per PPS
4015 +        * packet unit). so the driver copy SPS/PPS information to the exact PPS
4016 +        * packet unit for HW accessing.
4017 +        */
4018 +       hw_ps = &priv_tbl->param_set[pps->pic_parameter_set_id];
4019 +       memset(hw_ps, 0, sizeof(*hw_ps));
4020 +
4021 +       min_cb_log2_size_y = sps->log2_min_luma_coding_block_size_minus3 + 3;
4022 +       width = sps->pic_width_in_luma_samples;
4023 +       height = sps->pic_height_in_luma_samples;
4024 +       max_min_cb_size = sps->log2_diff_max_min_luma_coding_block_size;
4025 +
4026 +#define WRITE_PPS(value, field) set_ps_field(hw_ps->info, field, value)
4027 +       /* write sps */
4028 +       WRITE_PPS(sps->video_parameter_set_id, VIDEO_PARAMETER_SET_ID);
4029 +       WRITE_PPS(sps->seq_parameter_set_id, SEQ_PARAMETER_SET_ID);
4030 +       WRITE_PPS(sps->chroma_format_idc, CHROMA_FORMAT_IDC);
4031 +       WRITE_PPS(sps->pic_width_in_luma_samples, PIC_WIDTH_IN_LUMA_SAMPLES);
4032 +       WRITE_PPS(sps->pic_height_in_luma_samples, PIC_HEIGHT_IN_LUMA_SAMPLES);
4033 +       WRITE_PPS(sps->bit_depth_luma_minus8 + 8, BIT_DEPTH_LUMA);
4034 +       WRITE_PPS(sps->bit_depth_chroma_minus8 + 8, BIT_DEPTH_CHROMA);
4035 +       WRITE_PPS(sps->log2_max_pic_order_cnt_lsb_minus4 + 4,
4036 +                 LOG2_MAX_PIC_ORDER_CNT_LSB);
4037 +       WRITE_PPS(sps->log2_diff_max_min_luma_coding_block_size,
4038 +                 LOG2_DIFF_MAX_MIN_LUMA_CODING_BLOCK_SIZE);
4039 +       WRITE_PPS(sps->log2_min_luma_coding_block_size_minus3 + 3,
4040 +                 LOG2_MIN_LUMA_CODING_BLOCK_SIZE);
4041 +       WRITE_PPS(sps->log2_min_luma_transform_block_size_minus2 + 2,
4042 +                 LOG2_MIN_TRANSFORM_BLOCK_SIZE);
4043 +       WRITE_PPS(sps->log2_diff_max_min_luma_transform_block_size,
4044 +                 LOG2_DIFF_MAX_MIN_LUMA_TRANSFORM_BLOCK_SIZE);
4045 +       WRITE_PPS(sps->max_transform_hierarchy_depth_inter,
4046 +                 MAX_TRANSFORM_HIERARCHY_DEPTH_INTER);
4047 +       WRITE_PPS(sps->max_transform_hierarchy_depth_intra,
4048 +                 MAX_TRANSFORM_HIERARCHY_DEPTH_INTRA);
4049 +       WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED),
4050 +                 SCALING_LIST_ENABLED_FLAG);
4051 +       WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_AMP_ENABLED),
4052 +                 AMP_ENABLED_FLAG);
4053 +       WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET),
4054 +                 SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG);
4055 +       pcm_enabled = !!(sps->flags & V4L2_HEVC_SPS_FLAG_PCM_ENABLED);
4056 +       WRITE_PPS(pcm_enabled, PCM_ENABLED_FLAG);
4057 +       WRITE_PPS(pcm_enabled ? sps->pcm_sample_bit_depth_luma_minus1 + 1 : 0,
4058 +                 PCM_SAMPLE_BIT_DEPTH_LUMA);
4059 +       WRITE_PPS(pcm_enabled ? sps->pcm_sample_bit_depth_chroma_minus1 + 1 : 0,
4060 +                 PCM_SAMPLE_BIT_DEPTH_CHROMA);
4061 +       WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED),
4062 +                 PCM_LOOP_FILTER_DISABLED_FLAG);
4063 +       WRITE_PPS(sps->log2_diff_max_min_pcm_luma_coding_block_size,
4064 +                 LOG2_DIFF_MAX_MIN_PCM_LUMA_CODING_BLOCK_SIZE);
4065 +       WRITE_PPS(pcm_enabled ? sps->log2_min_pcm_luma_coding_block_size_minus3 + 3 : 0,
4066 +                 LOG2_MIN_PCM_LUMA_CODING_BLOCK_SIZE);
4067 +       WRITE_PPS(sps->num_short_term_ref_pic_sets, NUM_SHORT_TERM_REF_PIC_SETS);
4068 +       WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT),
4069 +                 LONG_TERM_REF_PICS_PRESENT_FLAG);
4070 +       WRITE_PPS(sps->num_long_term_ref_pics_sps, NUM_LONG_TERM_REF_PICS_SPS);
4071 +       WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED),
4072 +                 SPS_TEMPORAL_MVP_ENABLED_FLAG);
4073 +       WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED),
4074 +                 STRONG_INTRA_SMOOTHING_ENABLED_FLAG);
4075 +       WRITE_PPS(0, PPS_MBZ_1);
4076 +       WRITE_PPS(0x1fffff, PPS_MBO_1);
4077 +
4078 +       /* write pps */
4079 +       WRITE_PPS(pps->pic_parameter_set_id, PIC_PARAMETER_SET_ID);
4080 +       WRITE_PPS(sps->seq_parameter_set_id, PPS_SEQ_PARAMETER_SET_ID);
4081 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED),
4082 +                 DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG);
4083 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT),
4084 +                 OUTPUT_FLAG_PRESENT_FLAG);
4085 +       WRITE_PPS(pps->num_extra_slice_header_bits, NUM_EXTRA_SLICE_HEADER_BITS);
4086 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED),
4087 +                 SIGN_DATA_HIDING_ENABLED_FLAG);
4088 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT),
4089 +                 CABAC_INIT_PRESENT_FLAG);
4090 +       WRITE_PPS(pps->num_ref_idx_l0_default_active_minus1 + 1,
4091 +                 NUM_REF_IDX_L0_DEFAULT_ACTIVE);
4092 +       WRITE_PPS(pps->num_ref_idx_l1_default_active_minus1 + 1,
4093 +                 NUM_REF_IDX_L1_DEFAULT_ACTIVE);
4094 +       WRITE_PPS(pps->init_qp_minus26, INIT_QP_MINUS26);
4095 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED),
4096 +                 CONSTRAINED_INTRA_PRED_FLAG);
4097 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED),
4098 +                 TRANSFORM_SKIP_ENABLED_FLAG);
4099 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED),
4100 +                 CU_QP_DELTA_ENABLED_FLAG);
4101 +
4102 +       ctb_log2_size_y = min_cb_log2_size_y +
4103 +               sps->log2_diff_max_min_luma_coding_block_size;
4104 +       ctb_size_y = 1 << ctb_log2_size_y;
4105 +       log2_min_cu_qp_delta_size = ctb_log2_size_y - pps->diff_cu_qp_delta_depth;
4106 +       WRITE_PPS(log2_min_cu_qp_delta_size, LOG2_MIN_CU_QP_DELTA_SIZE);
4107 +       WRITE_PPS(pps->pps_cb_qp_offset, PPS_CB_QP_OFFSET);
4108 +       WRITE_PPS(pps->pps_cr_qp_offset, PPS_CR_QP_OFFSET);
4109 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT),
4110 +                 PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG);
4111 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED),
4112 +                 WEIGHTED_PRED_FLAG);
4113 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED),
4114 +                 WEIGHTED_BIPRED_FLAG);
4115 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED),
4116 +                 TRANSQUANT_BYPASS_ENABLED_FLAG);
4117 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_TILES_ENABLED),
4118 +                 TILES_ENABLED_FLAG);
4119 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED),
4120 +                 ENTROPY_CODING_SYNC_ENABLED_FLAG);
4121 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED),
4122 +                 PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED_FLAG);
4123 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED),
4124 +                 LOOP_FILTER_ACROSS_TILES_ENABLED_FLAG);
4125 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED),
4126 +                 DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG);
4127 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER),
4128 +                 PPS_DEBLOCKING_FILTER_DISABLED_FLAG);
4129 +       WRITE_PPS(pps->pps_beta_offset_div2, PPS_BETA_OFFSET_DIV2);
4130 +       WRITE_PPS(pps->pps_tc_offset_div2, PPS_TC_OFFSET_DIV2);
4131 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT),
4132 +                 LISTS_MODIFICATION_PRESENT_FLAG);
4133 +       WRITE_PPS(pps->log2_parallel_merge_level_minus2 + 2, LOG2_PARALLEL_MERGE_LEVEL);
4134 +       WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT),
4135 +                 SLICE_SEGMENT_HEADER_EXTENSION_PRESENT_FLAG);
4136 +       WRITE_PPS(0, PPS_MBZ_2);
4137 +       WRITE_PPS(pps->num_tile_columns_minus1 + 1, NUM_TILE_COLUMNS);
4138 +       WRITE_PPS(pps->num_tile_rows_minus1 + 1, NUM_TILE_ROWS);
4139 +       WRITE_PPS(3, PPS_M_MODE);
4140 +       WRITE_PPS(0x3fffffff, PPS_MBO_2);
4141 +
4142 +       if (pps->flags & V4L2_HEVC_PPS_FLAG_TILES_ENABLED) {
4143 +               if (pps->flags & V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING) {
4144 +                       x = 1 << (min_cb_log2_size_y + max_min_cb_size);
4145 +                       pic_in_cts_width = (width + x - 1) / (x);
4146 +                       pic_in_cts_height = (height + x - 1) / (x);
4147 +                       for (i = 0; i <= pps->num_tile_columns_minus1; i++) {
4148 +                               tmp_w = ((i + 1) * pic_in_cts_width) /
4149 +                                       (pps->num_tile_columns_minus1 + 1);
4150 +                               column_width[i] = tmp_w - prev_w - 1;
4151 +                               prev_w = tmp_w;
4152 +                       }
4153 +                       for (i = 0; i <= pps->num_tile_rows_minus1; i++) {
4154 +                               tmp_h = ((i + 1) * pic_in_cts_height) /
4155 +                                       (pps->num_tile_rows_minus1 + 1);
4156 +                               row_height[i] = tmp_h - prev_h - 1;
4157 +                               prev_h = tmp_h;
4158 +                       }
4159 +               } else {
4160 +                       for (i = 0; i <= pps->num_tile_columns_minus1; i++)
4161 +                               column_width[i] = pps->column_width_minus1[i];
4162 +                       for (i = 0; i <= pps->num_tile_rows_minus1; i++)
4163 +                               row_height[i] = pps->row_height_minus1[i];
4164 +               }
4165 +       } else {
4166 +               column_width[0] =
4167 +                       ((sps->pic_width_in_luma_samples + ctb_size_y - 1) / ctb_size_y) - 1;
4168 +               row_height[0] =
4169 +                       ((sps->pic_height_in_luma_samples + ctb_size_y - 1) / ctb_size_y) - 1;
4170 +       }
4171 +
4172 +       for (i = 0; i < RKV_PPS_MAX_COLUMNS; i++)
4173 +               WRITE_PPS(column_width[i], COLUMN_WIDTH(i));
4174 +       for (i = 0; i < RKV_PPS_MAX_ROWS; i++)
4175 +               WRITE_PPS(row_height[i], ROW_HEIGHT(i));
4176 +
4177 +       scaling_distance = offsetof(struct rkvdec_hevc_priv_tbl, scaling_list);
4178 +       scaling_list_address = hevc_ctx->priv_tbl.dma + scaling_distance;
4179 +       WRITE_PPS(scaling_list_address, SCALING_LIST_ADDRESS);
4180 +       WRITE_PPS(0xffff, PPS_MBO_3);
4181 +}
4182 +
4183 +/*
4184 + * Creation of the Reference Picture Set memory blob for the hardware.
4185 + * The layout looks like this:
4186 + * [0] 32 bits for L0 (6 references + 2 bits of the 7th reference)
4187 + * [1] 32 bits for L0 (remaining 3 bits of the 7th reference + 5 references
4188 + *     + 4 bits of the 13th reference)
4189 + * [2] 11 bits for L0 (remaining bit for 13 and 2 references) and
4190 + *     21 bits for L1 (4 references + first bit of 5)
4191 + * [3] 32 bits of padding with 0s
4192 + * [4] 32 bits for L1 (remaining 4 bits for 5 + 5 references + 3 bits of 11)
4193 + * [5] 22 bits for L1 (remaining 2 bits of 11 and 4 references)
4194 + *     lowdelay flag (bit 23), rps bit offset long term (bit 24 - 32)
4195 + * [6] rps bit offset long term (bit 1 - 3),  rps bit offset short term (bit 4 - 12)
4196 + *     number of references (bit 13 - 16), remaining 16 bits of padding with 0s
4197 + * [7] 32 bits of padding with 0s
4198 + *
4199 + * Thus we have to set up padding in between reference 5 of the L1 list.
4200 + */
4201 +static void assemble_hw_rps(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run)
4202 +{
4203 +       const struct v4l2_ctrl_hevc_decode_params *decode_params = run->decode_params;
4204 +       const struct v4l2_ctrl_hevc_sps *sps = run->sps;
4205 +       const struct v4l2_ctrl_hevc_slice_params *sl_params;
4206 +       const struct v4l2_hevc_dpb_entry *dpb;
4207 +       struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
4208 +       struct rkvdec_hevc_priv_tbl *priv_tbl = hevc_ctx->priv_tbl.cpu;
4209 +       struct rkvdec_rps_packet *hw_ps;
4210 +       int i, j;
4211 +       unsigned int lowdelay;
4212 +
4213 +#define WRITE_RPS(value, field) set_ps_field(hw_ps->info, field, value)
4214 +
4215 +#define REF_PIC_LONG_TERM_L0(i)                        PS_FIELD((i) * 5, 1)
4216 +#define REF_PIC_IDX_L0(i)                      PS_FIELD(1 + ((i) * 5), 4)
4217 +#define REF_PIC_LONG_TERM_L1(i)                        PS_FIELD(((i) < 5 ? 75 : 132) + ((i) * 5), 1)
4218 +#define REF_PIC_IDX_L1(i)                      PS_FIELD(((i) < 4 ? 76 : 128) + ((i) * 5), 4)
4219 +
4220 +#define LOWDELAY                               PS_FIELD(182, 1)
4221 +#define LONG_TERM_RPS_BIT_OFFSET               PS_FIELD(183, 10)
4222 +#define SHORT_TERM_RPS_BIT_OFFSET              PS_FIELD(193, 9)
4223 +#define NUM_RPS_POC                            PS_FIELD(202, 4)
4224 +
4225 +       for (j = 0; j < run->num_slices; j++) {
4226 +               uint st_bit_offset = 0;
4227 +               uint num_l0_refs = 0;
4228 +               uint num_l1_refs = 0;
4229 +
4230 +               sl_params = &run->slices_params[j];
4231 +               dpb = decode_params->dpb;
4232 +
4233 +               if (sl_params->slice_type != V4L2_HEVC_SLICE_TYPE_I) {
4234 +                       num_l0_refs = sl_params->num_ref_idx_l0_active_minus1 + 1;
4235 +
4236 +                       if (sl_params->slice_type == V4L2_HEVC_SLICE_TYPE_B)
4237 +                               num_l1_refs = sl_params->num_ref_idx_l1_active_minus1 + 1;
4238 +
4239 +                       lowdelay = 1;
4240 +               } else {
4241 +                       lowdelay = 0;
4242 +               }
4243 +
4244 +               hw_ps = &priv_tbl->rps[j];
4245 +               memset(hw_ps, 0, sizeof(*hw_ps));
4246 +
4247 +               for (i = 0; i < num_l0_refs; i++) {
4248 +                       const struct v4l2_hevc_dpb_entry dpb_l0 = dpb[sl_params->ref_idx_l0[i]];
4249 +
4250 +                       WRITE_RPS(!!(dpb_l0.flags & V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE),
4251 +                                 REF_PIC_LONG_TERM_L0(i));
4252 +                       WRITE_RPS(sl_params->ref_idx_l0[i], REF_PIC_IDX_L0(i));
4253 +
4254 +                       if (dpb_l0.pic_order_cnt_val > sl_params->slice_pic_order_cnt)
4255 +                               lowdelay = 0;
4256 +               }
4257 +
4258 +               for (i = 0; i < num_l1_refs; i++) {
4259 +                       const struct v4l2_hevc_dpb_entry dpb_l1 = dpb[sl_params->ref_idx_l1[i]];
4260 +                       int is_long_term =
4261 +                               !!(dpb_l1.flags & V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE);
4262 +
4263 +                       WRITE_RPS(is_long_term, REF_PIC_LONG_TERM_L1(i));
4264 +                       WRITE_RPS(sl_params->ref_idx_l1[i], REF_PIC_IDX_L1(i));
4265 +
4266 +                       if (dpb_l1.pic_order_cnt_val > sl_params->slice_pic_order_cnt)
4267 +                               lowdelay = 0;
4268 +               }
4269 +
4270 +               WRITE_RPS(lowdelay, LOWDELAY);
4271 +
4272 +               if (!(decode_params->flags & V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC)) {
4273 +                       if (sl_params->short_term_ref_pic_set_size)
4274 +                               st_bit_offset = sl_params->short_term_ref_pic_set_size;
4275 +                       else if (sps->num_short_term_ref_pic_sets > 1)
4276 +                               st_bit_offset = fls(sps->num_short_term_ref_pic_sets - 1);
4277 +               }
4278 +
4279 +               WRITE_RPS(st_bit_offset + sl_params->long_term_ref_pic_set_size,
4280 +                         LONG_TERM_RPS_BIT_OFFSET);
4281 +               WRITE_RPS(sl_params->short_term_ref_pic_set_size,
4282 +                         SHORT_TERM_RPS_BIT_OFFSET);
4283 +
4284 +               WRITE_RPS(decode_params->num_poc_st_curr_before +
4285 +                         decode_params->num_poc_st_curr_after +
4286 +                         decode_params->num_poc_lt_curr,
4287 +                         NUM_RPS_POC);
4288 +       }
4289 +}
4290 +
4291 +/*
4292 + * Flip one or more matrices along their main diagonal and flatten them
4293 + * before writing it to the memory.
4294 + * Convert:
4295 + * ABCD         AEIM
4296 + * EFGH     =>  BFJN     =>     AEIMBFJNCGKODHLP
4297 + * IJKL         CGKO
4298 + * MNOP         DHLP
4299 + */
4300 +static void rotate_and_flatten_matrices(u8 *output, const u8 *input, int matrices, int row_length)
4301 +{
4302 +       int i, j, row, x_offset, matrix_offset, rot_index, y_offset, matrix_size, new_value;
4303 +
4304 +       matrix_size = row_length * row_length;
4305 +       for (i = 0; i < matrices; i++) {
4306 +               row = 0;
4307 +               x_offset = 0;
4308 +               matrix_offset = i * matrix_size;
4309 +               for (j = 0; j < matrix_size; j++) {
4310 +                       y_offset = j - (row * row_length);
4311 +                       rot_index = y_offset * row_length + x_offset;
4312 +                       new_value = *(input + i * matrix_size + j);
4313 +                       output[matrix_offset + rot_index] = *(input + i * matrix_size + j);
4314 +                       if ((j + 1) % row_length == 0) {
4315 +                               row += 1;
4316 +                               x_offset += 1;
4317 +                       }
4318 +               }
4319 +       }
4320 +}
4321 +
4322 +static void assemble_scalingfactor0(u8 *output, const struct v4l2_ctrl_hevc_scaling_matrix *input)
4323 +{
4324 +       int offset = 0;
4325 +
4326 +       rotate_and_flatten_matrices(output, (const u8 *)input->scaling_list_4x4, 6, 4);
4327 +       offset = 6 * 16 * sizeof(u8);
4328 +       rotate_and_flatten_matrices(output + offset, (const u8 *)input->scaling_list_8x8, 6, 8);
4329 +       offset += 6 * 64 * sizeof(u8);
4330 +       rotate_and_flatten_matrices(output + offset, (const u8 *)input->scaling_list_16x16, 6, 8);
4331 +       offset += 6 * 64 * sizeof(u8);
4332 +       /* Add a 128 byte padding with 0s between the two 32x32 matrices */
4333 +       rotate_and_flatten_matrices(output + offset, (const u8 *)input->scaling_list_32x32, 1, 8);
4334 +       offset += 64 * sizeof(u8);
4335 +       memset(output + offset, 0, 128);
4336 +       offset += 128 * sizeof(u8);
4337 +       rotate_and_flatten_matrices(output + offset,
4338 +                                   (const u8 *)input->scaling_list_32x32 + (64 * sizeof(u8)),
4339 +                                   1, 8);
4340 +       offset += 64 * sizeof(u8);
4341 +       memset(output + offset, 0, 128);
4342 +}
4343 +
4344 +/*
4345 + * Required layout:
4346 + * A = scaling_list_dc_coef_16x16
4347 + * B = scaling_list_dc_coef_32x32
4348 + * 0 = Padding
4349 + *
4350 + * A, A, A, A, A, A, B, 0, 0, B, 0, 0
4351 + */
4352 +static void assemble_scalingdc(u8 *output, const struct v4l2_ctrl_hevc_scaling_matrix *input)
4353 +{
4354 +       u8 list_32x32[6] = {0};
4355 +
4356 +       memcpy(output, input->scaling_list_dc_coef_16x16, 6 * sizeof(u8));
4357 +       list_32x32[0] = input->scaling_list_dc_coef_32x32[0];
4358 +       list_32x32[3] = input->scaling_list_dc_coef_32x32[1];
4359 +       memcpy(output + 6 * sizeof(u8), list_32x32, 6 * sizeof(u8));
4360 +}
4361 +
4362 +static void translate_scaling_list(struct scaling_factor *output,
4363 +                                  const struct v4l2_ctrl_hevc_scaling_matrix *input)
4364 +{
4365 +       assemble_scalingfactor0(output->scalingfactor0, input);
4366 +       memcpy(output->scalingfactor1, (const u8 *)input->scaling_list_4x4, 96);
4367 +       assemble_scalingdc(output->scalingdc, input);
4368 +       memset(output->reserved, 0, 4 * sizeof(u8));
4369 +}
4370 +
4371 +static void assemble_hw_scaling_list(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run)
4372 +{
4373 +       const struct v4l2_ctrl_hevc_scaling_matrix *scaling = run->scaling_matrix;
4374 +       struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
4375 +       struct rkvdec_hevc_priv_tbl *tbl = hevc_ctx->priv_tbl.cpu;
4376 +       u8 *dst;
4377 +
4378 +       if (!memcmp((void *)&hevc_ctx->scaling_matrix_cache, scaling,
4379 +                   sizeof(struct v4l2_ctrl_hevc_scaling_matrix)))
4380 +               return;
4381 +
4382 +       dst = tbl->scaling_list;
4383 +       translate_scaling_list((struct scaling_factor *)dst, scaling);
4384 +
4385 +       memcpy((void *)&hevc_ctx->scaling_matrix_cache, scaling,
4386 +              sizeof(struct v4l2_ctrl_hevc_scaling_matrix));
4387 +}
4388 +
4389 +static struct vb2_buffer *
4390 +get_ref_buf(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run, unsigned int dpb_idx)
4391 +{
4392 +       struct v4l2_m2m_ctx *m2m_ctx = ctx->fh.m2m_ctx;
4393 +       const struct v4l2_ctrl_hevc_decode_params *decode_params = run->decode_params;
4394 +       const struct v4l2_hevc_dpb_entry *dpb = decode_params->dpb;
4395 +       struct vb2_queue *cap_q = &m2m_ctx->cap_q_ctx.q;
4396 +       struct vb2_buffer *buf = NULL;
4397 +
4398 +       if (dpb_idx < decode_params->num_active_dpb_entries)
4399 +               buf = vb2_find_buffer(cap_q, dpb[dpb_idx].timestamp);
4400 +
4401 +       /*
4402 +        * If a DPB entry is unused or invalid, the address of current destination
4403 +        * buffer is returned.
4404 +        */
4405 +       if (!buf)
4406 +               return &run->base.bufs.dst->vb2_buf;
4407 +
4408 +       return buf;
4409 +}
4410 +
4411 +static void config_registers(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run)
4412 +{
4413 +       struct rkvdec_dev *rkvdec = ctx->dev;
4414 +       const struct v4l2_ctrl_hevc_decode_params *decode_params = run->decode_params;
4415 +       const struct v4l2_ctrl_hevc_slice_params *sl_params = &run->slices_params[0];
4416 +       const struct v4l2_hevc_dpb_entry *dpb = decode_params->dpb;
4417 +       struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
4418 +       dma_addr_t priv_start_addr = hevc_ctx->priv_tbl.dma;
4419 +       const struct v4l2_pix_format_mplane *dst_fmt;
4420 +       struct vb2_v4l2_buffer *src_buf = run->base.bufs.src;
4421 +       struct vb2_v4l2_buffer *dst_buf = run->base.bufs.dst;
4422 +       const struct v4l2_format *f;
4423 +       dma_addr_t rlc_addr;
4424 +       dma_addr_t refer_addr;
4425 +       u32 rlc_len;
4426 +       u32 hor_virstride;
4427 +       u32 ver_virstride;
4428 +       u32 y_virstride;
4429 +       u32 uv_virstride;
4430 +       u32 yuv_virstride;
4431 +       u32 offset;
4432 +       dma_addr_t dst_addr;
4433 +       u32 reg, i;
4434 +
4435 +       reg = RKVDEC_MODE(RKVDEC_MODE_HEVC);
4436 +       writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_SYSCTRL);
4437 +
4438 +       f = &ctx->decoded_fmt;
4439 +       dst_fmt = &f->fmt.pix_mp;
4440 +       hor_virstride = dst_fmt->plane_fmt[0].bytesperline;
4441 +       ver_virstride = dst_fmt->height;
4442 +       y_virstride = hor_virstride * ver_virstride;
4443 +       uv_virstride = y_virstride / 2;
4444 +       yuv_virstride = y_virstride + uv_virstride;
4445 +
4446 +       reg = RKVDEC_Y_HOR_VIRSTRIDE(hor_virstride / 16) |
4447 +               RKVDEC_UV_HOR_VIRSTRIDE(hor_virstride / 16) |
4448 +               RKVDEC_SLICE_NUM_LOWBITS(run->num_slices);
4449 +       writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_PICPAR);
4450 +
4451 +       /* config rlc base address */
4452 +       rlc_addr = vb2_dma_contig_plane_dma_addr(&src_buf->vb2_buf, 0);
4453 +       writel_relaxed(rlc_addr, rkvdec->regs + RKVDEC_REG_STRM_RLC_BASE);
4454 +
4455 +       rlc_len = vb2_get_plane_payload(&src_buf->vb2_buf, 0);
4456 +       reg = RKVDEC_STRM_LEN(round_up(rlc_len, 16) + 64);
4457 +       writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_STRM_LEN);
4458 +
4459 +       /* config cabac table */
4460 +       offset = offsetof(struct rkvdec_hevc_priv_tbl, cabac_table);
4461 +       writel_relaxed(priv_start_addr + offset, rkvdec->regs + RKVDEC_REG_CABACTBL_PROB_BASE);
4462 +
4463 +       /* config output base address */
4464 +       dst_addr = vb2_dma_contig_plane_dma_addr(&dst_buf->vb2_buf, 0);
4465 +       writel_relaxed(dst_addr, rkvdec->regs + RKVDEC_REG_DECOUT_BASE);
4466 +
4467 +       reg = RKVDEC_Y_VIRSTRIDE(y_virstride / 16);
4468 +       writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_Y_VIRSTRIDE);
4469 +
4470 +       reg = RKVDEC_YUV_VIRSTRIDE(yuv_virstride / 16);
4471 +       writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_YUV_VIRSTRIDE);
4472 +
4473 +       /* config ref pic address */
4474 +       for (i = 0; i < 15; i++) {
4475 +               struct vb2_buffer *vb_buf = get_ref_buf(ctx, run, i);
4476 +
4477 +               if (i < 4 && decode_params->num_active_dpb_entries) {
4478 +                       reg = GENMASK(decode_params->num_active_dpb_entries - 1, 0);
4479 +                       reg = (reg >> (i * 4)) & 0xf;
4480 +               } else {
4481 +                       reg = 0;
4482 +               }
4483 +
4484 +               refer_addr = vb2_dma_contig_plane_dma_addr(vb_buf, 0);
4485 +               writel_relaxed(refer_addr | reg, rkvdec->regs + RKVDEC_REG_H264_BASE_REFER(i));
4486 +
4487 +               reg = RKVDEC_POC_REFER(i < decode_params->num_active_dpb_entries ?
4488 +                       dpb[i].pic_order_cnt_val : 0);
4489 +               writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_H264_POC_REFER0(i));
4490 +       }
4491 +
4492 +       reg = RKVDEC_CUR_POC(sl_params->slice_pic_order_cnt);
4493 +       writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_CUR_POC0);
4494 +
4495 +       /* config hw pps address */
4496 +       offset = offsetof(struct rkvdec_hevc_priv_tbl, param_set);
4497 +       writel_relaxed(priv_start_addr + offset, rkvdec->regs + RKVDEC_REG_PPS_BASE);
4498 +
4499 +       /* config hw rps address */
4500 +       offset = offsetof(struct rkvdec_hevc_priv_tbl, rps);
4501 +       writel_relaxed(priv_start_addr + offset, rkvdec->regs + RKVDEC_REG_RPS_BASE);
4502 +
4503 +       reg = RKVDEC_AXI_DDR_RDATA(0);
4504 +       writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_AXI_DDR_RDATA);
4505 +
4506 +       reg = RKVDEC_AXI_DDR_WDATA(0);
4507 +       writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_AXI_DDR_WDATA);
4508 +}
4509 +
4510 +static int rkvdec_hevc_adjust_fmt(struct rkvdec_ctx *ctx, struct v4l2_format *f)
4511 +{
4512 +       struct v4l2_pix_format_mplane *fmt = &f->fmt.pix_mp;
4513 +
4514 +       fmt->num_planes = 1;
4515 +       if (!fmt->plane_fmt[0].sizeimage)
4516 +               fmt->plane_fmt[0].sizeimage =
4517 +                       fmt->width * fmt->height * RKV_MAX_DEPTH_IN_BYTES;
4518 +       return 0;
4519 +}
4520 +
4521 +static int rkvdec_hevc_start(struct rkvdec_ctx *ctx)
4522 +{
4523 +       struct rkvdec_dev *rkvdec = ctx->dev;
4524 +       struct rkvdec_hevc_priv_tbl *priv_tbl;
4525 +       struct rkvdec_hevc_ctx *hevc_ctx;
4526 +       int ret;
4527 +
4528 +       hevc_ctx = kzalloc(sizeof(*hevc_ctx), GFP_KERNEL);
4529 +       if (!hevc_ctx)
4530 +               return -ENOMEM;
4531 +
4532 +       priv_tbl = dma_alloc_coherent(rkvdec->dev, sizeof(*priv_tbl),
4533 +                                     &hevc_ctx->priv_tbl.dma, GFP_KERNEL);
4534 +       if (!priv_tbl) {
4535 +               ret = -ENOMEM;
4536 +               goto err_free_ctx;
4537 +       }
4538 +
4539 +       hevc_ctx->priv_tbl.size = sizeof(*priv_tbl);
4540 +       hevc_ctx->priv_tbl.cpu = priv_tbl;
4541 +       memset(priv_tbl, 0, sizeof(*priv_tbl));
4542 +       memcpy(priv_tbl->cabac_table, rkvdec_hevc_cabac_table, sizeof(rkvdec_hevc_cabac_table));
4543 +
4544 +       ctx->priv = hevc_ctx;
4545 +       return 0;
4546 +
4547 +err_free_ctx:
4548 +       kfree(hevc_ctx);
4549 +       return ret;
4550 +}
4551 +
4552 +static void rkvdec_hevc_stop(struct rkvdec_ctx *ctx)
4553 +{
4554 +       struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
4555 +       struct rkvdec_dev *rkvdec = ctx->dev;
4556 +
4557 +       dma_free_coherent(rkvdec->dev, hevc_ctx->priv_tbl.size,
4558 +                         hevc_ctx->priv_tbl.cpu, hevc_ctx->priv_tbl.dma);
4559 +       kfree(hevc_ctx);
4560 +}
4561 +
4562 +static int rkvdec_hevc_run_preamble(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run)
4563 +{
4564 +       struct v4l2_ctrl *ctrl;
4565 +
4566 +       ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl, V4L2_CID_STATELESS_HEVC_DECODE_PARAMS);
4567 +       run->decode_params = ctrl ? ctrl->p_cur.p : NULL;
4568 +       if (WARN_ON(!run->decode_params))
4569 +               return -EINVAL;
4570 +       ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl, V4L2_CID_STATELESS_HEVC_SLICE_PARAMS);
4571 +       run->slices_params = ctrl ? ctrl->p_cur.p : NULL;
4572 +       if (WARN_ON(!run->slices_params))
4573 +               return -EINVAL;
4574 +       run->num_slices = ctrl->new_elems;
4575 +       ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl, V4L2_CID_STATELESS_HEVC_SPS);
4576 +       run->sps = ctrl ? ctrl->p_cur.p : NULL;
4577 +       if (WARN_ON(!run->sps))
4578 +               return -EINVAL;
4579 +       ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl, V4L2_CID_STATELESS_HEVC_PPS);
4580 +       run->pps = ctrl ? ctrl->p_cur.p : NULL;
4581 +       if (WARN_ON(!run->pps))
4582 +               return -EINVAL;
4583 +       ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl, V4L2_CID_STATELESS_HEVC_SCALING_MATRIX);
4584 +       run->scaling_matrix = ctrl ? ctrl->p_cur.p : NULL;
4585 +       if (WARN_ON(!run->scaling_matrix))
4586 +               return -EINVAL;
4587 +
4588 +       rkvdec_run_preamble(ctx, &run->base);
4589 +       return 0;
4590 +}
4591 +
4592 +static void start_hardware(struct rkvdec_dev *rkvdec)
4593 +{
4594 +       void __iomem *register_base_addr = rkvdec->regs;
4595 +       struct delayed_work *watchdog_worker = &rkvdec->watchdog_work;
4596 +       /*
4597 +        * RkVDEC error detection doesn't work really well and seems racy
4598 +        * and unstable. Disable it.
4599 +        */
4600 +       writel_relaxed(0, register_base_addr + RKVDEC_REG_STRMD_ERR_EN);
4601 +       writel_relaxed(0, register_base_addr + RKVDEC_REG_H264_ERR_E);
4602 +
4603 +       schedule_delayed_work(watchdog_worker, msecs_to_jiffies(2000));
4604 +
4605 +       writel(1, register_base_addr + RKVDEC_REG_PREF_LUMA_CACHE_COMMAND);
4606 +       writel(1, register_base_addr + RKVDEC_REG_PREF_CHR_CACHE_COMMAND);
4607 +
4608 +       /* Start decoding! */
4609 +       writel(RKVDEC_INTERRUPT_DEC_E | RKVDEC_CONFIG_DEC_CLK_GATE_E |
4610 +                  RKVDEC_TIMEOUT_E | RKVDEC_BUF_EMPTY_E,
4611 +                  register_base_addr + RKVDEC_REG_INTERRUPT);
4612 +}
4613 +
4614 +static u32 rkvdec_hevc_valid_fmt(struct rkvdec_ctx *ctx)
4615 +{
4616 +       const struct v4l2_ctrl_hevc_sps *sps = ctx->sps;
4617 +
4618 +       /*
4619 +        * No need to check chroma_format_idc, currently only 4:2:0 formats
4620 +        * supported.
4621 +        */
4622 +       if (sps && sps->bit_depth_luma_minus8 == 2)
4623 +               return V4L2_PIX_FMT_NV15;
4624 +       else
4625 +               return V4L2_PIX_FMT_NV12;
4626 +}
4627 +
4628 +/*
4629 + * Convert some fields from the SPS structure into human readable attributes.
4630 + */
4631 +static int rkvdec_hevc_get_sps_attributes(struct rkvdec_ctx *ctx, void *sps,
4632 +                                         struct sps_attributes *attributes)
4633 +{
4634 +       struct v4l2_ctrl_hevc_sps *hevc_sps = sps;
4635 +       unsigned int width = hevc_sps->pic_width_in_luma_samples;
4636 +       unsigned int height = hevc_sps->pic_height_in_luma_samples;
4637 +
4638 +       if (!(width % 64 == 0))
4639 +               width = ALIGN(width, 64);
4640 +
4641 +       if (!(height % 16 == 0))
4642 +               height = ALIGN(height, 16);
4643 +
4644 +       attributes->width = width;
4645 +       attributes->height = height;
4646 +       attributes->luma_bitdepth = hevc_sps->bit_depth_luma_minus8 + 8;
4647 +       attributes->chroma_bitdepth = hevc_sps->bit_depth_chroma_minus8 + 8;
4648 +       switch (hevc_sps->chroma_format_idc) {
4649 +       case 0:
4650 +               attributes->subsampling = 400;
4651 +               break;
4652 +       case 1:
4653 +               attributes->subsampling = 420;
4654 +               break;
4655 +       case 2:
4656 +               attributes->subsampling = 422;
4657 +               break;
4658 +       case 3:
4659 +               attributes->subsampling = 444;
4660 +               break;
4661 +       };
4662 +
4663 +       return 0;
4664 +}
4665 +
4666 +static int rkvdec_hevc_validate_sps(struct rkvdec_ctx *ctx, void *sps,
4667 +                                   struct v4l2_pix_format_mplane *pix_mp)
4668 +{
4669 +       struct sps_attributes attributes = {0};
4670 +
4671 +       rkvdec_hevc_get_sps_attributes(ctx, sps, &attributes);
4672 +
4673 +       if ((attributes.width != pix_mp->width) || (attributes.height != pix_mp->height)) {
4674 +               dev_err(ctx->dev->dev,
4675 +                       "Incompatible SPS dimension, SPS %dx%d, Pixel format %dx%d.",
4676 +                       attributes.width, attributes.height, pix_mp->width, pix_mp->height);
4677 +               return -EINVAL;
4678 +       }
4679 +
4680 +       if ((attributes.luma_bitdepth == 8 && pix_mp->pixelformat != V4L2_PIX_FMT_NV12) ||
4681 +           (attributes.luma_bitdepth == 10 && pix_mp->pixelformat != V4L2_PIX_FMT_NV15)) {
4682 +               dev_err(ctx->dev->dev,
4683 +                       "Incompatible SPS bit-depth, SPS %d, Pixel format %d.",
4684 +                       attributes.luma_bitdepth,
4685 +                       pix_mp->pixelformat == V4L2_PIX_FMT_NV12 ? 8 : 10);
4686 +               return -EINVAL;
4687 +       }
4688 +
4689 +       return 0;
4690 +}
4691 +
4692 +static int rkvdec_hevc_try_ctrl(struct rkvdec_ctx *ctx, struct v4l2_ctrl *ctrl)
4693 +{
4694 +       struct sps_attributes attributes = {0};
4695 +
4696 +       rkvdec_hevc_get_sps_attributes(ctx, ctrl->p_new.p_hevc_sps, &attributes);
4697 +
4698 +       if (attributes.subsampling > 420)
4699 +               return -EINVAL;
4700 +       if (attributes.luma_bitdepth != 8 && attributes.luma_bitdepth != 10)
4701 +               return -EINVAL;
4702 +       return 0;
4703 +}
4704 +
4705 +static int rkvdec_hevc_run(struct rkvdec_ctx *ctx)
4706 +{
4707 +       struct rkvdec_dev *rkvdec = ctx->dev;
4708 +       struct rkvdec_hevc_run run;
4709 +       int ret;
4710 +
4711 +       ret = rkvdec_hevc_run_preamble(ctx, &run);
4712 +       if (ret) {
4713 +               dev_err(ctx->dev->dev, "Missing required controls for the RkVDEC HEVC decoder.");
4714 +               return ret;
4715 +       }
4716 +
4717 +       assemble_hw_scaling_list(ctx, &run);
4718 +       assemble_hw_pps(ctx, &run);
4719 +       assemble_hw_rps(ctx, &run);
4720 +       config_registers(ctx, &run);
4721 +       rkvdec_run_postamble(ctx, &run.base);
4722 +       start_hardware(rkvdec);
4723 +
4724 +       return 0;
4725 +}
4726 +
4727 +const struct rkvdec_coded_fmt_ops rkvdec_hevc_fmt_ops = {
4728 +       .adjust_fmt = rkvdec_hevc_adjust_fmt,
4729 +       .start = rkvdec_hevc_start,
4730 +       .stop = rkvdec_hevc_stop,
4731 +       .run = rkvdec_hevc_run,
4732 +       .try_ctrl = rkvdec_hevc_try_ctrl,
4733 +       .valid_fmt = rkvdec_hevc_valid_fmt,
4734 +       .sps_check = rkvdec_hevc_validate_sps,
4735 +       .get_sps_attributes = rkvdec_hevc_get_sps_attributes,
4736 +};
4737 diff --git a/drivers/staging/media/rkvdec/rkvdec-regs.h b/drivers/staging/media/rkvdec/rkvdec-regs.h
4738 index 15b9bee92016..83bf790ed9b7 100644
4739 --- a/drivers/staging/media/rkvdec/rkvdec-regs.h
4740 +++ b/drivers/staging/media/rkvdec/rkvdec-regs.h
4741 @@ -43,6 +43,7 @@
4742  #define RKVDEC_RLC_MODE                                        BIT(11)
4743  #define RKVDEC_STRM_START_BIT(x)                       (((x) & 0x7f) << 12)
4744  #define RKVDEC_MODE(x)                                 (((x) & 0x03) << 20)
4745 +#define RKVDEC_MODE_HEVC                               0
4746  #define RKVDEC_MODE_H264                               1
4747  #define RKVDEC_MODE_VP9                                        2
4748  #define RKVDEC_RPS_MODE                                        BIT(24)
4749 diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
4750 index 3d413c5ad1d2..6462dd83ea6d 100644
4751 --- a/drivers/staging/media/rkvdec/rkvdec.c
4752 +++ b/drivers/staging/media/rkvdec/rkvdec.c
4753 @@ -13,6 +13,7 @@
4754  #include <linux/interrupt.h>
4755  #include <linux/module.h>
4756  #include <linux/of.h>
4757 +#include <linux/of_device.h>
4758  #include <linux/platform_device.h>
4759  #include <linux/pm.h>
4760  #include <linux/pm_runtime.h>
4761 @@ -230,6 +231,62 @@ static const struct rkvdec_ctrl_desc rkvdec_h264_ctrl_descs[] = {
4762         },
4763  };
4764  
4765 +static const struct rkvdec_ctrl_desc rkvdec_hevc_ctrl_descs[] = {
4766 +       {
4767 +               .cfg.id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS,
4768 +               .cfg.name = "Slice parameters",
4769 +               .cfg.flags = V4L2_CTRL_FLAG_DYNAMIC_ARRAY,
4770 +               .cfg.type = V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS,
4771 +               .cfg.dims = { 600 },
4772 +       },
4773 +       {
4774 +               .cfg.id = V4L2_CID_STATELESS_HEVC_SPS,
4775 +               .cfg.ops = &rkvdec_ctrl_ops,
4776 +       },
4777 +       {
4778 +               .cfg.id = V4L2_CID_STATELESS_HEVC_PPS,
4779 +       },
4780 +       {
4781 +               .cfg.id = V4L2_CID_STATELESS_HEVC_SCALING_MATRIX,
4782 +       },
4783 +       {
4784 +               .cfg.id = V4L2_CID_STATELESS_HEVC_DECODE_PARAMS,
4785 +       },
4786 +       {
4787 +               .cfg.id = V4L2_CID_STATELESS_HEVC_DECODE_MODE,
4788 +               .cfg.min = V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
4789 +               .cfg.max = V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
4790 +               .cfg.def = V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
4791 +       },
4792 +       {
4793 +               .cfg.id = V4L2_CID_STATELESS_HEVC_START_CODE,
4794 +               .cfg.min = V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
4795 +               .cfg.def = V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
4796 +               .cfg.max = V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
4797 +       },
4798 +       {
4799 +               .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_PROFILE,
4800 +               .cfg.min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
4801 +               .cfg.max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
4802 +               .cfg.def = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
4803 +       },
4804 +       {
4805 +               .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
4806 +               .cfg.min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
4807 +               .cfg.max = V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1,
4808 +       },
4809 +};
4810 +
4811 +static const struct rkvdec_ctrls rkvdec_hevc_ctrls = {
4812 +       .ctrls = rkvdec_hevc_ctrl_descs,
4813 +       .num_ctrls = ARRAY_SIZE(rkvdec_hevc_ctrl_descs),
4814 +};
4815 +
4816 +static const u32 rkvdec_hevc_decoded_fmts[] = {
4817 +       V4L2_PIX_FMT_NV12,
4818 +       V4L2_PIX_FMT_NV15,
4819 +};
4820 +
4821  static const struct rkvdec_ctrls rkvdec_h264_ctrls = {
4822         .ctrls = rkvdec_h264_ctrl_descs,
4823         .num_ctrls = ARRAY_SIZE(rkvdec_h264_ctrl_descs),
4824 @@ -260,6 +317,21 @@ static const struct rkvdec_ctrls rkvdec_vp9_ctrls = {
4825  };
4826  
4827  static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = {
4828 +       {
4829 +               .fourcc = V4L2_PIX_FMT_HEVC_SLICE,
4830 +               .frmsize = {
4831 +                       .min_width = 64,
4832 +                       .max_width = 4096,
4833 +                       .step_width = 64,
4834 +                       .min_height = 64,
4835 +                       .max_height = 2304,
4836 +                       .step_height = 16,
4837 +               },
4838 +               .ctrls = &rkvdec_hevc_ctrls,
4839 +               .ops = &rkvdec_hevc_fmt_ops,
4840 +               .num_decoded_fmts = ARRAY_SIZE(rkvdec_hevc_decoded_fmts),
4841 +               .decoded_fmts = rkvdec_hevc_decoded_fmts,
4842 +       },
4843         {
4844                 .fourcc = V4L2_PIX_FMT_H264_SLICE,
4845                 .frmsize = {
4846 diff --git a/drivers/staging/media/rkvdec/rkvdec.h b/drivers/staging/media/rkvdec/rkvdec.h
4847 index d74821f9fd0b..9cf354968d52 100644
4848 --- a/drivers/staging/media/rkvdec/rkvdec.h
4849 +++ b/drivers/staging/media/rkvdec/rkvdec.h
4850 @@ -135,6 +135,7 @@ void rkvdec_run_preamble(struct rkvdec_ctx *ctx, struct rkvdec_run *run);
4851  void rkvdec_run_postamble(struct rkvdec_ctx *ctx, struct rkvdec_run *run);
4852  
4853  extern const struct rkvdec_coded_fmt_ops rkvdec_h264_fmt_ops;
4854 +extern const struct rkvdec_coded_fmt_ops rkvdec_hevc_fmt_ops;
4855  extern const struct rkvdec_coded_fmt_ops rkvdec_vp9_fmt_ops;
4856  
4857  #endif /* RKVDEC_H_ */
This page took 6.252349 seconds and 3 git commands to generate.