xmixahlx

linux next20200529 pinebookpro v4l2 diff

May 31st, 2020
105
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/Documentation/userspace-api/media/v4l/biblio.rst linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/biblio.rst
  2. --- media_tree_master/Documentation/userspace-api/media/v4l/biblio.rst 2020-05-30 15:14:40.547029446 -0700
  3. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/biblio.rst 2020-05-30 15:12:45.283527869 -0700
  4. @@ -414,3 +414,13 @@
  5. :title: RFC 6386: "VP8 Data Format and Decoding Guide"
  6.  
  7. :author: J. Bankoski et al.
  8. +
  9. +.. _vp9:
  10. +
  11. +VP9
  12. +===
  13. +
  14. +
  15. +:title: VP9 Bitstream & Decoding Process Specification
  16. +
  17. +:author: Adrian Grange (Google), Peter de Rivaz (Argon Design), Jonathan Hunt (Argon Design)
  18. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
  19. --- media_tree_master/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst 2020-05-30 15:14:40.551029433 -0700
  20. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst 2020-05-30 15:12:45.287527847 -0700
  21. @@ -2668,6 +2668,556 @@
  22. - ``padding[3]``
  23. - Applications and drivers must set this to zero.
  24.  
  25. +.. _v4l2-mpeg-vp9:
  26. +
  27. +``V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(0..3) (struct)``
  28. + Stores VP9 probabilities attached to a specific frame context. The VP9
  29. + specification allows using a maximum of 4 contexts. Each frame being
  30. + decoded refers to one of those context. See section '7.1.2 Refresh
  31. + probs semantics' section of :ref:`vp9` for more details about these
  32. + contexts.
  33. +
  34. + This control is bi-directional:
  35. +
  36. + * all 4 contexts must be initialized by userspace just after the
  37. + stream is started and before the first decoding request is submitted.
  38. + * the referenced context might be read by the kernel when a decoding
  39. + request is submitted, and will be updated after the decoder is done
  40. + decoding the frame if the `V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX` flag
  41. + is set.
  42. + * contexts will be read back by user space before each decoding request
  43. + to retrieve the updated probabilities.
  44. + * userspace will re-initialize the context to their default values when
  45. + a reset context is required.
  46. +
  47. + .. note::
  48. +
  49. + This compound control is not yet part of the public kernel API and
  50. + it is expected to change.
  51. +
  52. +.. c:type:: v4l2_ctrl_vp9_frame_ctx
  53. +
  54. +.. cssclass:: longtable
  55. +
  56. +.. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}|
  57. +
  58. +.. flat-table:: struct v4l2_ctrl_vp9_frame_ctx
  59. + :header-rows: 0
  60. + :stub-columns: 0
  61. + :widths: 1 1 2
  62. +
  63. + * - struct :c:type:`v4l2_vp9_probabilities`
  64. + - ``probs``
  65. + - Structure with VP9 probabilities attached to the context.
  66. +
  67. +.. c:type:: v4l2_vp9_probabilities
  68. +
  69. +.. cssclass:: longtable
  70. +
  71. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  72. +
  73. +.. flat-table:: struct v4l2_vp9_probabilities
  74. + :header-rows: 0
  75. + :stub-columns: 0
  76. + :widths: 1 1 2
  77. +
  78. + * - __u8
  79. + - ``tx8[2][1]``
  80. + - TX 8x8 probabilities.
  81. + * - __u8
  82. + - ``tx16[2][2]``
  83. + - TX 16x16 probabilities.
  84. + * - __u8
  85. + - ``tx32[2][3]``
  86. + - TX 32x32 probabilities.
  87. + * - __u8
  88. + - ``coef[4][2][2][6][6][3]``
  89. + - Coefficient probabilities.
  90. + * - __u8
  91. + - ``skip[3]``
  92. + - Skip probabilities.
  93. + * - __u8
  94. + - ``inter_mode[7][3]``
  95. + - Inter prediction mode probabilities.
  96. + * - __u8
  97. + - ``interp_filter[4][2]``
  98. + - Interpolation filter probabilities.
  99. + * - __u8
  100. + - ``is_inter[4]``
  101. + - Is inter-block probabilities.
  102. + * - __u8
  103. + - ``comp_mode[5]``
  104. + - Compound prediction mode probabilities.
  105. + * - __u8
  106. + - ``single_ref[5][2]``
  107. + - Single reference probabilities.
  108. + * - __u8
  109. + - ``comp_mode[5]``
  110. + - Compound reference probabilities.
  111. + * - __u8
  112. + - ``y_mode[4][9]``
  113. + - Y prediction mode probabilities.
  114. + * - __u8
  115. + - ``uv_mode[10][9]``
  116. + - UV prediction mode probabilities.
  117. + * - __u8
  118. + - ``partition[16][3]``
  119. + - Partition probabilities.
  120. + * - __u8
  121. + - ``mv.joint[3]``
  122. + - Motion vector joint probabilities.
  123. + * - __u8
  124. + - ``mv.sign[2]``
  125. + - Motion vector sign probabilities.
  126. + * - __u8
  127. + - ``mv.class[2][10]``
  128. + - Motion vector class probabilities.
  129. + * - __u8
  130. + - ``mv.class0_bit[2]``
  131. + - Motion vector class0 bit probabilities.
  132. + * - __u8
  133. + - ``mv.bits[2][10]``
  134. + - Motion vector bits probabilities.
  135. + * - __u8
  136. + - ``mv.class0_fr[2][2][3]``
  137. + - Motion vector class0 fractional bit probabilities.
  138. + * - __u8
  139. + - ``mv.fr[2][3]``
  140. + - Motion vector fractional bit probabilities.
  141. + * - __u8
  142. + - ``mv.class0_hp[2]``
  143. + - Motion vector class0 high precision fractional bit probabilities.
  144. + * - __u8
  145. + - ``mv.hp[2]``
  146. + - Motion vector high precision fractional bit probabilities.
  147. +
  148. +``V4L2_CID_MPEG_VIDEO_VP9_FRAME_DECODE_PARAMS (struct)``
  149. + Specifies the frame parameters for the associated VP9 frame decode request.
  150. + This includes the necessary parameters for configuring a stateless hardware
  151. + decoding pipeline for VP9. The bitstream parameters are defined according
  152. + to :ref:`vp9`.
  153. +
  154. + .. note::
  155. +
  156. + This compound control is not yet part of the public kernel API and
  157. + it is expected to change.
  158. +
  159. +.. c:type:: v4l2_ctrl_vp9_frame_decode_params
  160. +
  161. +.. cssclass:: longtable
  162. +
  163. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  164. +
  165. +.. flat-table:: struct v4l2_ctrl_vp9_frame_decode_params
  166. + :header-rows: 0
  167. + :stub-columns: 0
  168. + :widths: 1 1 2
  169. +
  170. + * - __u32
  171. + - ``flags``
  172. + - Combination of V4L2_VP9_FRAME_FLAG_* flags. See
  173. + :c:type:`v4l2_vp9_frame_flags`.
  174. + * - __u16
  175. + - ``compressed_header_size``
  176. + - Compressed header size in bytes.
  177. + * - __u16
  178. + - ``uncompressed_header_size``
  179. + - Uncompressed header size in bytes.
  180. + * - __u8
  181. + - ``profile``
  182. + - VP9 profile. Can be 0, 1, 2 or 3.
  183. + * - __u8
  184. + - ``reset_frame_context``
  185. + - Frame context that should be used/updated when decoding the frame.
  186. + * - __u8
  187. + - ``bit_depth``
  188. + - Component depth in bits. Must be 8 for profile 0 and 1. Must 10 or 12
  189. + for profile 2 and 3.
  190. + * - __u8
  191. + - ``interpolation_filter``
  192. + - Specifies the filter selection used for performing inter prediction. See
  193. + :c:type:`v4l2_vp9_interpolation_filter`.
  194. + * - __u8
  195. + - ``tile_cols_log2``
  196. + - Specifies the base 2 logarithm of the width of each tile (where the
  197. + width is measured in units of 8x8 blocks). Shall be less than or equal
  198. + to 6.
  199. + * - __u8
  200. + - ``tile_rows_log2``
  201. + - Specifies the base 2 logarithm of the height of each tile (where the
  202. + height is measured in units of 8x8 blocks)
  203. + * - __u8
  204. + - ``tx_mode``
  205. + - Specifies the TX mode. See :c:type:`v4l2_vp9_tx_mode`.
  206. + * - __u8
  207. + - ``reference_mode``
  208. + - Specifies the type of inter prediction to be used. See
  209. + :c:type:`v4l2_vp9_reference_mode`.
  210. + * - __u8
  211. + - ``padding``
  212. + - Needed to make this struct 64 bit aligned. Shall be filled with zeroes.
  213. + * - __u16
  214. + - ``frame_width_minus_1``
  215. + - Add 1 to get the frame width expressed in pixels.
  216. + * - __u16
  217. + - ``frame_height_minus_1``
  218. + - Add 1 to to get the frame height expressed in pixels.
  219. + * - __u16
  220. + - ``frame_width_minus_1``
  221. + - Add 1 to to get the expected render width expressed in pixels. This is
  222. + not used during the decoding process but might be used by HW scalers to
  223. + prepare a frame that's ready for scanout.
  224. + * - __u16
  225. + - frame_height_minus_1
  226. + - Add 1 to get the expected render height expressed in pixels. This is
  227. + not used during the decoding process but might be used by HW scalers to
  228. + prepare a frame that's ready for scanout.
  229. + * - __u64
  230. + - ``refs[3]``
  231. + - Array of reference frame timestamps.
  232. + * - struct :c:type:`v4l2_vp9_loop_filter`
  233. + - ``lf``
  234. + - Loop filter parameters. See struct :c:type:`v4l2_vp9_loop_filter`.
  235. + * - struct :c:type:`v4l2_vp9_quantization`
  236. + - ``quant``
  237. + - Quantization parameters. See :c:type:`v4l2_vp9_quantization`.
  238. + * - struct :c:type:`v4l2_vp9_segmentation`
  239. + - ``seg``
  240. + - Segmentation parameters. See :c:type:`v4l2_vp9_segmentation`.
  241. + * - struct :c:type:`v4l2_vp9_probabilities`
  242. + - ``probs``
  243. + - Probabilities. See :c:type:`v4l2_vp9_probabilities`.
  244. +
  245. +.. c:type:: v4l2_vp9_frame_flags
  246. +
  247. +.. cssclass:: longtable
  248. +
  249. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  250. +
  251. +.. flat-table:: enum v4l2_vp9_frame_flags
  252. + :header-rows: 0
  253. + :stub-columns: 0
  254. + :widths: 1 2
  255. +
  256. + * - ``V4L2_VP9_FRAME_FLAG_KEY_FRAME``
  257. + - The frame is a key frame.
  258. + * - ``V4L2_VP9_FRAME_FLAG_SHOW_FRAME``
  259. + - The frame should be displayed.
  260. + * - ``V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT``
  261. + - The decoding should be error resilient.
  262. + * - ``V4L2_VP9_FRAME_FLAG_INTRA_ONLY``
  263. + - The frame does not reference other frames.
  264. + * - ``V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV``
  265. + - the frame might can high precision motion vectors.
  266. + * - ``V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX``
  267. + - Frame context should be updated after decoding.
  268. + * - ``V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE``
  269. + - Parallel decoding is used.
  270. + * - ``V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING``
  271. + - Vertical subsampling is enabled.
  272. + * - ``V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING``
  273. + - Horizontal subsampling is enabled.
  274. + * - ``V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING``
  275. + - The full UV range is used.
  276. +
  277. +.. c:type:: v4l2_vp9_ref_id
  278. +
  279. +.. cssclass:: longtable
  280. +
  281. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  282. +
  283. +.. flat-table:: enum v4l2_vp9_ref_id
  284. + :header-rows: 0
  285. + :stub-columns: 0
  286. + :widths: 1 2
  287. +
  288. + * - ``V4L2_REF_ID_LAST``
  289. + - Last reference frame.
  290. + * - ``V4L2_REF_ID_GOLDEN``
  291. + - Golden reference frame.
  292. + * - ``V4L2_REF_ID_ALTREF``
  293. + - Alternative reference frame.
  294. + * - ``V4L2_REF_ID_CNT``
  295. + - Number of reference frames.
  296. +
  297. +.. c:type:: v4l2_vp9_tx_mode
  298. +
  299. +.. cssclass:: longtable
  300. +
  301. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  302. +
  303. +.. flat-table:: enum v4l2_vp9_tx_mode
  304. + :header-rows: 0
  305. + :stub-columns: 0
  306. + :widths: 1 2
  307. +
  308. + * - ``V4L2_VP9_TX_MODE_ONLY_4X4``
  309. + - Transform size is 4x4.
  310. + * - ``V4L2_VP9_TX_MODE_ALLOW_8X8``
  311. + - Transform size can be up to 8x8.
  312. + * - ``V4L2_VP9_TX_MODE_ALLOW_16X16``
  313. + - Transform size can be up to 16x16.
  314. + * - ``V4L2_VP9_TX_MODE_ALLOW_32X32``
  315. + - transform size can be up to 32x32.
  316. + * - ``V4L2_VP9_TX_MODE_SELECT``
  317. + - Bitstream contains transform size for each block.
  318. +
  319. +.. c:type:: v4l2_vp9_reference_mode
  320. +
  321. +.. cssclass:: longtable
  322. +
  323. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  324. +
  325. +.. flat-table:: enum v4l2_vp9_reference_mode
  326. + :header-rows: 0
  327. + :stub-columns: 0
  328. + :widths: 1 2
  329. +
  330. + * - ``V4L2_VP9_REF_MODE_SINGLE``
  331. + - Indicates that all the inter blocks use only a single reference frame
  332. + to generate motion compensated prediction.
  333. + * - ``V4L2_VP9_REF_MODE_COMPOUND``
  334. + - Requires all the inter blocks to use compound mode. Single reference
  335. + frame prediction is not allowed.
  336. + * - ``V4L2_VP9_REF_MODE_SELECT``
  337. + - Allows each individual inter block to select between single and
  338. + compound prediction modes.
  339. +
  340. +.. c:type:: v4l2_vp9_interpolation_filter
  341. +
  342. +.. cssclass:: longtable
  343. +
  344. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  345. +
  346. +.. flat-table:: enum v4l2_vp9_interpolation_filter
  347. + :header-rows: 0
  348. + :stub-columns: 0
  349. + :widths: 1 2
  350. +
  351. + * - ``V4L2_VP9_INTERP_FILTER_8TAP``
  352. + - Height tap filter.
  353. + * - ``V4L2_VP9_INTERP_FILTER_8TAP_SMOOTH``
  354. + - Height tap smooth filter.
  355. + * - ``V4L2_VP9_INTERP_FILTER_8TAP_SHARP``
  356. + - Height tap sharp filter.
  357. + * - ``V4L2_VP9_INTERP_FILTER_BILINEAR``
  358. + - Bilinear filter.
  359. + * - ``V4L2_VP9_INTERP_FILTER_SWITCHABLE``
  360. + - Filter selection is signaled at the block level.
  361. +
  362. +.. c:type:: v4l2_vp9_reset_frame_context
  363. +
  364. +.. cssclass:: longtable
  365. +
  366. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  367. +
  368. +.. flat-table:: enum v4l2_vp9_reset_frame_context
  369. + :header-rows: 0
  370. + :stub-columns: 0
  371. + :widths: 1 2
  372. +
  373. + * - ``V4L2_VP9_RESET_FRAME_CTX_NONE``
  374. + - Do not reset any frame context.
  375. + * - ``V4L2_VP9_RESET_FRAME_CTX_SPEC``
  376. + - Reset the frame context pointed by
  377. + :c:type:`v4l2_ctrl_vp9_frame_decode_params`.frame_context_idx.
  378. + * - ``V4L2_VP9_RESET_FRAME_CTX_ALL``
  379. + - Reset all frame contexts.
  380. +
  381. +.. c:type:: v4l2_vp9_intra_prediction_mode
  382. +
  383. +.. cssclass:: longtable
  384. +
  385. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  386. +
  387. +.. flat-table:: enum v4l2_vp9_intra_prediction_mode
  388. + :header-rows: 0
  389. + :stub-columns: 0
  390. + :widths: 1 2
  391. +
  392. + * - ``V4L2_VP9_INTRA_PRED_DC``
  393. + - DC intra prediction.
  394. + * - ``V4L2_VP9_INTRA_PRED_MODE_V``
  395. + - Vertical intra prediction.
  396. + * - ``V4L2_VP9_INTRA_PRED_MODE_H``
  397. + - Horizontal intra prediction.
  398. + * - ``V4L2_VP9_INTRA_PRED_MODE_D45``
  399. + - D45 intra prediction.
  400. + * - ``V4L2_VP9_INTRA_PRED_MODE_D135``
  401. + - D135 intra prediction.
  402. + * - ``V4L2_VP9_INTRA_PRED_MODE_D117``
  403. + - D117 intra prediction.
  404. + * - ``V4L2_VP9_INTRA_PRED_MODE_D153``
  405. + - D153 intra prediction.
  406. + * - ``V4L2_VP9_INTRA_PRED_MODE_D207``
  407. + - D207 intra prediction.
  408. + * - ``V4L2_VP9_INTRA_PRED_MODE_D63``
  409. + - D63 intra prediction.
  410. + * - ``V4L2_VP9_INTRA_PRED_MODE_TM``
  411. + - True motion intra prediction.
  412. +
  413. +.. c:type:: v4l2_vp9_segmentation
  414. +
  415. +.. cssclass:: longtable
  416. +
  417. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  418. +
  419. +.. flat-table:: struct v4l2_vp9_segmentation
  420. + :header-rows: 0
  421. + :stub-columns: 0
  422. + :widths: 1 1 2
  423. +
  424. + * - __u8
  425. + - ``flags``
  426. + - Combination of V4L2_VP9_SEGMENTATION_FLAG_* flags. See
  427. + :c:type:`v4l2_vp9_segmentation_flags`.
  428. + * - __u8
  429. + - ``tree_probs[7]``
  430. + - Specifies the probability values to be used when decoding a Segment-ID.
  431. + See '5.15. Segmentation map' section of :ref:`vp9` for more details.
  432. + * - __u8
  433. + - ``pred_prob[3]``
  434. + - Specifies the probability values to be used when decoding a
  435. + Predicted-Segment-ID. See '6.4.14. Get segment id syntax'
  436. + section of :ref:`vp9` for more details.
  437. + * - __u8
  438. + - ``padding[5]``
  439. + - Used to align this struct on 64 bit. Shall be filled with zeroes.
  440. + * - __u8
  441. + - ``feature_enabled[8]``
  442. + - Bitmask defining which features are enabled in each segment.
  443. + * - __u8
  444. + - ``feature_data[8][4]``
  445. + - Data attached to each feature. Data entry is only valid if the feature
  446. + is enabled.
  447. +
  448. +.. c:type:: v4l2_vp9_segment_feature
  449. +
  450. +.. cssclass:: longtable
  451. +
  452. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  453. +
  454. +.. flat-table:: enum v4l2_vp9_segment_feature
  455. + :header-rows: 0
  456. + :stub-columns: 0
  457. + :widths: 1 2
  458. +
  459. + * - ``V4L2_VP9_SEGMENT_FEATURE_QP_DELTA``
  460. + - QP delta segment feature.
  461. + * - ``V4L2_VP9_SEGMENT_FEATURE_LF``
  462. + - Loop filter segment feature.
  463. + * - ``V4L2_VP9_SEGMENT_FEATURE_REF_FRAME``
  464. + - Reference frame segment feature.
  465. + * - ``V4L2_VP9_SEGMENT_FEATURE_SKIP``
  466. + - Skip segment feature.
  467. + * - ``V4L2_VP9_SEGMENT_FEATURE_CNT``
  468. + - Number of segment features.
  469. +
  470. +.. c:type:: v4l2_vp9_segmentation_flags
  471. +
  472. +.. cssclass:: longtable
  473. +
  474. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  475. +
  476. +.. flat-table:: enum v4l2_vp9_segmentation_flags
  477. + :header-rows: 0
  478. + :stub-columns: 0
  479. + :widths: 1 2
  480. +
  481. + * - ``V4L2_VP9_SEGMENTATION_FLAG_ENABLED``
  482. + - Indicates that this frame makes use of the segmentation tool.
  483. + * - ``V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP``
  484. + - Indicates that the segmentation map should be updated during the
  485. + decoding of this frame.
  486. + * - ``V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE``
  487. + - Indicates that the updates to the segmentation map are coded
  488. + relative to the existing segmentation map.
  489. + * - ``V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA``
  490. + - Indicates that new parameters are about to be specified for each
  491. + segment.
  492. + * - ``V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE``
  493. + - Indicates that the segmentation parameters represent the actual values
  494. + to be used.
  495. +
  496. +.. c:type:: v4l2_vp9_quantization
  497. +
  498. +.. cssclass:: longtable
  499. +
  500. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  501. +
  502. +.. flat-table:: struct v4l2_vp9_quantization
  503. + :header-rows: 0
  504. + :stub-columns: 0
  505. + :widths: 1 1 2
  506. +
  507. + * - __u8
  508. + - ``base_q_idx``
  509. + - Indicates the base frame qindex.
  510. + * - __s8
  511. + - ``delta_q_y_dc``
  512. + - Indicates the Y DC quantizer relative to base_q_idx.
  513. + * - __s8
  514. + - ``delta_q_uv_dc``
  515. + - Indicates the UV DC quantizer relative to base_q_idx.
  516. + * - __s8
  517. + - ``delta_q_uv_ac``
  518. + - Indicates the UV AC quantizer relative to base_q_idx.
  519. + * - __u8
  520. + - ``padding[4]``
  521. + - Padding bytes used to align this struct on 64 bit. Must be set to 0.
  522. +
  523. +.. c:type:: v4l2_vp9_loop_filter
  524. +
  525. +.. cssclass:: longtable
  526. +
  527. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  528. +
  529. +.. flat-table:: struct v4l2_vp9_loop_filter
  530. + :header-rows: 0
  531. + :stub-columns: 0
  532. + :widths: 1 1 2
  533. +
  534. + * - __u8
  535. + - ``flags``
  536. + - Combination of V4L2_VP9_LOOP_FILTER_FLAG_* flags.
  537. + See :c:type:`v4l2_vp9_loop_filter_flags`.
  538. + * - __u8
  539. + - ``level``
  540. + - Indicates the loop filter strength.
  541. + * - __u8
  542. + - ``sharpness``
  543. + - Indicates the sharpness level.
  544. + * - __s8
  545. + - ``ref_deltas[4]``
  546. + - Contains the adjustment needed for the filter level based on the chosen
  547. + reference frame.
  548. + * - __s8
  549. + - ``mode_deltas[2]``
  550. + - Contains the adjustment needed for the filter level based on the chosen
  551. + mode
  552. + * - __u8
  553. + - ``level_lookup[8][4][2]``
  554. + - Level lookup table.
  555. +
  556. +
  557. +.. c:type:: v4l2_vp9_loop_filter_flags
  558. +
  559. +.. cssclass:: longtable
  560. +
  561. +.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
  562. +
  563. +.. flat-table:: enum v4l2_vp9_loop_filter_flags
  564. + :header-rows: 0
  565. + :stub-columns: 0
  566. + :widths: 1 2
  567. +
  568. + * - ``V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED``
  569. + - When set, the filter level depends on the mode and reference frame used
  570. + to predict a block.
  571. + * - ``V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE``
  572. + - When set, the bitstream contains additional syntax elements that
  573. + specify which mode and reference frame deltas are to be updated.
  574. +
  575. .. raw:: latex
  576.  
  577. \normalsize
  578. @@ -4001,6 +4551,9 @@
  579. * - __u32
  580. - ``data_bit_offset``
  581. - Offset (in bits) to the video data in the current slice data.
  582. + * - __u32
  583. + - ``slice_segment_addr``
  584. + -
  585. * - __u8
  586. - ``nal_unit_type``
  587. -
  588. @@ -4078,7 +4631,7 @@
  589. - ``num_rps_poc_lt_curr``
  590. - The number of reference pictures in the long-term set.
  591. * - __u8
  592. - - ``padding[7]``
  593. + - ``padding[5]``
  594. - Applications and drivers must set this to zero.
  595. * - struct :c:type:`v4l2_hevc_dpb_entry`
  596. - ``dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
  597. @@ -4206,6 +4759,47 @@
  598. - ``padding[6]``
  599. - Applications and drivers must set this to zero.
  600.  
  601. +``V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (struct)``
  602. + Specifies the scaling matrix (as extracted from the bitstream) for
  603. + the associated HEVC slice data. The bitstream parameters are
  604. + defined according to :ref:`hevc`, section 7.4.5 "Scaling list
  605. + data semantics". For further documentation, refer to the above
  606. + specification, unless there is an explicit comment stating
  607. + otherwise.
  608. +
  609. + .. note::
  610. +
  611. + This compound control is not yet part of the public kernel API and
  612. + it is expected to change.
  613. +
  614. +.. c:type:: v4l2_ctrl_hevc_scaling_matrix
  615. +
  616. +.. cssclass:: longtable
  617. +
  618. +.. flat-table:: struct v4l2_ctrl_hevc_scaling_matrix
  619. + :header-rows: 0
  620. + :stub-columns: 0
  621. + :widths: 1 1 2
  622. +
  623. + * - __u8
  624. + - ``scaling_list_4x4[6][16]``
  625. + -
  626. + * - __u8
  627. + - ``scaling_list_8x8[6][64]``
  628. + -
  629. + * - __u8
  630. + - ``scaling_list_16x16[6][64]``
  631. + -
  632. + * - __u8
  633. + - ``scaling_list_32x32[2][64]``
  634. + -
  635. + * - __u8
  636. + - ``scaling_list_dc_coef_16x16[6]``
  637. + -
  638. + * - __u8
  639. + - ``scaling_list_dc_coef_32x32[2]``
  640. + -
  641. +
  642. ``V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (enum)``
  643. Specifies the decoding mode to use. Currently exposes slice-based and
  644. frame-based decoding but new modes might be added later on.
  645. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/Documentation/userspace-api/media/v4l/pixfmt-compressed.rst linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/pixfmt-compressed.rst
  646. --- media_tree_master/Documentation/userspace-api/media/v4l/pixfmt-compressed.rst 2020-05-30 15:14:40.555029422 -0700
  647. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/pixfmt-compressed.rst 2020-05-30 15:12:45.291527822 -0700
  648. @@ -207,6 +207,7 @@
  649. * ``V4L2_CID_MPEG_VIDEO_HEVC_SPS``
  650. * ``V4L2_CID_MPEG_VIDEO_HEVC_PPS``
  651. * ``V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS``
  652. + * ``V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX``
  653. See the :ref:`associated Codec Control IDs <v4l2-mpeg-hevc>`.
  654. Buffers associated with this pixel format must contain the appropriate
  655. number of macroblocks to decode a full corresponding frame.
  656. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/Documentation/userspace-api/media/v4l/pixfmt-nv15.rst linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/pixfmt-nv15.rst
  657. --- media_tree_master/Documentation/userspace-api/media/v4l/pixfmt-nv15.rst 1969-12-31 16:00:00.000000000 -0800
  658. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/pixfmt-nv15.rst 2020-05-30 15:12:45.291527822 -0700
  659. @@ -0,0 +1,101 @@
  660. +.. Permission is granted to copy, distribute and/or modify this
  661. +.. document under the terms of the GNU Free Documentation License,
  662. +.. Version 1.1 or any later version published by the Free Software
  663. +.. Foundation, with no Invariant Sections, no Front-Cover Texts
  664. +.. and no Back-Cover Texts. A copy of the license is included at
  665. +.. Documentation/userspace-api/media/fdl-appendix.rst.
  666. +..
  667. +.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
  668. +
  669. +.. _V4L2-PIX-FMT-NV15:
  670. +
  671. +**************************
  672. +V4L2_PIX_FMT_NV15 ('NV15')
  673. +**************************
  674. +
  675. +Format with ½ horizontal and vertical chroma resolution, also known as
  676. +YUV 4:2:0. One luminance and one chrominance plane with alternating
  677. +chroma samples similar to ``V4L2_PIX_FMT_NV12`` but with 10-bit samples
  678. +that are grouped into four and packed into five bytes.
  679. +
  680. +The '15' suffix refers to the optimum effective bits per pixel which is
  681. +achieved when the total number of luminance samples is a multiple of 8.
  682. +
  683. +
  684. +Description
  685. +===========
  686. +
  687. +This is a packed 10-bit two-plane version of the YUV 4:2:0 format. The
  688. +three components are separated into two sub-images or planes. The Y plane
  689. +is first. The Y plane has five bytes per each group of four pixels. A
  690. +combined CbCr plane immediately follows the Y plane in memory. The CbCr
  691. +plane is the same width, in bytes, as the Y plane (and of the image), but
  692. +is half as tall in pixels. Each CbCr pair belongs to four pixels. For
  693. +example, Cb\ :sub:`00`/Cr\ :sub:`00` belongs to Y'\ :sub:`00`,
  694. +Y'\ :sub:`01`, Y'\ :sub:`10`, Y'\ :sub:`11`.
  695. +
  696. +If the Y plane has pad bytes after each row, then the CbCr plane has as
  697. +many pad bytes after its rows.
  698. +
  699. +**Byte Order.**
  700. +Little endian. Each cell is one byte. Pixels cross the byte boundary.
  701. +
  702. +
  703. +.. flat-table::
  704. + :header-rows: 0
  705. + :stub-columns: 0
  706. +
  707. + * - start + 0:
  708. + - Y'\ :sub:`00[7:0]`
  709. + - Y'\ :sub:`01[5:0]`\ Y'\ :sub:`00[9:8]`
  710. + - Y'\ :sub:`02[3:0]`\ Y'\ :sub:`01[9:6]`
  711. + - Y'\ :sub:`03[1:0]`\ Y'\ :sub:`02[9:4]`
  712. + - Y'\ :sub:`03[9:2]`
  713. + * - start + 5:
  714. + - Y'\ :sub:`10[7:0]`
  715. + - Y'\ :sub:`11[5:0]`\ Y'\ :sub:`10[9:8]`
  716. + - Y'\ :sub:`12[3:0]`\ Y'\ :sub:`11[9:6]`
  717. + - Y'\ :sub:`13[1:0]`\ Y'\ :sub:`12[9:4]`
  718. + - Y'\ :sub:`13[9:2]`
  719. + * - start + 10:
  720. + - Cb'\ :sub:`00[7:0]`
  721. + - Cr'\ :sub:`00[5:0]`\ Cb'\ :sub:`00[9:8]`
  722. + - Cb'\ :sub:`01[3:0]`\ Cr'\ :sub:`00[9:6]`
  723. + - Cr'\ :sub:`01[1:0]`\ Cb'\ :sub:`01[9:4]`
  724. + - Cr'\ :sub:`01[9:2]`
  725. +
  726. +
  727. +**Color Sample Location:**
  728. +
  729. +.. flat-table::
  730. + :header-rows: 0
  731. + :stub-columns: 0
  732. +
  733. + * -
  734. + - 0
  735. + -
  736. + - 1
  737. + - 2
  738. + -
  739. + - 3
  740. + * - 0
  741. + - Y
  742. + -
  743. + - Y
  744. + - Y
  745. + -
  746. + - Y
  747. + * -
  748. + -
  749. + - C
  750. + -
  751. + -
  752. + - C
  753. + -
  754. + * - 1
  755. + - Y
  756. + -
  757. + - Y
  758. + - Y
  759. + -
  760. + - Y
  761. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/Documentation/userspace-api/media/v4l/pixfmt-nv20.rst linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/pixfmt-nv20.rst
  762. --- media_tree_master/Documentation/userspace-api/media/v4l/pixfmt-nv20.rst 1969-12-31 16:00:00.000000000 -0800
  763. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/pixfmt-nv20.rst 2020-05-30 15:12:45.291527822 -0700
  764. @@ -0,0 +1,99 @@
  765. +.. Permission is granted to copy, distribute and/or modify this
  766. +.. document under the terms of the GNU Free Documentation License,
  767. +.. Version 1.1 or any later version published by the Free Software
  768. +.. Foundation, with no Invariant Sections, no Front-Cover Texts
  769. +.. and no Back-Cover Texts. A copy of the license is included at
  770. +.. Documentation/userspace-api/media/fdl-appendix.rst.
  771. +..
  772. +.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
  773. +
  774. +.. _V4L2-PIX-FMT-NV20:
  775. +
  776. +**************************
  777. +V4L2_PIX_FMT_NV20 ('NV20')
  778. +**************************
  779. +
  780. +Format with ½ horizontal chroma resolution, also known as YUV 4:2:2.
  781. +One luminance and one chrominance plane with alternating chroma samples
  782. +similar to ``V4L2_PIX_FMT_NV16`` but with 10-bit samples
  783. +that are grouped into four and packed into five bytes.
  784. +
  785. +The '20' suffix refers to the optimum effective bits per pixel which is
  786. +achieved when the total number of luminance samples is a multiple of 4.
  787. +
  788. +
  789. +Description
  790. +===========
  791. +
  792. +This is a packed 10-bit two-plane version of the YUV 4:2:2 format. The
  793. +three components are separated into two sub-images or planes. The Y plane
  794. +is first. The Y plane has five bytes per each group of four pixels. A
  795. +combined CbCr plane immediately follows the Y plane in memory. The CbCr
  796. +plane is the same width and height, in bytes, as the Y plane (and of the
  797. +image). Each CbCr pair belongs to two pixels. For example,
  798. +Cb\ :sub:`00`/Cr\ :sub:`00` belongs to Y'\ :sub:`00`, Y'\ :sub:`01`.
  799. +
  800. +If the Y plane has pad bytes after each row, then the CbCr plane has as
  801. +many pad bytes after its rows.
  802. +
  803. +**Byte Order.**
  804. +Little endian. Each cell is one byte. Pixels cross the byte boundary.
  805. +
  806. +
  807. +.. flat-table::
  808. + :header-rows: 0
  809. + :stub-columns: 0
  810. +
  811. + * - start + 0:
  812. + - Y'\ :sub:`00[7:0]`
  813. + - Y'\ :sub:`01[5:0]`\ Y'\ :sub:`00[9:8]`
  814. + - Y'\ :sub:`02[3:0]`\ Y'\ :sub:`01[9:6]`
  815. + - Y'\ :sub:`03[1:0]`\ Y'\ :sub:`02[9:4]`
  816. + - Y'\ :sub:`03[9:2]`
  817. + * - start + 5:
  818. + - Y'\ :sub:`10[7:0]`
  819. + - Y'\ :sub:`11[5:0]`\ Y'\ :sub:`10[9:8]`
  820. + - Y'\ :sub:`12[3:0]`\ Y'\ :sub:`11[9:6]`
  821. + - Y'\ :sub:`13[1:0]`\ Y'\ :sub:`12[9:4]`
  822. + - Y'\ :sub:`13[9:2]`
  823. + * - start + 10:
  824. + - Cb'\ :sub:`00[7:0]`
  825. + - Cr'\ :sub:`00[5:0]`\ Cb'\ :sub:`00[9:8]`
  826. + - Cb'\ :sub:`01[3:0]`\ Cr'\ :sub:`00[9:6]`
  827. + - Cr'\ :sub:`01[1:0]`\ Cb'\ :sub:`01[9:4]`
  828. + - Cr'\ :sub:`01[9:2]`
  829. + * - start + 15:
  830. + - Cb'\ :sub:`10[7:0]`
  831. + - Cr'\ :sub:`10[5:0]`\ Cb'\ :sub:`10[9:8]`
  832. + - Cb'\ :sub:`11[3:0]`\ Cr'\ :sub:`10[9:6]`
  833. + - Cr'\ :sub:`11[1:0]`\ Cb'\ :sub:`11[9:4]`
  834. + - Cr'\ :sub:`11[9:2]`
  835. +
  836. +
  837. +**Color Sample Location:**
  838. +
  839. +.. flat-table::
  840. + :header-rows: 0
  841. + :stub-columns: 0
  842. +
  843. + * -
  844. + - 0
  845. + -
  846. + - 1
  847. + - 2
  848. + -
  849. + - 3
  850. + * - 0
  851. + - Y
  852. + - C
  853. + - Y
  854. + - Y
  855. + - C
  856. + - Y
  857. + * - 1
  858. + - Y
  859. + - C
  860. + - Y
  861. + - Y
  862. + - C
  863. + - Y
  864. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/Documentation/userspace-api/media/v4l/yuv-formats.rst linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/yuv-formats.rst
  865. --- media_tree_master/Documentation/userspace-api/media/v4l/yuv-formats.rst 2020-05-30 15:14:40.567029386 -0700
  866. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/Documentation/userspace-api/media/v4l/yuv-formats.rst 2020-05-30 15:12:45.299527778 -0700
  867. @@ -61,4 +61,6 @@
  868. pixfmt-nv16
  869. pixfmt-nv16m
  870. pixfmt-nv24
  871. + pixfmt-nv15
  872. + pixfmt-nv20
  873. pixfmt-m420
  874. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/gpu/drm/drm_fourcc.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/gpu/drm/drm_fourcc.c
  875. --- media_tree_master/drivers/gpu/drm/drm_fourcc.c 2020-05-30 15:14:42.403023873 -0700
  876. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/gpu/drm/drm_fourcc.c 2020-05-30 15:12:47.103517485 -0700
  877. @@ -274,6 +274,22 @@
  878. { .format = DRM_FORMAT_YUV420_10BIT, .depth = 0,
  879. .num_planes = 1, .cpp = { 0, 0, 0 }, .hsub = 2, .vsub = 2,
  880. .is_yuv = true },
  881. + { .format = DRM_FORMAT_NV15, .depth = 0,
  882. + .num_planes = 2, .char_per_block = { 5, 5, 0 },
  883. + .block_w = { 4, 2, 0 }, .block_h = { 1, 1, 0 }, .hsub = 2,
  884. + .vsub = 2, .is_yuv = true },
  885. + { .format = DRM_FORMAT_NV20, .depth = 0,
  886. + .num_planes = 2, .char_per_block = { 5, 5, 0 },
  887. + .block_w = { 4, 2, 0 }, .block_h = { 1, 1, 0 }, .hsub = 2,
  888. + .vsub = 1, .is_yuv = true },
  889. + { .format = DRM_FORMAT_Q410, .depth = 0,
  890. + .num_planes = 3, .char_per_block = { 2, 2, 2 },
  891. + .block_w = { 1, 1, 1 }, .block_h = { 1, 1, 1 }, .hsub = 0,
  892. + .vsub = 0, .is_yuv = true },
  893. + { .format = DRM_FORMAT_Q401, .depth = 0,
  894. + .num_planes = 3, .char_per_block = { 2, 2, 2 },
  895. + .block_w = { 1, 1, 1 }, .block_h = { 1, 1, 1 }, .hsub = 0,
  896. + .vsub = 0, .is_yuv = true },
  897. };
  898.  
  899. unsigned int i;
  900. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/gpu/drm/rockchip/rockchip_drm_vop.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
  901. --- media_tree_master/drivers/gpu/drm/rockchip/rockchip_drm_vop.c 2020-05-30 15:14:42.615023242 -0700
  902. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/gpu/drm/rockchip/rockchip_drm_vop.c 2020-05-30 15:12:47.307516328 -0700
  903. @@ -248,6 +248,17 @@
  904. }
  905. }
  906.  
  907. +static bool has_10_bits(uint32_t format)
  908. +{
  909. + switch (format) {
  910. + case DRM_FORMAT_NV15:
  911. + case DRM_FORMAT_NV20:
  912. + return true;
  913. + default:
  914. + return false;
  915. + }
  916. +}
  917. +
  918. static enum vop_data_format vop_convert_format(uint32_t format)
  919. {
  920. switch (format) {
  921. @@ -263,8 +274,10 @@
  922. case DRM_FORMAT_BGR565:
  923. return VOP_FMT_RGB565;
  924. case DRM_FORMAT_NV12:
  925. + case DRM_FORMAT_NV15:
  926. return VOP_FMT_YUV420SP;
  927. case DRM_FORMAT_NV16:
  928. + case DRM_FORMAT_NV20:
  929. return VOP_FMT_YUV422SP;
  930. case DRM_FORMAT_NV24:
  931. return VOP_FMT_YUV444SP;
  932. @@ -798,6 +811,7 @@
  933. dma_addr_t dma_addr;
  934. uint32_t val;
  935. bool rb_swap;
  936. + bool is_10_bits;
  937. int win_index = VOP_WIN_TO_INDEX(vop_win);
  938. int format;
  939. int is_yuv = fb->format->is_yuv;
  940. @@ -831,7 +845,12 @@
  941. dsp_sty = dest->y1 + crtc->mode.vtotal - crtc->mode.vsync_start;
  942. dsp_st = dsp_sty << 16 | (dsp_stx & 0xffff);
  943.  
  944. - offset = (src->x1 >> 16) * fb->format->cpp[0];
  945. + is_10_bits = has_10_bits(fb->format->format);
  946. + if (is_10_bits)
  947. + offset = ((src->x1 >> 16) * fb->format->char_per_block[0]) / fb->format->block_w[0];
  948. + else
  949. + offset = (src->x1 >> 16) * fb->format->cpp[0];
  950. +
  951. offset += (src->y1 >> 16) * fb->pitches[0];
  952. dma_addr = rk_obj->dma_addr + offset + fb->offsets[0];
  953.  
  954. @@ -847,6 +866,7 @@
  955. spin_lock(&vop->reg_lock);
  956.  
  957. VOP_WIN_SET(vop, win, format, format);
  958. + VOP_WIN_SET(vop, win, fmt_10, is_10_bits);
  959. VOP_WIN_SET(vop, win, yrgb_vir, DIV_ROUND_UP(fb->pitches[0], 4));
  960. VOP_WIN_SET(vop, win, yrgb_mst, dma_addr);
  961. VOP_WIN_YUV2YUV_SET(vop, win_yuv2yuv, y2r_en, is_yuv);
  962. @@ -863,7 +883,10 @@
  963. uv_obj = fb->obj[1];
  964. rk_uv_obj = to_rockchip_obj(uv_obj);
  965.  
  966. - offset = (src->x1 >> 16) * bpp / hsub;
  967. + if (is_10_bits)
  968. + offset = (((src->x1 >> 16) * bpp) / fb->format->block_w[1]) / hsub;
  969. + else
  970. + offset = (src->x1 >> 16) * bpp / hsub;
  971. offset += (src->y1 >> 16) * fb->pitches[1] / vsub;
  972.  
  973. dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1];
  974. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/gpu/drm/rockchip/rockchip_drm_vop.h linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
  975. --- media_tree_master/drivers/gpu/drm/rockchip/rockchip_drm_vop.h 2020-05-30 15:14:42.615023242 -0700
  976. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/gpu/drm/rockchip/rockchip_drm_vop.h 2020-05-30 15:12:47.307516328 -0700
  977. @@ -138,6 +138,7 @@
  978. struct vop_reg enable;
  979. struct vop_reg gate;
  980. struct vop_reg format;
  981. + struct vop_reg fmt_10;
  982. struct vop_reg rb_swap;
  983. struct vop_reg act_info;
  984. struct vop_reg dsp_info;
  985. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/gpu/drm/rockchip/rockchip_vop_reg.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
  986. --- media_tree_master/drivers/gpu/drm/rockchip/rockchip_vop_reg.c 2020-05-30 15:14:42.615023242 -0700
  987. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/gpu/drm/rockchip/rockchip_vop_reg.c 2020-05-30 15:12:47.311516305 -0700
  988. @@ -48,6 +48,8 @@
  989. DRM_FORMAT_NV12,
  990. DRM_FORMAT_NV16,
  991. DRM_FORMAT_NV24,
  992. + DRM_FORMAT_NV15,
  993. + DRM_FORMAT_NV20,
  994. };
  995.  
  996. static const uint32_t formats_win_lite[] = {
  997. @@ -547,6 +549,7 @@
  998. .nformats = ARRAY_SIZE(formats_win_full),
  999. .enable = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 0),
  1000. .format = VOP_REG(RK3288_WIN0_CTRL0, 0x7, 1),
  1001. + .fmt_10 = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 4),
  1002. .rb_swap = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 12),
  1003. .act_info = VOP_REG(RK3288_WIN0_ACT_INFO, 0x1fff1fff, 0),
  1004. .dsp_info = VOP_REG(RK3288_WIN0_DSP_INFO, 0x0fff0fff, 0),
  1005. @@ -679,6 +682,7 @@
  1006. .nformats = ARRAY_SIZE(formats_win_full),
  1007. .enable = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 0),
  1008. .format = VOP_REG(RK3368_WIN0_CTRL0, 0x7, 1),
  1009. + .fmt_10 = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 4),
  1010. .rb_swap = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 12),
  1011. .x_mir_en = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 21),
  1012. .y_mir_en = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 22),
  1013. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/media/v4l2-core/v4l2-common.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/media/v4l2-core/v4l2-common.c
  1014. --- media_tree_master/drivers/media/v4l2-core/v4l2-common.c 2020-05-30 15:14:43.247021363 -0700
  1015. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/media/v4l2-core/v4l2-common.c 2020-05-30 15:12:47.927512813 -0700
  1016. @@ -268,6 +268,9 @@
  1017. { .format = V4L2_PIX_FMT_NV24, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 1, .vdiv = 1 },
  1018. { .format = V4L2_PIX_FMT_NV42, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 1, .vdiv = 1 },
  1019.  
  1020. + { .format = V4L2_PIX_FMT_NV15, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 5, 5, 0, 0 }, .hdiv = 2, .vdiv = 2, .block_w = { 4, 2, 0, 0 }, .block_h = { 1, 1, 0, 0 } },
  1021. + { .format = V4L2_PIX_FMT_NV20, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 5, 5, 0, 0 }, .hdiv = 2, .vdiv = 1, .block_w = { 4, 2, 0, 0 }, .block_h = { 1, 1, 0, 0 } },
  1022. +
  1023. { .format = V4L2_PIX_FMT_YUV410, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 3, .bpp = { 1, 1, 1, 0 }, .hdiv = 4, .vdiv = 4 },
  1024. { .format = V4L2_PIX_FMT_YVU410, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 3, .bpp = { 1, 1, 1, 0 }, .hdiv = 4, .vdiv = 4 },
  1025. { .format = V4L2_PIX_FMT_YUV411P, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 3, .bpp = { 1, 1, 1, 0 }, .hdiv = 4, .vdiv = 1 },
  1026. @@ -334,6 +337,28 @@
  1027. return info->block_h[plane];
  1028. }
  1029.  
  1030. +static inline unsigned int v4l2_format_plane_width(const struct v4l2_format_info *info, int plane, unsigned int width)
  1031. +{
  1032. + unsigned int hdiv = plane ? info->hdiv : 1;
  1033. + unsigned int bytes = DIV_ROUND_UP(width * info->bpp[plane],
  1034. + v4l2_format_block_width(info, plane) *
  1035. + v4l2_format_block_height(info, plane));
  1036. + return DIV_ROUND_UP(bytes, hdiv);
  1037. +}
  1038. +
  1039. +static inline unsigned int v4l2_format_plane_height(const struct v4l2_format_info *info, int plane, unsigned int height)
  1040. +{
  1041. + unsigned int vdiv = plane ? info->vdiv : 1;
  1042. + unsigned int lines = ALIGN(height, v4l2_format_block_height(info, plane));
  1043. + return DIV_ROUND_UP(lines, vdiv);
  1044. +}
  1045. +
  1046. +static inline unsigned int v4l2_format_plane_size(const struct v4l2_format_info *info, int plane, unsigned int width, unsigned int height)
  1047. +{
  1048. + return v4l2_format_plane_width(info, plane, width) *
  1049. + v4l2_format_plane_height(info, plane, height);
  1050. +}
  1051. +
  1052. void v4l2_apply_frmsize_constraints(u32 *width, u32 *height,
  1053. const struct v4l2_frmsize_stepwise *frmsize)
  1054. {
  1055. @@ -369,37 +394,19 @@
  1056.  
  1057. if (info->mem_planes == 1) {
  1058. plane = &pixfmt->plane_fmt[0];
  1059. - plane->bytesperline = ALIGN(width, v4l2_format_block_width(info, 0)) * info->bpp[0];
  1060. + plane->bytesperline = v4l2_format_plane_width(info, 0, width);
  1061. plane->sizeimage = 0;
  1062.  
  1063. - for (i = 0; i < info->comp_planes; i++) {
  1064. - unsigned int hdiv = (i == 0) ? 1 : info->hdiv;
  1065. - unsigned int vdiv = (i == 0) ? 1 : info->vdiv;
  1066. - unsigned int aligned_width;
  1067. - unsigned int aligned_height;
  1068. -
  1069. - aligned_width = ALIGN(width, v4l2_format_block_width(info, i));
  1070. - aligned_height = ALIGN(height, v4l2_format_block_height(info, i));
  1071. -
  1072. - plane->sizeimage += info->bpp[i] *
  1073. - DIV_ROUND_UP(aligned_width, hdiv) *
  1074. - DIV_ROUND_UP(aligned_height, vdiv);
  1075. - }
  1076. + for (i = 0; i < info->comp_planes; i++)
  1077. + plane->sizeimage +=
  1078. + v4l2_format_plane_size(info, i, width, height);
  1079. } else {
  1080. for (i = 0; i < info->comp_planes; i++) {
  1081. - unsigned int hdiv = (i == 0) ? 1 : info->hdiv;
  1082. - unsigned int vdiv = (i == 0) ? 1 : info->vdiv;
  1083. - unsigned int aligned_width;
  1084. - unsigned int aligned_height;
  1085. -
  1086. - aligned_width = ALIGN(width, v4l2_format_block_width(info, i));
  1087. - aligned_height = ALIGN(height, v4l2_format_block_height(info, i));
  1088. -
  1089. plane = &pixfmt->plane_fmt[i];
  1090. plane->bytesperline =
  1091. - info->bpp[i] * DIV_ROUND_UP(aligned_width, hdiv);
  1092. - plane->sizeimage =
  1093. - plane->bytesperline * DIV_ROUND_UP(aligned_height, vdiv);
  1094. + v4l2_format_plane_width(info, i, width);
  1095. + plane->sizeimage = plane->bytesperline *
  1096. + v4l2_format_plane_height(info, i, height);
  1097. }
  1098. }
  1099. return 0;
  1100. @@ -423,22 +430,12 @@
  1101. pixfmt->width = width;
  1102. pixfmt->height = height;
  1103. pixfmt->pixelformat = pixelformat;
  1104. - pixfmt->bytesperline = ALIGN(width, v4l2_format_block_width(info, 0)) * info->bpp[0];
  1105. + pixfmt->bytesperline = v4l2_format_plane_width(info, 0, width);
  1106. pixfmt->sizeimage = 0;
  1107.  
  1108. - for (i = 0; i < info->comp_planes; i++) {
  1109. - unsigned int hdiv = (i == 0) ? 1 : info->hdiv;
  1110. - unsigned int vdiv = (i == 0) ? 1 : info->vdiv;
  1111. - unsigned int aligned_width;
  1112. - unsigned int aligned_height;
  1113. -
  1114. - aligned_width = ALIGN(width, v4l2_format_block_width(info, i));
  1115. - aligned_height = ALIGN(height, v4l2_format_block_height(info, i));
  1116. -
  1117. - pixfmt->sizeimage += info->bpp[i] *
  1118. - DIV_ROUND_UP(aligned_width, hdiv) *
  1119. - DIV_ROUND_UP(aligned_height, vdiv);
  1120. - }
  1121. + for (i = 0; i < info->comp_planes; i++)
  1122. + pixfmt->sizeimage +=
  1123. + v4l2_format_plane_size(info, i, width, height);
  1124. return 0;
  1125. }
  1126. EXPORT_SYMBOL_GPL(v4l2_fill_pixfmt);
  1127. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/media/v4l2-core/v4l2-ctrls.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/media/v4l2-core/v4l2-ctrls.c
  1128. --- media_tree_master/drivers/media/v4l2-core/v4l2-ctrls.c 2020-05-30 15:14:43.247021363 -0700
  1129. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/media/v4l2-core/v4l2-ctrls.c 2020-05-30 15:12:47.931512790 -0700
  1130. @@ -939,6 +939,11 @@
  1131. case V4L2_CID_MPEG_VIDEO_VP8_PROFILE: return "VP8 Profile";
  1132. case V4L2_CID_MPEG_VIDEO_VP9_PROFILE: return "VP9 Profile";
  1133. case V4L2_CID_MPEG_VIDEO_VP8_FRAME_HEADER: return "VP8 Frame Header";
  1134. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_DECODE_PARAMS: return "VP9 Frame Decode Parameters";
  1135. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(0): return "VP9 Frame Context 0";
  1136. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(1): return "VP9 Frame Context 1";
  1137. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(2): return "VP9 Frame Context 2";
  1138. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(3): return "VP9 Frame Context 3";
  1139.  
  1140. /* HEVC controls */
  1141. case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP: return "HEVC I-Frame QP Value";
  1142. @@ -989,6 +994,7 @@
  1143. case V4L2_CID_MPEG_VIDEO_HEVC_SPS: return "HEVC Sequence Parameter Set";
  1144. case V4L2_CID_MPEG_VIDEO_HEVC_PPS: return "HEVC Picture Parameter Set";
  1145. case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS: return "HEVC Slice Parameters";
  1146. + case V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX: return "HEVC Scaling Matrix";
  1147. case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE: return "HEVC Decode Mode";
  1148. case V4L2_CID_MPEG_VIDEO_HEVC_START_CODE: return "HEVC Start Code";
  1149.  
  1150. @@ -1415,6 +1421,15 @@
  1151. case V4L2_CID_MPEG_VIDEO_VP8_FRAME_HEADER:
  1152. *type = V4L2_CTRL_TYPE_VP8_FRAME_HEADER;
  1153. break;
  1154. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_DECODE_PARAMS:
  1155. + *type = V4L2_CTRL_TYPE_VP9_FRAME_DECODE_PARAMS;
  1156. + break;
  1157. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(0):
  1158. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(1):
  1159. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(2):
  1160. + case V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(3):
  1161. + *type = V4L2_CTRL_TYPE_VP9_FRAME_CONTEXT;
  1162. + break;
  1163. case V4L2_CID_MPEG_VIDEO_HEVC_SPS:
  1164. *type = V4L2_CTRL_TYPE_HEVC_SPS;
  1165. break;
  1166. @@ -1424,6 +1439,9 @@
  1167. case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS:
  1168. *type = V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS;
  1169. break;
  1170. + case V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX:
  1171. + *type = V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX;
  1172. + break;
  1173. case V4L2_CID_UNIT_CELL_SIZE:
  1174. *type = V4L2_CTRL_TYPE_AREA;
  1175. *flags |= V4L2_CTRL_FLAG_READ_ONLY;
  1176. @@ -1717,6 +1735,219 @@
  1177. 0; \
  1178. })
  1179.  
  1180. +static int
  1181. +validate_vp9_lf_params(struct v4l2_vp9_loop_filter *lf)
  1182. +{
  1183. + unsigned int i, j, k;
  1184. +
  1185. + if (lf->flags &
  1186. + ~(V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED |
  1187. + V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE))
  1188. + return -EINVAL;
  1189. +
  1190. + /*
  1191. + * V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED implies
  1192. + * V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE.
  1193. + */
  1194. + if (lf->flags & V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE &&
  1195. + !(lf->flags & V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED))
  1196. + return -EINVAL;
  1197. +
  1198. + /* That all values are in the accepted range. */
  1199. + if (lf->level > GENMASK(5, 0))
  1200. + return -EINVAL;
  1201. +
  1202. + if (lf->sharpness > GENMASK(2, 0))
  1203. + return -EINVAL;
  1204. +
  1205. + for (i = 0; i < ARRAY_SIZE(lf->ref_deltas); i++) {
  1206. + if (lf->ref_deltas[i] < -63 || lf->ref_deltas[i] > 63)
  1207. + return -EINVAL;
  1208. + }
  1209. +
  1210. + for (i = 0; i < ARRAY_SIZE(lf->mode_deltas); i++) {
  1211. + if (lf->mode_deltas[i] < -63 || lf->mode_deltas[i] > 63)
  1212. + return -EINVAL;
  1213. + }
  1214. +
  1215. + for (i = 0; i < ARRAY_SIZE(lf->level_lookup); i++) {
  1216. + for (j = 0; j < ARRAY_SIZE(lf->level_lookup[0]); j++) {
  1217. + for (k = 0; k < ARRAY_SIZE(lf->level_lookup[0][0]); k++) {
  1218. + if (lf->level_lookup[i][j][k] > 63)
  1219. + return -EINVAL;
  1220. + }
  1221. + }
  1222. + }
  1223. +
  1224. + return 0;
  1225. +}
  1226. +
  1227. +static int
  1228. +validate_vp9_quant_params(struct v4l2_vp9_quantization *quant)
  1229. +{
  1230. + if (quant->delta_q_y_dc < -15 || quant->delta_q_y_dc > 15 ||
  1231. + quant->delta_q_uv_dc < -15 || quant->delta_q_uv_dc > 15 ||
  1232. + quant->delta_q_uv_ac < -15 || quant->delta_q_uv_ac > 15)
  1233. + return -EINVAL;
  1234. +
  1235. + memset(quant->padding, 0, sizeof(quant->padding));
  1236. + return 0;
  1237. +}
  1238. +
  1239. +static int
  1240. +validate_vp9_seg_params(struct v4l2_vp9_segmentation *seg)
  1241. +{
  1242. + unsigned int i, j;
  1243. +
  1244. + if (seg->flags &
  1245. + ~(V4L2_VP9_SEGMENTATION_FLAG_ENABLED |
  1246. + V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP |
  1247. + V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE |
  1248. + V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA |
  1249. + V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE))
  1250. + return -EINVAL;
  1251. +
  1252. + /*
  1253. + * V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP and
  1254. + * V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA imply
  1255. + * V4L2_VP9_SEGMENTATION_FLAG_ENABLED.
  1256. + */
  1257. + if ((seg->flags &
  1258. + (V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP |
  1259. + V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA)) &&
  1260. + !(seg->flags & V4L2_VP9_SEGMENTATION_FLAG_ENABLED))
  1261. + return -EINVAL;
  1262. +
  1263. + /*
  1264. + * V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE implies
  1265. + * V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP.
  1266. + */
  1267. + if (seg->flags & V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE &&
  1268. + !(seg->flags & V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP))
  1269. + return -EINVAL;
  1270. +
  1271. + /*
  1272. + * V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE implies
  1273. + * V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA.
  1274. + */
  1275. + if (seg->flags & V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE &&
  1276. + !(seg->flags & V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA))
  1277. + return -EINVAL;
  1278. +
  1279. + for (i = 0; i < ARRAY_SIZE(seg->feature_enabled); i++) {
  1280. + if (seg->feature_enabled[i] &
  1281. + ~(V4L2_VP9_SEGMENT_FEATURE_QP_DELTA |
  1282. + V4L2_VP9_SEGMENT_FEATURE_LF |
  1283. + V4L2_VP9_SEGMENT_FEATURE_REF_FRAME |
  1284. + V4L2_VP9_SEGMENT_FEATURE_SKIP))
  1285. + return -EINVAL;
  1286. + }
  1287. +
  1288. + for (i = 0; i < ARRAY_SIZE(seg->feature_data); i++) {
  1289. + const int range[] = {255, 63, 3, 0};
  1290. +
  1291. + for (j = 0; j < ARRAY_SIZE(seg->feature_data[j]); j++) {
  1292. + if (seg->feature_data[i][j] < -range[j] ||
  1293. + seg->feature_data[i][j] > range[j])
  1294. + return -EINVAL;
  1295. + }
  1296. + }
  1297. +
  1298. + memset(seg->padding, 0, sizeof(seg->padding));
  1299. + return 0;
  1300. +}
  1301. +
  1302. +static int
  1303. +validate_vp9_frame_decode_params(struct v4l2_ctrl_vp9_frame_decode_params *dec_params)
  1304. +{
  1305. + int ret;
  1306. +
  1307. + /* Make sure we're not passed invalid flags. */
  1308. + if (dec_params->flags &
  1309. + ~(V4L2_VP9_FRAME_FLAG_KEY_FRAME |
  1310. + V4L2_VP9_FRAME_FLAG_SHOW_FRAME |
  1311. + V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT |
  1312. + V4L2_VP9_FRAME_FLAG_INTRA_ONLY |
  1313. + V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV |
  1314. + V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX |
  1315. + V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE |
  1316. + V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING |
  1317. + V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING |
  1318. + V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING))
  1319. + return -EINVAL;
  1320. +
  1321. + /*
  1322. + * The refresh context and error resilient flags are mutually exclusive.
  1323. + * Same goes for parallel decoding and error resilient modes.
  1324. + */
  1325. + if (dec_params->flags & V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT &&
  1326. + dec_params->flags &
  1327. + (V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX |
  1328. + V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE))
  1329. + return -EINVAL;
  1330. +
  1331. + if (dec_params->profile > V4L2_VP9_PROFILE_MAX)
  1332. + return -EINVAL;
  1333. +
  1334. + if (dec_params->reset_frame_context > V4L2_VP9_RESET_FRAME_CTX_ALL)
  1335. + return -EINVAL;
  1336. +
  1337. + if (dec_params->frame_context_idx >= V4L2_VP9_NUM_FRAME_CTX)
  1338. + return -EINVAL;
  1339. +
  1340. + /*
  1341. + * Profiles 0 and 1 only support 8-bit depth, profiles 2 and 3 only 10
  1342. + * and 12 bit depths.
  1343. + */
  1344. + if ((dec_params->profile < 2 && dec_params->bit_depth != 8) ||
  1345. + (dec_params->profile >= 2 &&
  1346. + (dec_params->bit_depth != 10 && dec_params->bit_depth != 12)))
  1347. + return -EINVAL;
  1348. +
  1349. + /* Profile 0 and 2 only accept YUV 4:2:0. */
  1350. + if ((dec_params->profile == 0 || dec_params->profile == 2) &&
  1351. + (!(dec_params->flags & V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING) ||
  1352. + !(dec_params->flags & V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING)))
  1353. + return -EINVAL;
  1354. +
  1355. + /* Profile 1 and 3 only accept YUV 4:2:2, 4:4:0 and 4:4:4. */
  1356. + if ((dec_params->profile == 1 || dec_params->profile == 3) &&
  1357. + ((dec_params->flags & V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING) &&
  1358. + (dec_params->flags & V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING)))
  1359. + return -EINVAL;
  1360. +
  1361. + if (dec_params->interpolation_filter > V4L2_VP9_INTERP_FILTER_SWITCHABLE)
  1362. + return -EINVAL;
  1363. +
  1364. + /*
  1365. + * According to the spec, tile_cols_log2 shall be less than or equal
  1366. + * to 6.
  1367. + */
  1368. + if (dec_params->tile_cols_log2 > 6)
  1369. + return -EINVAL;
  1370. +
  1371. + if (dec_params->tx_mode > V4L2_VP9_TX_MODE_SELECT)
  1372. + return -EINVAL;
  1373. +
  1374. + if (dec_params->reference_mode > V4L2_VP9_REF_MODE_SELECT)
  1375. + return -EINVAL;
  1376. +
  1377. + ret = validate_vp9_lf_params(&dec_params->lf);
  1378. + if (ret)
  1379. + return ret;
  1380. +
  1381. + ret = validate_vp9_quant_params(&dec_params->quant);
  1382. + if (ret)
  1383. + return ret;
  1384. +
  1385. + ret = validate_vp9_seg_params(&dec_params->seg);
  1386. + if (ret)
  1387. + return ret;
  1388. +
  1389. + memset(dec_params->padding, 0, sizeof(dec_params->padding));
  1390. + return 0;
  1391. +}
  1392. +
  1393. /* Validate a new control */
  1394.  
  1395. #define zero_padding(s) \
  1396. @@ -1813,6 +2044,12 @@
  1397. zero_padding(p_vp8_frame_header->coder_state);
  1398. break;
  1399.  
  1400. + case V4L2_CTRL_TYPE_VP9_FRAME_DECODE_PARAMS:
  1401. + return validate_vp9_frame_decode_params(p);
  1402. +
  1403. + case V4L2_CTRL_TYPE_VP9_FRAME_CONTEXT:
  1404. + break;
  1405. +
  1406. case V4L2_CTRL_TYPE_HEVC_SPS:
  1407. p_hevc_sps = p;
  1408.  
  1409. @@ -1844,7 +2081,7 @@
  1410. sizeof(p_hevc_pps->row_height_minus1));
  1411.  
  1412. p_hevc_pps->flags &=
  1413. - ~V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED;
  1414. + ~V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED;
  1415. }
  1416.  
  1417. if (p_hevc_pps->flags &
  1418. @@ -1876,6 +2113,9 @@
  1419. zero_padding(*p_hevc_slice_params);
  1420. break;
  1421.  
  1422. + case V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX:
  1423. + break;
  1424. +
  1425. case V4L2_CTRL_TYPE_AREA:
  1426. area = p;
  1427. if (!area->width || !area->height)
  1428. @@ -2556,6 +2796,12 @@
  1429. case V4L2_CTRL_TYPE_VP8_FRAME_HEADER:
  1430. elem_size = sizeof(struct v4l2_ctrl_vp8_frame_header);
  1431. break;
  1432. + case V4L2_CTRL_TYPE_VP9_FRAME_CONTEXT:
  1433. + elem_size = sizeof(struct v4l2_ctrl_vp9_frame_ctx);
  1434. + break;
  1435. + case V4L2_CTRL_TYPE_VP9_FRAME_DECODE_PARAMS:
  1436. + elem_size = sizeof(struct v4l2_ctrl_vp9_frame_decode_params);
  1437. + break;
  1438. case V4L2_CTRL_TYPE_HEVC_SPS:
  1439. elem_size = sizeof(struct v4l2_ctrl_hevc_sps);
  1440. break;
  1441. @@ -2565,6 +2811,9 @@
  1442. case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS:
  1443. elem_size = sizeof(struct v4l2_ctrl_hevc_slice_params);
  1444. break;
  1445. + case V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX:
  1446. + elem_size = sizeof(struct v4l2_ctrl_hevc_scaling_matrix);
  1447. + break;
  1448. case V4L2_CTRL_TYPE_AREA:
  1449. elem_size = sizeof(struct v4l2_area);
  1450. break;
  1451. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/media/v4l2-core/v4l2-h264.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/media/v4l2-core/v4l2-h264.c
  1452. --- media_tree_master/drivers/media/v4l2-core/v4l2-h264.c 2020-05-30 15:14:43.247021363 -0700
  1453. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/media/v4l2-core/v4l2-h264.c 2020-05-30 15:12:47.931512790 -0700
  1454. @@ -66,10 +66,11 @@
  1455. else
  1456. b->refs[i].frame_num = dpb[i].frame_num;
  1457.  
  1458. - if (!(dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_FIELD))
  1459. + if ((dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_ACTIVE) ==
  1460. + V4L2_H264_DPB_ENTRY_FLAG_ACTIVE)
  1461. pic_order_count = min(dpb[i].top_field_order_cnt,
  1462. dpb[i].bottom_field_order_cnt);
  1463. - else if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_FIELD)
  1464. + else if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_REF)
  1465. pic_order_count = dpb[i].bottom_field_order_cnt;
  1466. else
  1467. pic_order_count = dpb[i].top_field_order_cnt;
  1468. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/media/v4l2-core/v4l2-ioctl.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/media/v4l2-core/v4l2-ioctl.c
  1469. --- media_tree_master/drivers/media/v4l2-core/v4l2-ioctl.c 2020-05-30 15:14:43.247021363 -0700
  1470. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/media/v4l2-core/v4l2-ioctl.c 2020-05-30 15:12:47.931512790 -0700
  1471. @@ -1315,6 +1315,8 @@
  1472. case V4L2_PIX_FMT_NV61: descr = "Y/CrCb 4:2:2"; break;
  1473. case V4L2_PIX_FMT_NV24: descr = "Y/CbCr 4:4:4"; break;
  1474. case V4L2_PIX_FMT_NV42: descr = "Y/CrCb 4:4:4"; break;
  1475. + case V4L2_PIX_FMT_NV15: descr = "10-bit Y/CbCr 4:2:0 (Packed)"; break;
  1476. + case V4L2_PIX_FMT_NV20: descr = "10-bit Y/CbCr 4:2:2 (Packed)"; break;
  1477. case V4L2_PIX_FMT_NV12M: descr = "Y/CbCr 4:2:0 (N-C)"; break;
  1478. case V4L2_PIX_FMT_NV21M: descr = "Y/CrCb 4:2:0 (N-C)"; break;
  1479. case V4L2_PIX_FMT_NV16M: descr = "Y/CbCr 4:2:2 (N-C)"; break;
  1480. @@ -1423,6 +1425,7 @@
  1481. case V4L2_PIX_FMT_VP8: descr = "VP8"; break;
  1482. case V4L2_PIX_FMT_VP8_FRAME: descr = "VP8 Frame"; break;
  1483. case V4L2_PIX_FMT_VP9: descr = "VP9"; break;
  1484. + case V4L2_PIX_FMT_VP9_FRAME: descr = "VP9 Frame"; break;
  1485. case V4L2_PIX_FMT_HEVC: descr = "HEVC"; break; /* aka H.265 */
  1486. case V4L2_PIX_FMT_HEVC_SLICE: descr = "HEVC Parsed Slice Data"; break;
  1487. case V4L2_PIX_FMT_FWHT: descr = "FWHT"; break; /* used in vicodec */
  1488. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/staging/media/rkvdec/Makefile linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/Makefile
  1489. --- media_tree_master/drivers/staging/media/rkvdec/Makefile 2020-05-30 15:14:44.771016868 -0700
  1490. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/Makefile 2020-05-30 15:12:49.823502132 -0700
  1491. @@ -1,3 +1,3 @@
  1492. obj-$(CONFIG_VIDEO_ROCKCHIP_VDEC) += rockchip-vdec.o
  1493.  
  1494. -rockchip-vdec-y += rkvdec.o rkvdec-h264.o
  1495. +rockchip-vdec-y += rkvdec.o rkvdec-h264.o rkvdec-hevc.o rkvdec-vp9.o
  1496. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/staging/media/rkvdec/rkvdec.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec.c
  1497. --- media_tree_master/drivers/staging/media/rkvdec/rkvdec.c 2020-05-30 15:14:44.771016868 -0700
  1498. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec.c 2020-05-30 15:12:49.823502132 -0700
  1499. @@ -67,6 +67,19 @@
  1500. .cfg.def = V4L2_MPEG_VIDEO_H264_START_CODE_ANNEX_B,
  1501. .cfg.max = V4L2_MPEG_VIDEO_H264_START_CODE_ANNEX_B,
  1502. },
  1503. + {
  1504. + .cfg.id = V4L2_CID_MPEG_VIDEO_H264_PROFILE,
  1505. + .cfg.min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
  1506. + .cfg.max = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422,
  1507. + .cfg.menu_skip_mask =
  1508. + BIT(V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED),
  1509. + .cfg.def = V4L2_MPEG_VIDEO_H264_PROFILE_MAIN,
  1510. + },
  1511. + {
  1512. + .cfg.id = V4L2_CID_MPEG_VIDEO_H264_LEVEL,
  1513. + .cfg.min = V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
  1514. + .cfg.max = V4L2_MPEG_VIDEO_H264_LEVEL_5_1,
  1515. + },
  1516. };
  1517.  
  1518. static const struct rkvdec_ctrls rkvdec_h264_ctrls = {
  1519. @@ -74,18 +87,121 @@
  1520. .num_ctrls = ARRAY_SIZE(rkvdec_h264_ctrl_descs),
  1521. };
  1522.  
  1523. +static const struct rkvdec_ctrl_desc rkvdec_hevc_ctrl_descs[] = {
  1524. + {
  1525. + .per_request = true,
  1526. + .mandatory = true,
  1527. + .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS,
  1528. + // HACK: match ffmpeg v4l2 request api hwaccel size,
  1529. + // we should support variable length up to 600 slices
  1530. + .cfg.dims = { 16 },
  1531. + },
  1532. + {
  1533. + .per_request = true,
  1534. + .mandatory = true,
  1535. + .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_SPS,
  1536. + },
  1537. + {
  1538. + .per_request = true,
  1539. + .mandatory = true,
  1540. + .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_PPS,
  1541. + },
  1542. + {
  1543. + .per_request = true,
  1544. + .mandatory = true,
  1545. + .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX,
  1546. + },
  1547. + {
  1548. + .mandatory = true,
  1549. + .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE,
  1550. + .cfg.min = V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED,
  1551. + .cfg.max = V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED,
  1552. + .cfg.def = V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED,
  1553. + },
  1554. + {
  1555. + .mandatory = true,
  1556. + .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_START_CODE,
  1557. + .cfg.min = V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B,
  1558. + .cfg.def = V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B,
  1559. + .cfg.max = V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B,
  1560. + },
  1561. + {
  1562. + .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_PROFILE,
  1563. + .cfg.min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
  1564. + .cfg.max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
  1565. + .cfg.def = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
  1566. + },
  1567. + {
  1568. + .cfg.id = V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
  1569. + .cfg.min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
  1570. + .cfg.max = V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1,
  1571. + },
  1572. +};
  1573. +
  1574. +static const struct rkvdec_ctrls rkvdec_hevc_ctrls = {
  1575. + .ctrls = rkvdec_hevc_ctrl_descs,
  1576. + .num_ctrls = ARRAY_SIZE(rkvdec_hevc_ctrl_descs),
  1577. +};
  1578. +
  1579. +static const struct rkvdec_ctrl_desc rkvdec_vp9_ctrl_descs[] = {
  1580. + {
  1581. + .per_request = true,
  1582. + .mandatory = true,
  1583. + .cfg.id = V4L2_CID_MPEG_VIDEO_VP9_FRAME_DECODE_PARAMS,
  1584. + },
  1585. + {
  1586. + .mandatory = true,
  1587. + .cfg.id = V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(0),
  1588. + },
  1589. + {
  1590. + .mandatory = true,
  1591. + .cfg.id = V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(1),
  1592. + },
  1593. + {
  1594. + .mandatory = true,
  1595. + .cfg.id = V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(2),
  1596. + },
  1597. + {
  1598. + .mandatory = true,
  1599. + .cfg.id = V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(3),
  1600. + },
  1601. + {
  1602. + .cfg.id = V4L2_CID_MPEG_VIDEO_VP9_PROFILE,
  1603. + .cfg.min = V4L2_MPEG_VIDEO_VP9_PROFILE_0,
  1604. + .cfg.max = V4L2_MPEG_VIDEO_VP9_PROFILE_0,
  1605. + .cfg.def = V4L2_MPEG_VIDEO_VP9_PROFILE_0,
  1606. + },
  1607. +};
  1608. +
  1609. +static const struct rkvdec_ctrls rkvdec_vp9_ctrls = {
  1610. + .ctrls = rkvdec_vp9_ctrl_descs,
  1611. + .num_ctrls = ARRAY_SIZE(rkvdec_vp9_ctrl_descs),
  1612. +};
  1613. +
  1614. static const u32 rkvdec_h264_decoded_fmts[] = {
  1615. V4L2_PIX_FMT_NV12,
  1616. + V4L2_PIX_FMT_NV15,
  1617. + V4L2_PIX_FMT_NV16,
  1618. + V4L2_PIX_FMT_NV20,
  1619. +};
  1620. +
  1621. +static const u32 rkvdec_hevc_decoded_fmts[] = {
  1622. + V4L2_PIX_FMT_NV12,
  1623. + V4L2_PIX_FMT_NV15,
  1624. +};
  1625. +
  1626. +static const u32 rkvdec_vp9_decoded_fmts[] = {
  1627. + V4L2_PIX_FMT_NV12,
  1628. };
  1629.  
  1630. static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = {
  1631. {
  1632. .fourcc = V4L2_PIX_FMT_H264_SLICE,
  1633. .frmsize = {
  1634. - .min_width = 48,
  1635. + .min_width = 64,
  1636. .max_width = 4096,
  1637. - .step_width = 16,
  1638. - .min_height = 48,
  1639. + .step_width = 64,
  1640. + .min_height = 64,
  1641. .max_height = 2304,
  1642. .step_height = 16,
  1643. },
  1644. @@ -93,6 +209,36 @@
  1645. .ops = &rkvdec_h264_fmt_ops,
  1646. .num_decoded_fmts = ARRAY_SIZE(rkvdec_h264_decoded_fmts),
  1647. .decoded_fmts = rkvdec_h264_decoded_fmts,
  1648. + },
  1649. + {
  1650. + .fourcc = V4L2_PIX_FMT_HEVC_SLICE,
  1651. + .frmsize = {
  1652. + .min_width = 64,
  1653. + .max_width = 4096,
  1654. + .step_width = 64,
  1655. + .min_height = 64,
  1656. + .max_height = 2304,
  1657. + .step_height = 16,
  1658. + },
  1659. + .ctrls = &rkvdec_hevc_ctrls,
  1660. + .ops = &rkvdec_hevc_fmt_ops,
  1661. + .num_decoded_fmts = ARRAY_SIZE(rkvdec_hevc_decoded_fmts),
  1662. + .decoded_fmts = rkvdec_hevc_decoded_fmts,
  1663. + },
  1664. + {
  1665. + .fourcc = V4L2_PIX_FMT_VP9_FRAME,
  1666. + .frmsize = {
  1667. + .min_width = 64,
  1668. + .max_width = 4096,
  1669. + .step_width = 64,
  1670. + .min_height = 64,
  1671. + .max_height = 2304,
  1672. + .step_height = 64,
  1673. + },
  1674. + .ctrls = &rkvdec_vp9_ctrls,
  1675. + .ops = &rkvdec_vp9_fmt_ops,
  1676. + .num_decoded_fmts = ARRAY_SIZE(rkvdec_vp9_decoded_fmts),
  1677. + .decoded_fmts = rkvdec_vp9_decoded_fmts,
  1678. }
  1679. };
  1680.  
  1681. @@ -456,7 +602,13 @@
  1682. if (vb2_plane_size(vb, i) < sizeimage)
  1683. return -EINVAL;
  1684. }
  1685. - vb2_set_plane_payload(vb, 0, f->fmt.pix_mp.plane_fmt[0].sizeimage);
  1686. +
  1687. + /*
  1688. + * Buffer's bytesused is written by the driver for CAPTURE buffers.
  1689. + */
  1690. + if (!V4L2_TYPE_IS_OUTPUT(vq->type))
  1691. + vb2_set_plane_payload(vb, 0, f->fmt.pix_mp.plane_fmt[0].sizeimage);
  1692. +
  1693. return 0;
  1694. }
  1695.  
  1696. @@ -638,6 +790,8 @@
  1697.  
  1698. pm_runtime_mark_last_busy(rkvdec->dev);
  1699. pm_runtime_put_autosuspend(rkvdec->dev);
  1700. + if (result == VB2_BUF_STATE_ERROR)
  1701. + rkvdec->soft_reset = true;
  1702. rkvdec_job_finish_no_pm(ctx, result);
  1703. }
  1704.  
  1705. @@ -676,6 +830,11 @@
  1706. if (WARN_ON(!desc))
  1707. return;
  1708.  
  1709. + if (rkvdec->soft_reset) {
  1710. + pm_runtime_suspend(rkvdec->dev);
  1711. + rkvdec->soft_reset = false;
  1712. + }
  1713. +
  1714. ret = pm_runtime_get_sync(rkvdec->dev);
  1715. if (ret < 0) {
  1716. rkvdec_job_finish_no_pm(ctx, VB2_BUF_STATE_ERROR);
  1717. @@ -937,7 +1096,8 @@
  1718. state = (status & RKVDEC_RDY_STA) ?
  1719. VB2_BUF_STATE_DONE : VB2_BUF_STATE_ERROR;
  1720.  
  1721. - writel(0, rkvdec->regs + RKVDEC_REG_INTERRUPT);
  1722. + writel(RKVDEC_CONFIG_DEC_CLK_GATE_E,
  1723. + rkvdec->regs + RKVDEC_REG_INTERRUPT);
  1724. if (cancel_delayed_work(&rkvdec->watchdog_work)) {
  1725. struct rkvdec_ctx *ctx;
  1726.  
  1727. @@ -958,7 +1118,8 @@
  1728. ctx = v4l2_m2m_get_curr_priv(rkvdec->m2m_dev);
  1729. if (ctx) {
  1730. dev_err(rkvdec->dev, "Frame processing timed out!\n");
  1731. - writel(RKVDEC_IRQ_DIS, rkvdec->regs + RKVDEC_REG_INTERRUPT);
  1732. + writel(RKVDEC_CONFIG_DEC_CLK_GATE_E | RKVDEC_IRQ_DIS | RKVDEC_SOFTRST_EN_P,
  1733. + rkvdec->regs + RKVDEC_REG_INTERRUPT);
  1734. writel(0, rkvdec->regs + RKVDEC_REG_SYSCTRL);
  1735. rkvdec_job_finish(ctx, VB2_BUF_STATE_ERROR);
  1736. }
  1737. @@ -1056,9 +1217,9 @@
  1738. {
  1739. struct rkvdec_dev *rkvdec = platform_get_drvdata(pdev);
  1740.  
  1741. - rkvdec_v4l2_cleanup(rkvdec);
  1742. - pm_runtime_disable(&pdev->dev);
  1743. pm_runtime_dont_use_autosuspend(&pdev->dev);
  1744. + pm_runtime_disable(&pdev->dev);
  1745. + rkvdec_v4l2_cleanup(rkvdec);
  1746. return 0;
  1747. }
  1748.  
  1749. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/staging/media/rkvdec/rkvdec.h linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec.h
  1750. --- media_tree_master/drivers/staging/media/rkvdec/rkvdec.h 2020-05-30 15:14:44.771016868 -0700
  1751. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec.h 2020-05-30 15:12:49.823502132 -0700
  1752. @@ -52,6 +52,10 @@
  1753. struct rkvdec_decoded_buffer {
  1754. /* Must be the first field in this struct. */
  1755. struct v4l2_m2m_buffer base;
  1756. +
  1757. + union {
  1758. + struct rkvdec_vp9_decoded_buffer_info vp9;
  1759. + };
  1760. };
  1761.  
  1762. static inline struct rkvdec_decoded_buffer *
  1763. @@ -91,6 +95,7 @@
  1764. void __iomem *regs;
  1765. struct mutex vdev_lock; /* serializes ioctls */
  1766. struct delayed_work watchdog_work;
  1767. + bool soft_reset;
  1768. };
  1769.  
  1770. struct rkvdec_ctx {
  1771. @@ -118,4 +123,7 @@
  1772. void rkvdec_run_postamble(struct rkvdec_ctx *ctx, struct rkvdec_run *run);
  1773.  
  1774. extern const struct rkvdec_coded_fmt_ops rkvdec_h264_fmt_ops;
  1775. +extern const struct rkvdec_coded_fmt_ops rkvdec_hevc_fmt_ops;
  1776. +extern const struct rkvdec_coded_fmt_ops rkvdec_vp9_fmt_ops;
  1777. +
  1778. #endif /* RKVDEC_H_ */
  1779. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/staging/media/rkvdec/rkvdec-h264.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec-h264.c
  1780. --- media_tree_master/drivers/staging/media/rkvdec/rkvdec-h264.c 2020-05-30 15:14:44.771016868 -0700
  1781. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec-h264.c 2020-05-30 15:12:49.823502132 -0700
  1782. @@ -18,11 +18,16 @@
  1783. /* Size with u32 units. */
  1784. #define RKV_CABAC_INIT_BUFFER_SIZE (3680 + 128)
  1785. #define RKV_RPS_SIZE ((128 + 128) / 4)
  1786. -#define RKV_SCALING_LIST_SIZE (6 * 16 + 6 * 64 + 128)
  1787. #define RKV_ERROR_INFO_SIZE (256 * 144 * 4)
  1788.  
  1789. #define RKVDEC_NUM_REFLIST 3
  1790.  
  1791. +struct rkvdec_scaling_matrix {
  1792. + u8 scaling_list_4x4[6][16];
  1793. + u8 scaling_list_8x8[6][64];
  1794. + u8 padding[128];
  1795. +};
  1796. +
  1797. struct rkvdec_sps_pps_packet {
  1798. u32 info[8];
  1799. };
  1800. @@ -86,7 +91,7 @@
  1801. /* Data structure describing auxiliary buffer format. */
  1802. struct rkvdec_h264_priv_tbl {
  1803. s8 cabac_table[4][464][2];
  1804. - u8 scaling_list[RKV_SCALING_LIST_SIZE];
  1805. + struct rkvdec_scaling_matrix scaling_list;
  1806. u32 rps[RKV_RPS_SIZE];
  1807. struct rkvdec_sps_pps_packet param_set[256];
  1808. u8 err_info[RKV_ERROR_INFO_SIZE];
  1809. @@ -657,8 +662,8 @@
  1810. WRITE_PPS(0xff, PROFILE_IDC);
  1811. WRITE_PPS(1, CONSTRAINT_SET3_FLAG);
  1812. WRITE_PPS(sps->chroma_format_idc, CHROMA_FORMAT_IDC);
  1813. - WRITE_PPS(sps->bit_depth_luma_minus8 + 8, BIT_DEPTH_LUMA);
  1814. - WRITE_PPS(sps->bit_depth_chroma_minus8 + 8, BIT_DEPTH_CHROMA);
  1815. + WRITE_PPS(sps->bit_depth_luma_minus8, BIT_DEPTH_LUMA);
  1816. + WRITE_PPS(sps->bit_depth_chroma_minus8, BIT_DEPTH_CHROMA);
  1817. WRITE_PPS(0, QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG);
  1818. WRITE_PPS(sps->log2_max_frame_num_minus4, LOG2_MAX_FRAME_NUM_MINUS4);
  1819. WRITE_PPS(sps->max_num_ref_frames, MAX_NUM_REF_FRAMES);
  1820. @@ -667,8 +672,8 @@
  1821. LOG2_MAX_PIC_ORDER_CNT_LSB_MINUS4);
  1822. WRITE_PPS(!!(sps->flags & V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO),
  1823. DELTA_PIC_ORDER_ALWAYS_ZERO_FLAG);
  1824. - WRITE_PPS(DIV_ROUND_UP(ctx->coded_fmt.fmt.pix_mp.width, 16), PIC_WIDTH_IN_MBS);
  1825. - WRITE_PPS(DIV_ROUND_UP(ctx->coded_fmt.fmt.pix_mp.height, 16), PIC_HEIGHT_IN_MBS);
  1826. + WRITE_PPS(sps->pic_width_in_mbs_minus1 + 1, PIC_WIDTH_IN_MBS);
  1827. + WRITE_PPS(sps->pic_height_in_map_units_minus1 + 1, PIC_HEIGHT_IN_MBS);
  1828. WRITE_PPS(!!(sps->flags & V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY),
  1829. FRAME_MBS_ONLY_FLAG);
  1830. WRITE_PPS(!!(sps->flags & V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD),
  1831. @@ -731,13 +736,17 @@
  1832. const struct v4l2_ctrl_h264_sps *sps = run->sps;
  1833. struct rkvdec_h264_priv_tbl *priv_tbl = h264_ctx->priv_tbl.cpu;
  1834. u32 max_frame_num = 1 << (sps->log2_max_frame_num_minus4 + 4);
  1835. + u8 *reflists[3] = { h264_ctx->reflists.p, h264_ctx->reflists.b0, h264_ctx->reflists.b1 };
  1836.  
  1837. u32 *hw_rps = priv_tbl->rps;
  1838. - u32 i, j;
  1839. + u32 i, j, k;
  1840. u16 *p = (u16 *)hw_rps;
  1841.  
  1842. memset(hw_rps, 0, sizeof(priv_tbl->rps));
  1843.  
  1844. + if (!h264_ctx->reflists.num_valid)
  1845. + return;
  1846. +
  1847. /*
  1848. * Assign an invalid pic_num if DPB entry at that position is inactive.
  1849. * If we assign 0 in that position hardware will treat that as a real
  1850. @@ -749,7 +758,7 @@
  1851. continue;
  1852.  
  1853. if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM ||
  1854. - dpb[i].frame_num < sl_params->frame_num) {
  1855. + dpb[i].frame_num <= sl_params->frame_num) {
  1856. p[i] = dpb[i].frame_num;
  1857. continue;
  1858. }
  1859. @@ -757,84 +766,94 @@
  1860. p[i] = dpb[i].frame_num - max_frame_num;
  1861. }
  1862.  
  1863. - for (j = 0; j < RKVDEC_NUM_REFLIST; j++) {
  1864. - for (i = 0; i < h264_ctx->reflists.num_valid; i++) {
  1865. - u8 dpb_valid = 0;
  1866. - u8 idx = 0;
  1867. -
  1868. - switch (j) {
  1869. - case 0:
  1870. - idx = h264_ctx->reflists.p[i];
  1871. - break;
  1872. - case 1:
  1873. - idx = h264_ctx->reflists.b0[i];
  1874. - break;
  1875. - case 2:
  1876. - idx = h264_ctx->reflists.b1[i];
  1877. - break;
  1878. - }
  1879. + if (!(sl_params->flags & V4L2_H264_SLICE_FLAG_FIELD_PIC)) {
  1880. + for (j = 0; j < RKVDEC_NUM_REFLIST; j++) {
  1881. + for (i = 0; i < h264_ctx->reflists.num_valid; i++) {
  1882. + u8 dpb_valid = 0;
  1883. + u8 idx = reflists[j][i];
  1884. +
  1885. + if (idx >= ARRAY_SIZE(dec_params->dpb))
  1886. + continue;
  1887. + dpb_valid = !!(dpb[idx].flags &
  1888. + V4L2_H264_DPB_ENTRY_FLAG_ACTIVE);
  1889.  
  1890. - if (idx >= ARRAY_SIZE(dec_params->dpb))
  1891. - continue;
  1892. - dpb_valid = !!(dpb[idx].flags &
  1893. - V4L2_H264_DPB_ENTRY_FLAG_ACTIVE);
  1894. + set_ps_field(hw_rps, DPB_INFO(i, j),
  1895. + idx | dpb_valid << 4);
  1896. + }
  1897. + }
  1898. + return;
  1899. + }
  1900.  
  1901. - set_ps_field(hw_rps, DPB_INFO(i, j),
  1902. - idx | dpb_valid << 4);
  1903. + for (j = 0; j < RKVDEC_NUM_REFLIST; j++) {
  1904. + u8 a_parity = (sl_params->flags & V4L2_H264_SLICE_FLAG_BOTTOM_FIELD)
  1905. + ? V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_REF
  1906. + : V4L2_H264_DPB_ENTRY_FLAG_TOP_REF;
  1907. + u8 b_parity = (sl_params->flags & V4L2_H264_SLICE_FLAG_BOTTOM_FIELD)
  1908. + ? V4L2_H264_DPB_ENTRY_FLAG_TOP_REF
  1909. + : V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_REF;
  1910. + u8 a_flags = a_parity | V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM;
  1911. + u8 b_flags = b_parity | V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM;
  1912. + i = 0;
  1913. +
  1914. + for (k = 0; k < 2; k++) {
  1915. + u8 a = 0;
  1916. + u8 b = 0;
  1917. + a_parity |= k ? V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM : 0;
  1918. + b_parity |= k ? V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM : 0;
  1919. +
  1920. + while (a < h264_ctx->reflists.num_valid || b < h264_ctx->reflists.num_valid) {
  1921. + for (; a < h264_ctx->reflists.num_valid; a++) {
  1922. + u8 idx = reflists[j][a];
  1923. + if (idx >= ARRAY_SIZE(dec_params->dpb))
  1924. + continue;
  1925. + if ((dpb[idx].flags & a_flags) == a_parity) {
  1926. + set_ps_field(hw_rps, DPB_INFO(i, j),
  1927. + idx | (1 << 4));
  1928. + set_ps_field(hw_rps, BOTTOM_FLAG(i, j),
  1929. + !!(a_flags & V4L2_H264_SLICE_FLAG_BOTTOM_FIELD));
  1930. + i++;
  1931. + a++;
  1932. + break;
  1933. + }
  1934. + }
  1935. + for (; b < h264_ctx->reflists.num_valid; b++) {
  1936. + u8 idx = reflists[j][b];
  1937. + if (idx >= ARRAY_SIZE(dec_params->dpb))
  1938. + continue;
  1939. + if ((dpb[idx].flags & b_flags) == b_parity) {
  1940. + set_ps_field(hw_rps, DPB_INFO(i, j),
  1941. + idx | (1 << 4));
  1942. + set_ps_field(hw_rps, BOTTOM_FLAG(i, j),
  1943. + !!(b_flags & V4L2_H264_SLICE_FLAG_BOTTOM_FIELD));
  1944. + i++;
  1945. + b++;
  1946. + break;
  1947. + }
  1948. + }
  1949. + }
  1950. }
  1951. }
  1952. }
  1953.  
  1954. -/*
  1955. - * NOTE: The values in a scaling list are in zig-zag order, apply inverse
  1956. - * scanning process to get the values in matrix order.
  1957. - */
  1958. -static const u32 zig_zag_4x4[16] = {
  1959. - 0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15
  1960. -};
  1961. -
  1962. -static const u32 zig_zag_8x8[64] = {
  1963. - 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5,
  1964. - 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28,
  1965. - 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51,
  1966. - 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63
  1967. -};
  1968. -
  1969. -static void reorder_scaling_list(struct rkvdec_ctx *ctx,
  1970. - struct rkvdec_h264_run *run)
  1971. +static void assemble_hw_scaling_list(struct rkvdec_ctx *ctx,
  1972. + struct rkvdec_h264_run *run)
  1973. {
  1974. const struct v4l2_ctrl_h264_scaling_matrix *scaling = run->scaling_matrix;
  1975. - const size_t num_list_4x4 = ARRAY_SIZE(scaling->scaling_list_4x4);
  1976. - const size_t list_len_4x4 = ARRAY_SIZE(scaling->scaling_list_4x4[0]);
  1977. - const size_t num_list_8x8 = ARRAY_SIZE(scaling->scaling_list_8x8);
  1978. - const size_t list_len_8x8 = ARRAY_SIZE(scaling->scaling_list_8x8[0]);
  1979. struct rkvdec_h264_ctx *h264_ctx = ctx->priv;
  1980. struct rkvdec_h264_priv_tbl *tbl = h264_ctx->priv_tbl.cpu;
  1981. - u8 *dst = tbl->scaling_list;
  1982. - const u8 *src;
  1983. - int i, j;
  1984. -
  1985. - BUILD_BUG_ON(ARRAY_SIZE(zig_zag_4x4) != list_len_4x4);
  1986. - BUILD_BUG_ON(ARRAY_SIZE(zig_zag_8x8) != list_len_8x8);
  1987. - BUILD_BUG_ON(ARRAY_SIZE(tbl->scaling_list) <
  1988. - num_list_4x4 * list_len_4x4 +
  1989. - num_list_8x8 * list_len_8x8);
  1990. -
  1991. - src = &scaling->scaling_list_4x4[0][0];
  1992. - for (i = 0; i < num_list_4x4; ++i) {
  1993. - for (j = 0; j < list_len_4x4; ++j)
  1994. - dst[zig_zag_4x4[j]] = src[j];
  1995. - src += list_len_4x4;
  1996. - dst += list_len_4x4;
  1997. - }
  1998.  
  1999. - src = &scaling->scaling_list_8x8[0][0];
  2000. - for (i = 0; i < num_list_8x8; ++i) {
  2001. - for (j = 0; j < list_len_8x8; ++j)
  2002. - dst[zig_zag_8x8[j]] = src[j];
  2003. - src += list_len_8x8;
  2004. - dst += list_len_8x8;
  2005. - }
  2006. + BUILD_BUG_ON(sizeof(tbl->scaling_list.scaling_list_4x4) !=
  2007. + sizeof(scaling->scaling_list_4x4));
  2008. + BUILD_BUG_ON(sizeof(tbl->scaling_list.scaling_list_8x8) !=
  2009. + sizeof(scaling->scaling_list_8x8));
  2010. +
  2011. + memcpy(tbl->scaling_list.scaling_list_4x4,
  2012. + scaling->scaling_list_4x4,
  2013. + sizeof(scaling->scaling_list_4x4));
  2014. +
  2015. + memcpy(tbl->scaling_list.scaling_list_8x8,
  2016. + scaling->scaling_list_8x8,
  2017. + sizeof(scaling->scaling_list_8x8));
  2018. }
  2019.  
  2020. /*
  2021. @@ -917,10 +936,11 @@
  2022. dma_addr_t rlc_addr;
  2023. dma_addr_t refer_addr;
  2024. u32 rlc_len;
  2025. - u32 hor_virstride = 0;
  2026. - u32 ver_virstride = 0;
  2027. - u32 y_virstride = 0;
  2028. - u32 yuv_virstride = 0;
  2029. + u32 hor_virstride;
  2030. + u32 ver_virstride;
  2031. + u32 y_virstride;
  2032. + u32 uv_virstride;
  2033. + u32 yuv_virstride;
  2034. u32 offset;
  2035. dma_addr_t dst_addr;
  2036. u32 reg, i;
  2037. @@ -930,16 +950,20 @@
  2038.  
  2039. f = &ctx->decoded_fmt;
  2040. dst_fmt = &f->fmt.pix_mp;
  2041. - hor_virstride = (sps->bit_depth_luma_minus8 + 8) * dst_fmt->width / 8;
  2042. - ver_virstride = round_up(dst_fmt->height, 16);
  2043. + hor_virstride = dst_fmt->plane_fmt[0].bytesperline;
  2044. + ver_virstride = dst_fmt->height;
  2045. y_virstride = hor_virstride * ver_virstride;
  2046.  
  2047. - if (sps->chroma_format_idc == 0)
  2048. - yuv_virstride = y_virstride;
  2049. - else if (sps->chroma_format_idc == 1)
  2050. - yuv_virstride += y_virstride + y_virstride / 2;
  2051. + if (sps->chroma_format_idc == 1)
  2052. + uv_virstride = y_virstride / 2;
  2053. else if (sps->chroma_format_idc == 2)
  2054. - yuv_virstride += 2 * y_virstride;
  2055. + uv_virstride = y_virstride;
  2056. + else if (sps->chroma_format_idc == 3)
  2057. + uv_virstride = 2 * y_virstride;
  2058. + else
  2059. + uv_virstride = 0;
  2060. +
  2061. + yuv_virstride = y_virstride + uv_virstride;
  2062.  
  2063. reg = RKVDEC_Y_HOR_VIRSTRIDE(hor_virstride / 16) |
  2064. RKVDEC_UV_HOR_VIRSTRIDE(hor_virstride / 16) |
  2065. @@ -975,16 +999,16 @@
  2066. for (i = 0; i < ARRAY_SIZE(dec_params->dpb); i++) {
  2067. struct vb2_buffer *vb_buf = get_ref_buf(ctx, run, i);
  2068.  
  2069. - refer_addr = vb2_dma_contig_plane_dma_addr(vb_buf, 0) |
  2070. - RKVDEC_COLMV_USED_FLAG_REF;
  2071. + refer_addr = vb2_dma_contig_plane_dma_addr(vb_buf, 0);
  2072.  
  2073. - if (!(dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_FIELD))
  2074. - refer_addr |= RKVDEC_TOPFIELD_USED_REF |
  2075. - RKVDEC_BOTFIELD_USED_REF;
  2076. - else if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_FIELD)
  2077. - refer_addr |= RKVDEC_BOTFIELD_USED_REF;
  2078. - else
  2079. + if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_FIELD_PIC)
  2080. + refer_addr |= RKVDEC_FIELD_REF;
  2081. + if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_TOP_REF)
  2082. refer_addr |= RKVDEC_TOPFIELD_USED_REF;
  2083. + if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_REF)
  2084. + refer_addr |= RKVDEC_BOTFIELD_USED_REF;
  2085. + if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_ACTIVE)
  2086. + refer_addr |= RKVDEC_COLMV_USED_FLAG_REF;
  2087.  
  2088. writel_relaxed(dpb[i].top_field_order_cnt,
  2089. rkvdec->regs + poc_reg_tbl_top_field[i]);
  2090. @@ -999,10 +1023,6 @@
  2091. rkvdec->regs + RKVDEC_REG_H264_BASE_REFER15);
  2092. }
  2093.  
  2094. - /*
  2095. - * Since support frame mode only
  2096. - * top_field_order_cnt is the same as bottom_field_order_cnt
  2097. - */
  2098. reg = RKVDEC_CUR_POC(dec_params->top_field_order_cnt);
  2099. writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_CUR_POC0);
  2100.  
  2101. @@ -1038,8 +1058,9 @@
  2102. struct v4l2_pix_format_mplane *fmt = &f->fmt.pix_mp;
  2103.  
  2104. fmt->num_planes = 1;
  2105. - fmt->plane_fmt[0].sizeimage = fmt->width * fmt->height *
  2106. - RKVDEC_H264_MAX_DEPTH_IN_BYTES;
  2107. + if (!fmt->plane_fmt[0].sizeimage)
  2108. + fmt->plane_fmt[0].sizeimage = fmt->width * fmt->height *
  2109. + RKVDEC_H264_MAX_DEPTH_IN_BYTES;
  2110. return 0;
  2111. }
  2112.  
  2113. @@ -1126,7 +1147,7 @@
  2114. v4l2_h264_build_b_ref_lists(&reflist_builder, h264_ctx->reflists.b0,
  2115. h264_ctx->reflists.b1);
  2116.  
  2117. - reorder_scaling_list(ctx, &run);
  2118. + assemble_hw_scaling_list(ctx, &run);
  2119. assemble_hw_pps(ctx, &run);
  2120. assemble_hw_rps(ctx, &run);
  2121. config_registers(ctx, &run);
  2122. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/staging/media/rkvdec/rkvdec-hevc.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec-hevc.c
  2123. --- media_tree_master/drivers/staging/media/rkvdec/rkvdec-hevc.c 1969-12-31 16:00:00.000000000 -0800
  2124. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec-hevc.c 2020-05-30 15:12:49.823502132 -0700
  2125. @@ -0,0 +1,2522 @@
  2126. +// SPDX-License-Identifier: GPL-2.0
  2127. +/*
  2128. + * Rockchip Video Decoder HEVC backend
  2129. + *
  2130. + * Copyright (C) 2019 Collabora, Ltd.
  2131. + * Boris Brezillon <boris.brezillon@collabora.com>
  2132. + *
  2133. + * Copyright (C) 2016 Rockchip Electronics Co., Ltd.
  2134. + * Jeffy Chen <jeffy.chen@rock-chips.com>
  2135. + */
  2136. +
  2137. +#include <media/v4l2-mem2mem.h>
  2138. +
  2139. +#include "rkvdec.h"
  2140. +#include "rkvdec-regs.h"
  2141. +
  2142. +/* Size in u8/u32 units. */
  2143. +#define RKV_CABAC_TABLE_SIZE 27456
  2144. +#define RKV_SCALING_LIST_SIZE 1360
  2145. +#define RKV_PPS_SIZE (80 / 4)
  2146. +#define RKV_PPS_LEN 64
  2147. +#define RKV_RPS_SIZE (32 / 4)
  2148. +#define RKV_RPS_LEN 600
  2149. +
  2150. +struct rkvdec_sps_pps_packet {
  2151. + u32 info[RKV_PPS_SIZE];
  2152. +};
  2153. +
  2154. +struct rkvdec_rps_packet {
  2155. + u32 info[RKV_RPS_SIZE];
  2156. +};
  2157. +
  2158. +struct rkvdec_ps_field {
  2159. + u16 offset;
  2160. + u8 len;
  2161. +};
  2162. +
  2163. +#define PS_FIELD(_offset, _len) \
  2164. + ((struct rkvdec_ps_field){ _offset, _len })
  2165. +
  2166. +/* SPS */
  2167. +#define VIDEO_PARAMETER_SET_ID PS_FIELD(0, 4)
  2168. +#define SEQ_PARAMETER_SET_ID PS_FIELD(4, 4)
  2169. +#define CHROMA_FORMAT_IDC PS_FIELD(8, 2)
  2170. +#define PIC_WIDTH_IN_LUMA_SAMPLES PS_FIELD(10, 13)
  2171. +#define PIC_HEIGHT_IN_LUMA_SAMPLES PS_FIELD(23, 13)
  2172. +#define BIT_DEPTH_LUMA PS_FIELD(36, 4)
  2173. +#define BIT_DEPTH_CHROMA PS_FIELD(40, 4)
  2174. +#define LOG2_MAX_PIC_ORDER_CNT_LSB PS_FIELD(44, 5)
  2175. +#define LOG2_DIFF_MAX_MIN_LUMA_CODING_BLOCK_SIZE PS_FIELD(49, 2)
  2176. +#define LOG2_MIN_LUMA_CODING_BLOCK_SIZE PS_FIELD(51, 3)
  2177. +#define LOG2_MIN_TRANSFORM_BLOCK_SIZE PS_FIELD(54, 3)
  2178. +#define LOG2_DIFF_MAX_MIN_LUMA_TRANSFORM_BLOCK_SIZE PS_FIELD(57, 2)
  2179. +#define MAX_TRANSFORM_HIERARCHY_DEPTH_INTER PS_FIELD(59, 3)
  2180. +#define MAX_TRANSFORM_HIERARCHY_DEPTH_INTRA PS_FIELD(62, 3)
  2181. +#define SCALING_LIST_ENABLED_FLAG PS_FIELD(65, 1)
  2182. +#define AMP_ENABLED_FLAG PS_FIELD(66, 1)
  2183. +#define SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG PS_FIELD(67, 1)
  2184. +#define PCM_ENABLED_FLAG PS_FIELD(68, 1)
  2185. +#define PCM_SAMPLE_BIT_DEPTH_LUMA PS_FIELD(69, 4)
  2186. +#define PCM_SAMPLE_BIT_DEPTH_CHROMA PS_FIELD(73, 4)
  2187. +#define PCM_LOOP_FILTER_DISABLED_FLAG PS_FIELD(77, 1)
  2188. +#define LOG2_DIFF_MAX_MIN_PCM_LUMA_CODING_BLOCK_SIZE PS_FIELD(78, 3)
  2189. +#define LOG2_MIN_PCM_LUMA_CODING_BLOCK_SIZE PS_FIELD(81, 3)
  2190. +#define NUM_SHORT_TERM_REF_PIC_SETS PS_FIELD(84, 7)
  2191. +#define LONG_TERM_REF_PICS_PRESENT_FLAG PS_FIELD(91, 1)
  2192. +#define NUM_LONG_TERM_REF_PICS_SPS PS_FIELD(92, 6)
  2193. +#define SPS_TEMPORAL_MVP_ENABLED_FLAG PS_FIELD(98, 1)
  2194. +#define STRONG_INTRA_SMOOTHING_ENABLED_FLAG PS_FIELD(99, 1)
  2195. +/* PPS */
  2196. +#define PIC_PARAMETER_SET_ID PS_FIELD(128, 6)
  2197. +#define PPS_SEQ_PARAMETER_SET_ID PS_FIELD(134, 4)
  2198. +#define DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG PS_FIELD(138, 1)
  2199. +#define OUTPUT_FLAG_PRESENT_FLAG PS_FIELD(139, 1)
  2200. +#define NUM_EXTRA_SLICE_HEADER_BITS PS_FIELD(140, 13)
  2201. +#define SIGN_DATA_HIDING_ENABLED_FLAG PS_FIELD(153, 1)
  2202. +#define CABAC_INIT_PRESENT_FLAG PS_FIELD(154, 1)
  2203. +#define NUM_REF_IDX_L0_DEFAULT_ACTIVE PS_FIELD(155, 4)
  2204. +#define NUM_REF_IDX_L1_DEFAULT_ACTIVE PS_FIELD(159, 4)
  2205. +#define INIT_QP_MINUS26 PS_FIELD(163, 7)
  2206. +#define CONSTRAINED_INTRA_PRED_FLAG PS_FIELD(170, 1)
  2207. +#define TRANSFORM_SKIP_ENABLED_FLAG PS_FIELD(171, 1)
  2208. +#define CU_QP_DELTA_ENABLED_FLAG PS_FIELD(172, 1)
  2209. +#define LOG2_MIN_CU_QP_DELTA_SIZE PS_FIELD(173, 3)
  2210. +#define PPS_CB_QP_OFFSET PS_FIELD(176, 5)
  2211. +#define PPS_CR_QP_OFFSET PS_FIELD(181, 5)
  2212. +#define PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG PS_FIELD(186, 1)
  2213. +#define WEIGHTED_PRED_FLAG PS_FIELD(187, 1)
  2214. +#define WEIGHTED_BIPRED_FLAG PS_FIELD(188, 1)
  2215. +#define TRANSQUANT_BYPASS_ENABLED_FLAG PS_FIELD(189, 1)
  2216. +#define TILES_ENABLED_FLAG PS_FIELD(190, 1)
  2217. +#define ENTROPY_CODING_SYNC_ENABLED_FLAG PS_FIELD(191, 1)
  2218. +#define PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED_FLAG PS_FIELD(192, 1)
  2219. +#define LOOP_FILTER_ACROSS_TILES_ENABLED_FLAG PS_FIELD(193, 1)
  2220. +#define DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG PS_FIELD(194, 1)
  2221. +#define PPS_DEBLOCKING_FILTER_DISABLED_FLAG PS_FIELD(195, 1)
  2222. +#define PPS_BETA_OFFSET_DIV2 PS_FIELD(196, 4)
  2223. +#define PPS_TC_OFFSET_DIV2 PS_FIELD(200, 4)
  2224. +#define LISTS_MODIFICATION_PRESENT_FLAG PS_FIELD(204, 1)
  2225. +#define LOG2_PARALLEL_MERGE_LEVEL PS_FIELD(205, 3)
  2226. +#define SLICE_SEGMENT_HEADER_EXTENSION_PRESENT_FLAG PS_FIELD(208, 1)
  2227. +#define NUM_TILE_COLUMNS PS_FIELD(212, 5)
  2228. +#define NUM_TILE_ROWS PS_FIELD(217, 5)
  2229. +#define COLUMN_WIDTH(i) PS_FIELD(256 + (i * 8), 8)
  2230. +#define ROW_HEIGHT(i) PS_FIELD(416 + (i * 8), 8)
  2231. +#define SCALING_LIST_ADDRESS PS_FIELD(592, 32)
  2232. +
  2233. +/* Data structure describing auxiliary buffer format. */
  2234. +struct rkvdec_hevc_priv_tbl {
  2235. + u8 cabac_table[RKV_CABAC_TABLE_SIZE];
  2236. + u8 scaling_list[RKV_SCALING_LIST_SIZE];
  2237. + struct rkvdec_sps_pps_packet param_set[RKV_PPS_LEN];
  2238. + struct rkvdec_rps_packet rps[RKV_RPS_LEN];
  2239. +};
  2240. +
  2241. +struct rkvdec_hevc_run {
  2242. + struct rkvdec_run base;
  2243. + const struct v4l2_ctrl_hevc_slice_params *slices_params;
  2244. + const struct v4l2_ctrl_hevc_sps *sps;
  2245. + const struct v4l2_ctrl_hevc_pps *pps;
  2246. + const struct v4l2_ctrl_hevc_scaling_matrix *scaling_matrix;
  2247. + int num_slices;
  2248. +};
  2249. +
  2250. +struct rkvdec_hevc_ctx {
  2251. + struct rkvdec_aux_buf priv_tbl;
  2252. + struct v4l2_ctrl_hevc_scaling_matrix scaling_matrix_cache;
  2253. +};
  2254. +
  2255. +// TODO: refactor scaling list code, was copied 1:1 from mpp
  2256. +
  2257. +typedef struct ScalingList {
  2258. + /* This is a little wasteful, since sizeID 0 only needs 8 coeffs,
  2259. + * and size ID 3 only has 2 arrays, not 6. */
  2260. + u8 sl[4][6][64];
  2261. + u8 sl_dc[2][6];
  2262. +} scalingList_t;
  2263. +
  2264. +typedef struct ScalingFactor_Model {
  2265. + u8 scalingfactor0[1248];
  2266. + u8 scalingfactor1[96]; /*4X4 TU Rotate, total 16X4*/
  2267. + u8 scalingdc[12]; /*N1005 Vienna Meeting*/
  2268. + u8 reserverd[4]; /*16Bytes align*/
  2269. +} scalingFactor_t;
  2270. +
  2271. +#define SCALING_LIST_SIZE_NUM 4
  2272. +
  2273. +static void
  2274. +hal_record_scaling_list(scalingFactor_t *pScalingFactor_out,
  2275. + scalingList_t *pScalingList)
  2276. +{
  2277. + int i;
  2278. + u32 g_scalingListNum_model[SCALING_LIST_SIZE_NUM] = {6, 6, 6, 2}; // from C Model
  2279. + u32 nIndex = 0;
  2280. + u32 sizeId, matrixId, listId;
  2281. + u8 *p = pScalingFactor_out->scalingfactor0;
  2282. + u8 tmpBuf[8 * 8];
  2283. +
  2284. + //output non-default scalingFactor Table (1248 BYTES)
  2285. + for (sizeId = 0; sizeId < SCALING_LIST_SIZE_NUM; sizeId++) {
  2286. + for (listId = 0; listId < g_scalingListNum_model[sizeId]; listId++) {
  2287. + if (sizeId < 3) {
  2288. + for (i = 0; i < (sizeId == 0 ? 16 : 64); i++) {
  2289. + pScalingFactor_out->scalingfactor0[nIndex++] = (u8)pScalingList->sl[sizeId][listId][i];
  2290. + }
  2291. + } else {
  2292. + for (i = 0; i < 64; i ++) {
  2293. + pScalingFactor_out->scalingfactor0[nIndex++] = (u8)pScalingList->sl[sizeId][listId][i];
  2294. + }
  2295. + for (i = 0; i < 128; i ++) {
  2296. + pScalingFactor_out->scalingfactor0[nIndex++] = 0;
  2297. + }
  2298. + }
  2299. + }
  2300. + }
  2301. + //output non-default scalingFactor Table Rotation(96 Bytes)
  2302. + nIndex = 0;
  2303. + for (listId = 0; listId < g_scalingListNum_model[0]; listId++) {
  2304. + u8 temp16[16] = {0};
  2305. + for (i = 0; i < 16; i ++) {
  2306. + temp16[i] = (u8)pScalingList->sl[0][listId][i];
  2307. + }
  2308. + for (i = 0; i < 4; i ++) {
  2309. + pScalingFactor_out->scalingfactor1[nIndex++] = temp16[i];
  2310. + pScalingFactor_out->scalingfactor1[nIndex++] = temp16[i + 4];
  2311. + pScalingFactor_out->scalingfactor1[nIndex++] = temp16[i + 8];
  2312. + pScalingFactor_out->scalingfactor1[nIndex++] = temp16[i + 12];
  2313. + }
  2314. + }
  2315. + //output non-default ScalingList_DC_Coeff (12 BYTES)
  2316. + nIndex = 0;
  2317. + for (listId = 0; listId < g_scalingListNum_model[2]; listId++) { //sizeId = 2
  2318. + pScalingFactor_out->scalingdc[nIndex++] = (u8)pScalingList->sl_dc[0][listId];// zrh warning: sl_dc differed from scalingList->getScalingListDC
  2319. + }
  2320. + for (listId = 0; listId < g_scalingListNum_model[3]; listId++) { //sizeId = 3
  2321. + pScalingFactor_out->scalingdc[nIndex++] = (u8)pScalingList->sl_dc[1][listId];// zrh warning: sl_dc differed from scalingList->getScalingListDC
  2322. + pScalingFactor_out->scalingdc[nIndex++] = 0;
  2323. + pScalingFactor_out->scalingdc[nIndex++] = 0;
  2324. + }
  2325. +
  2326. + //align 16X address
  2327. + nIndex = 0;
  2328. + for (i = 0; i < 4; i ++) {
  2329. + pScalingFactor_out->reserverd[nIndex++] = 0;
  2330. + }
  2331. +
  2332. + //----------------------All above code show the normal store way in HM--------------------------
  2333. + //--------from now on, the scalingfactor0 is rotated 90', the scalingfactor1 is also rotated 90'
  2334. +
  2335. + //sizeId == 0
  2336. + for (matrixId = 0; matrixId < 6; matrixId++) {
  2337. + p = pScalingFactor_out->scalingfactor0 + matrixId * 16;
  2338. +
  2339. + for (i = 0; i < 4; i++) {
  2340. + tmpBuf[4 * 0 + i] = p[i * 4 + 0];
  2341. + tmpBuf[4 * 1 + i] = p[i * 4 + 1];
  2342. + tmpBuf[4 * 2 + i] = p[i * 4 + 2];
  2343. + tmpBuf[4 * 3 + i] = p[i * 4 + 3];
  2344. + }
  2345. + memcpy(p, tmpBuf, 4 * 4 * sizeof(u8));
  2346. + }
  2347. + //sizeId == 1
  2348. + for (matrixId = 0; matrixId < 6; matrixId++) {
  2349. + p = pScalingFactor_out->scalingfactor0 + 6 * 16 + matrixId * 64;
  2350. +
  2351. + for (i = 0; i < 8; i++) {
  2352. + tmpBuf[8 * 0 + i] = p[i * 8 + 0];
  2353. + tmpBuf[8 * 1 + i] = p[i * 8 + 1];
  2354. + tmpBuf[8 * 2 + i] = p[i * 8 + 2];
  2355. + tmpBuf[8 * 3 + i] = p[i * 8 + 3];
  2356. + tmpBuf[8 * 4 + i] = p[i * 8 + 4];
  2357. + tmpBuf[8 * 5 + i] = p[i * 8 + 5];
  2358. + tmpBuf[8 * 6 + i] = p[i * 8 + 6];
  2359. + tmpBuf[8 * 7 + i] = p[i * 8 + 7];
  2360. + }
  2361. + memcpy(p, tmpBuf, 8 * 8 * sizeof(u8));
  2362. + }
  2363. + //sizeId == 2
  2364. + for (matrixId = 0; matrixId < 6; matrixId++) {
  2365. + p = pScalingFactor_out->scalingfactor0 + 6 * 16 + 6 * 64 + matrixId * 64;
  2366. +
  2367. + for (i = 0; i < 8; i++) {
  2368. + tmpBuf[8 * 0 + i] = p[i * 8 + 0];
  2369. + tmpBuf[8 * 1 + i] = p[i * 8 + 1];
  2370. + tmpBuf[8 * 2 + i] = p[i * 8 + 2];
  2371. + tmpBuf[8 * 3 + i] = p[i * 8 + 3];
  2372. + tmpBuf[8 * 4 + i] = p[i * 8 + 4];
  2373. + tmpBuf[8 * 5 + i] = p[i * 8 + 5];
  2374. + tmpBuf[8 * 6 + i] = p[i * 8 + 6];
  2375. + tmpBuf[8 * 7 + i] = p[i * 8 + 7];
  2376. + }
  2377. + memcpy(p, tmpBuf, 8 * 8 * sizeof(u8));
  2378. + }
  2379. + //sizeId == 3
  2380. + for (matrixId = 0; matrixId < 6; matrixId++) {
  2381. + p = pScalingFactor_out->scalingfactor0 + 6 * 16 + 6 * 64 + 6 * 64 + matrixId * 64;
  2382. +
  2383. + for (i = 0; i < 8; i++) {
  2384. + tmpBuf[8 * 0 + i] = p[i * 8 + 0];
  2385. + tmpBuf[8 * 1 + i] = p[i * 8 + 1];
  2386. + tmpBuf[8 * 2 + i] = p[i * 8 + 2];
  2387. + tmpBuf[8 * 3 + i] = p[i * 8 + 3];
  2388. + tmpBuf[8 * 4 + i] = p[i * 8 + 4];
  2389. + tmpBuf[8 * 5 + i] = p[i * 8 + 5];
  2390. + tmpBuf[8 * 6 + i] = p[i * 8 + 6];
  2391. + tmpBuf[8 * 7 + i] = p[i * 8 + 7];
  2392. + }
  2393. + memcpy(p, tmpBuf, 8 * 8 * sizeof(u8));
  2394. + }
  2395. +
  2396. + //sizeId == 0
  2397. + for (matrixId = 0; matrixId < 6; matrixId++) {
  2398. + p = pScalingFactor_out->scalingfactor1 + matrixId * 16;
  2399. +
  2400. + for (i = 0; i < 4; i++) {
  2401. + tmpBuf[4 * 0 + i] = p[i * 4 + 0];
  2402. + tmpBuf[4 * 1 + i] = p[i * 4 + 1];
  2403. + tmpBuf[4 * 2 + i] = p[i * 4 + 2];
  2404. + tmpBuf[4 * 3 + i] = p[i * 4 + 3];
  2405. + }
  2406. + memcpy(p, tmpBuf, 4 * 4 * sizeof(u8));
  2407. + }
  2408. +}
  2409. +
  2410. +static const u8 rkvdec_hevc_cabac_table[RKV_CABAC_TABLE_SIZE] = {
  2411. + 0x07, 0x0f, 0x48, 0x58, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0f, 0x40, 0x40, 0x40, 0x0f, 0x68,
  2412. + 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x40, 0x40, 0x68,
  2413. + 0x58, 0x60, 0x40, 0x1f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, 0x48, 0x60, 0x60, 0x50, 0x58,
  2414. + 0x50, 0x07, 0x58, 0x68, 0x50, 0x58, 0x68, 0x68, 0x68, 0x68, 0x68, 0x50, 0x48, 0x68, 0x60, 0x60,
  2415. + 0x50, 0x58, 0x50, 0x07, 0x58, 0x68, 0x50, 0x58, 0x68, 0x68, 0x68, 0x68, 0x68, 0x50, 0x48, 0x68,
  2416. + 0x48, 0x48, 0x1f, 0x58, 0x68, 0x68, 0x58, 0x60, 0x60, 0x60, 0x50, 0x50, 0x50, 0x48, 0x58, 0x58,
  2417. + 0x37, 0x07, 0x58, 0x48, 0x58, 0x58, 0x37, 0x07, 0x58, 0x48, 0x58, 0x58, 0x37, 0x07, 0x58, 0x50,
  2418. + 0x48, 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x0f, 0x48, 0x68, 0x0f, 0x48, 0x68, 0x40, 0x40,
  2419. + 0x50, 0x50, 0x07, 0x40, 0x50, 0x0f, 0x40, 0x48, 0x07, 0x40, 0x27, 0x50, 0x48, 0x48, 0x40, 0x0f,
  2420. + 0x50, 0x37, 0x1f, 0x1f, 0x50, 0x37, 0x40, 0x27, 0x40, 0x07, 0x0f, 0x17, 0x0f, 0x0f, 0x40, 0x40,
  2421. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2422. + 0x07, 0x0f, 0x47, 0x57, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0f, 0x40, 0x40, 0x40, 0x0f, 0x66,
  2423. + 0x47, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x00, 0x00, 0x67,
  2424. + 0x57, 0x5e, 0x00, 0x1f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x47, 0x47, 0x5f, 0x5f, 0x4f, 0x57,
  2425. + 0x4f, 0x07, 0x57, 0x67, 0x4f, 0x57, 0x67, 0x67, 0x67, 0x67, 0x66, 0x4f, 0x47, 0x66, 0x5f, 0x5f,
  2426. + 0x4f, 0x57, 0x4f, 0x07, 0x57, 0x67, 0x4f, 0x57, 0x67, 0x67, 0x67, 0x67, 0x66, 0x4f, 0x47, 0x66,
  2427. + 0x46, 0x48, 0x20, 0x57, 0x67, 0x67, 0x57, 0x5f, 0x5f, 0x5e, 0x4f, 0x4f, 0x4f, 0x47, 0x57, 0x57,
  2428. + 0x37, 0x07, 0x57, 0x47, 0x57, 0x57, 0x37, 0x07, 0x57, 0x47, 0x57, 0x57, 0x37, 0x07, 0x57, 0x4f,
  2429. + 0x47, 0x1f, 0x1f, 0x0f, 0x10, 0x0f, 0x10, 0x07, 0x10, 0x47, 0x67, 0x10, 0x47, 0x67, 0x40, 0x40,
  2430. + 0x4f, 0x4e, 0x08, 0x00, 0x4f, 0x0f, 0x00, 0x47, 0x07, 0x01, 0x27, 0x4e, 0x47, 0x47, 0x00, 0x0f,
  2431. + 0x4f, 0x37, 0x1f, 0x1f, 0x4f, 0x36, 0x00, 0x27, 0x00, 0x07, 0x10, 0x17, 0x0f, 0x0f, 0x40, 0x40,
  2432. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2433. + 0x07, 0x0e, 0x47, 0x57, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0e, 0x40, 0x40, 0x40, 0x0e, 0x64,
  2434. + 0x47, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x00, 0x00, 0x66,
  2435. + 0x57, 0x5d, 0x00, 0x1e, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x47, 0x47, 0x5e, 0x5e, 0x4e, 0x56,
  2436. + 0x4f, 0x07, 0x56, 0x66, 0x4f, 0x56, 0x66, 0x67, 0x66, 0x66, 0x64, 0x4e, 0x46, 0x64, 0x5e, 0x5e,
  2437. + 0x4e, 0x56, 0x4f, 0x07, 0x56, 0x66, 0x4f, 0x56, 0x66, 0x67, 0x66, 0x66, 0x64, 0x4e, 0x46, 0x64,
  2438. + 0x45, 0x48, 0x20, 0x57, 0x66, 0x66, 0x56, 0x5e, 0x5e, 0x5d, 0x4e, 0x4e, 0x4e, 0x46, 0x56, 0x57,
  2439. + 0x36, 0x07, 0x56, 0x46, 0x56, 0x57, 0x36, 0x07, 0x56, 0x46, 0x56, 0x57, 0x36, 0x07, 0x56, 0x4f,
  2440. + 0x47, 0x1e, 0x1e, 0x0f, 0x10, 0x0f, 0x10, 0x07, 0x10, 0x47, 0x66, 0x10, 0x47, 0x66, 0x40, 0x40,
  2441. + 0x4f, 0x4d, 0x08, 0x00, 0x4f, 0x0f, 0x00, 0x47, 0x07, 0x03, 0x27, 0x4d, 0x47, 0x46, 0x01, 0x0f,
  2442. + 0x4f, 0x36, 0x1f, 0x1e, 0x4f, 0x34, 0x01, 0x26, 0x00, 0x07, 0x10, 0x17, 0x0f, 0x0f, 0x40, 0x40,
  2443. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2444. + 0x07, 0x0d, 0x47, 0x57, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0e, 0x40, 0x40, 0x40, 0x0e, 0x62,
  2445. + 0x47, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x00, 0x00, 0x65,
  2446. + 0x57, 0x5c, 0x00, 0x1e, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x47, 0x47, 0x5d, 0x5d, 0x4e, 0x56,
  2447. + 0x4f, 0x07, 0x56, 0x66, 0x4f, 0x55, 0x65, 0x67, 0x66, 0x65, 0x63, 0x4d, 0x46, 0x62, 0x5d, 0x5d,
  2448. + 0x4e, 0x56, 0x4f, 0x07, 0x56, 0x66, 0x4f, 0x55, 0x65, 0x67, 0x66, 0x65, 0x63, 0x4d, 0x46, 0x62,
  2449. + 0x44, 0x48, 0x20, 0x57, 0x65, 0x65, 0x56, 0x5d, 0x5d, 0x5c, 0x4e, 0x4d, 0x4e, 0x45, 0x56, 0x57,
  2450. + 0x36, 0x07, 0x56, 0x45, 0x56, 0x57, 0x36, 0x07, 0x56, 0x45, 0x56, 0x57, 0x36, 0x07, 0x56, 0x4f,
  2451. + 0x47, 0x1e, 0x1e, 0x0f, 0x10, 0x0f, 0x10, 0x07, 0x10, 0x47, 0x65, 0x10, 0x47, 0x65, 0x40, 0x40,
  2452. + 0x4f, 0x4c, 0x08, 0x00, 0x4f, 0x0f, 0x00, 0x47, 0x07, 0x04, 0x27, 0x4c, 0x47, 0x45, 0x01, 0x0f,
  2453. + 0x4f, 0x36, 0x1f, 0x1e, 0x4f, 0x33, 0x01, 0x25, 0x00, 0x07, 0x10, 0x17, 0x0f, 0x0f, 0x40, 0x40,
  2454. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2455. + 0x07, 0x0c, 0x46, 0x56, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0d, 0x40, 0x40, 0x40, 0x0d, 0x60,
  2456. + 0x46, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x01, 0x01, 0x64,
  2457. + 0x56, 0x5b, 0x01, 0x1d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x46, 0x46, 0x5c, 0x5c, 0x4d, 0x55,
  2458. + 0x4e, 0x07, 0x55, 0x65, 0x4e, 0x54, 0x64, 0x66, 0x65, 0x64, 0x61, 0x4c, 0x45, 0x60, 0x5c, 0x5c,
  2459. + 0x4d, 0x55, 0x4e, 0x07, 0x55, 0x65, 0x4e, 0x54, 0x64, 0x66, 0x65, 0x64, 0x61, 0x4c, 0x45, 0x60,
  2460. + 0x43, 0x49, 0x21, 0x56, 0x64, 0x64, 0x55, 0x5c, 0x5c, 0x5b, 0x4d, 0x4c, 0x4d, 0x44, 0x55, 0x56,
  2461. + 0x35, 0x07, 0x55, 0x44, 0x55, 0x56, 0x35, 0x07, 0x55, 0x44, 0x55, 0x56, 0x35, 0x07, 0x55, 0x4e,
  2462. + 0x46, 0x1d, 0x1d, 0x0f, 0x11, 0x0f, 0x11, 0x07, 0x11, 0x46, 0x64, 0x11, 0x46, 0x64, 0x40, 0x40,
  2463. + 0x4e, 0x4b, 0x09, 0x01, 0x4e, 0x0f, 0x01, 0x46, 0x07, 0x06, 0x27, 0x4b, 0x46, 0x44, 0x02, 0x0f,
  2464. + 0x4e, 0x35, 0x1e, 0x1d, 0x4e, 0x31, 0x02, 0x24, 0x01, 0x07, 0x11, 0x16, 0x0f, 0x0f, 0x40, 0x40,
  2465. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2466. + 0x07, 0x0b, 0x46, 0x56, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0c, 0x40, 0x40, 0x40, 0x0c, 0x5e,
  2467. + 0x46, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x01, 0x01, 0x63,
  2468. + 0x56, 0x59, 0x01, 0x1c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x46, 0x46, 0x5b, 0x5b, 0x4c, 0x54,
  2469. + 0x4e, 0x07, 0x54, 0x64, 0x4e, 0x53, 0x63, 0x66, 0x64, 0x63, 0x60, 0x4b, 0x44, 0x5e, 0x5b, 0x5b,
  2470. + 0x4c, 0x54, 0x4e, 0x07, 0x54, 0x64, 0x4e, 0x53, 0x63, 0x66, 0x64, 0x63, 0x60, 0x4b, 0x44, 0x5e,
  2471. + 0x41, 0x49, 0x21, 0x56, 0x63, 0x63, 0x54, 0x5b, 0x5b, 0x59, 0x4c, 0x4b, 0x4c, 0x43, 0x54, 0x56,
  2472. + 0x34, 0x07, 0x54, 0x43, 0x54, 0x56, 0x34, 0x07, 0x54, 0x43, 0x54, 0x56, 0x34, 0x07, 0x54, 0x4e,
  2473. + 0x46, 0x1c, 0x1c, 0x0f, 0x11, 0x0f, 0x11, 0x07, 0x11, 0x46, 0x63, 0x11, 0x46, 0x63, 0x40, 0x40,
  2474. + 0x4e, 0x49, 0x09, 0x01, 0x4e, 0x0f, 0x01, 0x46, 0x07, 0x07, 0x27, 0x49, 0x46, 0x43, 0x03, 0x0f,
  2475. + 0x4e, 0x34, 0x1e, 0x1c, 0x4e, 0x30, 0x03, 0x23, 0x01, 0x07, 0x11, 0x16, 0x0f, 0x0f, 0x40, 0x40,
  2476. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2477. + 0x07, 0x0a, 0x46, 0x56, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0c, 0x40, 0x40, 0x40, 0x0c, 0x5c,
  2478. + 0x46, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x01, 0x01, 0x62,
  2479. + 0x56, 0x58, 0x01, 0x1c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x46, 0x46, 0x5a, 0x5a, 0x4c, 0x54,
  2480. + 0x4e, 0x07, 0x54, 0x64, 0x4e, 0x52, 0x62, 0x66, 0x64, 0x62, 0x5e, 0x4a, 0x44, 0x5c, 0x5a, 0x5a,
  2481. + 0x4c, 0x54, 0x4e, 0x07, 0x54, 0x64, 0x4e, 0x52, 0x62, 0x66, 0x64, 0x62, 0x5e, 0x4a, 0x44, 0x5c,
  2482. + 0x40, 0x49, 0x21, 0x56, 0x62, 0x62, 0x54, 0x5a, 0x5a, 0x58, 0x4c, 0x4a, 0x4c, 0x42, 0x54, 0x56,
  2483. + 0x34, 0x07, 0x54, 0x42, 0x54, 0x56, 0x34, 0x07, 0x54, 0x42, 0x54, 0x56, 0x34, 0x07, 0x54, 0x4e,
  2484. + 0x46, 0x1c, 0x1c, 0x0f, 0x11, 0x0f, 0x11, 0x07, 0x11, 0x46, 0x62, 0x11, 0x46, 0x62, 0x40, 0x40,
  2485. + 0x4e, 0x48, 0x09, 0x01, 0x4e, 0x0f, 0x01, 0x46, 0x07, 0x09, 0x27, 0x48, 0x46, 0x42, 0x03, 0x0f,
  2486. + 0x4e, 0x34, 0x1e, 0x1c, 0x4e, 0x2e, 0x03, 0x22, 0x01, 0x07, 0x11, 0x16, 0x0f, 0x0f, 0x40, 0x40,
  2487. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2488. + 0x07, 0x09, 0x45, 0x55, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0b, 0x40, 0x40, 0x40, 0x0b, 0x5a,
  2489. + 0x45, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x02, 0x02, 0x61,
  2490. + 0x55, 0x57, 0x02, 0x1b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x45, 0x45, 0x59, 0x59, 0x4b, 0x53,
  2491. + 0x4d, 0x07, 0x53, 0x63, 0x4d, 0x51, 0x61, 0x65, 0x63, 0x61, 0x5d, 0x49, 0x43, 0x5a, 0x59, 0x59,
  2492. + 0x4b, 0x53, 0x4d, 0x07, 0x53, 0x63, 0x4d, 0x51, 0x61, 0x65, 0x63, 0x61, 0x5d, 0x49, 0x43, 0x5a,
  2493. + 0x00, 0x4a, 0x22, 0x55, 0x61, 0x61, 0x53, 0x59, 0x59, 0x57, 0x4b, 0x49, 0x4b, 0x41, 0x53, 0x55,
  2494. + 0x33, 0x07, 0x53, 0x41, 0x53, 0x55, 0x33, 0x07, 0x53, 0x41, 0x53, 0x55, 0x33, 0x07, 0x53, 0x4d,
  2495. + 0x45, 0x1b, 0x1b, 0x0f, 0x12, 0x0f, 0x12, 0x07, 0x12, 0x45, 0x61, 0x12, 0x45, 0x61, 0x40, 0x40,
  2496. + 0x4d, 0x47, 0x0a, 0x02, 0x4d, 0x0f, 0x02, 0x45, 0x07, 0x0a, 0x27, 0x47, 0x45, 0x41, 0x04, 0x0f,
  2497. + 0x4d, 0x33, 0x1d, 0x1b, 0x4d, 0x2d, 0x04, 0x21, 0x02, 0x07, 0x12, 0x15, 0x0f, 0x0f, 0x40, 0x40,
  2498. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2499. + 0x07, 0x08, 0x45, 0x55, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0a, 0x40, 0x40, 0x40, 0x0a, 0x59,
  2500. + 0x45, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x02, 0x02, 0x60,
  2501. + 0x55, 0x56, 0x02, 0x1a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x45, 0x45, 0x58, 0x58, 0x4b, 0x53,
  2502. + 0x4d, 0x07, 0x53, 0x63, 0x4d, 0x50, 0x60, 0x65, 0x63, 0x60, 0x5b, 0x48, 0x43, 0x59, 0x58, 0x58,
  2503. + 0x4b, 0x53, 0x4d, 0x07, 0x53, 0x63, 0x4d, 0x50, 0x60, 0x65, 0x63, 0x60, 0x5b, 0x48, 0x43, 0x59,
  2504. + 0x01, 0x4a, 0x22, 0x55, 0x60, 0x60, 0x53, 0x58, 0x58, 0x56, 0x4b, 0x48, 0x4b, 0x40, 0x53, 0x55,
  2505. + 0x32, 0x07, 0x53, 0x40, 0x53, 0x55, 0x32, 0x07, 0x53, 0x40, 0x53, 0x55, 0x32, 0x07, 0x53, 0x4d,
  2506. + 0x45, 0x1a, 0x1a, 0x0f, 0x12, 0x0f, 0x12, 0x07, 0x12, 0x45, 0x60, 0x12, 0x45, 0x60, 0x40, 0x40,
  2507. + 0x4d, 0x46, 0x0a, 0x02, 0x4d, 0x0f, 0x02, 0x45, 0x07, 0x0c, 0x27, 0x46, 0x45, 0x40, 0x04, 0x0f,
  2508. + 0x4d, 0x32, 0x1d, 0x1a, 0x4d, 0x2b, 0x04, 0x20, 0x02, 0x07, 0x12, 0x15, 0x0f, 0x0f, 0x40, 0x40,
  2509. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2510. + 0x07, 0x07, 0x45, 0x55, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0a, 0x40, 0x40, 0x40, 0x0a, 0x57,
  2511. + 0x45, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x02, 0x02, 0x5f,
  2512. + 0x55, 0x54, 0x02, 0x1a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x45, 0x45, 0x57, 0x57, 0x4a, 0x52,
  2513. + 0x4d, 0x07, 0x52, 0x62, 0x4d, 0x4f, 0x5f, 0x65, 0x62, 0x5f, 0x59, 0x47, 0x42, 0x57, 0x57, 0x57,
  2514. + 0x4a, 0x52, 0x4d, 0x07, 0x52, 0x62, 0x4d, 0x4f, 0x5f, 0x65, 0x62, 0x5f, 0x59, 0x47, 0x42, 0x57,
  2515. + 0x03, 0x4a, 0x22, 0x55, 0x5f, 0x5f, 0x52, 0x57, 0x57, 0x54, 0x4a, 0x47, 0x4a, 0x00, 0x52, 0x55,
  2516. + 0x32, 0x07, 0x52, 0x00, 0x52, 0x55, 0x32, 0x07, 0x52, 0x00, 0x52, 0x55, 0x32, 0x07, 0x52, 0x4d,
  2517. + 0x45, 0x1a, 0x1a, 0x0f, 0x12, 0x0f, 0x12, 0x07, 0x12, 0x45, 0x5f, 0x12, 0x45, 0x5f, 0x40, 0x40,
  2518. + 0x4d, 0x44, 0x0a, 0x02, 0x4d, 0x0f, 0x02, 0x45, 0x07, 0x0e, 0x27, 0x44, 0x45, 0x00, 0x05, 0x0f,
  2519. + 0x4d, 0x32, 0x1d, 0x1a, 0x4d, 0x29, 0x05, 0x1f, 0x02, 0x07, 0x12, 0x15, 0x0f, 0x0f, 0x40, 0x40,
  2520. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2521. + 0x07, 0x06, 0x44, 0x54, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x09, 0x40, 0x40, 0x40, 0x09, 0x55,
  2522. + 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x03, 0x03, 0x5e,
  2523. + 0x54, 0x53, 0x03, 0x19, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x44, 0x44, 0x56, 0x56, 0x49, 0x51,
  2524. + 0x4c, 0x07, 0x51, 0x61, 0x4c, 0x4e, 0x5e, 0x64, 0x61, 0x5e, 0x58, 0x46, 0x41, 0x55, 0x56, 0x56,
  2525. + 0x49, 0x51, 0x4c, 0x07, 0x51, 0x61, 0x4c, 0x4e, 0x5e, 0x64, 0x61, 0x5e, 0x58, 0x46, 0x41, 0x55,
  2526. + 0x04, 0x4b, 0x23, 0x54, 0x5e, 0x5e, 0x51, 0x56, 0x56, 0x53, 0x49, 0x46, 0x49, 0x01, 0x51, 0x54,
  2527. + 0x31, 0x07, 0x51, 0x01, 0x51, 0x54, 0x31, 0x07, 0x51, 0x01, 0x51, 0x54, 0x31, 0x07, 0x51, 0x4c,
  2528. + 0x44, 0x19, 0x19, 0x0f, 0x13, 0x0f, 0x13, 0x07, 0x13, 0x44, 0x5e, 0x13, 0x44, 0x5e, 0x40, 0x40,
  2529. + 0x4c, 0x43, 0x0b, 0x03, 0x4c, 0x0f, 0x03, 0x44, 0x07, 0x0f, 0x27, 0x43, 0x44, 0x01, 0x06, 0x0f,
  2530. + 0x4c, 0x31, 0x1c, 0x19, 0x4c, 0x28, 0x06, 0x1e, 0x03, 0x07, 0x13, 0x14, 0x0f, 0x0f, 0x40, 0x40,
  2531. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2532. + 0x07, 0x05, 0x44, 0x54, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x09, 0x40, 0x40, 0x40, 0x09, 0x53,
  2533. + 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x03, 0x03, 0x5d,
  2534. + 0x54, 0x52, 0x03, 0x19, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x44, 0x44, 0x55, 0x55, 0x49, 0x51,
  2535. + 0x4c, 0x07, 0x51, 0x61, 0x4c, 0x4d, 0x5d, 0x64, 0x61, 0x5d, 0x56, 0x45, 0x41, 0x53, 0x55, 0x55,
  2536. + 0x49, 0x51, 0x4c, 0x07, 0x51, 0x61, 0x4c, 0x4d, 0x5d, 0x64, 0x61, 0x5d, 0x56, 0x45, 0x41, 0x53,
  2537. + 0x05, 0x4b, 0x23, 0x54, 0x5d, 0x5d, 0x51, 0x55, 0x55, 0x52, 0x49, 0x45, 0x49, 0x02, 0x51, 0x54,
  2538. + 0x31, 0x07, 0x51, 0x02, 0x51, 0x54, 0x31, 0x07, 0x51, 0x02, 0x51, 0x54, 0x31, 0x07, 0x51, 0x4c,
  2539. + 0x44, 0x19, 0x19, 0x0f, 0x13, 0x0f, 0x13, 0x07, 0x13, 0x44, 0x5d, 0x13, 0x44, 0x5d, 0x40, 0x40,
  2540. + 0x4c, 0x42, 0x0b, 0x03, 0x4c, 0x0f, 0x03, 0x44, 0x07, 0x11, 0x27, 0x42, 0x44, 0x02, 0x06, 0x0f,
  2541. + 0x4c, 0x31, 0x1c, 0x19, 0x4c, 0x26, 0x06, 0x1d, 0x03, 0x07, 0x13, 0x14, 0x0f, 0x0f, 0x40, 0x40,
  2542. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2543. + 0x07, 0x04, 0x44, 0x54, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x08, 0x40, 0x40, 0x40, 0x08, 0x51,
  2544. + 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x03, 0x03, 0x5c,
  2545. + 0x54, 0x51, 0x03, 0x18, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x44, 0x44, 0x54, 0x54, 0x48, 0x50,
  2546. + 0x4c, 0x07, 0x50, 0x60, 0x4c, 0x4c, 0x5c, 0x64, 0x60, 0x5c, 0x55, 0x44, 0x40, 0x51, 0x54, 0x54,
  2547. + 0x48, 0x50, 0x4c, 0x07, 0x50, 0x60, 0x4c, 0x4c, 0x5c, 0x64, 0x60, 0x5c, 0x55, 0x44, 0x40, 0x51,
  2548. + 0x06, 0x4b, 0x23, 0x54, 0x5c, 0x5c, 0x50, 0x54, 0x54, 0x51, 0x48, 0x44, 0x48, 0x03, 0x50, 0x54,
  2549. + 0x30, 0x07, 0x50, 0x03, 0x50, 0x54, 0x30, 0x07, 0x50, 0x03, 0x50, 0x54, 0x30, 0x07, 0x50, 0x4c,
  2550. + 0x44, 0x18, 0x18, 0x0f, 0x13, 0x0f, 0x13, 0x07, 0x13, 0x44, 0x5c, 0x13, 0x44, 0x5c, 0x40, 0x40,
  2551. + 0x4c, 0x41, 0x0b, 0x03, 0x4c, 0x0f, 0x03, 0x44, 0x07, 0x12, 0x27, 0x41, 0x44, 0x03, 0x07, 0x0f,
  2552. + 0x4c, 0x30, 0x1c, 0x18, 0x4c, 0x25, 0x07, 0x1c, 0x03, 0x07, 0x13, 0x14, 0x0f, 0x0f, 0x40, 0x40,
  2553. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2554. + 0x07, 0x03, 0x43, 0x53, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x40, 0x40, 0x40, 0x07, 0x4f,
  2555. + 0x43, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x04, 0x04, 0x5b,
  2556. + 0x53, 0x4f, 0x04, 0x17, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x43, 0x53, 0x53, 0x47, 0x4f,
  2557. + 0x4b, 0x07, 0x4f, 0x5f, 0x4b, 0x4b, 0x5b, 0x63, 0x5f, 0x5b, 0x53, 0x43, 0x00, 0x4f, 0x53, 0x53,
  2558. + 0x47, 0x4f, 0x4b, 0x07, 0x4f, 0x5f, 0x4b, 0x4b, 0x5b, 0x63, 0x5f, 0x5b, 0x53, 0x43, 0x00, 0x4f,
  2559. + 0x08, 0x4c, 0x24, 0x53, 0x5b, 0x5b, 0x4f, 0x53, 0x53, 0x4f, 0x47, 0x43, 0x47, 0x04, 0x4f, 0x53,
  2560. + 0x2f, 0x07, 0x4f, 0x04, 0x4f, 0x53, 0x2f, 0x07, 0x4f, 0x04, 0x4f, 0x53, 0x2f, 0x07, 0x4f, 0x4b,
  2561. + 0x43, 0x17, 0x17, 0x0f, 0x14, 0x0f, 0x14, 0x07, 0x14, 0x43, 0x5b, 0x14, 0x43, 0x5b, 0x40, 0x40,
  2562. + 0x4b, 0x00, 0x0c, 0x04, 0x4b, 0x0f, 0x04, 0x43, 0x07, 0x14, 0x27, 0x00, 0x43, 0x04, 0x08, 0x0f,
  2563. + 0x4b, 0x2f, 0x1b, 0x17, 0x4b, 0x23, 0x08, 0x1b, 0x04, 0x07, 0x14, 0x13, 0x0f, 0x0f, 0x40, 0x40,
  2564. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2565. + 0x07, 0x02, 0x43, 0x53, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x40, 0x40, 0x40, 0x07, 0x4d,
  2566. + 0x43, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x04, 0x04, 0x5a,
  2567. + 0x53, 0x4e, 0x04, 0x17, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x43, 0x52, 0x52, 0x47, 0x4f,
  2568. + 0x4b, 0x07, 0x4f, 0x5f, 0x4b, 0x4a, 0x5a, 0x63, 0x5f, 0x5a, 0x52, 0x42, 0x00, 0x4d, 0x52, 0x52,
  2569. + 0x47, 0x4f, 0x4b, 0x07, 0x4f, 0x5f, 0x4b, 0x4a, 0x5a, 0x63, 0x5f, 0x5a, 0x52, 0x42, 0x00, 0x4d,
  2570. + 0x09, 0x4c, 0x24, 0x53, 0x5a, 0x5a, 0x4f, 0x52, 0x52, 0x4e, 0x47, 0x42, 0x47, 0x05, 0x4f, 0x53,
  2571. + 0x2f, 0x07, 0x4f, 0x05, 0x4f, 0x53, 0x2f, 0x07, 0x4f, 0x05, 0x4f, 0x53, 0x2f, 0x07, 0x4f, 0x4b,
  2572. + 0x43, 0x17, 0x17, 0x0f, 0x14, 0x0f, 0x14, 0x07, 0x14, 0x43, 0x5a, 0x14, 0x43, 0x5a, 0x40, 0x40,
  2573. + 0x4b, 0x01, 0x0c, 0x04, 0x4b, 0x0f, 0x04, 0x43, 0x07, 0x15, 0x27, 0x01, 0x43, 0x05, 0x08, 0x0f,
  2574. + 0x4b, 0x2f, 0x1b, 0x17, 0x4b, 0x22, 0x08, 0x1a, 0x04, 0x07, 0x14, 0x13, 0x0f, 0x0f, 0x40, 0x40,
  2575. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2576. + 0x07, 0x01, 0x43, 0x53, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x06, 0x40, 0x40, 0x40, 0x06, 0x4b,
  2577. + 0x43, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x04, 0x04, 0x59,
  2578. + 0x53, 0x4d, 0x04, 0x16, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x43, 0x51, 0x51, 0x46, 0x4e,
  2579. + 0x4b, 0x07, 0x4e, 0x5e, 0x4b, 0x49, 0x59, 0x63, 0x5e, 0x59, 0x50, 0x41, 0x01, 0x4b, 0x51, 0x51,
  2580. + 0x46, 0x4e, 0x4b, 0x07, 0x4e, 0x5e, 0x4b, 0x49, 0x59, 0x63, 0x5e, 0x59, 0x50, 0x41, 0x01, 0x4b,
  2581. + 0x0a, 0x4c, 0x24, 0x53, 0x59, 0x59, 0x4e, 0x51, 0x51, 0x4d, 0x46, 0x41, 0x46, 0x06, 0x4e, 0x53,
  2582. + 0x2e, 0x07, 0x4e, 0x06, 0x4e, 0x53, 0x2e, 0x07, 0x4e, 0x06, 0x4e, 0x53, 0x2e, 0x07, 0x4e, 0x4b,
  2583. + 0x43, 0x16, 0x16, 0x0f, 0x14, 0x0f, 0x14, 0x07, 0x14, 0x43, 0x59, 0x14, 0x43, 0x59, 0x40, 0x40,
  2584. + 0x4b, 0x02, 0x0c, 0x04, 0x4b, 0x0f, 0x04, 0x43, 0x07, 0x17, 0x27, 0x02, 0x43, 0x06, 0x09, 0x0f,
  2585. + 0x4b, 0x2e, 0x1b, 0x16, 0x4b, 0x20, 0x09, 0x19, 0x04, 0x07, 0x14, 0x13, 0x0f, 0x0f, 0x40, 0x40,
  2586. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2587. + 0x07, 0x00, 0x43, 0x53, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x05, 0x40, 0x40, 0x40, 0x05, 0x4a,
  2588. + 0x43, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x04, 0x04, 0x59,
  2589. + 0x53, 0x4c, 0x04, 0x15, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x43, 0x51, 0x51, 0x46, 0x4e,
  2590. + 0x4b, 0x07, 0x4e, 0x5e, 0x4b, 0x49, 0x59, 0x63, 0x5e, 0x59, 0x4f, 0x41, 0x01, 0x4a, 0x51, 0x51,
  2591. + 0x46, 0x4e, 0x4b, 0x07, 0x4e, 0x5e, 0x4b, 0x49, 0x59, 0x63, 0x5e, 0x59, 0x4f, 0x41, 0x01, 0x4a,
  2592. + 0x0b, 0x4d, 0x24, 0x53, 0x59, 0x59, 0x4e, 0x51, 0x51, 0x4c, 0x46, 0x41, 0x46, 0x06, 0x4e, 0x53,
  2593. + 0x2d, 0x07, 0x4e, 0x06, 0x4e, 0x53, 0x2d, 0x07, 0x4e, 0x06, 0x4e, 0x53, 0x2d, 0x07, 0x4e, 0x4b,
  2594. + 0x43, 0x15, 0x15, 0x0f, 0x14, 0x0f, 0x14, 0x07, 0x14, 0x43, 0x59, 0x14, 0x43, 0x59, 0x40, 0x40,
  2595. + 0x4b, 0x03, 0x0c, 0x04, 0x4b, 0x0f, 0x04, 0x43, 0x07, 0x18, 0x27, 0x03, 0x43, 0x06, 0x09, 0x0f,
  2596. + 0x4b, 0x2d, 0x1a, 0x15, 0x4b, 0x1e, 0x09, 0x18, 0x04, 0x07, 0x14, 0x12, 0x0f, 0x0f, 0x40, 0x40,
  2597. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2598. + 0x07, 0x00, 0x42, 0x52, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x05, 0x40, 0x40, 0x40, 0x05, 0x48,
  2599. + 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x05, 0x05, 0x58,
  2600. + 0x52, 0x4a, 0x05, 0x15, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x50, 0x50, 0x45, 0x4d,
  2601. + 0x4a, 0x07, 0x4d, 0x5d, 0x4a, 0x48, 0x58, 0x62, 0x5d, 0x58, 0x4d, 0x40, 0x02, 0x48, 0x50, 0x50,
  2602. + 0x45, 0x4d, 0x4a, 0x07, 0x4d, 0x5d, 0x4a, 0x48, 0x58, 0x62, 0x5d, 0x58, 0x4d, 0x40, 0x02, 0x48,
  2603. + 0x0d, 0x4d, 0x25, 0x52, 0x58, 0x58, 0x4d, 0x50, 0x50, 0x4a, 0x45, 0x40, 0x45, 0x07, 0x4d, 0x52,
  2604. + 0x2d, 0x07, 0x4d, 0x07, 0x4d, 0x52, 0x2d, 0x07, 0x4d, 0x07, 0x4d, 0x52, 0x2d, 0x07, 0x4d, 0x4a,
  2605. + 0x42, 0x15, 0x15, 0x0f, 0x15, 0x0f, 0x15, 0x07, 0x15, 0x42, 0x58, 0x15, 0x42, 0x58, 0x40, 0x40,
  2606. + 0x4a, 0x05, 0x0d, 0x05, 0x4a, 0x0f, 0x05, 0x42, 0x07, 0x1a, 0x27, 0x05, 0x42, 0x07, 0x0a, 0x0f,
  2607. + 0x4a, 0x2d, 0x1a, 0x15, 0x4a, 0x1d, 0x0a, 0x18, 0x05, 0x07, 0x15, 0x12, 0x0f, 0x0f, 0x40, 0x40,
  2608. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2609. + 0x07, 0x40, 0x42, 0x52, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x04, 0x40, 0x40, 0x40, 0x04, 0x46,
  2610. + 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x05, 0x05, 0x57,
  2611. + 0x52, 0x49, 0x05, 0x14, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4f, 0x4f, 0x44, 0x4c,
  2612. + 0x4a, 0x07, 0x4c, 0x5c, 0x4a, 0x47, 0x57, 0x62, 0x5c, 0x57, 0x4b, 0x00, 0x03, 0x46, 0x4f, 0x4f,
  2613. + 0x44, 0x4c, 0x4a, 0x07, 0x4c, 0x5c, 0x4a, 0x47, 0x57, 0x62, 0x5c, 0x57, 0x4b, 0x00, 0x03, 0x46,
  2614. + 0x0e, 0x4d, 0x25, 0x52, 0x57, 0x57, 0x4c, 0x4f, 0x4f, 0x49, 0x44, 0x00, 0x44, 0x08, 0x4c, 0x52,
  2615. + 0x2c, 0x07, 0x4c, 0x08, 0x4c, 0x52, 0x2c, 0x07, 0x4c, 0x08, 0x4c, 0x52, 0x2c, 0x07, 0x4c, 0x4a,
  2616. + 0x42, 0x14, 0x14, 0x0f, 0x15, 0x0f, 0x15, 0x07, 0x15, 0x42, 0x57, 0x15, 0x42, 0x57, 0x40, 0x40,
  2617. + 0x4a, 0x06, 0x0d, 0x05, 0x4a, 0x0f, 0x05, 0x42, 0x07, 0x1c, 0x27, 0x06, 0x42, 0x08, 0x0b, 0x0f,
  2618. + 0x4a, 0x2c, 0x1a, 0x14, 0x4a, 0x1b, 0x0b, 0x17, 0x05, 0x07, 0x15, 0x12, 0x0f, 0x0f, 0x40, 0x40,
  2619. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2620. + 0x07, 0x41, 0x42, 0x52, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x04, 0x40, 0x40, 0x40, 0x04, 0x44,
  2621. + 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x05, 0x05, 0x56,
  2622. + 0x52, 0x48, 0x05, 0x14, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4e, 0x4e, 0x44, 0x4c,
  2623. + 0x4a, 0x07, 0x4c, 0x5c, 0x4a, 0x46, 0x56, 0x62, 0x5c, 0x56, 0x4a, 0x01, 0x03, 0x44, 0x4e, 0x4e,
  2624. + 0x44, 0x4c, 0x4a, 0x07, 0x4c, 0x5c, 0x4a, 0x46, 0x56, 0x62, 0x5c, 0x56, 0x4a, 0x01, 0x03, 0x44,
  2625. + 0x0f, 0x4d, 0x25, 0x52, 0x56, 0x56, 0x4c, 0x4e, 0x4e, 0x48, 0x44, 0x01, 0x44, 0x09, 0x4c, 0x52,
  2626. + 0x2c, 0x07, 0x4c, 0x09, 0x4c, 0x52, 0x2c, 0x07, 0x4c, 0x09, 0x4c, 0x52, 0x2c, 0x07, 0x4c, 0x4a,
  2627. + 0x42, 0x14, 0x14, 0x0f, 0x15, 0x0f, 0x15, 0x07, 0x15, 0x42, 0x56, 0x15, 0x42, 0x56, 0x40, 0x40,
  2628. + 0x4a, 0x07, 0x0d, 0x05, 0x4a, 0x0f, 0x05, 0x42, 0x07, 0x1d, 0x27, 0x07, 0x42, 0x09, 0x0b, 0x0f,
  2629. + 0x4a, 0x2c, 0x1a, 0x14, 0x4a, 0x1a, 0x0b, 0x16, 0x05, 0x07, 0x15, 0x12, 0x0f, 0x0f, 0x40, 0x40,
  2630. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2631. + 0x07, 0x42, 0x41, 0x51, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x03, 0x40, 0x40, 0x40, 0x03, 0x42,
  2632. + 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x06, 0x06, 0x55,
  2633. + 0x51, 0x47, 0x06, 0x13, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4d, 0x4d, 0x43, 0x4b,
  2634. + 0x49, 0x07, 0x4b, 0x5b, 0x49, 0x45, 0x55, 0x61, 0x5b, 0x55, 0x48, 0x02, 0x04, 0x42, 0x4d, 0x4d,
  2635. + 0x43, 0x4b, 0x49, 0x07, 0x4b, 0x5b, 0x49, 0x45, 0x55, 0x61, 0x5b, 0x55, 0x48, 0x02, 0x04, 0x42,
  2636. + 0x10, 0x4e, 0x26, 0x51, 0x55, 0x55, 0x4b, 0x4d, 0x4d, 0x47, 0x43, 0x02, 0x43, 0x0a, 0x4b, 0x51,
  2637. + 0x2b, 0x07, 0x4b, 0x0a, 0x4b, 0x51, 0x2b, 0x07, 0x4b, 0x0a, 0x4b, 0x51, 0x2b, 0x07, 0x4b, 0x49,
  2638. + 0x41, 0x13, 0x13, 0x0f, 0x16, 0x0f, 0x16, 0x07, 0x16, 0x41, 0x55, 0x16, 0x41, 0x55, 0x40, 0x40,
  2639. + 0x49, 0x08, 0x0e, 0x06, 0x49, 0x0f, 0x06, 0x41, 0x07, 0x1f, 0x27, 0x08, 0x41, 0x0a, 0x0c, 0x0f,
  2640. + 0x49, 0x2b, 0x19, 0x13, 0x49, 0x18, 0x0c, 0x15, 0x06, 0x07, 0x16, 0x11, 0x0f, 0x0f, 0x40, 0x40,
  2641. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2642. + 0x07, 0x43, 0x41, 0x51, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x40, 0x40, 0x40, 0x02, 0x40,
  2643. + 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x06, 0x06, 0x54,
  2644. + 0x51, 0x45, 0x06, 0x12, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4c, 0x4c, 0x42, 0x4a,
  2645. + 0x49, 0x07, 0x4a, 0x5a, 0x49, 0x44, 0x54, 0x61, 0x5a, 0x54, 0x47, 0x03, 0x05, 0x40, 0x4c, 0x4c,
  2646. + 0x42, 0x4a, 0x49, 0x07, 0x4a, 0x5a, 0x49, 0x44, 0x54, 0x61, 0x5a, 0x54, 0x47, 0x03, 0x05, 0x40,
  2647. + 0x12, 0x4e, 0x26, 0x51, 0x54, 0x54, 0x4a, 0x4c, 0x4c, 0x45, 0x42, 0x03, 0x42, 0x0b, 0x4a, 0x51,
  2648. + 0x2a, 0x07, 0x4a, 0x0b, 0x4a, 0x51, 0x2a, 0x07, 0x4a, 0x0b, 0x4a, 0x51, 0x2a, 0x07, 0x4a, 0x49,
  2649. + 0x41, 0x12, 0x12, 0x0f, 0x16, 0x0f, 0x16, 0x07, 0x16, 0x41, 0x54, 0x16, 0x41, 0x54, 0x40, 0x40,
  2650. + 0x49, 0x0a, 0x0e, 0x06, 0x49, 0x0f, 0x06, 0x41, 0x07, 0x20, 0x27, 0x0a, 0x41, 0x0b, 0x0d, 0x0f,
  2651. + 0x49, 0x2a, 0x19, 0x12, 0x49, 0x17, 0x0d, 0x14, 0x06, 0x07, 0x16, 0x11, 0x0f, 0x0f, 0x40, 0x40,
  2652. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2653. + 0x07, 0x44, 0x41, 0x51, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x40, 0x40, 0x40, 0x02, 0x01,
  2654. + 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x06, 0x06, 0x53,
  2655. + 0x51, 0x44, 0x06, 0x12, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4b, 0x4b, 0x42, 0x4a,
  2656. + 0x49, 0x07, 0x4a, 0x5a, 0x49, 0x43, 0x53, 0x61, 0x5a, 0x53, 0x45, 0x04, 0x05, 0x01, 0x4b, 0x4b,
  2657. + 0x42, 0x4a, 0x49, 0x07, 0x4a, 0x5a, 0x49, 0x43, 0x53, 0x61, 0x5a, 0x53, 0x45, 0x04, 0x05, 0x01,
  2658. + 0x13, 0x4e, 0x26, 0x51, 0x53, 0x53, 0x4a, 0x4b, 0x4b, 0x44, 0x42, 0x04, 0x42, 0x0c, 0x4a, 0x51,
  2659. + 0x2a, 0x07, 0x4a, 0x0c, 0x4a, 0x51, 0x2a, 0x07, 0x4a, 0x0c, 0x4a, 0x51, 0x2a, 0x07, 0x4a, 0x49,
  2660. + 0x41, 0x12, 0x12, 0x0f, 0x16, 0x0f, 0x16, 0x07, 0x16, 0x41, 0x53, 0x16, 0x41, 0x53, 0x40, 0x40,
  2661. + 0x49, 0x0b, 0x0e, 0x06, 0x49, 0x0f, 0x06, 0x41, 0x07, 0x22, 0x27, 0x0b, 0x41, 0x0c, 0x0d, 0x0f,
  2662. + 0x49, 0x2a, 0x19, 0x12, 0x49, 0x15, 0x0d, 0x13, 0x06, 0x07, 0x16, 0x11, 0x0f, 0x0f, 0x40, 0x40,
  2663. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2664. + 0x07, 0x45, 0x40, 0x50, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x01, 0x40, 0x40, 0x40, 0x01, 0x03,
  2665. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x52,
  2666. + 0x50, 0x43, 0x07, 0x11, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4a, 0x4a, 0x41, 0x49,
  2667. + 0x48, 0x07, 0x49, 0x59, 0x48, 0x42, 0x52, 0x60, 0x59, 0x52, 0x44, 0x05, 0x06, 0x03, 0x4a, 0x4a,
  2668. + 0x41, 0x49, 0x48, 0x07, 0x49, 0x59, 0x48, 0x42, 0x52, 0x60, 0x59, 0x52, 0x44, 0x05, 0x06, 0x03,
  2669. + 0x14, 0x4f, 0x27, 0x50, 0x52, 0x52, 0x49, 0x4a, 0x4a, 0x43, 0x41, 0x05, 0x41, 0x0d, 0x49, 0x50,
  2670. + 0x29, 0x07, 0x49, 0x0d, 0x49, 0x50, 0x29, 0x07, 0x49, 0x0d, 0x49, 0x50, 0x29, 0x07, 0x49, 0x48,
  2671. + 0x40, 0x11, 0x11, 0x0f, 0x17, 0x0f, 0x17, 0x07, 0x17, 0x40, 0x52, 0x17, 0x40, 0x52, 0x40, 0x40,
  2672. + 0x48, 0x0c, 0x0f, 0x07, 0x48, 0x0f, 0x07, 0x40, 0x07, 0x23, 0x27, 0x0c, 0x40, 0x0d, 0x0e, 0x0f,
  2673. + 0x48, 0x29, 0x18, 0x11, 0x48, 0x14, 0x0e, 0x12, 0x07, 0x07, 0x17, 0x10, 0x0f, 0x0f, 0x40, 0x40,
  2674. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2675. + 0x07, 0x46, 0x40, 0x50, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x40, 0x40, 0x40, 0x00, 0x04,
  2676. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x51,
  2677. + 0x50, 0x42, 0x07, 0x10, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x49, 0x41, 0x49,
  2678. + 0x48, 0x07, 0x49, 0x59, 0x48, 0x41, 0x51, 0x60, 0x59, 0x51, 0x42, 0x06, 0x06, 0x04, 0x49, 0x49,
  2679. + 0x41, 0x49, 0x48, 0x07, 0x49, 0x59, 0x48, 0x41, 0x51, 0x60, 0x59, 0x51, 0x42, 0x06, 0x06, 0x04,
  2680. + 0x15, 0x4f, 0x27, 0x50, 0x51, 0x51, 0x49, 0x49, 0x49, 0x42, 0x41, 0x06, 0x41, 0x0e, 0x49, 0x50,
  2681. + 0x28, 0x07, 0x49, 0x0e, 0x49, 0x50, 0x28, 0x07, 0x49, 0x0e, 0x49, 0x50, 0x28, 0x07, 0x49, 0x48,
  2682. + 0x40, 0x10, 0x10, 0x0f, 0x17, 0x0f, 0x17, 0x07, 0x17, 0x40, 0x51, 0x17, 0x40, 0x51, 0x40, 0x40,
  2683. + 0x48, 0x0d, 0x0f, 0x07, 0x48, 0x0f, 0x07, 0x40, 0x07, 0x25, 0x27, 0x0d, 0x40, 0x0e, 0x0e, 0x0f,
  2684. + 0x48, 0x28, 0x18, 0x10, 0x48, 0x12, 0x0e, 0x11, 0x07, 0x07, 0x17, 0x10, 0x0f, 0x0f, 0x40, 0x40,
  2685. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2686. + 0x07, 0x47, 0x40, 0x50, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x40, 0x40, 0x40, 0x00, 0x06,
  2687. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x50,
  2688. + 0x50, 0x40, 0x07, 0x10, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, 0x48, 0x40, 0x48,
  2689. + 0x48, 0x07, 0x48, 0x58, 0x48, 0x40, 0x50, 0x60, 0x58, 0x50, 0x40, 0x07, 0x07, 0x06, 0x48, 0x48,
  2690. + 0x40, 0x48, 0x48, 0x07, 0x48, 0x58, 0x48, 0x40, 0x50, 0x60, 0x58, 0x50, 0x40, 0x07, 0x07, 0x06,
  2691. + 0x17, 0x4f, 0x27, 0x50, 0x50, 0x50, 0x48, 0x48, 0x48, 0x40, 0x40, 0x07, 0x40, 0x0f, 0x48, 0x50,
  2692. + 0x28, 0x07, 0x48, 0x0f, 0x48, 0x50, 0x28, 0x07, 0x48, 0x0f, 0x48, 0x50, 0x28, 0x07, 0x48, 0x48,
  2693. + 0x40, 0x10, 0x10, 0x0f, 0x17, 0x0f, 0x17, 0x07, 0x17, 0x40, 0x50, 0x17, 0x40, 0x50, 0x40, 0x40,
  2694. + 0x48, 0x0f, 0x0f, 0x07, 0x48, 0x0f, 0x07, 0x40, 0x07, 0x27, 0x27, 0x0f, 0x40, 0x0f, 0x0f, 0x0f,
  2695. + 0x48, 0x28, 0x18, 0x10, 0x48, 0x10, 0x0f, 0x10, 0x07, 0x07, 0x17, 0x10, 0x0f, 0x0f, 0x40, 0x40,
  2696. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2697. + 0x07, 0x48, 0x00, 0x4f, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x08,
  2698. + 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x08, 0x08, 0x4f,
  2699. + 0x4f, 0x00, 0x08, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x47, 0x47, 0x00, 0x47,
  2700. + 0x47, 0x07, 0x47, 0x57, 0x47, 0x00, 0x4f, 0x5f, 0x57, 0x4f, 0x00, 0x08, 0x08, 0x08, 0x47, 0x47,
  2701. + 0x00, 0x47, 0x47, 0x07, 0x47, 0x57, 0x47, 0x00, 0x4f, 0x5f, 0x57, 0x4f, 0x00, 0x08, 0x08, 0x08,
  2702. + 0x18, 0x50, 0x28, 0x4f, 0x4f, 0x4f, 0x47, 0x47, 0x47, 0x00, 0x00, 0x08, 0x00, 0x10, 0x47, 0x4f,
  2703. + 0x27, 0x07, 0x47, 0x10, 0x47, 0x4f, 0x27, 0x07, 0x47, 0x10, 0x47, 0x4f, 0x27, 0x07, 0x47, 0x47,
  2704. + 0x00, 0x0f, 0x0f, 0x0f, 0x18, 0x0f, 0x18, 0x07, 0x18, 0x00, 0x4f, 0x18, 0x00, 0x4f, 0x40, 0x40,
  2705. + 0x47, 0x10, 0x10, 0x08, 0x47, 0x0f, 0x08, 0x00, 0x07, 0x28, 0x27, 0x10, 0x00, 0x10, 0x10, 0x0f,
  2706. + 0x47, 0x27, 0x17, 0x0f, 0x47, 0x0f, 0x10, 0x0f, 0x08, 0x07, 0x18, 0x0f, 0x0f, 0x0f, 0x40, 0x40,
  2707. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2708. + 0x07, 0x49, 0x00, 0x4f, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0a,
  2709. + 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x08, 0x08, 0x4e,
  2710. + 0x4f, 0x01, 0x08, 0x0f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x46, 0x46, 0x00, 0x47,
  2711. + 0x47, 0x07, 0x47, 0x57, 0x47, 0x01, 0x4e, 0x5f, 0x57, 0x4e, 0x02, 0x09, 0x08, 0x0a, 0x46, 0x46,
  2712. + 0x00, 0x47, 0x47, 0x07, 0x47, 0x57, 0x47, 0x01, 0x4e, 0x5f, 0x57, 0x4e, 0x02, 0x09, 0x08, 0x0a,
  2713. + 0x19, 0x50, 0x28, 0x4f, 0x4e, 0x4e, 0x47, 0x46, 0x46, 0x01, 0x00, 0x09, 0x00, 0x11, 0x47, 0x4f,
  2714. + 0x27, 0x07, 0x47, 0x11, 0x47, 0x4f, 0x27, 0x07, 0x47, 0x11, 0x47, 0x4f, 0x27, 0x07, 0x47, 0x47,
  2715. + 0x00, 0x0f, 0x0f, 0x0f, 0x18, 0x0f, 0x18, 0x07, 0x18, 0x00, 0x4e, 0x18, 0x00, 0x4e, 0x40, 0x40,
  2716. + 0x47, 0x11, 0x10, 0x08, 0x47, 0x0f, 0x08, 0x00, 0x07, 0x2a, 0x27, 0x11, 0x00, 0x11, 0x10, 0x0f,
  2717. + 0x47, 0x27, 0x17, 0x0f, 0x47, 0x0d, 0x10, 0x0e, 0x08, 0x07, 0x18, 0x0f, 0x0f, 0x0f, 0x40, 0x40,
  2718. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2719. + 0x07, 0x4a, 0x00, 0x4f, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x40, 0x40, 0x40, 0x41, 0x0c,
  2720. + 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x08, 0x08, 0x4d,
  2721. + 0x4f, 0x02, 0x08, 0x0e, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x45, 0x45, 0x01, 0x46,
  2722. + 0x47, 0x07, 0x46, 0x56, 0x47, 0x02, 0x4d, 0x5f, 0x56, 0x4d, 0x03, 0x0a, 0x09, 0x0c, 0x45, 0x45,
  2723. + 0x01, 0x46, 0x47, 0x07, 0x46, 0x56, 0x47, 0x02, 0x4d, 0x5f, 0x56, 0x4d, 0x03, 0x0a, 0x09, 0x0c,
  2724. + 0x1a, 0x50, 0x28, 0x4f, 0x4d, 0x4d, 0x46, 0x45, 0x45, 0x02, 0x01, 0x0a, 0x01, 0x12, 0x46, 0x4f,
  2725. + 0x26, 0x07, 0x46, 0x12, 0x46, 0x4f, 0x26, 0x07, 0x46, 0x12, 0x46, 0x4f, 0x26, 0x07, 0x46, 0x47,
  2726. + 0x00, 0x0e, 0x0e, 0x0f, 0x18, 0x0f, 0x18, 0x07, 0x18, 0x00, 0x4d, 0x18, 0x00, 0x4d, 0x40, 0x40,
  2727. + 0x47, 0x12, 0x10, 0x08, 0x47, 0x0f, 0x08, 0x00, 0x07, 0x2b, 0x27, 0x12, 0x00, 0x12, 0x11, 0x0f,
  2728. + 0x47, 0x26, 0x17, 0x0e, 0x47, 0x0c, 0x11, 0x0d, 0x08, 0x07, 0x18, 0x0f, 0x0f, 0x0f, 0x40, 0x40,
  2729. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2730. + 0x07, 0x4b, 0x01, 0x4e, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x42, 0x0e,
  2731. + 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x09, 0x09, 0x4c,
  2732. + 0x4e, 0x04, 0x09, 0x0d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x01, 0x01, 0x44, 0x44, 0x02, 0x45,
  2733. + 0x46, 0x07, 0x45, 0x55, 0x46, 0x03, 0x4c, 0x5e, 0x55, 0x4c, 0x05, 0x0b, 0x0a, 0x0e, 0x44, 0x44,
  2734. + 0x02, 0x45, 0x46, 0x07, 0x45, 0x55, 0x46, 0x03, 0x4c, 0x5e, 0x55, 0x4c, 0x05, 0x0b, 0x0a, 0x0e,
  2735. + 0x1c, 0x51, 0x29, 0x4e, 0x4c, 0x4c, 0x45, 0x44, 0x44, 0x04, 0x02, 0x0b, 0x02, 0x13, 0x45, 0x4e,
  2736. + 0x25, 0x07, 0x45, 0x13, 0x45, 0x4e, 0x25, 0x07, 0x45, 0x13, 0x45, 0x4e, 0x25, 0x07, 0x45, 0x46,
  2737. + 0x01, 0x0d, 0x0d, 0x0f, 0x19, 0x0f, 0x19, 0x07, 0x19, 0x01, 0x4c, 0x19, 0x01, 0x4c, 0x40, 0x40,
  2738. + 0x46, 0x14, 0x11, 0x09, 0x46, 0x0f, 0x09, 0x01, 0x07, 0x2d, 0x27, 0x14, 0x01, 0x13, 0x12, 0x0f,
  2739. + 0x46, 0x25, 0x16, 0x0d, 0x46, 0x0a, 0x12, 0x0c, 0x09, 0x07, 0x19, 0x0e, 0x0f, 0x0f, 0x40, 0x40,
  2740. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2741. + 0x07, 0x4c, 0x01, 0x4e, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x42, 0x10,
  2742. + 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x09, 0x09, 0x4b,
  2743. + 0x4e, 0x05, 0x09, 0x0d, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x01, 0x01, 0x43, 0x43, 0x02, 0x45,
  2744. + 0x46, 0x07, 0x45, 0x55, 0x46, 0x04, 0x4b, 0x5e, 0x55, 0x4b, 0x06, 0x0c, 0x0a, 0x10, 0x43, 0x43,
  2745. + 0x02, 0x45, 0x46, 0x07, 0x45, 0x55, 0x46, 0x04, 0x4b, 0x5e, 0x55, 0x4b, 0x06, 0x0c, 0x0a, 0x10,
  2746. + 0x1d, 0x51, 0x29, 0x4e, 0x4b, 0x4b, 0x45, 0x43, 0x43, 0x05, 0x02, 0x0c, 0x02, 0x14, 0x45, 0x4e,
  2747. + 0x25, 0x07, 0x45, 0x14, 0x45, 0x4e, 0x25, 0x07, 0x45, 0x14, 0x45, 0x4e, 0x25, 0x07, 0x45, 0x46,
  2748. + 0x01, 0x0d, 0x0d, 0x0f, 0x19, 0x0f, 0x19, 0x07, 0x19, 0x01, 0x4b, 0x19, 0x01, 0x4b, 0x40, 0x40,
  2749. + 0x46, 0x15, 0x11, 0x09, 0x46, 0x0f, 0x09, 0x01, 0x07, 0x2e, 0x27, 0x15, 0x01, 0x14, 0x12, 0x0f,
  2750. + 0x46, 0x25, 0x16, 0x0d, 0x46, 0x09, 0x12, 0x0b, 0x09, 0x07, 0x19, 0x0e, 0x0f, 0x0f, 0x40, 0x40,
  2751. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2752. + 0x07, 0x4d, 0x01, 0x4e, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x40, 0x40, 0x40, 0x43, 0x12,
  2753. + 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x09, 0x09, 0x4a,
  2754. + 0x4e, 0x06, 0x09, 0x0c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x01, 0x01, 0x42, 0x42, 0x03, 0x44,
  2755. + 0x46, 0x07, 0x44, 0x54, 0x46, 0x05, 0x4a, 0x5e, 0x54, 0x4a, 0x08, 0x0d, 0x0b, 0x12, 0x42, 0x42,
  2756. + 0x03, 0x44, 0x46, 0x07, 0x44, 0x54, 0x46, 0x05, 0x4a, 0x5e, 0x54, 0x4a, 0x08, 0x0d, 0x0b, 0x12,
  2757. + 0x1e, 0x51, 0x29, 0x4e, 0x4a, 0x4a, 0x44, 0x42, 0x42, 0x06, 0x03, 0x0d, 0x03, 0x15, 0x44, 0x4e,
  2758. + 0x24, 0x07, 0x44, 0x15, 0x44, 0x4e, 0x24, 0x07, 0x44, 0x15, 0x44, 0x4e, 0x24, 0x07, 0x44, 0x46,
  2759. + 0x01, 0x0c, 0x0c, 0x0f, 0x19, 0x0f, 0x19, 0x07, 0x19, 0x01, 0x4a, 0x19, 0x01, 0x4a, 0x40, 0x40,
  2760. + 0x46, 0x16, 0x11, 0x09, 0x46, 0x0f, 0x09, 0x01, 0x07, 0x30, 0x27, 0x16, 0x01, 0x15, 0x13, 0x0f,
  2761. + 0x46, 0x24, 0x16, 0x0c, 0x46, 0x07, 0x13, 0x0a, 0x09, 0x07, 0x19, 0x0e, 0x0f, 0x0f, 0x40, 0x40,
  2762. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2763. + 0x07, 0x4e, 0x01, 0x4e, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x44, 0x40, 0x40, 0x40, 0x44, 0x13,
  2764. + 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x09, 0x09, 0x4a,
  2765. + 0x4e, 0x07, 0x09, 0x0b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x01, 0x01, 0x42, 0x42, 0x03, 0x44,
  2766. + 0x46, 0x07, 0x44, 0x54, 0x46, 0x05, 0x4a, 0x5e, 0x54, 0x4a, 0x09, 0x0d, 0x0b, 0x13, 0x42, 0x42,
  2767. + 0x03, 0x44, 0x46, 0x07, 0x44, 0x54, 0x46, 0x05, 0x4a, 0x5e, 0x54, 0x4a, 0x09, 0x0d, 0x0b, 0x13,
  2768. + 0x1f, 0x52, 0x29, 0x4e, 0x4a, 0x4a, 0x44, 0x42, 0x42, 0x07, 0x03, 0x0d, 0x03, 0x15, 0x44, 0x4e,
  2769. + 0x23, 0x07, 0x44, 0x15, 0x44, 0x4e, 0x23, 0x07, 0x44, 0x15, 0x44, 0x4e, 0x23, 0x07, 0x44, 0x46,
  2770. + 0x01, 0x0b, 0x0b, 0x0f, 0x19, 0x0f, 0x19, 0x07, 0x19, 0x01, 0x4a, 0x19, 0x01, 0x4a, 0x40, 0x40,
  2771. + 0x46, 0x17, 0x11, 0x09, 0x46, 0x0f, 0x09, 0x01, 0x07, 0x31, 0x27, 0x17, 0x01, 0x15, 0x13, 0x0f,
  2772. + 0x46, 0x23, 0x15, 0x0b, 0x46, 0x05, 0x13, 0x09, 0x09, 0x07, 0x19, 0x0d, 0x0f, 0x0f, 0x40, 0x40,
  2773. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2774. + 0x07, 0x4e, 0x02, 0x4d, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x44, 0x40, 0x40, 0x40, 0x44, 0x15,
  2775. + 0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0a, 0x0a, 0x49,
  2776. + 0x4d, 0x09, 0x0a, 0x0b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x41, 0x41, 0x04, 0x43,
  2777. + 0x45, 0x07, 0x43, 0x53, 0x45, 0x06, 0x49, 0x5d, 0x53, 0x49, 0x0b, 0x0e, 0x0c, 0x15, 0x41, 0x41,
  2778. + 0x04, 0x43, 0x45, 0x07, 0x43, 0x53, 0x45, 0x06, 0x49, 0x5d, 0x53, 0x49, 0x0b, 0x0e, 0x0c, 0x15,
  2779. + 0x21, 0x52, 0x2a, 0x4d, 0x49, 0x49, 0x43, 0x41, 0x41, 0x09, 0x04, 0x0e, 0x04, 0x16, 0x43, 0x4d,
  2780. + 0x23, 0x07, 0x43, 0x16, 0x43, 0x4d, 0x23, 0x07, 0x43, 0x16, 0x43, 0x4d, 0x23, 0x07, 0x43, 0x45,
  2781. + 0x02, 0x0b, 0x0b, 0x0f, 0x1a, 0x0f, 0x1a, 0x07, 0x1a, 0x02, 0x49, 0x1a, 0x02, 0x49, 0x40, 0x40,
  2782. + 0x45, 0x19, 0x12, 0x0a, 0x45, 0x0f, 0x0a, 0x02, 0x07, 0x33, 0x27, 0x19, 0x02, 0x16, 0x14, 0x0f,
  2783. + 0x45, 0x23, 0x15, 0x0b, 0x45, 0x04, 0x14, 0x09, 0x0a, 0x07, 0x1a, 0x0d, 0x0f, 0x0f, 0x40, 0x40,
  2784. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2785. + 0x07, 0x4f, 0x02, 0x4d, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x45, 0x40, 0x40, 0x40, 0x45, 0x17,
  2786. + 0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0a, 0x0a, 0x48,
  2787. + 0x4d, 0x0a, 0x0a, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x40, 0x40, 0x05, 0x42,
  2788. + 0x45, 0x07, 0x42, 0x52, 0x45, 0x07, 0x48, 0x5d, 0x52, 0x48, 0x0d, 0x0f, 0x0d, 0x17, 0x40, 0x40,
  2789. + 0x05, 0x42, 0x45, 0x07, 0x42, 0x52, 0x45, 0x07, 0x48, 0x5d, 0x52, 0x48, 0x0d, 0x0f, 0x0d, 0x17,
  2790. + 0x22, 0x52, 0x2a, 0x4d, 0x48, 0x48, 0x42, 0x40, 0x40, 0x0a, 0x05, 0x0f, 0x05, 0x17, 0x42, 0x4d,
  2791. + 0x22, 0x07, 0x42, 0x17, 0x42, 0x4d, 0x22, 0x07, 0x42, 0x17, 0x42, 0x4d, 0x22, 0x07, 0x42, 0x45,
  2792. + 0x02, 0x0a, 0x0a, 0x0f, 0x1a, 0x0f, 0x1a, 0x07, 0x1a, 0x02, 0x48, 0x1a, 0x02, 0x48, 0x40, 0x40,
  2793. + 0x45, 0x1a, 0x12, 0x0a, 0x45, 0x0f, 0x0a, 0x02, 0x07, 0x35, 0x27, 0x1a, 0x02, 0x17, 0x15, 0x0f,
  2794. + 0x45, 0x22, 0x15, 0x0a, 0x45, 0x02, 0x15, 0x08, 0x0a, 0x07, 0x1a, 0x0d, 0x0f, 0x0f, 0x40, 0x40,
  2795. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2796. + 0x07, 0x50, 0x02, 0x4d, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x45, 0x40, 0x40, 0x40, 0x45, 0x19,
  2797. + 0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0a, 0x0a, 0x47,
  2798. + 0x4d, 0x0b, 0x0a, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x00, 0x00, 0x05, 0x42,
  2799. + 0x45, 0x07, 0x42, 0x52, 0x45, 0x08, 0x47, 0x5d, 0x52, 0x47, 0x0e, 0x10, 0x0d, 0x19, 0x00, 0x00,
  2800. + 0x05, 0x42, 0x45, 0x07, 0x42, 0x52, 0x45, 0x08, 0x47, 0x5d, 0x52, 0x47, 0x0e, 0x10, 0x0d, 0x19,
  2801. + 0x23, 0x52, 0x2a, 0x4d, 0x47, 0x47, 0x42, 0x00, 0x00, 0x0b, 0x05, 0x10, 0x05, 0x18, 0x42, 0x4d,
  2802. + 0x22, 0x07, 0x42, 0x18, 0x42, 0x4d, 0x22, 0x07, 0x42, 0x18, 0x42, 0x4d, 0x22, 0x07, 0x42, 0x45,
  2803. + 0x02, 0x0a, 0x0a, 0x0f, 0x1a, 0x0f, 0x1a, 0x07, 0x1a, 0x02, 0x47, 0x1a, 0x02, 0x47, 0x40, 0x40,
  2804. + 0x45, 0x1b, 0x12, 0x0a, 0x45, 0x0f, 0x0a, 0x02, 0x07, 0x36, 0x27, 0x1b, 0x02, 0x18, 0x15, 0x0f,
  2805. + 0x45, 0x22, 0x15, 0x0a, 0x45, 0x01, 0x15, 0x07, 0x0a, 0x07, 0x1a, 0x0d, 0x0f, 0x0f, 0x40, 0x40,
  2806. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2807. + 0x07, 0x51, 0x03, 0x4c, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x46, 0x40, 0x40, 0x40, 0x46, 0x1b,
  2808. + 0x03, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0b, 0x0b, 0x46,
  2809. + 0x4c, 0x0c, 0x0b, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x03, 0x03, 0x01, 0x01, 0x06, 0x41,
  2810. + 0x44, 0x07, 0x41, 0x51, 0x44, 0x09, 0x46, 0x5c, 0x51, 0x46, 0x10, 0x11, 0x0e, 0x1b, 0x01, 0x01,
  2811. + 0x06, 0x41, 0x44, 0x07, 0x41, 0x51, 0x44, 0x09, 0x46, 0x5c, 0x51, 0x46, 0x10, 0x11, 0x0e, 0x1b,
  2812. + 0x24, 0x53, 0x2b, 0x4c, 0x46, 0x46, 0x41, 0x01, 0x01, 0x0c, 0x06, 0x11, 0x06, 0x19, 0x41, 0x4c,
  2813. + 0x21, 0x07, 0x41, 0x19, 0x41, 0x4c, 0x21, 0x07, 0x41, 0x19, 0x41, 0x4c, 0x21, 0x07, 0x41, 0x44,
  2814. + 0x03, 0x09, 0x09, 0x0f, 0x1b, 0x0f, 0x1b, 0x07, 0x1b, 0x03, 0x46, 0x1b, 0x03, 0x46, 0x40, 0x40,
  2815. + 0x44, 0x1c, 0x13, 0x0b, 0x44, 0x0f, 0x0b, 0x03, 0x07, 0x38, 0x27, 0x1c, 0x03, 0x19, 0x16, 0x0f,
  2816. + 0x44, 0x21, 0x14, 0x09, 0x44, 0x40, 0x16, 0x06, 0x0b, 0x07, 0x1b, 0x0c, 0x0f, 0x0f, 0x40, 0x40,
  2817. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2818. + 0x07, 0x52, 0x03, 0x4c, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x47, 0x40, 0x40, 0x40, 0x47, 0x1d,
  2819. + 0x03, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0b, 0x0b, 0x45,
  2820. + 0x4c, 0x0e, 0x0b, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x03, 0x03, 0x02, 0x02, 0x07, 0x40,
  2821. + 0x44, 0x07, 0x40, 0x50, 0x44, 0x0a, 0x45, 0x5c, 0x50, 0x45, 0x11, 0x12, 0x0f, 0x1d, 0x02, 0x02,
  2822. + 0x07, 0x40, 0x44, 0x07, 0x40, 0x50, 0x44, 0x0a, 0x45, 0x5c, 0x50, 0x45, 0x11, 0x12, 0x0f, 0x1d,
  2823. + 0x26, 0x53, 0x2b, 0x4c, 0x45, 0x45, 0x40, 0x02, 0x02, 0x0e, 0x07, 0x12, 0x07, 0x1a, 0x40, 0x4c,
  2824. + 0x20, 0x07, 0x40, 0x1a, 0x40, 0x4c, 0x20, 0x07, 0x40, 0x1a, 0x40, 0x4c, 0x20, 0x07, 0x40, 0x44,
  2825. + 0x03, 0x08, 0x08, 0x0f, 0x1b, 0x0f, 0x1b, 0x07, 0x1b, 0x03, 0x45, 0x1b, 0x03, 0x45, 0x40, 0x40,
  2826. + 0x44, 0x1e, 0x13, 0x0b, 0x44, 0x0f, 0x0b, 0x03, 0x07, 0x39, 0x27, 0x1e, 0x03, 0x1a, 0x17, 0x0f,
  2827. + 0x44, 0x20, 0x14, 0x08, 0x44, 0x41, 0x17, 0x05, 0x0b, 0x07, 0x1b, 0x0c, 0x0f, 0x0f, 0x40, 0x40,
  2828. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2829. + 0x07, 0x53, 0x03, 0x4c, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x47, 0x40, 0x40, 0x40, 0x47, 0x1f,
  2830. + 0x03, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0b, 0x0b, 0x44,
  2831. + 0x4c, 0x0f, 0x0b, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x03, 0x03, 0x03, 0x03, 0x07, 0x40,
  2832. + 0x44, 0x07, 0x40, 0x50, 0x44, 0x0b, 0x44, 0x5c, 0x50, 0x44, 0x13, 0x13, 0x0f, 0x1f, 0x03, 0x03,
  2833. + 0x07, 0x40, 0x44, 0x07, 0x40, 0x50, 0x44, 0x0b, 0x44, 0x5c, 0x50, 0x44, 0x13, 0x13, 0x0f, 0x1f,
  2834. + 0x27, 0x53, 0x2b, 0x4c, 0x44, 0x44, 0x40, 0x03, 0x03, 0x0f, 0x07, 0x13, 0x07, 0x1b, 0x40, 0x4c,
  2835. + 0x20, 0x07, 0x40, 0x1b, 0x40, 0x4c, 0x20, 0x07, 0x40, 0x1b, 0x40, 0x4c, 0x20, 0x07, 0x40, 0x44,
  2836. + 0x03, 0x08, 0x08, 0x0f, 0x1b, 0x0f, 0x1b, 0x07, 0x1b, 0x03, 0x44, 0x1b, 0x03, 0x44, 0x40, 0x40,
  2837. + 0x44, 0x1f, 0x13, 0x0b, 0x44, 0x0f, 0x0b, 0x03, 0x07, 0x3b, 0x27, 0x1f, 0x03, 0x1b, 0x17, 0x0f,
  2838. + 0x44, 0x20, 0x14, 0x08, 0x44, 0x43, 0x17, 0x04, 0x0b, 0x07, 0x1b, 0x0c, 0x0f, 0x0f, 0x40, 0x40,
  2839. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2840. + 0x07, 0x54, 0x04, 0x4b, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, 0x40, 0x40, 0x40, 0x48, 0x21,
  2841. + 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0c, 0x0c, 0x43,
  2842. + 0x4b, 0x10, 0x0c, 0x07, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x04, 0x04, 0x04, 0x04, 0x08, 0x00,
  2843. + 0x43, 0x07, 0x00, 0x4f, 0x43, 0x0c, 0x43, 0x5b, 0x4f, 0x43, 0x14, 0x14, 0x10, 0x21, 0x04, 0x04,
  2844. + 0x08, 0x00, 0x43, 0x07, 0x00, 0x4f, 0x43, 0x0c, 0x43, 0x5b, 0x4f, 0x43, 0x14, 0x14, 0x10, 0x21,
  2845. + 0x28, 0x54, 0x2c, 0x4b, 0x43, 0x43, 0x00, 0x04, 0x04, 0x10, 0x08, 0x14, 0x08, 0x1c, 0x00, 0x4b,
  2846. + 0x1f, 0x07, 0x00, 0x1c, 0x00, 0x4b, 0x1f, 0x07, 0x00, 0x1c, 0x00, 0x4b, 0x1f, 0x07, 0x00, 0x43,
  2847. + 0x04, 0x07, 0x07, 0x0f, 0x1c, 0x0f, 0x1c, 0x07, 0x1c, 0x04, 0x43, 0x1c, 0x04, 0x43, 0x40, 0x40,
  2848. + 0x43, 0x20, 0x14, 0x0c, 0x43, 0x0f, 0x0c, 0x04, 0x07, 0x3c, 0x27, 0x20, 0x04, 0x1c, 0x18, 0x0f,
  2849. + 0x43, 0x1f, 0x13, 0x07, 0x43, 0x44, 0x18, 0x03, 0x0c, 0x07, 0x1c, 0x0b, 0x0f, 0x0f, 0x40, 0x40,
  2850. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2851. + 0x07, 0x55, 0x04, 0x4b, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x40, 0x40, 0x40, 0x49, 0x22,
  2852. + 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0c, 0x0c, 0x42,
  2853. + 0x4b, 0x11, 0x0c, 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x04, 0x04, 0x05, 0x05, 0x08, 0x00,
  2854. + 0x43, 0x07, 0x00, 0x4f, 0x43, 0x0d, 0x42, 0x5b, 0x4f, 0x42, 0x16, 0x15, 0x10, 0x22, 0x05, 0x05,
  2855. + 0x08, 0x00, 0x43, 0x07, 0x00, 0x4f, 0x43, 0x0d, 0x42, 0x5b, 0x4f, 0x42, 0x16, 0x15, 0x10, 0x22,
  2856. + 0x29, 0x54, 0x2c, 0x4b, 0x42, 0x42, 0x00, 0x05, 0x05, 0x11, 0x08, 0x15, 0x08, 0x1d, 0x00, 0x4b,
  2857. + 0x1e, 0x07, 0x00, 0x1d, 0x00, 0x4b, 0x1e, 0x07, 0x00, 0x1d, 0x00, 0x4b, 0x1e, 0x07, 0x00, 0x43,
  2858. + 0x04, 0x06, 0x06, 0x0f, 0x1c, 0x0f, 0x1c, 0x07, 0x1c, 0x04, 0x42, 0x1c, 0x04, 0x42, 0x40, 0x40,
  2859. + 0x43, 0x21, 0x14, 0x0c, 0x43, 0x0f, 0x0c, 0x04, 0x07, 0x3e, 0x27, 0x21, 0x04, 0x1d, 0x18, 0x0f,
  2860. + 0x43, 0x1e, 0x13, 0x06, 0x43, 0x46, 0x18, 0x02, 0x0c, 0x07, 0x1c, 0x0b, 0x0f, 0x0f, 0x40, 0x40,
  2861. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2862. + 0x07, 0x56, 0x04, 0x4b, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x40, 0x40, 0x40, 0x49, 0x24,
  2863. + 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0c, 0x0c, 0x41,
  2864. + 0x4b, 0x13, 0x0c, 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x04, 0x04, 0x06, 0x06, 0x09, 0x01,
  2865. + 0x43, 0x07, 0x01, 0x4e, 0x43, 0x0e, 0x41, 0x5b, 0x4e, 0x41, 0x18, 0x16, 0x11, 0x24, 0x06, 0x06,
  2866. + 0x09, 0x01, 0x43, 0x07, 0x01, 0x4e, 0x43, 0x0e, 0x41, 0x5b, 0x4e, 0x41, 0x18, 0x16, 0x11, 0x24,
  2867. + 0x2b, 0x54, 0x2c, 0x4b, 0x41, 0x41, 0x01, 0x06, 0x06, 0x13, 0x09, 0x16, 0x09, 0x1e, 0x01, 0x4b,
  2868. + 0x1e, 0x07, 0x01, 0x1e, 0x01, 0x4b, 0x1e, 0x07, 0x01, 0x1e, 0x01, 0x4b, 0x1e, 0x07, 0x01, 0x43,
  2869. + 0x04, 0x06, 0x06, 0x0f, 0x1c, 0x0f, 0x1c, 0x07, 0x1c, 0x04, 0x41, 0x1c, 0x04, 0x41, 0x40, 0x40,
  2870. + 0x43, 0x23, 0x14, 0x0c, 0x43, 0x0f, 0x0c, 0x04, 0x07, 0x3e, 0x27, 0x23, 0x04, 0x1e, 0x19, 0x0f,
  2871. + 0x43, 0x1e, 0x13, 0x06, 0x43, 0x48, 0x19, 0x01, 0x0c, 0x07, 0x1c, 0x0b, 0x0f, 0x0f, 0x40, 0x40,
  2872. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2873. + 0x07, 0x57, 0x05, 0x4a, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4a, 0x40, 0x40, 0x40, 0x4a, 0x26,
  2874. + 0x05, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0d, 0x0d, 0x40,
  2875. + 0x4a, 0x14, 0x0d, 0x05, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x05, 0x05, 0x07, 0x07, 0x0a, 0x02,
  2876. + 0x42, 0x07, 0x02, 0x4d, 0x42, 0x0f, 0x40, 0x5a, 0x4d, 0x40, 0x19, 0x17, 0x12, 0x26, 0x07, 0x07,
  2877. + 0x0a, 0x02, 0x42, 0x07, 0x02, 0x4d, 0x42, 0x0f, 0x40, 0x5a, 0x4d, 0x40, 0x19, 0x17, 0x12, 0x26,
  2878. + 0x2c, 0x55, 0x2d, 0x4a, 0x40, 0x40, 0x02, 0x07, 0x07, 0x14, 0x0a, 0x17, 0x0a, 0x1f, 0x02, 0x4a,
  2879. + 0x1d, 0x07, 0x02, 0x1f, 0x02, 0x4a, 0x1d, 0x07, 0x02, 0x1f, 0x02, 0x4a, 0x1d, 0x07, 0x02, 0x42,
  2880. + 0x05, 0x05, 0x05, 0x0f, 0x1d, 0x0f, 0x1d, 0x07, 0x1d, 0x05, 0x40, 0x1d, 0x05, 0x40, 0x40, 0x40,
  2881. + 0x42, 0x24, 0x15, 0x0d, 0x42, 0x0f, 0x0d, 0x05, 0x07, 0x3e, 0x27, 0x24, 0x05, 0x1f, 0x1a, 0x0f,
  2882. + 0x42, 0x1d, 0x12, 0x05, 0x42, 0x49, 0x1a, 0x00, 0x0d, 0x07, 0x1d, 0x0a, 0x0f, 0x0f, 0x40, 0x40,
  2883. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2884. + 0x07, 0x58, 0x05, 0x4a, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4a, 0x40, 0x40, 0x40, 0x4a, 0x28,
  2885. + 0x05, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0d, 0x0d, 0x00,
  2886. + 0x4a, 0x15, 0x0d, 0x05, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x05, 0x05, 0x08, 0x08, 0x0a, 0x02,
  2887. + 0x42, 0x07, 0x02, 0x4d, 0x42, 0x10, 0x00, 0x5a, 0x4d, 0x00, 0x1b, 0x18, 0x12, 0x28, 0x08, 0x08,
  2888. + 0x0a, 0x02, 0x42, 0x07, 0x02, 0x4d, 0x42, 0x10, 0x00, 0x5a, 0x4d, 0x00, 0x1b, 0x18, 0x12, 0x28,
  2889. + 0x2d, 0x55, 0x2d, 0x4a, 0x00, 0x00, 0x02, 0x08, 0x08, 0x15, 0x0a, 0x18, 0x0a, 0x20, 0x02, 0x4a,
  2890. + 0x1d, 0x07, 0x02, 0x20, 0x02, 0x4a, 0x1d, 0x07, 0x02, 0x20, 0x02, 0x4a, 0x1d, 0x07, 0x02, 0x42,
  2891. + 0x05, 0x05, 0x05, 0x0f, 0x1d, 0x0f, 0x1d, 0x07, 0x1d, 0x05, 0x00, 0x1d, 0x05, 0x00, 0x40, 0x40,
  2892. + 0x42, 0x25, 0x15, 0x0d, 0x42, 0x0f, 0x0d, 0x05, 0x07, 0x3e, 0x27, 0x25, 0x05, 0x20, 0x1a, 0x0f,
  2893. + 0x42, 0x1d, 0x12, 0x05, 0x42, 0x4b, 0x1a, 0x40, 0x0d, 0x07, 0x1d, 0x0a, 0x0f, 0x0f, 0x40, 0x40,
  2894. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2895. + 0x07, 0x59, 0x05, 0x4a, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4b, 0x40, 0x40, 0x40, 0x4b, 0x2a,
  2896. + 0x05, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0d, 0x0d, 0x01,
  2897. + 0x4a, 0x16, 0x0d, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x05, 0x05, 0x09, 0x09, 0x0b, 0x03,
  2898. + 0x42, 0x07, 0x03, 0x4c, 0x42, 0x11, 0x01, 0x5a, 0x4c, 0x01, 0x1c, 0x19, 0x13, 0x2a, 0x09, 0x09,
  2899. + 0x0b, 0x03, 0x42, 0x07, 0x03, 0x4c, 0x42, 0x11, 0x01, 0x5a, 0x4c, 0x01, 0x1c, 0x19, 0x13, 0x2a,
  2900. + 0x2e, 0x55, 0x2d, 0x4a, 0x01, 0x01, 0x03, 0x09, 0x09, 0x16, 0x0b, 0x19, 0x0b, 0x21, 0x03, 0x4a,
  2901. + 0x1c, 0x07, 0x03, 0x21, 0x03, 0x4a, 0x1c, 0x07, 0x03, 0x21, 0x03, 0x4a, 0x1c, 0x07, 0x03, 0x42,
  2902. + 0x05, 0x04, 0x04, 0x0f, 0x1d, 0x0f, 0x1d, 0x07, 0x1d, 0x05, 0x01, 0x1d, 0x05, 0x01, 0x40, 0x40,
  2903. + 0x42, 0x26, 0x15, 0x0d, 0x42, 0x0f, 0x0d, 0x05, 0x07, 0x3e, 0x27, 0x26, 0x05, 0x21, 0x1b, 0x0f,
  2904. + 0x42, 0x1c, 0x12, 0x04, 0x42, 0x4c, 0x1b, 0x41, 0x0d, 0x07, 0x1d, 0x0a, 0x0f, 0x0f, 0x40, 0x40,
  2905. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2906. + 0x07, 0x5a, 0x06, 0x49, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4c, 0x40, 0x40, 0x40, 0x4c, 0x2c,
  2907. + 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0e, 0x0e, 0x02,
  2908. + 0x49, 0x18, 0x0e, 0x03, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x06, 0x06, 0x0a, 0x0a, 0x0c, 0x04,
  2909. + 0x41, 0x07, 0x04, 0x4b, 0x41, 0x12, 0x02, 0x59, 0x4b, 0x02, 0x1e, 0x1a, 0x14, 0x2c, 0x0a, 0x0a,
  2910. + 0x0c, 0x04, 0x41, 0x07, 0x04, 0x4b, 0x41, 0x12, 0x02, 0x59, 0x4b, 0x02, 0x1e, 0x1a, 0x14, 0x2c,
  2911. + 0x30, 0x56, 0x2e, 0x49, 0x02, 0x02, 0x04, 0x0a, 0x0a, 0x18, 0x0c, 0x1a, 0x0c, 0x22, 0x04, 0x49,
  2912. + 0x1b, 0x07, 0x04, 0x22, 0x04, 0x49, 0x1b, 0x07, 0x04, 0x22, 0x04, 0x49, 0x1b, 0x07, 0x04, 0x41,
  2913. + 0x06, 0x03, 0x03, 0x0f, 0x1e, 0x0f, 0x1e, 0x07, 0x1e, 0x06, 0x02, 0x1e, 0x06, 0x02, 0x40, 0x40,
  2914. + 0x41, 0x28, 0x16, 0x0e, 0x41, 0x0f, 0x0e, 0x06, 0x07, 0x3e, 0x27, 0x28, 0x06, 0x22, 0x1c, 0x0f,
  2915. + 0x41, 0x1b, 0x11, 0x03, 0x41, 0x4e, 0x1c, 0x42, 0x0e, 0x07, 0x1e, 0x09, 0x0f, 0x0f, 0x40, 0x40,
  2916. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2917. + 0x07, 0x5b, 0x06, 0x49, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4c, 0x40, 0x40, 0x40, 0x4c, 0x2e,
  2918. + 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0e, 0x0e, 0x03,
  2919. + 0x49, 0x19, 0x0e, 0x03, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x06, 0x06, 0x0b, 0x0b, 0x0c, 0x04,
  2920. + 0x41, 0x07, 0x04, 0x4b, 0x41, 0x13, 0x03, 0x59, 0x4b, 0x03, 0x1f, 0x1b, 0x14, 0x2e, 0x0b, 0x0b,
  2921. + 0x0c, 0x04, 0x41, 0x07, 0x04, 0x4b, 0x41, 0x13, 0x03, 0x59, 0x4b, 0x03, 0x1f, 0x1b, 0x14, 0x2e,
  2922. + 0x31, 0x56, 0x2e, 0x49, 0x03, 0x03, 0x04, 0x0b, 0x0b, 0x19, 0x0c, 0x1b, 0x0c, 0x23, 0x04, 0x49,
  2923. + 0x1b, 0x07, 0x04, 0x23, 0x04, 0x49, 0x1b, 0x07, 0x04, 0x23, 0x04, 0x49, 0x1b, 0x07, 0x04, 0x41,
  2924. + 0x06, 0x03, 0x03, 0x0f, 0x1e, 0x0f, 0x1e, 0x07, 0x1e, 0x06, 0x03, 0x1e, 0x06, 0x03, 0x40, 0x40,
  2925. + 0x41, 0x29, 0x16, 0x0e, 0x41, 0x0f, 0x0e, 0x06, 0x07, 0x3e, 0x27, 0x29, 0x06, 0x23, 0x1c, 0x0f,
  2926. + 0x41, 0x1b, 0x11, 0x03, 0x41, 0x4f, 0x1c, 0x43, 0x0e, 0x07, 0x1e, 0x09, 0x0f, 0x0f, 0x40, 0x40,
  2927. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2928. + 0x07, 0x5c, 0x06, 0x49, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4d, 0x40, 0x40, 0x40, 0x4d, 0x30,
  2929. + 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0e, 0x0e, 0x04,
  2930. + 0x49, 0x1a, 0x0e, 0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x06, 0x06, 0x0c, 0x0c, 0x0d, 0x05,
  2931. + 0x41, 0x07, 0x05, 0x4a, 0x41, 0x14, 0x04, 0x59, 0x4a, 0x04, 0x21, 0x1c, 0x15, 0x30, 0x0c, 0x0c,
  2932. + 0x0d, 0x05, 0x41, 0x07, 0x05, 0x4a, 0x41, 0x14, 0x04, 0x59, 0x4a, 0x04, 0x21, 0x1c, 0x15, 0x30,
  2933. + 0x32, 0x56, 0x2e, 0x49, 0x04, 0x04, 0x05, 0x0c, 0x0c, 0x1a, 0x0d, 0x1c, 0x0d, 0x24, 0x05, 0x49,
  2934. + 0x1a, 0x07, 0x05, 0x24, 0x05, 0x49, 0x1a, 0x07, 0x05, 0x24, 0x05, 0x49, 0x1a, 0x07, 0x05, 0x41,
  2935. + 0x06, 0x02, 0x02, 0x0f, 0x1e, 0x0f, 0x1e, 0x07, 0x1e, 0x06, 0x04, 0x1e, 0x06, 0x04, 0x40, 0x40,
  2936. + 0x41, 0x2a, 0x16, 0x0e, 0x41, 0x0f, 0x0e, 0x06, 0x07, 0x3e, 0x27, 0x2a, 0x06, 0x24, 0x1d, 0x0f,
  2937. + 0x41, 0x1a, 0x11, 0x02, 0x41, 0x51, 0x1d, 0x44, 0x0e, 0x07, 0x1e, 0x09, 0x0f, 0x0f, 0x40, 0x40,
  2938. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2939. + 0x07, 0x5d, 0x06, 0x49, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4e, 0x40, 0x40, 0x40, 0x4e, 0x31,
  2940. + 0x06, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0e, 0x0e, 0x04,
  2941. + 0x49, 0x1b, 0x0e, 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x06, 0x06, 0x0c, 0x0c, 0x0d, 0x05,
  2942. + 0x41, 0x07, 0x05, 0x4a, 0x41, 0x14, 0x04, 0x59, 0x4a, 0x04, 0x22, 0x1c, 0x15, 0x31, 0x0c, 0x0c,
  2943. + 0x0d, 0x05, 0x41, 0x07, 0x05, 0x4a, 0x41, 0x14, 0x04, 0x59, 0x4a, 0x04, 0x22, 0x1c, 0x15, 0x31,
  2944. + 0x33, 0x57, 0x2e, 0x49, 0x04, 0x04, 0x05, 0x0c, 0x0c, 0x1b, 0x0d, 0x1c, 0x0d, 0x24, 0x05, 0x49,
  2945. + 0x19, 0x07, 0x05, 0x24, 0x05, 0x49, 0x19, 0x07, 0x05, 0x24, 0x05, 0x49, 0x19, 0x07, 0x05, 0x41,
  2946. + 0x06, 0x01, 0x01, 0x0f, 0x1e, 0x0f, 0x1e, 0x07, 0x1e, 0x06, 0x04, 0x1e, 0x06, 0x04, 0x40, 0x40,
  2947. + 0x41, 0x2b, 0x16, 0x0e, 0x41, 0x0f, 0x0e, 0x06, 0x07, 0x3e, 0x27, 0x2b, 0x06, 0x24, 0x1d, 0x0f,
  2948. + 0x41, 0x19, 0x10, 0x01, 0x41, 0x53, 0x1d, 0x45, 0x0e, 0x07, 0x1e, 0x08, 0x0f, 0x0f, 0x40, 0x40,
  2949. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2950. + 0x07, 0x5d, 0x07, 0x48, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4e, 0x40, 0x40, 0x40, 0x4e, 0x33,
  2951. + 0x07, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0f, 0x0f, 0x05,
  2952. + 0x48, 0x1d, 0x0f, 0x01, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x0d, 0x0d, 0x0e, 0x06,
  2953. + 0x40, 0x07, 0x06, 0x49, 0x40, 0x15, 0x05, 0x58, 0x49, 0x05, 0x24, 0x1d, 0x16, 0x33, 0x0d, 0x0d,
  2954. + 0x0e, 0x06, 0x40, 0x07, 0x06, 0x49, 0x40, 0x15, 0x05, 0x58, 0x49, 0x05, 0x24, 0x1d, 0x16, 0x33,
  2955. + 0x35, 0x57, 0x2f, 0x48, 0x05, 0x05, 0x06, 0x0d, 0x0d, 0x1d, 0x0e, 0x1d, 0x0e, 0x25, 0x06, 0x48,
  2956. + 0x19, 0x07, 0x06, 0x25, 0x06, 0x48, 0x19, 0x07, 0x06, 0x25, 0x06, 0x48, 0x19, 0x07, 0x06, 0x40,
  2957. + 0x07, 0x01, 0x01, 0x0f, 0x1f, 0x0f, 0x1f, 0x07, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x40, 0x40,
  2958. + 0x40, 0x2d, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x07, 0x07, 0x3e, 0x27, 0x2d, 0x07, 0x25, 0x1e, 0x0f,
  2959. + 0x40, 0x19, 0x10, 0x01, 0x40, 0x54, 0x1e, 0x45, 0x0f, 0x07, 0x1f, 0x08, 0x0f, 0x0f, 0x40, 0x40,
  2960. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2961. + 0x07, 0x5e, 0x07, 0x48, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x4f, 0x35,
  2962. + 0x07, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0f, 0x0f, 0x06,
  2963. + 0x48, 0x1e, 0x0f, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x0e, 0x0e, 0x0f, 0x07,
  2964. + 0x40, 0x07, 0x07, 0x48, 0x40, 0x16, 0x06, 0x58, 0x48, 0x06, 0x26, 0x1e, 0x17, 0x35, 0x0e, 0x0e,
  2965. + 0x0f, 0x07, 0x40, 0x07, 0x07, 0x48, 0x40, 0x16, 0x06, 0x58, 0x48, 0x06, 0x26, 0x1e, 0x17, 0x35,
  2966. + 0x36, 0x57, 0x2f, 0x48, 0x06, 0x06, 0x07, 0x0e, 0x0e, 0x1e, 0x0f, 0x1e, 0x0f, 0x26, 0x07, 0x48,
  2967. + 0x18, 0x07, 0x07, 0x26, 0x07, 0x48, 0x18, 0x07, 0x07, 0x26, 0x07, 0x48, 0x18, 0x07, 0x07, 0x40,
  2968. + 0x07, 0x00, 0x00, 0x0f, 0x1f, 0x0f, 0x1f, 0x07, 0x1f, 0x07, 0x06, 0x1f, 0x07, 0x06, 0x40, 0x40,
  2969. + 0x40, 0x2e, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x07, 0x07, 0x3e, 0x27, 0x2e, 0x07, 0x26, 0x1f, 0x0f,
  2970. + 0x40, 0x18, 0x10, 0x00, 0x40, 0x56, 0x1f, 0x46, 0x0f, 0x07, 0x1f, 0x08, 0x0f, 0x0f, 0x40, 0x40,
  2971. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2972. + 0x07, 0x5f, 0x07, 0x48, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x4f, 0x37,
  2973. + 0x07, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x0f, 0x0f, 0x07,
  2974. + 0x48, 0x1f, 0x0f, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x07,
  2975. + 0x40, 0x07, 0x07, 0x48, 0x40, 0x17, 0x07, 0x58, 0x48, 0x07, 0x27, 0x1f, 0x17, 0x37, 0x0f, 0x0f,
  2976. + 0x0f, 0x07, 0x40, 0x07, 0x07, 0x48, 0x40, 0x17, 0x07, 0x58, 0x48, 0x07, 0x27, 0x1f, 0x17, 0x37,
  2977. + 0x37, 0x57, 0x2f, 0x48, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x1f, 0x0f, 0x1f, 0x0f, 0x27, 0x07, 0x48,
  2978. + 0x18, 0x07, 0x07, 0x27, 0x07, 0x48, 0x18, 0x07, 0x07, 0x27, 0x07, 0x48, 0x18, 0x07, 0x07, 0x40,
  2979. + 0x07, 0x00, 0x00, 0x0f, 0x1f, 0x0f, 0x1f, 0x07, 0x1f, 0x07, 0x07, 0x1f, 0x07, 0x07, 0x40, 0x40,
  2980. + 0x40, 0x2f, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x07, 0x07, 0x3e, 0x27, 0x2f, 0x07, 0x27, 0x1f, 0x0f,
  2981. + 0x40, 0x18, 0x10, 0x00, 0x40, 0x57, 0x1f, 0x47, 0x0f, 0x07, 0x1f, 0x08, 0x0f, 0x0f, 0x40, 0x40,
  2982. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2983. + 0x07, 0x07, 0x48, 0x48, 0x60, 0x40, 0x27, 0x07, 0x07, 0x27, 0x40, 0x48, 0x40, 0x40, 0x40, 0x0f,
  2984. + 0x48, 0x68, 0x60, 0x40, 0x68, 0x68, 0x68, 0x68, 0x68, 0x07, 0x07, 0x0f, 0x50, 0x40, 0x60, 0x07,
  2985. + 0x68, 0x27, 0x48, 0x17, 0x40, 0x50, 0x1f, 0x40, 0x40, 0x40, 0x48, 0x48, 0x58, 0x60, 0x60, 0x60,
  2986. + 0x68, 0x68, 0x58, 0x68, 0x60, 0x60, 0x60, 0x68, 0x68, 0x68, 0x60, 0x50, 0x48, 0x50, 0x58, 0x60,
  2987. + 0x60, 0x60, 0x68, 0x68, 0x58, 0x68, 0x60, 0x60, 0x60, 0x68, 0x68, 0x68, 0x60, 0x50, 0x48, 0x50,
  2988. + 0x07, 0x50, 0x58, 0x40, 0x48, 0x40, 0x48, 0x07, 0x48, 0x48, 0x48, 0x68, 0x07, 0x1f, 0x17, 0x50,
  2989. + 0x0f, 0x07, 0x40, 0x1f, 0x17, 0x50, 0x0f, 0x07, 0x40, 0x1f, 0x17, 0x50, 0x0f, 0x07, 0x40, 0x40,
  2990. + 0x07, 0x48, 0x48, 0x48, 0x07, 0x48, 0x07, 0x17, 0x17, 0x17, 0x50, 0x17, 0x17, 0x50, 0x40, 0x40,
  2991. + 0x40, 0x2f, 0x2f, 0x17, 0x40, 0x0f, 0x17, 0x1f, 0x1f, 0x1f, 0x27, 0x0f, 0x07, 0x07, 0x0f, 0x07,
  2992. + 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x17, 0x07, 0x1f, 0x48, 0x17, 0x48, 0x40, 0x48, 0x17, 0x40, 0x40,
  2993. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  2994. + 0x07, 0x07, 0x47, 0x47, 0x5f, 0x40, 0x27, 0x07, 0x07, 0x27, 0x40, 0x47, 0x40, 0x40, 0x40, 0x0f,
  2995. + 0x47, 0x66, 0x5f, 0x00, 0x66, 0x66, 0x66, 0x65, 0x65, 0x07, 0x07, 0x0f, 0x4f, 0x00, 0x5e, 0x07,
  2996. + 0x67, 0x27, 0x47, 0x17, 0x40, 0x4f, 0x1f, 0x40, 0x40, 0x40, 0x47, 0x47, 0x57, 0x5f, 0x5e, 0x5f,
  2997. + 0x66, 0x66, 0x57, 0x67, 0x5f, 0x5e, 0x5f, 0x67, 0x67, 0x66, 0x5e, 0x4f, 0x47, 0x4f, 0x57, 0x5f,
  2998. + 0x5e, 0x5f, 0x66, 0x66, 0x57, 0x67, 0x5f, 0x5e, 0x5f, 0x67, 0x67, 0x66, 0x5e, 0x4f, 0x47, 0x4f,
  2999. + 0x08, 0x4f, 0x56, 0x40, 0x48, 0x40, 0x47, 0x07, 0x47, 0x47, 0x47, 0x66, 0x07, 0x1f, 0x17, 0x4f,
  3000. + 0x10, 0x07, 0x40, 0x1f, 0x17, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x17, 0x4f, 0x10, 0x07, 0x40, 0x40,
  3001. + 0x07, 0x47, 0x47, 0x47, 0x08, 0x47, 0x08, 0x17, 0x17, 0x17, 0x4f, 0x17, 0x17, 0x4f, 0x40, 0x40,
  3002. + 0x40, 0x2f, 0x2f, 0x17, 0x40, 0x0f, 0x17, 0x1f, 0x1f, 0x20, 0x27, 0x10, 0x07, 0x08, 0x10, 0x08,
  3003. + 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x17, 0x08, 0x1f, 0x47, 0x17, 0x46, 0x00, 0x47, 0x17, 0x40, 0x40,
  3004. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3005. + 0x07, 0x06, 0x46, 0x47, 0x5e, 0x40, 0x26, 0x06, 0x06, 0x27, 0x40, 0x47, 0x40, 0x40, 0x40, 0x0f,
  3006. + 0x47, 0x64, 0x5e, 0x01, 0x65, 0x64, 0x64, 0x63, 0x63, 0x07, 0x07, 0x0f, 0x4e, 0x00, 0x5d, 0x07,
  3007. + 0x66, 0x27, 0x46, 0x17, 0x40, 0x4f, 0x1e, 0x40, 0x40, 0x40, 0x47, 0x47, 0x56, 0x5e, 0x5d, 0x5e,
  3008. + 0x65, 0x64, 0x56, 0x66, 0x5e, 0x5c, 0x5e, 0x66, 0x66, 0x65, 0x5d, 0x4e, 0x46, 0x4e, 0x56, 0x5e,
  3009. + 0x5d, 0x5e, 0x65, 0x64, 0x56, 0x66, 0x5e, 0x5c, 0x5e, 0x66, 0x66, 0x65, 0x5d, 0x4e, 0x46, 0x4e,
  3010. + 0x09, 0x4f, 0x54, 0x40, 0x48, 0x40, 0x47, 0x07, 0x47, 0x46, 0x46, 0x64, 0x07, 0x1f, 0x16, 0x4f,
  3011. + 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x40,
  3012. + 0x07, 0x46, 0x46, 0x46, 0x09, 0x46, 0x09, 0x17, 0x17, 0x16, 0x4f, 0x17, 0x16, 0x4f, 0x40, 0x40,
  3013. + 0x40, 0x2e, 0x2e, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x1e, 0x20, 0x27, 0x10, 0x07, 0x09, 0x10, 0x08,
  3014. + 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x17, 0x08, 0x1e, 0x46, 0x17, 0x45, 0x01, 0x46, 0x17, 0x40, 0x40,
  3015. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3016. + 0x07, 0x06, 0x45, 0x47, 0x5e, 0x40, 0x25, 0x06, 0x05, 0x27, 0x40, 0x47, 0x40, 0x40, 0x40, 0x0f,
  3017. + 0x47, 0x63, 0x5d, 0x01, 0x64, 0x63, 0x62, 0x60, 0x60, 0x07, 0x07, 0x0f, 0x4e, 0x00, 0x5c, 0x07,
  3018. + 0x65, 0x27, 0x45, 0x17, 0x40, 0x4f, 0x1d, 0x40, 0x40, 0x40, 0x47, 0x47, 0x56, 0x5d, 0x5c, 0x5d,
  3019. + 0x64, 0x63, 0x56, 0x65, 0x5d, 0x5b, 0x5d, 0x65, 0x65, 0x64, 0x5c, 0x4d, 0x46, 0x4d, 0x56, 0x5d,
  3020. + 0x5c, 0x5d, 0x64, 0x63, 0x56, 0x65, 0x5d, 0x5b, 0x5d, 0x65, 0x65, 0x64, 0x5c, 0x4d, 0x46, 0x4d,
  3021. + 0x09, 0x4f, 0x52, 0x40, 0x48, 0x40, 0x47, 0x07, 0x47, 0x46, 0x46, 0x62, 0x07, 0x1f, 0x16, 0x4f,
  3022. + 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x40,
  3023. + 0x07, 0x46, 0x46, 0x45, 0x09, 0x45, 0x09, 0x17, 0x17, 0x16, 0x4f, 0x17, 0x16, 0x4f, 0x40, 0x40,
  3024. + 0x40, 0x2d, 0x2d, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x1e, 0x20, 0x27, 0x10, 0x07, 0x09, 0x10, 0x08,
  3025. + 0x07, 0x3d, 0x1f, 0x17, 0x40, 0x17, 0x08, 0x1e, 0x45, 0x17, 0x44, 0x01, 0x45, 0x17, 0x40, 0x40,
  3026. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3027. + 0x07, 0x05, 0x44, 0x46, 0x5d, 0x40, 0x24, 0x05, 0x04, 0x27, 0x40, 0x46, 0x40, 0x40, 0x40, 0x0f,
  3028. + 0x46, 0x61, 0x5c, 0x02, 0x63, 0x61, 0x60, 0x5e, 0x5e, 0x07, 0x07, 0x0e, 0x4d, 0x01, 0x5b, 0x07,
  3029. + 0x64, 0x27, 0x44, 0x16, 0x40, 0x4e, 0x1c, 0x40, 0x40, 0x40, 0x46, 0x46, 0x55, 0x5c, 0x5b, 0x5c,
  3030. + 0x63, 0x61, 0x55, 0x64, 0x5c, 0x59, 0x5c, 0x64, 0x64, 0x63, 0x5b, 0x4c, 0x45, 0x4c, 0x55, 0x5c,
  3031. + 0x5b, 0x5c, 0x63, 0x61, 0x55, 0x64, 0x5c, 0x59, 0x5c, 0x64, 0x64, 0x63, 0x5b, 0x4c, 0x45, 0x4c,
  3032. + 0x0a, 0x4e, 0x50, 0x40, 0x48, 0x40, 0x46, 0x07, 0x46, 0x45, 0x45, 0x60, 0x07, 0x1e, 0x15, 0x4e,
  3033. + 0x11, 0x07, 0x40, 0x1e, 0x15, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x15, 0x4e, 0x11, 0x07, 0x40, 0x41,
  3034. + 0x07, 0x45, 0x45, 0x44, 0x0a, 0x44, 0x0a, 0x16, 0x17, 0x15, 0x4e, 0x17, 0x15, 0x4e, 0x40, 0x40,
  3035. + 0x40, 0x2c, 0x2c, 0x16, 0x40, 0x0f, 0x16, 0x1d, 0x1d, 0x21, 0x27, 0x11, 0x07, 0x0a, 0x11, 0x09,
  3036. + 0x06, 0x3c, 0x1e, 0x16, 0x40, 0x16, 0x09, 0x1d, 0x44, 0x16, 0x43, 0x02, 0x44, 0x16, 0x40, 0x40,
  3037. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3038. + 0x07, 0x04, 0x43, 0x46, 0x5c, 0x40, 0x23, 0x04, 0x03, 0x27, 0x40, 0x46, 0x40, 0x40, 0x40, 0x0f,
  3039. + 0x46, 0x60, 0x5b, 0x03, 0x61, 0x60, 0x5e, 0x5b, 0x5b, 0x07, 0x07, 0x0e, 0x4c, 0x01, 0x59, 0x07,
  3040. + 0x63, 0x27, 0x43, 0x16, 0x40, 0x4e, 0x1b, 0x40, 0x40, 0x40, 0x46, 0x46, 0x54, 0x5b, 0x59, 0x5b,
  3041. + 0x61, 0x60, 0x54, 0x63, 0x5b, 0x58, 0x5b, 0x63, 0x63, 0x61, 0x59, 0x4b, 0x44, 0x4b, 0x54, 0x5b,
  3042. + 0x59, 0x5b, 0x61, 0x60, 0x54, 0x63, 0x5b, 0x58, 0x5b, 0x63, 0x63, 0x61, 0x59, 0x4b, 0x44, 0x4b,
  3043. + 0x0b, 0x4e, 0x4e, 0x40, 0x48, 0x40, 0x46, 0x07, 0x46, 0x44, 0x44, 0x5e, 0x07, 0x1e, 0x14, 0x4e,
  3044. + 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x41,
  3045. + 0x07, 0x44, 0x44, 0x43, 0x0b, 0x43, 0x0b, 0x16, 0x17, 0x14, 0x4e, 0x17, 0x14, 0x4e, 0x40, 0x40,
  3046. + 0x40, 0x2b, 0x2b, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x1c, 0x21, 0x27, 0x11, 0x07, 0x0b, 0x11, 0x09,
  3047. + 0x06, 0x3b, 0x1e, 0x16, 0x40, 0x16, 0x09, 0x1c, 0x43, 0x16, 0x41, 0x03, 0x43, 0x16, 0x40, 0x40,
  3048. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3049. + 0x07, 0x04, 0x42, 0x46, 0x5c, 0x40, 0x22, 0x04, 0x02, 0x27, 0x40, 0x46, 0x40, 0x40, 0x40, 0x0f,
  3050. + 0x46, 0x5e, 0x5a, 0x03, 0x60, 0x5e, 0x5c, 0x59, 0x59, 0x07, 0x07, 0x0e, 0x4c, 0x01, 0x58, 0x07,
  3051. + 0x62, 0x27, 0x42, 0x16, 0x40, 0x4e, 0x1a, 0x40, 0x40, 0x40, 0x46, 0x46, 0x54, 0x5a, 0x58, 0x5a,
  3052. + 0x60, 0x5e, 0x54, 0x62, 0x5a, 0x56, 0x5a, 0x62, 0x62, 0x60, 0x58, 0x4a, 0x44, 0x4a, 0x54, 0x5a,
  3053. + 0x58, 0x5a, 0x60, 0x5e, 0x54, 0x62, 0x5a, 0x56, 0x5a, 0x62, 0x62, 0x60, 0x58, 0x4a, 0x44, 0x4a,
  3054. + 0x0b, 0x4e, 0x4c, 0x40, 0x48, 0x40, 0x46, 0x07, 0x46, 0x44, 0x44, 0x5c, 0x07, 0x1e, 0x14, 0x4e,
  3055. + 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x41,
  3056. + 0x07, 0x44, 0x44, 0x42, 0x0b, 0x42, 0x0b, 0x16, 0x17, 0x14, 0x4e, 0x17, 0x14, 0x4e, 0x40, 0x40,
  3057. + 0x40, 0x2a, 0x2a, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x1c, 0x21, 0x27, 0x11, 0x07, 0x0b, 0x11, 0x09,
  3058. + 0x06, 0x3a, 0x1e, 0x16, 0x40, 0x16, 0x09, 0x1c, 0x42, 0x16, 0x40, 0x03, 0x42, 0x16, 0x40, 0x40,
  3059. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3060. + 0x07, 0x03, 0x41, 0x45, 0x5b, 0x40, 0x21, 0x03, 0x01, 0x27, 0x40, 0x45, 0x40, 0x40, 0x40, 0x0f,
  3061. + 0x45, 0x5d, 0x59, 0x04, 0x5f, 0x5d, 0x5a, 0x56, 0x56, 0x07, 0x07, 0x0d, 0x4b, 0x02, 0x57, 0x07,
  3062. + 0x61, 0x27, 0x41, 0x15, 0x40, 0x4d, 0x19, 0x40, 0x40, 0x40, 0x45, 0x45, 0x53, 0x59, 0x57, 0x59,
  3063. + 0x5f, 0x5d, 0x53, 0x61, 0x59, 0x55, 0x59, 0x61, 0x61, 0x5f, 0x57, 0x49, 0x43, 0x49, 0x53, 0x59,
  3064. + 0x57, 0x59, 0x5f, 0x5d, 0x53, 0x61, 0x59, 0x55, 0x59, 0x61, 0x61, 0x5f, 0x57, 0x49, 0x43, 0x49,
  3065. + 0x0c, 0x4d, 0x4a, 0x40, 0x48, 0x40, 0x45, 0x07, 0x45, 0x43, 0x43, 0x5a, 0x07, 0x1d, 0x13, 0x4d,
  3066. + 0x12, 0x07, 0x40, 0x1d, 0x13, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x13, 0x4d, 0x12, 0x07, 0x40, 0x42,
  3067. + 0x07, 0x43, 0x43, 0x41, 0x0c, 0x41, 0x0c, 0x15, 0x17, 0x13, 0x4d, 0x17, 0x13, 0x4d, 0x40, 0x40,
  3068. + 0x40, 0x29, 0x29, 0x15, 0x40, 0x0f, 0x15, 0x1b, 0x1b, 0x22, 0x27, 0x12, 0x07, 0x0c, 0x12, 0x0a,
  3069. + 0x05, 0x39, 0x1d, 0x15, 0x40, 0x15, 0x0a, 0x1b, 0x41, 0x15, 0x00, 0x04, 0x41, 0x15, 0x40, 0x40,
  3070. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3071. + 0x07, 0x02, 0x40, 0x45, 0x5b, 0x40, 0x20, 0x02, 0x00, 0x27, 0x40, 0x45, 0x40, 0x40, 0x40, 0x0f,
  3072. + 0x45, 0x5b, 0x58, 0x04, 0x5e, 0x5b, 0x59, 0x54, 0x54, 0x07, 0x07, 0x0d, 0x4b, 0x02, 0x56, 0x07,
  3073. + 0x60, 0x27, 0x40, 0x15, 0x40, 0x4d, 0x18, 0x40, 0x40, 0x40, 0x45, 0x45, 0x53, 0x58, 0x56, 0x58,
  3074. + 0x5e, 0x5b, 0x53, 0x60, 0x58, 0x53, 0x58, 0x60, 0x60, 0x5e, 0x56, 0x48, 0x43, 0x48, 0x53, 0x58,
  3075. + 0x56, 0x58, 0x5e, 0x5b, 0x53, 0x60, 0x58, 0x53, 0x58, 0x60, 0x60, 0x5e, 0x56, 0x48, 0x43, 0x48,
  3076. + 0x0c, 0x4d, 0x49, 0x40, 0x48, 0x40, 0x45, 0x07, 0x45, 0x43, 0x43, 0x59, 0x07, 0x1d, 0x12, 0x4d,
  3077. + 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x42,
  3078. + 0x07, 0x43, 0x43, 0x40, 0x0c, 0x40, 0x0c, 0x15, 0x17, 0x12, 0x4d, 0x17, 0x12, 0x4d, 0x40, 0x40,
  3079. + 0x40, 0x28, 0x28, 0x15, 0x40, 0x0f, 0x15, 0x1a, 0x1a, 0x22, 0x27, 0x12, 0x07, 0x0c, 0x12, 0x0a,
  3080. + 0x05, 0x38, 0x1d, 0x15, 0x40, 0x15, 0x0a, 0x1a, 0x40, 0x15, 0x01, 0x04, 0x40, 0x15, 0x40, 0x40,
  3081. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3082. + 0x07, 0x02, 0x00, 0x45, 0x5a, 0x40, 0x1f, 0x02, 0x40, 0x27, 0x40, 0x45, 0x40, 0x40, 0x40, 0x0f,
  3083. + 0x45, 0x59, 0x57, 0x05, 0x5c, 0x59, 0x57, 0x51, 0x51, 0x07, 0x07, 0x0d, 0x4a, 0x02, 0x54, 0x07,
  3084. + 0x5f, 0x27, 0x00, 0x15, 0x40, 0x4d, 0x17, 0x40, 0x40, 0x40, 0x45, 0x45, 0x52, 0x57, 0x54, 0x57,
  3085. + 0x5c, 0x59, 0x52, 0x5f, 0x57, 0x51, 0x57, 0x5f, 0x5f, 0x5c, 0x54, 0x47, 0x42, 0x47, 0x52, 0x57,
  3086. + 0x54, 0x57, 0x5c, 0x59, 0x52, 0x5f, 0x57, 0x51, 0x57, 0x5f, 0x5f, 0x5c, 0x54, 0x47, 0x42, 0x47,
  3087. + 0x0d, 0x4d, 0x47, 0x40, 0x48, 0x40, 0x45, 0x07, 0x45, 0x42, 0x42, 0x57, 0x07, 0x1d, 0x12, 0x4d,
  3088. + 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x42,
  3089. + 0x07, 0x42, 0x42, 0x00, 0x0d, 0x00, 0x0d, 0x15, 0x17, 0x12, 0x4d, 0x17, 0x12, 0x4d, 0x40, 0x40,
  3090. + 0x40, 0x27, 0x27, 0x15, 0x40, 0x0f, 0x15, 0x1a, 0x1a, 0x22, 0x27, 0x12, 0x07, 0x0d, 0x12, 0x0a,
  3091. + 0x05, 0x37, 0x1d, 0x15, 0x40, 0x15, 0x0a, 0x1a, 0x00, 0x15, 0x03, 0x05, 0x00, 0x15, 0x40, 0x40,
  3092. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3093. + 0x07, 0x01, 0x01, 0x44, 0x59, 0x40, 0x1e, 0x01, 0x41, 0x27, 0x40, 0x44, 0x40, 0x40, 0x40, 0x0f,
  3094. + 0x44, 0x58, 0x56, 0x06, 0x5b, 0x58, 0x55, 0x4f, 0x4f, 0x07, 0x07, 0x0c, 0x49, 0x03, 0x53, 0x07,
  3095. + 0x5e, 0x27, 0x01, 0x14, 0x40, 0x4c, 0x16, 0x40, 0x40, 0x40, 0x44, 0x44, 0x51, 0x56, 0x53, 0x56,
  3096. + 0x5b, 0x58, 0x51, 0x5e, 0x56, 0x50, 0x56, 0x5e, 0x5e, 0x5b, 0x53, 0x46, 0x41, 0x46, 0x51, 0x56,
  3097. + 0x53, 0x56, 0x5b, 0x58, 0x51, 0x5e, 0x56, 0x50, 0x56, 0x5e, 0x5e, 0x5b, 0x53, 0x46, 0x41, 0x46,
  3098. + 0x0e, 0x4c, 0x45, 0x40, 0x48, 0x40, 0x44, 0x07, 0x44, 0x41, 0x41, 0x55, 0x07, 0x1c, 0x11, 0x4c,
  3099. + 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x43,
  3100. + 0x07, 0x41, 0x41, 0x01, 0x0e, 0x01, 0x0e, 0x14, 0x17, 0x11, 0x4c, 0x17, 0x11, 0x4c, 0x40, 0x40,
  3101. + 0x40, 0x26, 0x26, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x19, 0x23, 0x27, 0x13, 0x07, 0x0e, 0x13, 0x0b,
  3102. + 0x04, 0x36, 0x1c, 0x14, 0x40, 0x14, 0x0b, 0x19, 0x01, 0x14, 0x04, 0x06, 0x01, 0x14, 0x40, 0x40,
  3103. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3104. + 0x07, 0x01, 0x02, 0x44, 0x59, 0x40, 0x1d, 0x01, 0x42, 0x27, 0x40, 0x44, 0x40, 0x40, 0x40, 0x0f,
  3105. + 0x44, 0x56, 0x55, 0x06, 0x5a, 0x56, 0x53, 0x4c, 0x4c, 0x07, 0x07, 0x0c, 0x49, 0x03, 0x52, 0x07,
  3106. + 0x5d, 0x27, 0x02, 0x14, 0x40, 0x4c, 0x15, 0x40, 0x40, 0x40, 0x44, 0x44, 0x51, 0x55, 0x52, 0x55,
  3107. + 0x5a, 0x56, 0x51, 0x5d, 0x55, 0x4e, 0x55, 0x5d, 0x5d, 0x5a, 0x52, 0x45, 0x41, 0x45, 0x51, 0x55,
  3108. + 0x52, 0x55, 0x5a, 0x56, 0x51, 0x5d, 0x55, 0x4e, 0x55, 0x5d, 0x5d, 0x5a, 0x52, 0x45, 0x41, 0x45,
  3109. + 0x0e, 0x4c, 0x43, 0x40, 0x48, 0x40, 0x44, 0x07, 0x44, 0x41, 0x41, 0x53, 0x07, 0x1c, 0x11, 0x4c,
  3110. + 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x43,
  3111. + 0x07, 0x41, 0x41, 0x02, 0x0e, 0x02, 0x0e, 0x14, 0x17, 0x11, 0x4c, 0x17, 0x11, 0x4c, 0x40, 0x40,
  3112. + 0x40, 0x25, 0x25, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x19, 0x23, 0x27, 0x13, 0x07, 0x0e, 0x13, 0x0b,
  3113. + 0x04, 0x35, 0x1c, 0x14, 0x40, 0x14, 0x0b, 0x19, 0x02, 0x14, 0x05, 0x06, 0x02, 0x14, 0x40, 0x40,
  3114. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3115. + 0x07, 0x00, 0x03, 0x44, 0x58, 0x40, 0x1c, 0x00, 0x43, 0x27, 0x40, 0x44, 0x40, 0x40, 0x40, 0x0f,
  3116. + 0x44, 0x55, 0x54, 0x07, 0x59, 0x55, 0x51, 0x4a, 0x4a, 0x07, 0x07, 0x0c, 0x48, 0x03, 0x51, 0x07,
  3117. + 0x5c, 0x27, 0x03, 0x14, 0x40, 0x4c, 0x14, 0x40, 0x40, 0x40, 0x44, 0x44, 0x50, 0x54, 0x51, 0x54,
  3118. + 0x59, 0x55, 0x50, 0x5c, 0x54, 0x4d, 0x54, 0x5c, 0x5c, 0x59, 0x51, 0x44, 0x40, 0x44, 0x50, 0x54,
  3119. + 0x51, 0x54, 0x59, 0x55, 0x50, 0x5c, 0x54, 0x4d, 0x54, 0x5c, 0x5c, 0x59, 0x51, 0x44, 0x40, 0x44,
  3120. + 0x0f, 0x4c, 0x41, 0x40, 0x48, 0x40, 0x44, 0x07, 0x44, 0x40, 0x40, 0x51, 0x07, 0x1c, 0x10, 0x4c,
  3121. + 0x13, 0x07, 0x40, 0x1c, 0x10, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x10, 0x4c, 0x13, 0x07, 0x40, 0x43,
  3122. + 0x07, 0x40, 0x40, 0x03, 0x0f, 0x03, 0x0f, 0x14, 0x17, 0x10, 0x4c, 0x17, 0x10, 0x4c, 0x40, 0x40,
  3123. + 0x40, 0x24, 0x24, 0x14, 0x40, 0x0f, 0x14, 0x18, 0x18, 0x23, 0x27, 0x13, 0x07, 0x0f, 0x13, 0x0b,
  3124. + 0x04, 0x34, 0x1c, 0x14, 0x40, 0x14, 0x0b, 0x18, 0x03, 0x14, 0x06, 0x07, 0x03, 0x14, 0x40, 0x40,
  3125. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3126. + 0x07, 0x40, 0x04, 0x43, 0x57, 0x40, 0x1b, 0x40, 0x44, 0x27, 0x40, 0x43, 0x40, 0x40, 0x40, 0x0f,
  3127. + 0x43, 0x53, 0x53, 0x08, 0x57, 0x53, 0x4f, 0x47, 0x47, 0x07, 0x07, 0x0b, 0x47, 0x04, 0x4f, 0x07,
  3128. + 0x5b, 0x27, 0x04, 0x13, 0x40, 0x4b, 0x13, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4f, 0x53, 0x4f, 0x53,
  3129. + 0x57, 0x53, 0x4f, 0x5b, 0x53, 0x4b, 0x53, 0x5b, 0x5b, 0x57, 0x4f, 0x43, 0x00, 0x43, 0x4f, 0x53,
  3130. + 0x4f, 0x53, 0x57, 0x53, 0x4f, 0x5b, 0x53, 0x4b, 0x53, 0x5b, 0x5b, 0x57, 0x4f, 0x43, 0x00, 0x43,
  3131. + 0x10, 0x4b, 0x00, 0x40, 0x48, 0x40, 0x43, 0x07, 0x43, 0x00, 0x00, 0x4f, 0x07, 0x1b, 0x0f, 0x4b,
  3132. + 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x44,
  3133. + 0x07, 0x00, 0x00, 0x04, 0x10, 0x04, 0x10, 0x13, 0x17, 0x0f, 0x4b, 0x17, 0x0f, 0x4b, 0x40, 0x40,
  3134. + 0x40, 0x23, 0x23, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x17, 0x24, 0x27, 0x14, 0x07, 0x10, 0x14, 0x0c,
  3135. + 0x03, 0x33, 0x1b, 0x13, 0x40, 0x13, 0x0c, 0x17, 0x04, 0x13, 0x08, 0x08, 0x04, 0x13, 0x40, 0x40,
  3136. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3137. + 0x07, 0x40, 0x05, 0x43, 0x57, 0x40, 0x1a, 0x40, 0x45, 0x27, 0x40, 0x43, 0x40, 0x40, 0x40, 0x0f,
  3138. + 0x43, 0x52, 0x52, 0x08, 0x56, 0x52, 0x4d, 0x45, 0x45, 0x07, 0x07, 0x0b, 0x47, 0x04, 0x4e, 0x07,
  3139. + 0x5a, 0x27, 0x05, 0x13, 0x40, 0x4b, 0x12, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4f, 0x52, 0x4e, 0x52,
  3140. + 0x56, 0x52, 0x4f, 0x5a, 0x52, 0x4a, 0x52, 0x5a, 0x5a, 0x56, 0x4e, 0x42, 0x00, 0x42, 0x4f, 0x52,
  3141. + 0x4e, 0x52, 0x56, 0x52, 0x4f, 0x5a, 0x52, 0x4a, 0x52, 0x5a, 0x5a, 0x56, 0x4e, 0x42, 0x00, 0x42,
  3142. + 0x10, 0x4b, 0x02, 0x40, 0x48, 0x40, 0x43, 0x07, 0x43, 0x00, 0x00, 0x4d, 0x07, 0x1b, 0x0f, 0x4b,
  3143. + 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x44,
  3144. + 0x07, 0x00, 0x00, 0x05, 0x10, 0x05, 0x10, 0x13, 0x17, 0x0f, 0x4b, 0x17, 0x0f, 0x4b, 0x40, 0x40,
  3145. + 0x40, 0x22, 0x22, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x17, 0x24, 0x27, 0x14, 0x07, 0x10, 0x14, 0x0c,
  3146. + 0x03, 0x32, 0x1b, 0x13, 0x40, 0x13, 0x0c, 0x17, 0x05, 0x13, 0x09, 0x08, 0x05, 0x13, 0x40, 0x40,
  3147. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3148. + 0x07, 0x41, 0x06, 0x43, 0x56, 0x40, 0x19, 0x41, 0x46, 0x27, 0x40, 0x43, 0x40, 0x40, 0x40, 0x0f,
  3149. + 0x43, 0x50, 0x51, 0x09, 0x55, 0x50, 0x4b, 0x42, 0x42, 0x07, 0x07, 0x0b, 0x46, 0x04, 0x4d, 0x07,
  3150. + 0x59, 0x27, 0x06, 0x13, 0x40, 0x4b, 0x11, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4e, 0x51, 0x4d, 0x51,
  3151. + 0x55, 0x50, 0x4e, 0x59, 0x51, 0x48, 0x51, 0x59, 0x59, 0x55, 0x4d, 0x41, 0x01, 0x41, 0x4e, 0x51,
  3152. + 0x4d, 0x51, 0x55, 0x50, 0x4e, 0x59, 0x51, 0x48, 0x51, 0x59, 0x59, 0x55, 0x4d, 0x41, 0x01, 0x41,
  3153. + 0x11, 0x4b, 0x04, 0x40, 0x48, 0x40, 0x43, 0x07, 0x43, 0x01, 0x01, 0x4b, 0x07, 0x1b, 0x0e, 0x4b,
  3154. + 0x14, 0x07, 0x40, 0x1b, 0x0e, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0e, 0x4b, 0x14, 0x07, 0x40, 0x44,
  3155. + 0x07, 0x01, 0x01, 0x06, 0x11, 0x06, 0x11, 0x13, 0x17, 0x0e, 0x4b, 0x17, 0x0e, 0x4b, 0x40, 0x40,
  3156. + 0x40, 0x21, 0x21, 0x13, 0x40, 0x0f, 0x13, 0x16, 0x16, 0x24, 0x27, 0x14, 0x07, 0x11, 0x14, 0x0c,
  3157. + 0x03, 0x31, 0x1b, 0x13, 0x40, 0x13, 0x0c, 0x16, 0x06, 0x13, 0x0a, 0x09, 0x06, 0x13, 0x40, 0x40,
  3158. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3159. + 0x07, 0x42, 0x06, 0x43, 0x56, 0x40, 0x18, 0x42, 0x47, 0x27, 0x40, 0x43, 0x40, 0x40, 0x40, 0x0f,
  3160. + 0x43, 0x4f, 0x51, 0x09, 0x54, 0x4f, 0x4a, 0x40, 0x40, 0x07, 0x07, 0x0a, 0x46, 0x04, 0x4c, 0x07,
  3161. + 0x59, 0x27, 0x06, 0x12, 0x40, 0x4b, 0x10, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4e, 0x51, 0x4c, 0x51,
  3162. + 0x54, 0x4f, 0x4e, 0x59, 0x51, 0x47, 0x51, 0x59, 0x59, 0x54, 0x4c, 0x41, 0x01, 0x41, 0x4e, 0x51,
  3163. + 0x4c, 0x51, 0x54, 0x4f, 0x4e, 0x59, 0x51, 0x47, 0x51, 0x59, 0x59, 0x54, 0x4c, 0x41, 0x01, 0x41,
  3164. + 0x11, 0x4b, 0x05, 0x40, 0x48, 0x40, 0x43, 0x07, 0x43, 0x01, 0x01, 0x4a, 0x07, 0x1a, 0x0d, 0x4b,
  3165. + 0x14, 0x07, 0x40, 0x1a, 0x0d, 0x4b, 0x14, 0x07, 0x40, 0x1a, 0x0d, 0x4b, 0x14, 0x07, 0x40, 0x45,
  3166. + 0x07, 0x01, 0x01, 0x06, 0x11, 0x06, 0x11, 0x12, 0x17, 0x0d, 0x4b, 0x17, 0x0d, 0x4b, 0x40, 0x40,
  3167. + 0x40, 0x20, 0x20, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x15, 0x24, 0x27, 0x14, 0x07, 0x11, 0x14, 0x0c,
  3168. + 0x02, 0x30, 0x1a, 0x12, 0x40, 0x12, 0x0c, 0x15, 0x06, 0x12, 0x0b, 0x09, 0x06, 0x12, 0x40, 0x40,
  3169. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3170. + 0x07, 0x42, 0x07, 0x42, 0x55, 0x40, 0x18, 0x42, 0x47, 0x27, 0x40, 0x42, 0x40, 0x40, 0x40, 0x0f,
  3171. + 0x42, 0x4d, 0x50, 0x0a, 0x52, 0x4d, 0x48, 0x02, 0x02, 0x07, 0x07, 0x0a, 0x45, 0x05, 0x4a, 0x07,
  3172. + 0x58, 0x27, 0x07, 0x12, 0x40, 0x4a, 0x10, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4d, 0x50, 0x4a, 0x50,
  3173. + 0x52, 0x4d, 0x4d, 0x58, 0x50, 0x45, 0x50, 0x58, 0x58, 0x52, 0x4a, 0x40, 0x02, 0x40, 0x4d, 0x50,
  3174. + 0x4a, 0x50, 0x52, 0x4d, 0x4d, 0x58, 0x50, 0x45, 0x50, 0x58, 0x58, 0x52, 0x4a, 0x40, 0x02, 0x40,
  3175. + 0x12, 0x4a, 0x07, 0x40, 0x48, 0x40, 0x42, 0x07, 0x42, 0x02, 0x02, 0x48, 0x07, 0x1a, 0x0d, 0x4a,
  3176. + 0x15, 0x07, 0x40, 0x1a, 0x0d, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0d, 0x4a, 0x15, 0x07, 0x40, 0x45,
  3177. + 0x07, 0x02, 0x02, 0x07, 0x12, 0x07, 0x12, 0x12, 0x17, 0x0d, 0x4a, 0x17, 0x0d, 0x4a, 0x40, 0x40,
  3178. + 0x40, 0x20, 0x20, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x15, 0x25, 0x27, 0x15, 0x07, 0x12, 0x15, 0x0d,
  3179. + 0x02, 0x30, 0x1a, 0x12, 0x40, 0x12, 0x0d, 0x15, 0x07, 0x12, 0x0d, 0x0a, 0x07, 0x12, 0x40, 0x40,
  3180. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3181. + 0x07, 0x43, 0x08, 0x42, 0x54, 0x40, 0x17, 0x43, 0x48, 0x27, 0x40, 0x42, 0x40, 0x40, 0x40, 0x0f,
  3182. + 0x42, 0x4b, 0x4f, 0x0b, 0x51, 0x4b, 0x46, 0x04, 0x04, 0x07, 0x07, 0x0a, 0x44, 0x05, 0x49, 0x07,
  3183. + 0x57, 0x27, 0x08, 0x12, 0x40, 0x4a, 0x0f, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4c, 0x4f, 0x49, 0x4f,
  3184. + 0x51, 0x4b, 0x4c, 0x57, 0x4f, 0x43, 0x4f, 0x57, 0x57, 0x51, 0x49, 0x00, 0x03, 0x00, 0x4c, 0x4f,
  3185. + 0x49, 0x4f, 0x51, 0x4b, 0x4c, 0x57, 0x4f, 0x43, 0x4f, 0x57, 0x57, 0x51, 0x49, 0x00, 0x03, 0x00,
  3186. + 0x13, 0x4a, 0x09, 0x40, 0x48, 0x40, 0x42, 0x07, 0x42, 0x03, 0x03, 0x46, 0x07, 0x1a, 0x0c, 0x4a,
  3187. + 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x45,
  3188. + 0x07, 0x03, 0x03, 0x08, 0x13, 0x08, 0x13, 0x12, 0x17, 0x0c, 0x4a, 0x17, 0x0c, 0x4a, 0x40, 0x40,
  3189. + 0x40, 0x1f, 0x1f, 0x12, 0x40, 0x0f, 0x12, 0x14, 0x14, 0x25, 0x27, 0x15, 0x07, 0x13, 0x15, 0x0d,
  3190. + 0x02, 0x2f, 0x1a, 0x12, 0x40, 0x12, 0x0d, 0x14, 0x08, 0x12, 0x0e, 0x0b, 0x08, 0x12, 0x40, 0x40,
  3191. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3192. + 0x07, 0x43, 0x09, 0x42, 0x54, 0x40, 0x16, 0x43, 0x49, 0x27, 0x40, 0x42, 0x40, 0x40, 0x40, 0x0f,
  3193. + 0x42, 0x4a, 0x4e, 0x0b, 0x50, 0x4a, 0x44, 0x07, 0x07, 0x07, 0x07, 0x0a, 0x44, 0x05, 0x48, 0x07,
  3194. + 0x56, 0x27, 0x09, 0x12, 0x40, 0x4a, 0x0e, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4c, 0x4e, 0x48, 0x4e,
  3195. + 0x50, 0x4a, 0x4c, 0x56, 0x4e, 0x42, 0x4e, 0x56, 0x56, 0x50, 0x48, 0x01, 0x03, 0x01, 0x4c, 0x4e,
  3196. + 0x48, 0x4e, 0x50, 0x4a, 0x4c, 0x56, 0x4e, 0x42, 0x4e, 0x56, 0x56, 0x50, 0x48, 0x01, 0x03, 0x01,
  3197. + 0x13, 0x4a, 0x0b, 0x40, 0x48, 0x40, 0x42, 0x07, 0x42, 0x03, 0x03, 0x44, 0x07, 0x1a, 0x0c, 0x4a,
  3198. + 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x45,
  3199. + 0x07, 0x03, 0x03, 0x09, 0x13, 0x09, 0x13, 0x12, 0x17, 0x0c, 0x4a, 0x17, 0x0c, 0x4a, 0x40, 0x40,
  3200. + 0x40, 0x1e, 0x1e, 0x12, 0x40, 0x0f, 0x12, 0x14, 0x14, 0x25, 0x27, 0x15, 0x07, 0x13, 0x15, 0x0d,
  3201. + 0x02, 0x2e, 0x1a, 0x12, 0x40, 0x12, 0x0d, 0x14, 0x09, 0x12, 0x0f, 0x0b, 0x09, 0x12, 0x40, 0x40,
  3202. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3203. + 0x07, 0x44, 0x0a, 0x41, 0x53, 0x40, 0x15, 0x44, 0x4a, 0x27, 0x40, 0x41, 0x40, 0x40, 0x40, 0x0f,
  3204. + 0x41, 0x48, 0x4d, 0x0c, 0x4f, 0x48, 0x42, 0x09, 0x09, 0x07, 0x07, 0x09, 0x43, 0x06, 0x47, 0x07,
  3205. + 0x55, 0x27, 0x0a, 0x11, 0x40, 0x49, 0x0d, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4b, 0x4d, 0x47, 0x4d,
  3206. + 0x4f, 0x48, 0x4b, 0x55, 0x4d, 0x40, 0x4d, 0x55, 0x55, 0x4f, 0x47, 0x02, 0x04, 0x02, 0x4b, 0x4d,
  3207. + 0x47, 0x4d, 0x4f, 0x48, 0x4b, 0x55, 0x4d, 0x40, 0x4d, 0x55, 0x55, 0x4f, 0x47, 0x02, 0x04, 0x02,
  3208. + 0x14, 0x49, 0x0d, 0x40, 0x48, 0x40, 0x41, 0x07, 0x41, 0x04, 0x04, 0x42, 0x07, 0x19, 0x0b, 0x49,
  3209. + 0x16, 0x07, 0x40, 0x19, 0x0b, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0b, 0x49, 0x16, 0x07, 0x40, 0x46,
  3210. + 0x07, 0x04, 0x04, 0x0a, 0x14, 0x0a, 0x14, 0x11, 0x17, 0x0b, 0x49, 0x17, 0x0b, 0x49, 0x40, 0x40,
  3211. + 0x40, 0x1d, 0x1d, 0x11, 0x40, 0x0f, 0x11, 0x13, 0x13, 0x26, 0x27, 0x16, 0x07, 0x14, 0x16, 0x0e,
  3212. + 0x01, 0x2d, 0x19, 0x11, 0x40, 0x11, 0x0e, 0x13, 0x0a, 0x11, 0x10, 0x0c, 0x0a, 0x11, 0x40, 0x40,
  3213. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3214. + 0x07, 0x45, 0x0b, 0x41, 0x52, 0x40, 0x14, 0x45, 0x4b, 0x27, 0x40, 0x41, 0x40, 0x40, 0x40, 0x0f,
  3215. + 0x41, 0x47, 0x4c, 0x0d, 0x4d, 0x47, 0x40, 0x0c, 0x0c, 0x07, 0x07, 0x09, 0x42, 0x06, 0x45, 0x07,
  3216. + 0x54, 0x27, 0x0b, 0x11, 0x40, 0x49, 0x0c, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4a, 0x4c, 0x45, 0x4c,
  3217. + 0x4d, 0x47, 0x4a, 0x54, 0x4c, 0x00, 0x4c, 0x54, 0x54, 0x4d, 0x45, 0x03, 0x05, 0x03, 0x4a, 0x4c,
  3218. + 0x45, 0x4c, 0x4d, 0x47, 0x4a, 0x54, 0x4c, 0x00, 0x4c, 0x54, 0x54, 0x4d, 0x45, 0x03, 0x05, 0x03,
  3219. + 0x15, 0x49, 0x0f, 0x40, 0x48, 0x40, 0x41, 0x07, 0x41, 0x05, 0x05, 0x40, 0x07, 0x19, 0x0a, 0x49,
  3220. + 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x46,
  3221. + 0x07, 0x05, 0x05, 0x0b, 0x15, 0x0b, 0x15, 0x11, 0x17, 0x0a, 0x49, 0x17, 0x0a, 0x49, 0x40, 0x40,
  3222. + 0x40, 0x1c, 0x1c, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x12, 0x26, 0x27, 0x16, 0x07, 0x15, 0x16, 0x0e,
  3223. + 0x01, 0x2c, 0x19, 0x11, 0x40, 0x11, 0x0e, 0x12, 0x0b, 0x11, 0x12, 0x0d, 0x0b, 0x11, 0x40, 0x40,
  3224. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3225. + 0x07, 0x45, 0x0c, 0x41, 0x52, 0x40, 0x13, 0x45, 0x4c, 0x27, 0x40, 0x41, 0x40, 0x40, 0x40, 0x0f,
  3226. + 0x41, 0x45, 0x4b, 0x0d, 0x4c, 0x45, 0x01, 0x0e, 0x0e, 0x07, 0x07, 0x09, 0x42, 0x06, 0x44, 0x07,
  3227. + 0x53, 0x27, 0x0c, 0x11, 0x40, 0x49, 0x0b, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4a, 0x4b, 0x44, 0x4b,
  3228. + 0x4c, 0x45, 0x4a, 0x53, 0x4b, 0x02, 0x4b, 0x53, 0x53, 0x4c, 0x44, 0x04, 0x05, 0x04, 0x4a, 0x4b,
  3229. + 0x44, 0x4b, 0x4c, 0x45, 0x4a, 0x53, 0x4b, 0x02, 0x4b, 0x53, 0x53, 0x4c, 0x44, 0x04, 0x05, 0x04,
  3230. + 0x15, 0x49, 0x11, 0x40, 0x48, 0x40, 0x41, 0x07, 0x41, 0x05, 0x05, 0x01, 0x07, 0x19, 0x0a, 0x49,
  3231. + 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x46,
  3232. + 0x07, 0x05, 0x05, 0x0c, 0x15, 0x0c, 0x15, 0x11, 0x17, 0x0a, 0x49, 0x17, 0x0a, 0x49, 0x40, 0x40,
  3233. + 0x40, 0x1b, 0x1b, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x12, 0x26, 0x27, 0x16, 0x07, 0x15, 0x16, 0x0e,
  3234. + 0x01, 0x2b, 0x19, 0x11, 0x40, 0x11, 0x0e, 0x12, 0x0c, 0x11, 0x13, 0x0d, 0x0c, 0x11, 0x40, 0x40,
  3235. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3236. + 0x07, 0x46, 0x0d, 0x40, 0x51, 0x40, 0x12, 0x46, 0x4d, 0x27, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0f,
  3237. + 0x40, 0x44, 0x4a, 0x0e, 0x4b, 0x44, 0x03, 0x11, 0x11, 0x07, 0x07, 0x08, 0x41, 0x07, 0x43, 0x07,
  3238. + 0x52, 0x27, 0x0d, 0x10, 0x40, 0x48, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x4a, 0x43, 0x4a,
  3239. + 0x4b, 0x44, 0x49, 0x52, 0x4a, 0x03, 0x4a, 0x52, 0x52, 0x4b, 0x43, 0x05, 0x06, 0x05, 0x49, 0x4a,
  3240. + 0x43, 0x4a, 0x4b, 0x44, 0x49, 0x52, 0x4a, 0x03, 0x4a, 0x52, 0x52, 0x4b, 0x43, 0x05, 0x06, 0x05,
  3241. + 0x16, 0x48, 0x13, 0x40, 0x48, 0x40, 0x40, 0x07, 0x40, 0x06, 0x06, 0x03, 0x07, 0x18, 0x09, 0x48,
  3242. + 0x17, 0x07, 0x40, 0x18, 0x09, 0x48, 0x17, 0x07, 0x40, 0x18, 0x09, 0x48, 0x17, 0x07, 0x40, 0x47,
  3243. + 0x07, 0x06, 0x06, 0x0d, 0x16, 0x0d, 0x16, 0x10, 0x17, 0x09, 0x48, 0x17, 0x09, 0x48, 0x40, 0x40,
  3244. + 0x40, 0x1a, 0x1a, 0x10, 0x40, 0x0f, 0x10, 0x11, 0x11, 0x27, 0x27, 0x17, 0x07, 0x16, 0x17, 0x0f,
  3245. + 0x00, 0x2a, 0x18, 0x10, 0x40, 0x10, 0x0f, 0x11, 0x0d, 0x10, 0x14, 0x0e, 0x0d, 0x10, 0x40, 0x40,
  3246. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3247. + 0x07, 0x47, 0x0e, 0x40, 0x51, 0x40, 0x11, 0x47, 0x4e, 0x27, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0f,
  3248. + 0x40, 0x42, 0x49, 0x0e, 0x4a, 0x42, 0x04, 0x13, 0x13, 0x07, 0x07, 0x08, 0x41, 0x07, 0x42, 0x07,
  3249. + 0x51, 0x27, 0x0e, 0x10, 0x40, 0x48, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x49, 0x42, 0x49,
  3250. + 0x4a, 0x42, 0x49, 0x51, 0x49, 0x05, 0x49, 0x51, 0x51, 0x4a, 0x42, 0x06, 0x06, 0x06, 0x49, 0x49,
  3251. + 0x42, 0x49, 0x4a, 0x42, 0x49, 0x51, 0x49, 0x05, 0x49, 0x51, 0x51, 0x4a, 0x42, 0x06, 0x06, 0x06,
  3252. + 0x16, 0x48, 0x14, 0x40, 0x48, 0x40, 0x40, 0x07, 0x40, 0x06, 0x06, 0x04, 0x07, 0x18, 0x08, 0x48,
  3253. + 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x47,
  3254. + 0x07, 0x06, 0x06, 0x0e, 0x16, 0x0e, 0x16, 0x10, 0x17, 0x08, 0x48, 0x17, 0x08, 0x48, 0x40, 0x40,
  3255. + 0x40, 0x19, 0x19, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x10, 0x27, 0x27, 0x17, 0x07, 0x16, 0x17, 0x0f,
  3256. + 0x00, 0x29, 0x18, 0x10, 0x40, 0x10, 0x0f, 0x10, 0x0e, 0x10, 0x15, 0x0e, 0x0e, 0x10, 0x40, 0x40,
  3257. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3258. + 0x07, 0x47, 0x0f, 0x40, 0x50, 0x40, 0x10, 0x47, 0x4f, 0x27, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0f,
  3259. + 0x40, 0x40, 0x48, 0x0f, 0x48, 0x40, 0x06, 0x16, 0x16, 0x07, 0x07, 0x08, 0x40, 0x07, 0x40, 0x07,
  3260. + 0x50, 0x27, 0x0f, 0x10, 0x40, 0x48, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, 0x48, 0x40, 0x48,
  3261. + 0x48, 0x40, 0x48, 0x50, 0x48, 0x07, 0x48, 0x50, 0x50, 0x48, 0x40, 0x07, 0x07, 0x07, 0x48, 0x48,
  3262. + 0x40, 0x48, 0x48, 0x40, 0x48, 0x50, 0x48, 0x07, 0x48, 0x50, 0x50, 0x48, 0x40, 0x07, 0x07, 0x07,
  3263. + 0x17, 0x48, 0x16, 0x40, 0x48, 0x40, 0x40, 0x07, 0x40, 0x07, 0x07, 0x06, 0x07, 0x18, 0x08, 0x48,
  3264. + 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x47,
  3265. + 0x07, 0x07, 0x07, 0x0f, 0x17, 0x0f, 0x17, 0x10, 0x17, 0x08, 0x48, 0x17, 0x08, 0x48, 0x40, 0x40,
  3266. + 0x40, 0x18, 0x18, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x10, 0x27, 0x27, 0x17, 0x07, 0x17, 0x17, 0x0f,
  3267. + 0x00, 0x28, 0x18, 0x10, 0x40, 0x10, 0x0f, 0x10, 0x0f, 0x10, 0x17, 0x0f, 0x0f, 0x10, 0x40, 0x40,
  3268. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3269. + 0x07, 0x48, 0x10, 0x00, 0x4f, 0x40, 0x0f, 0x48, 0x50, 0x27, 0x40, 0x00, 0x40, 0x40, 0x40, 0x0f,
  3270. + 0x00, 0x00, 0x47, 0x10, 0x47, 0x00, 0x08, 0x18, 0x18, 0x07, 0x07, 0x07, 0x00, 0x08, 0x00, 0x07,
  3271. + 0x4f, 0x27, 0x10, 0x0f, 0x40, 0x47, 0x07, 0x40, 0x40, 0x40, 0x00, 0x00, 0x47, 0x47, 0x00, 0x47,
  3272. + 0x47, 0x00, 0x47, 0x4f, 0x47, 0x08, 0x47, 0x4f, 0x4f, 0x47, 0x00, 0x08, 0x08, 0x08, 0x47, 0x47,
  3273. + 0x00, 0x47, 0x47, 0x00, 0x47, 0x4f, 0x47, 0x08, 0x47, 0x4f, 0x4f, 0x47, 0x00, 0x08, 0x08, 0x08,
  3274. + 0x18, 0x47, 0x18, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00, 0x08, 0x08, 0x08, 0x07, 0x17, 0x07, 0x47,
  3275. + 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x48,
  3276. + 0x07, 0x08, 0x08, 0x10, 0x18, 0x10, 0x18, 0x0f, 0x17, 0x07, 0x47, 0x17, 0x07, 0x47, 0x40, 0x40,
  3277. + 0x40, 0x17, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x0f, 0x0f, 0x28, 0x27, 0x18, 0x07, 0x18, 0x18, 0x10,
  3278. + 0x40, 0x27, 0x17, 0x0f, 0x40, 0x0f, 0x10, 0x0f, 0x10, 0x0f, 0x18, 0x10, 0x10, 0x0f, 0x40, 0x40,
  3279. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3280. + 0x07, 0x48, 0x11, 0x00, 0x4f, 0x40, 0x0e, 0x48, 0x51, 0x27, 0x40, 0x00, 0x40, 0x40, 0x40, 0x0f,
  3281. + 0x00, 0x02, 0x46, 0x10, 0x46, 0x02, 0x0a, 0x1b, 0x1b, 0x07, 0x07, 0x07, 0x00, 0x08, 0x01, 0x07,
  3282. + 0x4e, 0x27, 0x11, 0x0f, 0x40, 0x47, 0x06, 0x40, 0x40, 0x40, 0x00, 0x00, 0x47, 0x46, 0x01, 0x46,
  3283. + 0x46, 0x02, 0x47, 0x4e, 0x46, 0x0a, 0x46, 0x4e, 0x4e, 0x46, 0x01, 0x09, 0x08, 0x09, 0x47, 0x46,
  3284. + 0x01, 0x46, 0x46, 0x02, 0x47, 0x4e, 0x46, 0x0a, 0x46, 0x4e, 0x4e, 0x46, 0x01, 0x09, 0x08, 0x09,
  3285. + 0x18, 0x47, 0x1a, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00, 0x08, 0x08, 0x0a, 0x07, 0x17, 0x07, 0x47,
  3286. + 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x48,
  3287. + 0x07, 0x08, 0x08, 0x11, 0x18, 0x11, 0x18, 0x0f, 0x17, 0x07, 0x47, 0x17, 0x07, 0x47, 0x40, 0x40,
  3288. + 0x40, 0x16, 0x16, 0x0f, 0x40, 0x0f, 0x0f, 0x0f, 0x0f, 0x28, 0x27, 0x18, 0x07, 0x18, 0x18, 0x10,
  3289. + 0x40, 0x26, 0x17, 0x0f, 0x40, 0x0f, 0x10, 0x0f, 0x11, 0x0f, 0x19, 0x10, 0x11, 0x0f, 0x40, 0x40,
  3290. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3291. + 0x07, 0x49, 0x12, 0x00, 0x4e, 0x40, 0x0d, 0x49, 0x52, 0x27, 0x40, 0x00, 0x40, 0x40, 0x40, 0x0f,
  3292. + 0x00, 0x03, 0x45, 0x11, 0x45, 0x03, 0x0c, 0x1d, 0x1d, 0x07, 0x07, 0x07, 0x01, 0x08, 0x02, 0x07,
  3293. + 0x4d, 0x27, 0x12, 0x0f, 0x40, 0x47, 0x05, 0x40, 0x40, 0x40, 0x00, 0x00, 0x46, 0x45, 0x02, 0x45,
  3294. + 0x45, 0x03, 0x46, 0x4d, 0x45, 0x0b, 0x45, 0x4d, 0x4d, 0x45, 0x02, 0x0a, 0x09, 0x0a, 0x46, 0x45,
  3295. + 0x02, 0x45, 0x45, 0x03, 0x46, 0x4d, 0x45, 0x0b, 0x45, 0x4d, 0x4d, 0x45, 0x02, 0x0a, 0x09, 0x0a,
  3296. + 0x19, 0x47, 0x1c, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00, 0x09, 0x09, 0x0c, 0x07, 0x17, 0x06, 0x47,
  3297. + 0x18, 0x07, 0x40, 0x17, 0x06, 0x47, 0x18, 0x07, 0x40, 0x17, 0x06, 0x47, 0x18, 0x07, 0x40, 0x48,
  3298. + 0x07, 0x09, 0x09, 0x12, 0x19, 0x12, 0x19, 0x0f, 0x17, 0x06, 0x47, 0x17, 0x06, 0x47, 0x40, 0x40,
  3299. + 0x40, 0x15, 0x15, 0x0f, 0x40, 0x0f, 0x0f, 0x0e, 0x0e, 0x28, 0x27, 0x18, 0x07, 0x19, 0x18, 0x10,
  3300. + 0x40, 0x25, 0x17, 0x0f, 0x40, 0x0f, 0x10, 0x0e, 0x12, 0x0f, 0x1a, 0x11, 0x12, 0x0f, 0x40, 0x40,
  3301. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3302. + 0x07, 0x4a, 0x13, 0x01, 0x4d, 0x40, 0x0c, 0x4a, 0x53, 0x27, 0x40, 0x01, 0x40, 0x40, 0x40, 0x0f,
  3303. + 0x01, 0x05, 0x44, 0x12, 0x43, 0x05, 0x0e, 0x20, 0x20, 0x07, 0x07, 0x06, 0x02, 0x09, 0x04, 0x07,
  3304. + 0x4c, 0x27, 0x13, 0x0e, 0x40, 0x46, 0x04, 0x40, 0x40, 0x40, 0x01, 0x01, 0x45, 0x44, 0x04, 0x44,
  3305. + 0x43, 0x05, 0x45, 0x4c, 0x44, 0x0d, 0x44, 0x4c, 0x4c, 0x43, 0x04, 0x0b, 0x0a, 0x0b, 0x45, 0x44,
  3306. + 0x04, 0x44, 0x43, 0x05, 0x45, 0x4c, 0x44, 0x0d, 0x44, 0x4c, 0x4c, 0x43, 0x04, 0x0b, 0x0a, 0x0b,
  3307. + 0x1a, 0x46, 0x1e, 0x40, 0x48, 0x40, 0x01, 0x07, 0x01, 0x0a, 0x0a, 0x0e, 0x07, 0x16, 0x05, 0x46,
  3308. + 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x49,
  3309. + 0x07, 0x0a, 0x0a, 0x13, 0x1a, 0x13, 0x1a, 0x0e, 0x17, 0x05, 0x46, 0x17, 0x05, 0x46, 0x40, 0x40,
  3310. + 0x40, 0x14, 0x14, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x0d, 0x29, 0x27, 0x19, 0x07, 0x1a, 0x19, 0x11,
  3311. + 0x41, 0x24, 0x16, 0x0e, 0x40, 0x0e, 0x11, 0x0d, 0x13, 0x0e, 0x1c, 0x12, 0x13, 0x0e, 0x40, 0x40,
  3312. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3313. + 0x07, 0x4a, 0x14, 0x01, 0x4d, 0x40, 0x0b, 0x4a, 0x54, 0x27, 0x40, 0x01, 0x40, 0x40, 0x40, 0x0f,
  3314. + 0x01, 0x06, 0x43, 0x12, 0x42, 0x06, 0x10, 0x22, 0x22, 0x07, 0x07, 0x06, 0x02, 0x09, 0x05, 0x07,
  3315. + 0x4b, 0x27, 0x14, 0x0e, 0x40, 0x46, 0x03, 0x40, 0x40, 0x40, 0x01, 0x01, 0x45, 0x43, 0x05, 0x43,
  3316. + 0x42, 0x06, 0x45, 0x4b, 0x43, 0x0e, 0x43, 0x4b, 0x4b, 0x42, 0x05, 0x0c, 0x0a, 0x0c, 0x45, 0x43,
  3317. + 0x05, 0x43, 0x42, 0x06, 0x45, 0x4b, 0x43, 0x0e, 0x43, 0x4b, 0x4b, 0x42, 0x05, 0x0c, 0x0a, 0x0c,
  3318. + 0x1a, 0x46, 0x20, 0x40, 0x48, 0x40, 0x01, 0x07, 0x01, 0x0a, 0x0a, 0x10, 0x07, 0x16, 0x05, 0x46,
  3319. + 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x49,
  3320. + 0x07, 0x0a, 0x0a, 0x14, 0x1a, 0x14, 0x1a, 0x0e, 0x17, 0x05, 0x46, 0x17, 0x05, 0x46, 0x40, 0x40,
  3321. + 0x40, 0x13, 0x13, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x0d, 0x29, 0x27, 0x19, 0x07, 0x1a, 0x19, 0x11,
  3322. + 0x41, 0x23, 0x16, 0x0e, 0x40, 0x0e, 0x11, 0x0d, 0x14, 0x0e, 0x1d, 0x12, 0x14, 0x0e, 0x40, 0x40,
  3323. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3324. + 0x07, 0x4b, 0x15, 0x01, 0x4c, 0x40, 0x0a, 0x4b, 0x55, 0x27, 0x40, 0x01, 0x40, 0x40, 0x40, 0x0f,
  3325. + 0x01, 0x08, 0x42, 0x13, 0x41, 0x08, 0x12, 0x25, 0x25, 0x07, 0x07, 0x06, 0x03, 0x09, 0x06, 0x07,
  3326. + 0x4a, 0x27, 0x15, 0x0e, 0x40, 0x46, 0x02, 0x40, 0x40, 0x40, 0x01, 0x01, 0x44, 0x42, 0x06, 0x42,
  3327. + 0x41, 0x08, 0x44, 0x4a, 0x42, 0x10, 0x42, 0x4a, 0x4a, 0x41, 0x06, 0x0d, 0x0b, 0x0d, 0x44, 0x42,
  3328. + 0x06, 0x42, 0x41, 0x08, 0x44, 0x4a, 0x42, 0x10, 0x42, 0x4a, 0x4a, 0x41, 0x06, 0x0d, 0x0b, 0x0d,
  3329. + 0x1b, 0x46, 0x22, 0x40, 0x48, 0x40, 0x01, 0x07, 0x01, 0x0b, 0x0b, 0x12, 0x07, 0x16, 0x04, 0x46,
  3330. + 0x19, 0x07, 0x40, 0x16, 0x04, 0x46, 0x19, 0x07, 0x40, 0x16, 0x04, 0x46, 0x19, 0x07, 0x40, 0x49,
  3331. + 0x07, 0x0b, 0x0b, 0x15, 0x1b, 0x15, 0x1b, 0x0e, 0x17, 0x04, 0x46, 0x17, 0x04, 0x46, 0x40, 0x40,
  3332. + 0x40, 0x12, 0x12, 0x0e, 0x40, 0x0f, 0x0e, 0x0c, 0x0c, 0x29, 0x27, 0x19, 0x07, 0x1b, 0x19, 0x11,
  3333. + 0x41, 0x22, 0x16, 0x0e, 0x40, 0x0e, 0x11, 0x0c, 0x15, 0x0e, 0x1e, 0x13, 0x15, 0x0e, 0x40, 0x40,
  3334. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3335. + 0x07, 0x4c, 0x15, 0x01, 0x4c, 0x40, 0x09, 0x4c, 0x56, 0x27, 0x40, 0x01, 0x40, 0x40, 0x40, 0x0f,
  3336. + 0x01, 0x09, 0x42, 0x13, 0x40, 0x09, 0x13, 0x27, 0x27, 0x07, 0x07, 0x05, 0x03, 0x09, 0x07, 0x07,
  3337. + 0x4a, 0x27, 0x15, 0x0d, 0x40, 0x46, 0x01, 0x40, 0x40, 0x40, 0x01, 0x01, 0x44, 0x42, 0x07, 0x42,
  3338. + 0x40, 0x09, 0x44, 0x4a, 0x42, 0x11, 0x42, 0x4a, 0x4a, 0x40, 0x07, 0x0d, 0x0b, 0x0d, 0x44, 0x42,
  3339. + 0x07, 0x42, 0x40, 0x09, 0x44, 0x4a, 0x42, 0x11, 0x42, 0x4a, 0x4a, 0x40, 0x07, 0x0d, 0x0b, 0x0d,
  3340. + 0x1b, 0x46, 0x23, 0x40, 0x48, 0x40, 0x01, 0x07, 0x01, 0x0b, 0x0b, 0x13, 0x07, 0x15, 0x03, 0x46,
  3341. + 0x19, 0x07, 0x40, 0x15, 0x03, 0x46, 0x19, 0x07, 0x40, 0x15, 0x03, 0x46, 0x19, 0x07, 0x40, 0x4a,
  3342. + 0x07, 0x0b, 0x0b, 0x15, 0x1b, 0x15, 0x1b, 0x0d, 0x17, 0x03, 0x46, 0x17, 0x03, 0x46, 0x40, 0x40,
  3343. + 0x40, 0x11, 0x11, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x0b, 0x29, 0x27, 0x19, 0x07, 0x1b, 0x19, 0x11,
  3344. + 0x42, 0x21, 0x15, 0x0d, 0x40, 0x0d, 0x11, 0x0b, 0x15, 0x0d, 0x1f, 0x13, 0x15, 0x0d, 0x40, 0x40,
  3345. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3346. + 0x07, 0x4c, 0x16, 0x02, 0x4b, 0x40, 0x09, 0x4c, 0x56, 0x27, 0x40, 0x02, 0x40, 0x40, 0x40, 0x0f,
  3347. + 0x02, 0x0b, 0x41, 0x14, 0x01, 0x0b, 0x15, 0x2a, 0x2a, 0x07, 0x07, 0x05, 0x04, 0x0a, 0x09, 0x07,
  3348. + 0x49, 0x27, 0x16, 0x0d, 0x40, 0x45, 0x01, 0x40, 0x40, 0x40, 0x02, 0x02, 0x43, 0x41, 0x09, 0x41,
  3349. + 0x01, 0x0b, 0x43, 0x49, 0x41, 0x13, 0x41, 0x49, 0x49, 0x01, 0x09, 0x0e, 0x0c, 0x0e, 0x43, 0x41,
  3350. + 0x09, 0x41, 0x01, 0x0b, 0x43, 0x49, 0x41, 0x13, 0x41, 0x49, 0x49, 0x01, 0x09, 0x0e, 0x0c, 0x0e,
  3351. + 0x1c, 0x45, 0x25, 0x40, 0x48, 0x40, 0x02, 0x07, 0x02, 0x0c, 0x0c, 0x15, 0x07, 0x15, 0x03, 0x45,
  3352. + 0x1a, 0x07, 0x40, 0x15, 0x03, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x03, 0x45, 0x1a, 0x07, 0x40, 0x4a,
  3353. + 0x07, 0x0c, 0x0c, 0x16, 0x1c, 0x16, 0x1c, 0x0d, 0x17, 0x03, 0x45, 0x17, 0x03, 0x45, 0x40, 0x40,
  3354. + 0x40, 0x11, 0x11, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x0b, 0x2a, 0x27, 0x1a, 0x07, 0x1c, 0x1a, 0x12,
  3355. + 0x42, 0x21, 0x15, 0x0d, 0x40, 0x0d, 0x12, 0x0b, 0x16, 0x0d, 0x21, 0x14, 0x16, 0x0d, 0x40, 0x40,
  3356. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3357. + 0x07, 0x4d, 0x17, 0x02, 0x4a, 0x40, 0x08, 0x4d, 0x57, 0x27, 0x40, 0x02, 0x40, 0x40, 0x40, 0x0f,
  3358. + 0x02, 0x0d, 0x40, 0x15, 0x02, 0x0d, 0x17, 0x2c, 0x2c, 0x07, 0x07, 0x05, 0x05, 0x0a, 0x0a, 0x07,
  3359. + 0x48, 0x27, 0x17, 0x0d, 0x40, 0x45, 0x00, 0x40, 0x40, 0x40, 0x02, 0x02, 0x42, 0x40, 0x0a, 0x40,
  3360. + 0x02, 0x0d, 0x42, 0x48, 0x40, 0x15, 0x40, 0x48, 0x48, 0x02, 0x0a, 0x0f, 0x0d, 0x0f, 0x42, 0x40,
  3361. + 0x0a, 0x40, 0x02, 0x0d, 0x42, 0x48, 0x40, 0x15, 0x40, 0x48, 0x48, 0x02, 0x0a, 0x0f, 0x0d, 0x0f,
  3362. + 0x1d, 0x45, 0x27, 0x40, 0x48, 0x40, 0x02, 0x07, 0x02, 0x0d, 0x0d, 0x17, 0x07, 0x15, 0x02, 0x45,
  3363. + 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x4a,
  3364. + 0x07, 0x0d, 0x0d, 0x17, 0x1d, 0x17, 0x1d, 0x0d, 0x17, 0x02, 0x45, 0x17, 0x02, 0x45, 0x40, 0x40,
  3365. + 0x40, 0x10, 0x10, 0x0d, 0x40, 0x0f, 0x0d, 0x0a, 0x0a, 0x2a, 0x27, 0x1a, 0x07, 0x1d, 0x1a, 0x12,
  3366. + 0x42, 0x20, 0x15, 0x0d, 0x40, 0x0d, 0x12, 0x0a, 0x17, 0x0d, 0x22, 0x15, 0x17, 0x0d, 0x40, 0x40,
  3367. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3368. + 0x07, 0x4d, 0x18, 0x02, 0x4a, 0x40, 0x07, 0x4d, 0x58, 0x27, 0x40, 0x02, 0x40, 0x40, 0x40, 0x0f,
  3369. + 0x02, 0x0e, 0x00, 0x15, 0x03, 0x0e, 0x19, 0x2f, 0x2f, 0x07, 0x07, 0x05, 0x05, 0x0a, 0x0b, 0x07,
  3370. + 0x47, 0x27, 0x18, 0x0d, 0x40, 0x45, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x42, 0x00, 0x0b, 0x00,
  3371. + 0x03, 0x0e, 0x42, 0x47, 0x00, 0x16, 0x00, 0x47, 0x47, 0x03, 0x0b, 0x10, 0x0d, 0x10, 0x42, 0x00,
  3372. + 0x0b, 0x00, 0x03, 0x0e, 0x42, 0x47, 0x00, 0x16, 0x00, 0x47, 0x47, 0x03, 0x0b, 0x10, 0x0d, 0x10,
  3373. + 0x1d, 0x45, 0x29, 0x40, 0x48, 0x40, 0x02, 0x07, 0x02, 0x0d, 0x0d, 0x19, 0x07, 0x15, 0x02, 0x45,
  3374. + 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x4a,
  3375. + 0x07, 0x0d, 0x0d, 0x18, 0x1d, 0x18, 0x1d, 0x0d, 0x17, 0x02, 0x45, 0x17, 0x02, 0x45, 0x40, 0x40,
  3376. + 0x40, 0x0f, 0x0f, 0x0d, 0x40, 0x0f, 0x0d, 0x0a, 0x0a, 0x2a, 0x27, 0x1a, 0x07, 0x1d, 0x1a, 0x12,
  3377. + 0x42, 0x1f, 0x15, 0x0d, 0x40, 0x0d, 0x12, 0x0a, 0x18, 0x0d, 0x23, 0x15, 0x18, 0x0d, 0x40, 0x40,
  3378. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3379. + 0x07, 0x4e, 0x19, 0x03, 0x49, 0x40, 0x06, 0x4e, 0x59, 0x27, 0x40, 0x03, 0x40, 0x40, 0x40, 0x0f,
  3380. + 0x03, 0x10, 0x01, 0x16, 0x04, 0x10, 0x1b, 0x31, 0x31, 0x07, 0x07, 0x04, 0x06, 0x0b, 0x0c, 0x07,
  3381. + 0x46, 0x27, 0x19, 0x0c, 0x40, 0x44, 0x41, 0x40, 0x40, 0x40, 0x03, 0x03, 0x41, 0x01, 0x0c, 0x01,
  3382. + 0x04, 0x10, 0x41, 0x46, 0x01, 0x18, 0x01, 0x46, 0x46, 0x04, 0x0c, 0x11, 0x0e, 0x11, 0x41, 0x01,
  3383. + 0x0c, 0x01, 0x04, 0x10, 0x41, 0x46, 0x01, 0x18, 0x01, 0x46, 0x46, 0x04, 0x0c, 0x11, 0x0e, 0x11,
  3384. + 0x1e, 0x44, 0x2b, 0x40, 0x48, 0x40, 0x03, 0x07, 0x03, 0x0e, 0x0e, 0x1b, 0x07, 0x14, 0x01, 0x44,
  3385. + 0x1b, 0x07, 0x40, 0x14, 0x01, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x01, 0x44, 0x1b, 0x07, 0x40, 0x4b,
  3386. + 0x07, 0x0e, 0x0e, 0x19, 0x1e, 0x19, 0x1e, 0x0c, 0x17, 0x01, 0x44, 0x17, 0x01, 0x44, 0x40, 0x40,
  3387. + 0x40, 0x0e, 0x0e, 0x0c, 0x40, 0x0f, 0x0c, 0x09, 0x09, 0x2b, 0x27, 0x1b, 0x07, 0x1e, 0x1b, 0x13,
  3388. + 0x43, 0x1e, 0x14, 0x0c, 0x40, 0x0c, 0x13, 0x09, 0x19, 0x0c, 0x24, 0x16, 0x19, 0x0c, 0x40, 0x40,
  3389. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3390. + 0x07, 0x4f, 0x1a, 0x03, 0x48, 0x40, 0x05, 0x4f, 0x5a, 0x27, 0x40, 0x03, 0x40, 0x40, 0x40, 0x0f,
  3391. + 0x03, 0x11, 0x02, 0x17, 0x06, 0x11, 0x1d, 0x34, 0x34, 0x07, 0x07, 0x04, 0x07, 0x0b, 0x0e, 0x07,
  3392. + 0x45, 0x27, 0x1a, 0x0c, 0x40, 0x44, 0x42, 0x40, 0x40, 0x40, 0x03, 0x03, 0x40, 0x02, 0x0e, 0x02,
  3393. + 0x06, 0x11, 0x40, 0x45, 0x02, 0x19, 0x02, 0x45, 0x45, 0x06, 0x0e, 0x12, 0x0f, 0x12, 0x40, 0x02,
  3394. + 0x0e, 0x02, 0x06, 0x11, 0x40, 0x45, 0x02, 0x19, 0x02, 0x45, 0x45, 0x06, 0x0e, 0x12, 0x0f, 0x12,
  3395. + 0x1f, 0x44, 0x2d, 0x40, 0x48, 0x40, 0x03, 0x07, 0x03, 0x0f, 0x0f, 0x1d, 0x07, 0x14, 0x00, 0x44,
  3396. + 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x4b,
  3397. + 0x07, 0x0f, 0x0f, 0x1a, 0x1f, 0x1a, 0x1f, 0x0c, 0x17, 0x00, 0x44, 0x17, 0x00, 0x44, 0x40, 0x40,
  3398. + 0x40, 0x0d, 0x0d, 0x0c, 0x40, 0x0f, 0x0c, 0x08, 0x08, 0x2b, 0x27, 0x1b, 0x07, 0x1f, 0x1b, 0x13,
  3399. + 0x43, 0x1d, 0x14, 0x0c, 0x40, 0x0c, 0x13, 0x08, 0x1a, 0x0c, 0x26, 0x17, 0x1a, 0x0c, 0x40, 0x40,
  3400. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3401. + 0x07, 0x4f, 0x1b, 0x03, 0x48, 0x40, 0x04, 0x4f, 0x5b, 0x27, 0x40, 0x03, 0x40, 0x40, 0x40, 0x0f,
  3402. + 0x03, 0x13, 0x03, 0x17, 0x07, 0x13, 0x1f, 0x36, 0x36, 0x07, 0x07, 0x04, 0x07, 0x0b, 0x0f, 0x07,
  3403. + 0x44, 0x27, 0x1b, 0x0c, 0x40, 0x44, 0x43, 0x40, 0x40, 0x40, 0x03, 0x03, 0x40, 0x03, 0x0f, 0x03,
  3404. + 0x07, 0x13, 0x40, 0x44, 0x03, 0x1b, 0x03, 0x44, 0x44, 0x07, 0x0f, 0x13, 0x0f, 0x13, 0x40, 0x03,
  3405. + 0x0f, 0x03, 0x07, 0x13, 0x40, 0x44, 0x03, 0x1b, 0x03, 0x44, 0x44, 0x07, 0x0f, 0x13, 0x0f, 0x13,
  3406. + 0x1f, 0x44, 0x2f, 0x40, 0x48, 0x40, 0x03, 0x07, 0x03, 0x0f, 0x0f, 0x1f, 0x07, 0x14, 0x00, 0x44,
  3407. + 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x4b,
  3408. + 0x07, 0x0f, 0x0f, 0x1b, 0x1f, 0x1b, 0x1f, 0x0c, 0x17, 0x00, 0x44, 0x17, 0x00, 0x44, 0x40, 0x40,
  3409. + 0x40, 0x0c, 0x0c, 0x0c, 0x40, 0x0f, 0x0c, 0x08, 0x08, 0x2b, 0x27, 0x1b, 0x07, 0x1f, 0x1b, 0x13,
  3410. + 0x43, 0x1c, 0x14, 0x0c, 0x40, 0x0c, 0x13, 0x08, 0x1b, 0x0c, 0x27, 0x17, 0x1b, 0x0c, 0x40, 0x40,
  3411. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3412. + 0x07, 0x50, 0x1c, 0x04, 0x47, 0x40, 0x03, 0x50, 0x5c, 0x27, 0x40, 0x04, 0x40, 0x40, 0x40, 0x0f,
  3413. + 0x04, 0x14, 0x04, 0x18, 0x08, 0x14, 0x21, 0x39, 0x39, 0x07, 0x07, 0x03, 0x08, 0x0c, 0x10, 0x07,
  3414. + 0x43, 0x27, 0x1c, 0x0b, 0x40, 0x43, 0x44, 0x40, 0x40, 0x40, 0x04, 0x04, 0x00, 0x04, 0x10, 0x04,
  3415. + 0x08, 0x14, 0x00, 0x43, 0x04, 0x1c, 0x04, 0x43, 0x43, 0x08, 0x10, 0x14, 0x10, 0x14, 0x00, 0x04,
  3416. + 0x10, 0x04, 0x08, 0x14, 0x00, 0x43, 0x04, 0x1c, 0x04, 0x43, 0x43, 0x08, 0x10, 0x14, 0x10, 0x14,
  3417. + 0x20, 0x43, 0x31, 0x40, 0x48, 0x40, 0x04, 0x07, 0x04, 0x10, 0x10, 0x21, 0x07, 0x13, 0x40, 0x43,
  3418. + 0x1c, 0x07, 0x40, 0x13, 0x40, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x40, 0x43, 0x1c, 0x07, 0x40, 0x4c,
  3419. + 0x07, 0x10, 0x10, 0x1c, 0x20, 0x1c, 0x20, 0x0b, 0x17, 0x40, 0x43, 0x17, 0x40, 0x43, 0x40, 0x40,
  3420. + 0x40, 0x0b, 0x0b, 0x0b, 0x40, 0x0f, 0x0b, 0x07, 0x07, 0x2c, 0x27, 0x1c, 0x07, 0x20, 0x1c, 0x14,
  3421. + 0x44, 0x1b, 0x13, 0x0b, 0x40, 0x0b, 0x14, 0x07, 0x1c, 0x0b, 0x28, 0x18, 0x1c, 0x0b, 0x40, 0x40,
  3422. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3423. + 0x07, 0x51, 0x1d, 0x04, 0x47, 0x40, 0x02, 0x51, 0x5d, 0x27, 0x40, 0x04, 0x40, 0x40, 0x40, 0x0f,
  3424. + 0x04, 0x16, 0x05, 0x18, 0x09, 0x16, 0x22, 0x3b, 0x3b, 0x07, 0x07, 0x03, 0x08, 0x0c, 0x11, 0x07,
  3425. + 0x42, 0x27, 0x1d, 0x0b, 0x40, 0x43, 0x45, 0x40, 0x40, 0x40, 0x04, 0x04, 0x00, 0x05, 0x11, 0x05,
  3426. + 0x09, 0x16, 0x00, 0x42, 0x05, 0x1e, 0x05, 0x42, 0x42, 0x09, 0x11, 0x15, 0x10, 0x15, 0x00, 0x05,
  3427. + 0x11, 0x05, 0x09, 0x16, 0x00, 0x42, 0x05, 0x1e, 0x05, 0x42, 0x42, 0x09, 0x11, 0x15, 0x10, 0x15,
  3428. + 0x20, 0x43, 0x32, 0x40, 0x48, 0x40, 0x04, 0x07, 0x04, 0x10, 0x10, 0x22, 0x07, 0x13, 0x41, 0x43,
  3429. + 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x4c,
  3430. + 0x07, 0x10, 0x10, 0x1d, 0x20, 0x1d, 0x20, 0x0b, 0x17, 0x41, 0x43, 0x17, 0x41, 0x43, 0x40, 0x40,
  3431. + 0x40, 0x0a, 0x0a, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x06, 0x2c, 0x27, 0x1c, 0x07, 0x20, 0x1c, 0x14,
  3432. + 0x44, 0x1a, 0x13, 0x0b, 0x40, 0x0b, 0x14, 0x06, 0x1d, 0x0b, 0x29, 0x18, 0x1d, 0x0b, 0x40, 0x40,
  3433. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3434. + 0x07, 0x51, 0x1e, 0x04, 0x46, 0x40, 0x01, 0x51, 0x5e, 0x27, 0x40, 0x04, 0x40, 0x40, 0x40, 0x0f,
  3435. + 0x04, 0x18, 0x06, 0x19, 0x0b, 0x18, 0x24, 0x3e, 0x3e, 0x07, 0x07, 0x03, 0x09, 0x0c, 0x13, 0x07,
  3436. + 0x41, 0x27, 0x1e, 0x0b, 0x40, 0x43, 0x46, 0x40, 0x40, 0x40, 0x04, 0x04, 0x01, 0x06, 0x13, 0x06,
  3437. + 0x0b, 0x18, 0x01, 0x41, 0x06, 0x20, 0x06, 0x41, 0x41, 0x0b, 0x13, 0x16, 0x11, 0x16, 0x01, 0x06,
  3438. + 0x13, 0x06, 0x0b, 0x18, 0x01, 0x41, 0x06, 0x20, 0x06, 0x41, 0x41, 0x0b, 0x13, 0x16, 0x11, 0x16,
  3439. + 0x21, 0x43, 0x34, 0x40, 0x48, 0x40, 0x04, 0x07, 0x04, 0x11, 0x11, 0x24, 0x07, 0x13, 0x41, 0x43,
  3440. + 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x4c,
  3441. + 0x07, 0x11, 0x11, 0x1e, 0x21, 0x1e, 0x21, 0x0b, 0x17, 0x41, 0x43, 0x17, 0x41, 0x43, 0x40, 0x40,
  3442. + 0x40, 0x09, 0x09, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x06, 0x2c, 0x27, 0x1c, 0x07, 0x21, 0x1c, 0x14,
  3443. + 0x44, 0x19, 0x13, 0x0b, 0x40, 0x0b, 0x14, 0x06, 0x1e, 0x0b, 0x2b, 0x19, 0x1e, 0x0b, 0x40, 0x40,
  3444. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3445. + 0x07, 0x52, 0x1f, 0x05, 0x45, 0x40, 0x00, 0x52, 0x5f, 0x27, 0x40, 0x05, 0x40, 0x40, 0x40, 0x0f,
  3446. + 0x05, 0x19, 0x07, 0x1a, 0x0c, 0x19, 0x26, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0a, 0x0d, 0x14, 0x07,
  3447. + 0x40, 0x27, 0x1f, 0x0a, 0x40, 0x42, 0x47, 0x40, 0x40, 0x40, 0x05, 0x05, 0x02, 0x07, 0x14, 0x07,
  3448. + 0x0c, 0x19, 0x02, 0x40, 0x07, 0x21, 0x07, 0x40, 0x40, 0x0c, 0x14, 0x17, 0x12, 0x17, 0x02, 0x07,
  3449. + 0x14, 0x07, 0x0c, 0x19, 0x02, 0x40, 0x07, 0x21, 0x07, 0x40, 0x40, 0x0c, 0x14, 0x17, 0x12, 0x17,
  3450. + 0x22, 0x42, 0x36, 0x40, 0x48, 0x40, 0x05, 0x07, 0x05, 0x12, 0x12, 0x26, 0x07, 0x12, 0x42, 0x42,
  3451. + 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x4d,
  3452. + 0x07, 0x12, 0x12, 0x1f, 0x22, 0x1f, 0x22, 0x0a, 0x17, 0x42, 0x42, 0x17, 0x42, 0x42, 0x40, 0x40,
  3453. + 0x40, 0x08, 0x08, 0x0a, 0x40, 0x0f, 0x0a, 0x05, 0x05, 0x2d, 0x27, 0x1d, 0x07, 0x22, 0x1d, 0x15,
  3454. + 0x45, 0x18, 0x12, 0x0a, 0x40, 0x0a, 0x15, 0x05, 0x1f, 0x0a, 0x2c, 0x1a, 0x1f, 0x0a, 0x40, 0x40,
  3455. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3456. + 0x07, 0x52, 0x20, 0x05, 0x45, 0x40, 0x40, 0x52, 0x60, 0x27, 0x40, 0x05, 0x40, 0x40, 0x40, 0x0f,
  3457. + 0x05, 0x1b, 0x08, 0x1a, 0x0d, 0x1b, 0x28, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0a, 0x0d, 0x15, 0x07,
  3458. + 0x00, 0x27, 0x20, 0x0a, 0x40, 0x42, 0x48, 0x40, 0x40, 0x40, 0x05, 0x05, 0x02, 0x08, 0x15, 0x08,
  3459. + 0x0d, 0x1b, 0x02, 0x00, 0x08, 0x23, 0x08, 0x00, 0x00, 0x0d, 0x15, 0x18, 0x12, 0x18, 0x02, 0x08,
  3460. + 0x15, 0x08, 0x0d, 0x1b, 0x02, 0x00, 0x08, 0x23, 0x08, 0x00, 0x00, 0x0d, 0x15, 0x18, 0x12, 0x18,
  3461. + 0x22, 0x42, 0x38, 0x40, 0x48, 0x40, 0x05, 0x07, 0x05, 0x12, 0x12, 0x28, 0x07, 0x12, 0x42, 0x42,
  3462. + 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x4d,
  3463. + 0x07, 0x12, 0x12, 0x20, 0x22, 0x20, 0x22, 0x0a, 0x17, 0x42, 0x42, 0x17, 0x42, 0x42, 0x40, 0x40,
  3464. + 0x40, 0x07, 0x07, 0x0a, 0x40, 0x0f, 0x0a, 0x05, 0x05, 0x2d, 0x27, 0x1d, 0x07, 0x22, 0x1d, 0x15,
  3465. + 0x45, 0x17, 0x12, 0x0a, 0x40, 0x0a, 0x15, 0x05, 0x20, 0x0a, 0x2d, 0x1a, 0x20, 0x0a, 0x40, 0x40,
  3466. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3467. + 0x07, 0x53, 0x21, 0x05, 0x44, 0x40, 0x41, 0x53, 0x61, 0x27, 0x40, 0x05, 0x40, 0x40, 0x40, 0x0f,
  3468. + 0x05, 0x1c, 0x09, 0x1b, 0x0e, 0x1c, 0x2a, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0b, 0x0d, 0x16, 0x07,
  3469. + 0x01, 0x27, 0x21, 0x0a, 0x40, 0x42, 0x49, 0x40, 0x40, 0x40, 0x05, 0x05, 0x03, 0x09, 0x16, 0x09,
  3470. + 0x0e, 0x1c, 0x03, 0x01, 0x09, 0x24, 0x09, 0x01, 0x01, 0x0e, 0x16, 0x19, 0x13, 0x19, 0x03, 0x09,
  3471. + 0x16, 0x09, 0x0e, 0x1c, 0x03, 0x01, 0x09, 0x24, 0x09, 0x01, 0x01, 0x0e, 0x16, 0x19, 0x13, 0x19,
  3472. + 0x23, 0x42, 0x3a, 0x40, 0x48, 0x40, 0x05, 0x07, 0x05, 0x13, 0x13, 0x2a, 0x07, 0x12, 0x43, 0x42,
  3473. + 0x1d, 0x07, 0x40, 0x12, 0x43, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x43, 0x42, 0x1d, 0x07, 0x40, 0x4d,
  3474. + 0x07, 0x13, 0x13, 0x21, 0x23, 0x21, 0x23, 0x0a, 0x17, 0x43, 0x42, 0x17, 0x43, 0x42, 0x40, 0x40,
  3475. + 0x40, 0x06, 0x06, 0x0a, 0x40, 0x0f, 0x0a, 0x04, 0x04, 0x2d, 0x27, 0x1d, 0x07, 0x23, 0x1d, 0x15,
  3476. + 0x45, 0x16, 0x12, 0x0a, 0x40, 0x0a, 0x15, 0x04, 0x21, 0x0a, 0x2e, 0x1b, 0x21, 0x0a, 0x40, 0x40,
  3477. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3478. + 0x07, 0x54, 0x22, 0x06, 0x43, 0x40, 0x42, 0x54, 0x62, 0x27, 0x40, 0x06, 0x40, 0x40, 0x40, 0x0f,
  3479. + 0x06, 0x1e, 0x0a, 0x1c, 0x10, 0x1e, 0x2c, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x0c, 0x0e, 0x18, 0x07,
  3480. + 0x02, 0x27, 0x22, 0x09, 0x40, 0x41, 0x4a, 0x40, 0x40, 0x40, 0x06, 0x06, 0x04, 0x0a, 0x18, 0x0a,
  3481. + 0x10, 0x1e, 0x04, 0x02, 0x0a, 0x26, 0x0a, 0x02, 0x02, 0x10, 0x18, 0x1a, 0x14, 0x1a, 0x04, 0x0a,
  3482. + 0x18, 0x0a, 0x10, 0x1e, 0x04, 0x02, 0x0a, 0x26, 0x0a, 0x02, 0x02, 0x10, 0x18, 0x1a, 0x14, 0x1a,
  3483. + 0x24, 0x41, 0x3c, 0x40, 0x48, 0x40, 0x06, 0x07, 0x06, 0x14, 0x14, 0x2c, 0x07, 0x11, 0x44, 0x41,
  3484. + 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x4e,
  3485. + 0x07, 0x14, 0x14, 0x22, 0x24, 0x22, 0x24, 0x09, 0x17, 0x44, 0x41, 0x17, 0x44, 0x41, 0x40, 0x40,
  3486. + 0x40, 0x05, 0x05, 0x09, 0x40, 0x0f, 0x09, 0x03, 0x03, 0x2e, 0x27, 0x1e, 0x07, 0x24, 0x1e, 0x16,
  3487. + 0x46, 0x15, 0x11, 0x09, 0x40, 0x09, 0x16, 0x03, 0x22, 0x09, 0x30, 0x1c, 0x22, 0x09, 0x40, 0x40,
  3488. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3489. + 0x07, 0x54, 0x23, 0x06, 0x43, 0x40, 0x43, 0x54, 0x63, 0x27, 0x40, 0x06, 0x40, 0x40, 0x40, 0x0f,
  3490. + 0x06, 0x1f, 0x0b, 0x1c, 0x11, 0x1f, 0x2e, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x0c, 0x0e, 0x19, 0x07,
  3491. + 0x03, 0x27, 0x23, 0x09, 0x40, 0x41, 0x4b, 0x40, 0x40, 0x40, 0x06, 0x06, 0x04, 0x0b, 0x19, 0x0b,
  3492. + 0x11, 0x1f, 0x04, 0x03, 0x0b, 0x27, 0x0b, 0x03, 0x03, 0x11, 0x19, 0x1b, 0x14, 0x1b, 0x04, 0x0b,
  3493. + 0x19, 0x0b, 0x11, 0x1f, 0x04, 0x03, 0x0b, 0x27, 0x0b, 0x03, 0x03, 0x11, 0x19, 0x1b, 0x14, 0x1b,
  3494. + 0x24, 0x41, 0x3e, 0x40, 0x48, 0x40, 0x06, 0x07, 0x06, 0x14, 0x14, 0x2e, 0x07, 0x11, 0x44, 0x41,
  3495. + 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x4e,
  3496. + 0x07, 0x14, 0x14, 0x23, 0x24, 0x23, 0x24, 0x09, 0x17, 0x44, 0x41, 0x17, 0x44, 0x41, 0x40, 0x40,
  3497. + 0x40, 0x04, 0x04, 0x09, 0x40, 0x0f, 0x09, 0x03, 0x03, 0x2e, 0x27, 0x1e, 0x07, 0x24, 0x1e, 0x16,
  3498. + 0x46, 0x14, 0x11, 0x09, 0x40, 0x09, 0x16, 0x03, 0x23, 0x09, 0x31, 0x1c, 0x23, 0x09, 0x40, 0x40,
  3499. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3500. + 0x07, 0x55, 0x24, 0x06, 0x42, 0x40, 0x44, 0x55, 0x64, 0x27, 0x40, 0x06, 0x40, 0x40, 0x40, 0x0f,
  3501. + 0x06, 0x21, 0x0c, 0x1d, 0x12, 0x21, 0x30, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x0d, 0x0e, 0x1a, 0x07,
  3502. + 0x04, 0x27, 0x24, 0x09, 0x40, 0x41, 0x4c, 0x40, 0x40, 0x40, 0x06, 0x06, 0x05, 0x0c, 0x1a, 0x0c,
  3503. + 0x12, 0x21, 0x05, 0x04, 0x0c, 0x29, 0x0c, 0x04, 0x04, 0x12, 0x1a, 0x1c, 0x15, 0x1c, 0x05, 0x0c,
  3504. + 0x1a, 0x0c, 0x12, 0x21, 0x05, 0x04, 0x0c, 0x29, 0x0c, 0x04, 0x04, 0x12, 0x1a, 0x1c, 0x15, 0x1c,
  3505. + 0x25, 0x41, 0x3e, 0x40, 0x48, 0x40, 0x06, 0x07, 0x06, 0x15, 0x15, 0x30, 0x07, 0x11, 0x45, 0x41,
  3506. + 0x1e, 0x07, 0x40, 0x11, 0x45, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x45, 0x41, 0x1e, 0x07, 0x40, 0x4e,
  3507. + 0x07, 0x15, 0x15, 0x24, 0x25, 0x24, 0x25, 0x09, 0x17, 0x45, 0x41, 0x17, 0x45, 0x41, 0x40, 0x40,
  3508. + 0x40, 0x03, 0x03, 0x09, 0x40, 0x0f, 0x09, 0x02, 0x02, 0x2e, 0x27, 0x1e, 0x07, 0x25, 0x1e, 0x16,
  3509. + 0x46, 0x13, 0x11, 0x09, 0x40, 0x09, 0x16, 0x02, 0x24, 0x09, 0x32, 0x1d, 0x24, 0x09, 0x40, 0x40,
  3510. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3511. + 0x07, 0x56, 0x24, 0x06, 0x42, 0x40, 0x45, 0x56, 0x65, 0x27, 0x40, 0x06, 0x40, 0x40, 0x40, 0x0f,
  3512. + 0x06, 0x22, 0x0c, 0x1d, 0x13, 0x22, 0x31, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x0d, 0x0e, 0x1b, 0x07,
  3513. + 0x04, 0x27, 0x24, 0x08, 0x40, 0x41, 0x4d, 0x40, 0x40, 0x40, 0x06, 0x06, 0x05, 0x0c, 0x1b, 0x0c,
  3514. + 0x13, 0x22, 0x05, 0x04, 0x0c, 0x2a, 0x0c, 0x04, 0x04, 0x13, 0x1b, 0x1c, 0x15, 0x1c, 0x05, 0x0c,
  3515. + 0x1b, 0x0c, 0x13, 0x22, 0x05, 0x04, 0x0c, 0x2a, 0x0c, 0x04, 0x04, 0x13, 0x1b, 0x1c, 0x15, 0x1c,
  3516. + 0x25, 0x41, 0x3e, 0x40, 0x48, 0x40, 0x06, 0x07, 0x06, 0x15, 0x15, 0x31, 0x07, 0x10, 0x46, 0x41,
  3517. + 0x1e, 0x07, 0x40, 0x10, 0x46, 0x41, 0x1e, 0x07, 0x40, 0x10, 0x46, 0x41, 0x1e, 0x07, 0x40, 0x4f,
  3518. + 0x07, 0x15, 0x15, 0x24, 0x25, 0x24, 0x25, 0x08, 0x17, 0x46, 0x41, 0x17, 0x46, 0x41, 0x40, 0x40,
  3519. + 0x40, 0x02, 0x02, 0x08, 0x40, 0x0f, 0x08, 0x01, 0x01, 0x2e, 0x27, 0x1e, 0x07, 0x25, 0x1e, 0x16,
  3520. + 0x47, 0x12, 0x10, 0x08, 0x40, 0x08, 0x16, 0x01, 0x24, 0x08, 0x33, 0x1d, 0x24, 0x08, 0x40, 0x40,
  3521. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3522. + 0x07, 0x56, 0x25, 0x07, 0x41, 0x40, 0x45, 0x56, 0x65, 0x27, 0x40, 0x07, 0x40, 0x40, 0x40, 0x0f,
  3523. + 0x07, 0x24, 0x0d, 0x1e, 0x15, 0x24, 0x33, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x0e, 0x0f, 0x1d, 0x07,
  3524. + 0x05, 0x27, 0x25, 0x08, 0x40, 0x40, 0x4d, 0x40, 0x40, 0x40, 0x07, 0x07, 0x06, 0x0d, 0x1d, 0x0d,
  3525. + 0x15, 0x24, 0x06, 0x05, 0x0d, 0x2c, 0x0d, 0x05, 0x05, 0x15, 0x1d, 0x1d, 0x16, 0x1d, 0x06, 0x0d,
  3526. + 0x1d, 0x0d, 0x15, 0x24, 0x06, 0x05, 0x0d, 0x2c, 0x0d, 0x05, 0x05, 0x15, 0x1d, 0x1d, 0x16, 0x1d,
  3527. + 0x26, 0x40, 0x3e, 0x40, 0x48, 0x40, 0x07, 0x07, 0x07, 0x16, 0x16, 0x33, 0x07, 0x10, 0x46, 0x40,
  3528. + 0x1f, 0x07, 0x40, 0x10, 0x46, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x46, 0x40, 0x1f, 0x07, 0x40, 0x4f,
  3529. + 0x07, 0x16, 0x16, 0x25, 0x26, 0x25, 0x26, 0x08, 0x17, 0x46, 0x40, 0x17, 0x46, 0x40, 0x40, 0x40,
  3530. + 0x40, 0x02, 0x02, 0x08, 0x40, 0x0f, 0x08, 0x01, 0x01, 0x2f, 0x27, 0x1f, 0x07, 0x26, 0x1f, 0x17,
  3531. + 0x47, 0x12, 0x10, 0x08, 0x40, 0x08, 0x17, 0x01, 0x25, 0x08, 0x35, 0x1e, 0x25, 0x08, 0x40, 0x40,
  3532. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3533. + 0x07, 0x57, 0x26, 0x07, 0x40, 0x40, 0x46, 0x57, 0x66, 0x27, 0x40, 0x07, 0x40, 0x40, 0x40, 0x0f,
  3534. + 0x07, 0x26, 0x0e, 0x1f, 0x16, 0x26, 0x35, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x0f, 0x0f, 0x1e, 0x07,
  3535. + 0x06, 0x27, 0x26, 0x08, 0x40, 0x40, 0x4e, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x0e, 0x1e, 0x0e,
  3536. + 0x16, 0x26, 0x07, 0x06, 0x0e, 0x2e, 0x0e, 0x06, 0x06, 0x16, 0x1e, 0x1e, 0x17, 0x1e, 0x07, 0x0e,
  3537. + 0x1e, 0x0e, 0x16, 0x26, 0x07, 0x06, 0x0e, 0x2e, 0x0e, 0x06, 0x06, 0x16, 0x1e, 0x1e, 0x17, 0x1e,
  3538. + 0x27, 0x40, 0x3e, 0x40, 0x48, 0x40, 0x07, 0x07, 0x07, 0x17, 0x17, 0x35, 0x07, 0x10, 0x47, 0x40,
  3539. + 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x4f,
  3540. + 0x07, 0x17, 0x17, 0x26, 0x27, 0x26, 0x27, 0x08, 0x17, 0x47, 0x40, 0x17, 0x47, 0x40, 0x40, 0x40,
  3541. + 0x40, 0x01, 0x01, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x00, 0x2f, 0x27, 0x1f, 0x07, 0x27, 0x1f, 0x17,
  3542. + 0x47, 0x11, 0x10, 0x08, 0x40, 0x08, 0x17, 0x00, 0x26, 0x08, 0x36, 0x1f, 0x26, 0x08, 0x40, 0x40,
  3543. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3544. + 0x07, 0x57, 0x27, 0x07, 0x40, 0x40, 0x47, 0x57, 0x67, 0x27, 0x40, 0x07, 0x40, 0x40, 0x40, 0x0f,
  3545. + 0x07, 0x27, 0x0f, 0x1f, 0x17, 0x27, 0x37, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x0f, 0x0f, 0x1f, 0x07,
  3546. + 0x07, 0x27, 0x27, 0x08, 0x40, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x0f, 0x1f, 0x0f,
  3547. + 0x17, 0x27, 0x07, 0x07, 0x0f, 0x2f, 0x0f, 0x07, 0x07, 0x17, 0x1f, 0x1f, 0x17, 0x1f, 0x07, 0x0f,
  3548. + 0x1f, 0x0f, 0x17, 0x27, 0x07, 0x07, 0x0f, 0x2f, 0x0f, 0x07, 0x07, 0x17, 0x1f, 0x1f, 0x17, 0x1f,
  3549. + 0x27, 0x40, 0x3e, 0x40, 0x48, 0x40, 0x07, 0x07, 0x07, 0x17, 0x17, 0x37, 0x07, 0x10, 0x47, 0x40,
  3550. + 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x4f,
  3551. + 0x07, 0x17, 0x17, 0x27, 0x27, 0x27, 0x27, 0x08, 0x17, 0x47, 0x40, 0x17, 0x47, 0x40, 0x40, 0x40,
  3552. + 0x40, 0x00, 0x00, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x00, 0x2f, 0x27, 0x1f, 0x07, 0x27, 0x1f, 0x17,
  3553. + 0x47, 0x10, 0x10, 0x08, 0x40, 0x08, 0x17, 0x00, 0x27, 0x08, 0x37, 0x1f, 0x27, 0x08, 0x40, 0x40,
  3554. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3555. + 0x07, 0x3e, 0x48, 0x48, 0x60, 0x40, 0x27, 0x07, 0x07, 0x1f, 0x40, 0x48, 0x40, 0x40, 0x17, 0x0f,
  3556. + 0x48, 0x68, 0x40, 0x07, 0x68, 0x68, 0x68, 0x68, 0x68, 0x07, 0x07, 0x0f, 0x3e, 0x17, 0x40, 0x07,
  3557. + 0x68, 0x27, 0x50, 0x17, 0x40, 0x07, 0x1f, 0x40, 0x40, 0x40, 0x48, 0x48, 0x58, 0x60, 0x50, 0x60,
  3558. + 0x68, 0x60, 0x58, 0x68, 0x68, 0x68, 0x58, 0x60, 0x68, 0x68, 0x68, 0x50, 0x48, 0x58, 0x58, 0x60,
  3559. + 0x50, 0x60, 0x68, 0x60, 0x58, 0x68, 0x68, 0x68, 0x58, 0x60, 0x68, 0x68, 0x68, 0x50, 0x48, 0x58,
  3560. + 0x07, 0x50, 0x58, 0x40, 0x40, 0x40, 0x48, 0x07, 0x48, 0x48, 0x48, 0x68, 0x50, 0x1f, 0x17, 0x50,
  3561. + 0x0f, 0x07, 0x40, 0x1f, 0x17, 0x50, 0x0f, 0x07, 0x40, 0x1f, 0x17, 0x50, 0x0f, 0x07, 0x40, 0x40,
  3562. + 0x07, 0x40, 0x40, 0x40, 0x07, 0x40, 0x07, 0x17, 0x17, 0x17, 0x50, 0x17, 0x17, 0x50, 0x40, 0x40,
  3563. + 0x40, 0x2f, 0x17, 0x17, 0x40, 0x0f, 0x17, 0x1f, 0x1f, 0x1f, 0x27, 0x0f, 0x07, 0x07, 0x0f, 0x40,
  3564. + 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x0f, 0x17, 0x1f, 0x48, 0x17, 0x48, 0x48, 0x48, 0x17, 0x40, 0x40,
  3565. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3566. + 0x07, 0x3e, 0x47, 0x47, 0x5f, 0x40, 0x27, 0x07, 0x07, 0x20, 0x40, 0x47, 0x40, 0x40, 0x17, 0x0f,
  3567. + 0x47, 0x66, 0x40, 0x08, 0x66, 0x66, 0x66, 0x65, 0x65, 0x07, 0x07, 0x0f, 0x3e, 0x17, 0x00, 0x07,
  3568. + 0x67, 0x27, 0x4e, 0x17, 0x40, 0x07, 0x1f, 0x40, 0x40, 0x40, 0x47, 0x47, 0x57, 0x5f, 0x4f, 0x5f,
  3569. + 0x66, 0x5e, 0x57, 0x67, 0x67, 0x66, 0x57, 0x5f, 0x67, 0x67, 0x66, 0x4f, 0x47, 0x56, 0x57, 0x5f,
  3570. + 0x4f, 0x5f, 0x66, 0x5e, 0x57, 0x67, 0x67, 0x66, 0x57, 0x5f, 0x67, 0x67, 0x66, 0x4f, 0x47, 0x56,
  3571. + 0x08, 0x4f, 0x56, 0x40, 0x40, 0x40, 0x47, 0x07, 0x47, 0x47, 0x47, 0x66, 0x4f, 0x1f, 0x17, 0x4f,
  3572. + 0x10, 0x07, 0x40, 0x1f, 0x17, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x17, 0x4f, 0x10, 0x07, 0x40, 0x40,
  3573. + 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x17, 0x17, 0x17, 0x4f, 0x17, 0x17, 0x4f, 0x40, 0x40,
  3574. + 0x40, 0x2f, 0x17, 0x17, 0x40, 0x0f, 0x17, 0x1f, 0x1f, 0x20, 0x27, 0x10, 0x07, 0x08, 0x10, 0x00,
  3575. + 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x0f, 0x17, 0x1f, 0x47, 0x17, 0x46, 0x47, 0x47, 0x17, 0x40, 0x40,
  3576. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3577. + 0x07, 0x3e, 0x46, 0x47, 0x5e, 0x40, 0x26, 0x06, 0x06, 0x20, 0x40, 0x47, 0x40, 0x40, 0x16, 0x0f,
  3578. + 0x47, 0x64, 0x40, 0x08, 0x65, 0x64, 0x64, 0x63, 0x63, 0x07, 0x07, 0x0f, 0x3e, 0x17, 0x01, 0x07,
  3579. + 0x66, 0x27, 0x4d, 0x17, 0x40, 0x07, 0x1e, 0x40, 0x40, 0x40, 0x47, 0x47, 0x56, 0x5e, 0x4e, 0x5e,
  3580. + 0x65, 0x5d, 0x56, 0x66, 0x66, 0x64, 0x56, 0x5e, 0x66, 0x66, 0x64, 0x4e, 0x46, 0x55, 0x56, 0x5e,
  3581. + 0x4e, 0x5e, 0x65, 0x5d, 0x56, 0x66, 0x66, 0x64, 0x56, 0x5e, 0x66, 0x66, 0x64, 0x4e, 0x46, 0x55,
  3582. + 0x09, 0x4f, 0x54, 0x40, 0x40, 0x40, 0x47, 0x07, 0x47, 0x46, 0x46, 0x64, 0x4e, 0x1f, 0x16, 0x4f,
  3583. + 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x40,
  3584. + 0x07, 0x00, 0x00, 0x01, 0x09, 0x01, 0x09, 0x17, 0x17, 0x16, 0x4f, 0x17, 0x16, 0x4f, 0x40, 0x40,
  3585. + 0x40, 0x2e, 0x17, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x1e, 0x20, 0x27, 0x10, 0x07, 0x09, 0x10, 0x01,
  3586. + 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x46, 0x17, 0x45, 0x46, 0x46, 0x17, 0x40, 0x40,
  3587. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3588. + 0x07, 0x3e, 0x45, 0x47, 0x5e, 0x40, 0x25, 0x06, 0x05, 0x20, 0x40, 0x47, 0x40, 0x40, 0x16, 0x0f,
  3589. + 0x47, 0x63, 0x40, 0x08, 0x64, 0x63, 0x62, 0x60, 0x60, 0x07, 0x07, 0x0f, 0x3e, 0x17, 0x01, 0x07,
  3590. + 0x65, 0x27, 0x4c, 0x17, 0x40, 0x07, 0x1d, 0x40, 0x40, 0x40, 0x47, 0x47, 0x56, 0x5d, 0x4e, 0x5d,
  3591. + 0x64, 0x5c, 0x56, 0x65, 0x65, 0x63, 0x56, 0x5e, 0x65, 0x65, 0x63, 0x4d, 0x46, 0x54, 0x56, 0x5d,
  3592. + 0x4e, 0x5d, 0x64, 0x5c, 0x56, 0x65, 0x65, 0x63, 0x56, 0x5e, 0x65, 0x65, 0x63, 0x4d, 0x46, 0x54,
  3593. + 0x09, 0x4f, 0x52, 0x40, 0x40, 0x40, 0x47, 0x07, 0x47, 0x46, 0x46, 0x62, 0x4e, 0x1f, 0x16, 0x4f,
  3594. + 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x1f, 0x16, 0x4f, 0x10, 0x07, 0x40, 0x40,
  3595. + 0x07, 0x00, 0x00, 0x01, 0x09, 0x01, 0x09, 0x17, 0x17, 0x16, 0x4f, 0x17, 0x16, 0x4f, 0x40, 0x40,
  3596. + 0x40, 0x2d, 0x17, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x1e, 0x20, 0x27, 0x10, 0x07, 0x09, 0x10, 0x01,
  3597. + 0x07, 0x3e, 0x1f, 0x17, 0x40, 0x0f, 0x17, 0x1e, 0x45, 0x17, 0x44, 0x45, 0x45, 0x17, 0x40, 0x40,
  3598. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3599. + 0x07, 0x3e, 0x44, 0x46, 0x5d, 0x40, 0x24, 0x05, 0x04, 0x21, 0x40, 0x46, 0x40, 0x40, 0x15, 0x0f,
  3600. + 0x46, 0x61, 0x40, 0x09, 0x63, 0x61, 0x60, 0x5e, 0x5e, 0x07, 0x07, 0x0e, 0x3e, 0x16, 0x02, 0x07,
  3601. + 0x64, 0x27, 0x4b, 0x16, 0x40, 0x06, 0x1c, 0x40, 0x40, 0x40, 0x46, 0x46, 0x55, 0x5c, 0x4d, 0x5c,
  3602. + 0x63, 0x5b, 0x55, 0x64, 0x64, 0x61, 0x55, 0x5d, 0x64, 0x64, 0x61, 0x4c, 0x45, 0x53, 0x55, 0x5c,
  3603. + 0x4d, 0x5c, 0x63, 0x5b, 0x55, 0x64, 0x64, 0x61, 0x55, 0x5d, 0x64, 0x64, 0x61, 0x4c, 0x45, 0x53,
  3604. + 0x0a, 0x4e, 0x50, 0x40, 0x41, 0x40, 0x46, 0x07, 0x46, 0x45, 0x45, 0x60, 0x4d, 0x1e, 0x15, 0x4e,
  3605. + 0x11, 0x07, 0x40, 0x1e, 0x15, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x15, 0x4e, 0x11, 0x07, 0x40, 0x41,
  3606. + 0x07, 0x01, 0x01, 0x02, 0x0a, 0x02, 0x0a, 0x16, 0x17, 0x15, 0x4e, 0x17, 0x15, 0x4e, 0x40, 0x40,
  3607. + 0x40, 0x2c, 0x16, 0x16, 0x40, 0x0f, 0x16, 0x1d, 0x1d, 0x21, 0x27, 0x11, 0x07, 0x0a, 0x11, 0x02,
  3608. + 0x06, 0x3e, 0x1e, 0x16, 0x40, 0x0f, 0x16, 0x1d, 0x44, 0x16, 0x43, 0x44, 0x44, 0x16, 0x40, 0x40,
  3609. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3610. + 0x07, 0x3e, 0x43, 0x46, 0x5c, 0x40, 0x23, 0x04, 0x03, 0x21, 0x40, 0x46, 0x40, 0x40, 0x14, 0x0f,
  3611. + 0x46, 0x60, 0x40, 0x09, 0x61, 0x60, 0x5e, 0x5b, 0x5b, 0x07, 0x07, 0x0e, 0x3e, 0x16, 0x03, 0x07,
  3612. + 0x63, 0x27, 0x49, 0x16, 0x40, 0x06, 0x1b, 0x40, 0x40, 0x40, 0x46, 0x46, 0x54, 0x5b, 0x4c, 0x5b,
  3613. + 0x61, 0x59, 0x54, 0x63, 0x63, 0x60, 0x54, 0x5c, 0x63, 0x63, 0x60, 0x4b, 0x44, 0x51, 0x54, 0x5b,
  3614. + 0x4c, 0x5b, 0x61, 0x59, 0x54, 0x63, 0x63, 0x60, 0x54, 0x5c, 0x63, 0x63, 0x60, 0x4b, 0x44, 0x51,
  3615. + 0x0b, 0x4e, 0x4e, 0x40, 0x41, 0x40, 0x46, 0x07, 0x46, 0x44, 0x44, 0x5e, 0x4c, 0x1e, 0x14, 0x4e,
  3616. + 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x41,
  3617. + 0x07, 0x01, 0x01, 0x03, 0x0b, 0x03, 0x0b, 0x16, 0x17, 0x14, 0x4e, 0x17, 0x14, 0x4e, 0x40, 0x40,
  3618. + 0x40, 0x2b, 0x16, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x1c, 0x21, 0x27, 0x11, 0x07, 0x0b, 0x11, 0x03,
  3619. + 0x06, 0x3e, 0x1e, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x43, 0x16, 0x41, 0x43, 0x43, 0x16, 0x40, 0x40,
  3620. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3621. + 0x07, 0x3e, 0x42, 0x46, 0x5c, 0x40, 0x22, 0x04, 0x02, 0x21, 0x40, 0x46, 0x40, 0x40, 0x14, 0x0f,
  3622. + 0x46, 0x5e, 0x40, 0x09, 0x60, 0x5e, 0x5c, 0x59, 0x59, 0x07, 0x07, 0x0e, 0x3e, 0x16, 0x03, 0x07,
  3623. + 0x62, 0x27, 0x48, 0x16, 0x40, 0x06, 0x1a, 0x40, 0x40, 0x40, 0x46, 0x46, 0x54, 0x5a, 0x4c, 0x5a,
  3624. + 0x60, 0x58, 0x54, 0x62, 0x62, 0x5e, 0x54, 0x5c, 0x62, 0x62, 0x5e, 0x4a, 0x44, 0x50, 0x54, 0x5a,
  3625. + 0x4c, 0x5a, 0x60, 0x58, 0x54, 0x62, 0x62, 0x5e, 0x54, 0x5c, 0x62, 0x62, 0x5e, 0x4a, 0x44, 0x50,
  3626. + 0x0b, 0x4e, 0x4c, 0x40, 0x41, 0x40, 0x46, 0x07, 0x46, 0x44, 0x44, 0x5c, 0x4c, 0x1e, 0x14, 0x4e,
  3627. + 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x1e, 0x14, 0x4e, 0x11, 0x07, 0x40, 0x41,
  3628. + 0x07, 0x01, 0x01, 0x03, 0x0b, 0x03, 0x0b, 0x16, 0x17, 0x14, 0x4e, 0x17, 0x14, 0x4e, 0x40, 0x40,
  3629. + 0x40, 0x2a, 0x16, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x1c, 0x21, 0x27, 0x11, 0x07, 0x0b, 0x11, 0x03,
  3630. + 0x06, 0x3e, 0x1e, 0x16, 0x40, 0x0f, 0x16, 0x1c, 0x42, 0x16, 0x40, 0x42, 0x42, 0x16, 0x40, 0x40,
  3631. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3632. + 0x07, 0x3e, 0x41, 0x45, 0x5b, 0x40, 0x21, 0x03, 0x01, 0x22, 0x40, 0x45, 0x40, 0x40, 0x13, 0x0f,
  3633. + 0x45, 0x5d, 0x40, 0x0a, 0x5f, 0x5d, 0x5a, 0x56, 0x56, 0x07, 0x07, 0x0d, 0x3e, 0x15, 0x04, 0x07,
  3634. + 0x61, 0x27, 0x47, 0x15, 0x40, 0x05, 0x19, 0x40, 0x40, 0x40, 0x45, 0x45, 0x53, 0x59, 0x4b, 0x59,
  3635. + 0x5f, 0x57, 0x53, 0x61, 0x61, 0x5d, 0x53, 0x5b, 0x61, 0x61, 0x5d, 0x49, 0x43, 0x4f, 0x53, 0x59,
  3636. + 0x4b, 0x59, 0x5f, 0x57, 0x53, 0x61, 0x61, 0x5d, 0x53, 0x5b, 0x61, 0x61, 0x5d, 0x49, 0x43, 0x4f,
  3637. + 0x0c, 0x4d, 0x4a, 0x40, 0x42, 0x40, 0x45, 0x07, 0x45, 0x43, 0x43, 0x5a, 0x4b, 0x1d, 0x13, 0x4d,
  3638. + 0x12, 0x07, 0x40, 0x1d, 0x13, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x13, 0x4d, 0x12, 0x07, 0x40, 0x42,
  3639. + 0x07, 0x02, 0x02, 0x04, 0x0c, 0x04, 0x0c, 0x15, 0x17, 0x13, 0x4d, 0x17, 0x13, 0x4d, 0x40, 0x40,
  3640. + 0x40, 0x29, 0x15, 0x15, 0x40, 0x0f, 0x15, 0x1b, 0x1b, 0x22, 0x27, 0x12, 0x07, 0x0c, 0x12, 0x04,
  3641. + 0x05, 0x3e, 0x1d, 0x15, 0x40, 0x0f, 0x15, 0x1b, 0x41, 0x15, 0x00, 0x41, 0x41, 0x15, 0x40, 0x40,
  3642. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3643. + 0x07, 0x3e, 0x40, 0x45, 0x5b, 0x40, 0x20, 0x02, 0x00, 0x22, 0x40, 0x45, 0x40, 0x40, 0x12, 0x0f,
  3644. + 0x45, 0x5b, 0x40, 0x0a, 0x5e, 0x5b, 0x59, 0x54, 0x54, 0x07, 0x07, 0x0d, 0x3e, 0x15, 0x04, 0x07,
  3645. + 0x60, 0x27, 0x46, 0x15, 0x40, 0x05, 0x18, 0x40, 0x40, 0x40, 0x45, 0x45, 0x53, 0x58, 0x4b, 0x58,
  3646. + 0x5e, 0x56, 0x53, 0x60, 0x60, 0x5b, 0x53, 0x5b, 0x60, 0x60, 0x5b, 0x48, 0x43, 0x4e, 0x53, 0x58,
  3647. + 0x4b, 0x58, 0x5e, 0x56, 0x53, 0x60, 0x60, 0x5b, 0x53, 0x5b, 0x60, 0x60, 0x5b, 0x48, 0x43, 0x4e,
  3648. + 0x0c, 0x4d, 0x49, 0x40, 0x42, 0x40, 0x45, 0x07, 0x45, 0x43, 0x43, 0x59, 0x4b, 0x1d, 0x12, 0x4d,
  3649. + 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x42,
  3650. + 0x07, 0x02, 0x02, 0x04, 0x0c, 0x04, 0x0c, 0x15, 0x17, 0x12, 0x4d, 0x17, 0x12, 0x4d, 0x40, 0x40,
  3651. + 0x40, 0x28, 0x15, 0x15, 0x40, 0x0f, 0x15, 0x1a, 0x1a, 0x22, 0x27, 0x12, 0x07, 0x0c, 0x12, 0x04,
  3652. + 0x05, 0x3e, 0x1d, 0x15, 0x40, 0x0f, 0x15, 0x1a, 0x40, 0x15, 0x01, 0x40, 0x40, 0x15, 0x40, 0x40,
  3653. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3654. + 0x07, 0x3e, 0x00, 0x45, 0x5a, 0x40, 0x1f, 0x02, 0x40, 0x22, 0x40, 0x45, 0x40, 0x40, 0x12, 0x0f,
  3655. + 0x45, 0x59, 0x40, 0x0a, 0x5c, 0x59, 0x57, 0x51, 0x51, 0x07, 0x07, 0x0d, 0x3e, 0x15, 0x05, 0x07,
  3656. + 0x5f, 0x27, 0x44, 0x15, 0x40, 0x05, 0x17, 0x40, 0x40, 0x40, 0x45, 0x45, 0x52, 0x57, 0x4a, 0x57,
  3657. + 0x5c, 0x54, 0x52, 0x5f, 0x5f, 0x59, 0x52, 0x5a, 0x5f, 0x5f, 0x59, 0x47, 0x42, 0x4c, 0x52, 0x57,
  3658. + 0x4a, 0x57, 0x5c, 0x54, 0x52, 0x5f, 0x5f, 0x59, 0x52, 0x5a, 0x5f, 0x5f, 0x59, 0x47, 0x42, 0x4c,
  3659. + 0x0d, 0x4d, 0x47, 0x40, 0x42, 0x40, 0x45, 0x07, 0x45, 0x42, 0x42, 0x57, 0x4a, 0x1d, 0x12, 0x4d,
  3660. + 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x1d, 0x12, 0x4d, 0x12, 0x07, 0x40, 0x42,
  3661. + 0x07, 0x02, 0x02, 0x05, 0x0d, 0x05, 0x0d, 0x15, 0x17, 0x12, 0x4d, 0x17, 0x12, 0x4d, 0x40, 0x40,
  3662. + 0x40, 0x27, 0x15, 0x15, 0x40, 0x0f, 0x15, 0x1a, 0x1a, 0x22, 0x27, 0x12, 0x07, 0x0d, 0x12, 0x05,
  3663. + 0x05, 0x3e, 0x1d, 0x15, 0x40, 0x0f, 0x15, 0x1a, 0x00, 0x15, 0x03, 0x00, 0x00, 0x15, 0x40, 0x40,
  3664. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3665. + 0x07, 0x3e, 0x01, 0x44, 0x59, 0x40, 0x1e, 0x01, 0x41, 0x23, 0x40, 0x44, 0x40, 0x40, 0x11, 0x0f,
  3666. + 0x44, 0x58, 0x40, 0x0b, 0x5b, 0x58, 0x55, 0x4f, 0x4f, 0x07, 0x07, 0x0c, 0x3e, 0x14, 0x06, 0x07,
  3667. + 0x5e, 0x27, 0x43, 0x14, 0x40, 0x04, 0x16, 0x40, 0x40, 0x40, 0x44, 0x44, 0x51, 0x56, 0x49, 0x56,
  3668. + 0x5b, 0x53, 0x51, 0x5e, 0x5e, 0x58, 0x51, 0x59, 0x5e, 0x5e, 0x58, 0x46, 0x41, 0x4b, 0x51, 0x56,
  3669. + 0x49, 0x56, 0x5b, 0x53, 0x51, 0x5e, 0x5e, 0x58, 0x51, 0x59, 0x5e, 0x5e, 0x58, 0x46, 0x41, 0x4b,
  3670. + 0x0e, 0x4c, 0x45, 0x40, 0x43, 0x40, 0x44, 0x07, 0x44, 0x41, 0x41, 0x55, 0x49, 0x1c, 0x11, 0x4c,
  3671. + 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x43,
  3672. + 0x07, 0x03, 0x03, 0x06, 0x0e, 0x06, 0x0e, 0x14, 0x17, 0x11, 0x4c, 0x17, 0x11, 0x4c, 0x40, 0x40,
  3673. + 0x40, 0x26, 0x14, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x19, 0x23, 0x27, 0x13, 0x07, 0x0e, 0x13, 0x06,
  3674. + 0x04, 0x3e, 0x1c, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x01, 0x14, 0x04, 0x01, 0x01, 0x14, 0x40, 0x40,
  3675. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3676. + 0x07, 0x3e, 0x02, 0x44, 0x59, 0x40, 0x1d, 0x01, 0x42, 0x23, 0x40, 0x44, 0x40, 0x40, 0x11, 0x0f,
  3677. + 0x44, 0x56, 0x40, 0x0b, 0x5a, 0x56, 0x53, 0x4c, 0x4c, 0x07, 0x07, 0x0c, 0x3e, 0x14, 0x06, 0x07,
  3678. + 0x5d, 0x27, 0x42, 0x14, 0x40, 0x04, 0x15, 0x40, 0x40, 0x40, 0x44, 0x44, 0x51, 0x55, 0x49, 0x55,
  3679. + 0x5a, 0x52, 0x51, 0x5d, 0x5d, 0x56, 0x51, 0x59, 0x5d, 0x5d, 0x56, 0x45, 0x41, 0x4a, 0x51, 0x55,
  3680. + 0x49, 0x55, 0x5a, 0x52, 0x51, 0x5d, 0x5d, 0x56, 0x51, 0x59, 0x5d, 0x5d, 0x56, 0x45, 0x41, 0x4a,
  3681. + 0x0e, 0x4c, 0x43, 0x40, 0x43, 0x40, 0x44, 0x07, 0x44, 0x41, 0x41, 0x53, 0x49, 0x1c, 0x11, 0x4c,
  3682. + 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x11, 0x4c, 0x13, 0x07, 0x40, 0x43,
  3683. + 0x07, 0x03, 0x03, 0x06, 0x0e, 0x06, 0x0e, 0x14, 0x17, 0x11, 0x4c, 0x17, 0x11, 0x4c, 0x40, 0x40,
  3684. + 0x40, 0x25, 0x14, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x19, 0x23, 0x27, 0x13, 0x07, 0x0e, 0x13, 0x06,
  3685. + 0x04, 0x3e, 0x1c, 0x14, 0x40, 0x0f, 0x14, 0x19, 0x02, 0x14, 0x05, 0x02, 0x02, 0x14, 0x40, 0x40,
  3686. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3687. + 0x07, 0x3e, 0x03, 0x44, 0x58, 0x40, 0x1c, 0x00, 0x43, 0x23, 0x40, 0x44, 0x40, 0x40, 0x10, 0x0f,
  3688. + 0x44, 0x55, 0x40, 0x0b, 0x59, 0x55, 0x51, 0x4a, 0x4a, 0x07, 0x07, 0x0c, 0x3d, 0x14, 0x07, 0x07,
  3689. + 0x5c, 0x27, 0x41, 0x14, 0x40, 0x04, 0x14, 0x40, 0x40, 0x40, 0x44, 0x44, 0x50, 0x54, 0x48, 0x54,
  3690. + 0x59, 0x51, 0x50, 0x5c, 0x5c, 0x55, 0x50, 0x58, 0x5c, 0x5c, 0x55, 0x44, 0x40, 0x49, 0x50, 0x54,
  3691. + 0x48, 0x54, 0x59, 0x51, 0x50, 0x5c, 0x5c, 0x55, 0x50, 0x58, 0x5c, 0x5c, 0x55, 0x44, 0x40, 0x49,
  3692. + 0x0f, 0x4c, 0x41, 0x40, 0x43, 0x40, 0x44, 0x07, 0x44, 0x40, 0x40, 0x51, 0x48, 0x1c, 0x10, 0x4c,
  3693. + 0x13, 0x07, 0x40, 0x1c, 0x10, 0x4c, 0x13, 0x07, 0x40, 0x1c, 0x10, 0x4c, 0x13, 0x07, 0x40, 0x43,
  3694. + 0x07, 0x03, 0x03, 0x07, 0x0f, 0x07, 0x0f, 0x14, 0x17, 0x10, 0x4c, 0x17, 0x10, 0x4c, 0x40, 0x40,
  3695. + 0x40, 0x24, 0x14, 0x14, 0x40, 0x0f, 0x14, 0x18, 0x18, 0x23, 0x27, 0x13, 0x07, 0x0f, 0x13, 0x07,
  3696. + 0x04, 0x3e, 0x1c, 0x14, 0x40, 0x0f, 0x14, 0x18, 0x03, 0x14, 0x06, 0x03, 0x03, 0x14, 0x40, 0x40,
  3697. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3698. + 0x07, 0x3e, 0x04, 0x43, 0x57, 0x40, 0x1b, 0x40, 0x44, 0x24, 0x40, 0x43, 0x40, 0x40, 0x0f, 0x0f,
  3699. + 0x43, 0x53, 0x40, 0x0c, 0x57, 0x53, 0x4f, 0x47, 0x47, 0x07, 0x07, 0x0b, 0x3b, 0x13, 0x08, 0x07,
  3700. + 0x5b, 0x27, 0x00, 0x13, 0x40, 0x03, 0x13, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4f, 0x53, 0x47, 0x53,
  3701. + 0x57, 0x4f, 0x4f, 0x5b, 0x5b, 0x53, 0x4f, 0x57, 0x5b, 0x5b, 0x53, 0x43, 0x00, 0x47, 0x4f, 0x53,
  3702. + 0x47, 0x53, 0x57, 0x4f, 0x4f, 0x5b, 0x5b, 0x53, 0x4f, 0x57, 0x5b, 0x5b, 0x53, 0x43, 0x00, 0x47,
  3703. + 0x10, 0x4b, 0x00, 0x40, 0x44, 0x40, 0x43, 0x07, 0x43, 0x00, 0x00, 0x4f, 0x47, 0x1b, 0x0f, 0x4b,
  3704. + 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x44,
  3705. + 0x07, 0x04, 0x04, 0x08, 0x10, 0x08, 0x10, 0x13, 0x17, 0x0f, 0x4b, 0x17, 0x0f, 0x4b, 0x40, 0x40,
  3706. + 0x40, 0x23, 0x13, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x17, 0x24, 0x27, 0x14, 0x07, 0x10, 0x14, 0x08,
  3707. + 0x03, 0x3e, 0x1b, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x04, 0x13, 0x08, 0x04, 0x04, 0x13, 0x40, 0x40,
  3708. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3709. + 0x07, 0x3e, 0x05, 0x43, 0x57, 0x40, 0x1a, 0x40, 0x45, 0x24, 0x40, 0x43, 0x40, 0x40, 0x0f, 0x0f,
  3710. + 0x43, 0x52, 0x40, 0x0c, 0x56, 0x52, 0x4d, 0x45, 0x45, 0x07, 0x07, 0x0b, 0x3a, 0x13, 0x08, 0x07,
  3711. + 0x5a, 0x27, 0x01, 0x13, 0x40, 0x03, 0x12, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4f, 0x52, 0x47, 0x52,
  3712. + 0x56, 0x4e, 0x4f, 0x5a, 0x5a, 0x52, 0x4f, 0x57, 0x5a, 0x5a, 0x52, 0x42, 0x00, 0x46, 0x4f, 0x52,
  3713. + 0x47, 0x52, 0x56, 0x4e, 0x4f, 0x5a, 0x5a, 0x52, 0x4f, 0x57, 0x5a, 0x5a, 0x52, 0x42, 0x00, 0x46,
  3714. + 0x10, 0x4b, 0x02, 0x40, 0x44, 0x40, 0x43, 0x07, 0x43, 0x00, 0x00, 0x4d, 0x47, 0x1b, 0x0f, 0x4b,
  3715. + 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0f, 0x4b, 0x14, 0x07, 0x40, 0x44,
  3716. + 0x07, 0x04, 0x04, 0x08, 0x10, 0x08, 0x10, 0x13, 0x17, 0x0f, 0x4b, 0x17, 0x0f, 0x4b, 0x40, 0x40,
  3717. + 0x40, 0x22, 0x13, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x17, 0x24, 0x27, 0x14, 0x07, 0x10, 0x14, 0x08,
  3718. + 0x03, 0x3e, 0x1b, 0x13, 0x40, 0x0f, 0x13, 0x17, 0x05, 0x13, 0x09, 0x05, 0x05, 0x13, 0x40, 0x40,
  3719. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3720. + 0x07, 0x3e, 0x06, 0x43, 0x56, 0x40, 0x19, 0x41, 0x46, 0x24, 0x40, 0x43, 0x40, 0x40, 0x0e, 0x0f,
  3721. + 0x43, 0x50, 0x40, 0x0c, 0x55, 0x50, 0x4b, 0x42, 0x42, 0x07, 0x07, 0x0b, 0x38, 0x13, 0x09, 0x07,
  3722. + 0x59, 0x27, 0x02, 0x13, 0x40, 0x03, 0x11, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4e, 0x51, 0x46, 0x51,
  3723. + 0x55, 0x4d, 0x4e, 0x59, 0x59, 0x50, 0x4e, 0x56, 0x59, 0x59, 0x50, 0x41, 0x01, 0x45, 0x4e, 0x51,
  3724. + 0x46, 0x51, 0x55, 0x4d, 0x4e, 0x59, 0x59, 0x50, 0x4e, 0x56, 0x59, 0x59, 0x50, 0x41, 0x01, 0x45,
  3725. + 0x11, 0x4b, 0x04, 0x40, 0x44, 0x40, 0x43, 0x07, 0x43, 0x01, 0x01, 0x4b, 0x46, 0x1b, 0x0e, 0x4b,
  3726. + 0x14, 0x07, 0x40, 0x1b, 0x0e, 0x4b, 0x14, 0x07, 0x40, 0x1b, 0x0e, 0x4b, 0x14, 0x07, 0x40, 0x44,
  3727. + 0x07, 0x04, 0x04, 0x09, 0x11, 0x09, 0x11, 0x13, 0x17, 0x0e, 0x4b, 0x17, 0x0e, 0x4b, 0x40, 0x40,
  3728. + 0x40, 0x21, 0x13, 0x13, 0x40, 0x0f, 0x13, 0x16, 0x16, 0x24, 0x27, 0x14, 0x07, 0x11, 0x14, 0x09,
  3729. + 0x03, 0x3d, 0x1b, 0x13, 0x40, 0x0f, 0x13, 0x16, 0x06, 0x13, 0x0a, 0x06, 0x06, 0x13, 0x40, 0x40,
  3730. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3731. + 0x07, 0x3e, 0x06, 0x43, 0x56, 0x40, 0x18, 0x42, 0x47, 0x24, 0x40, 0x43, 0x40, 0x40, 0x0d, 0x0f,
  3732. + 0x43, 0x4f, 0x40, 0x0c, 0x54, 0x4f, 0x4a, 0x40, 0x40, 0x07, 0x07, 0x0a, 0x36, 0x12, 0x09, 0x07,
  3733. + 0x59, 0x27, 0x03, 0x12, 0x40, 0x02, 0x10, 0x40, 0x40, 0x40, 0x43, 0x43, 0x4e, 0x51, 0x46, 0x51,
  3734. + 0x54, 0x4c, 0x4e, 0x59, 0x59, 0x4f, 0x4e, 0x56, 0x59, 0x59, 0x4f, 0x41, 0x01, 0x44, 0x4e, 0x51,
  3735. + 0x46, 0x51, 0x54, 0x4c, 0x4e, 0x59, 0x59, 0x4f, 0x4e, 0x56, 0x59, 0x59, 0x4f, 0x41, 0x01, 0x44,
  3736. + 0x11, 0x4b, 0x05, 0x40, 0x45, 0x40, 0x43, 0x07, 0x43, 0x01, 0x01, 0x4a, 0x46, 0x1a, 0x0d, 0x4b,
  3737. + 0x14, 0x07, 0x40, 0x1a, 0x0d, 0x4b, 0x14, 0x07, 0x40, 0x1a, 0x0d, 0x4b, 0x14, 0x07, 0x40, 0x45,
  3738. + 0x07, 0x04, 0x04, 0x09, 0x11, 0x09, 0x11, 0x12, 0x17, 0x0d, 0x4b, 0x17, 0x0d, 0x4b, 0x40, 0x40,
  3739. + 0x40, 0x20, 0x12, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x15, 0x24, 0x27, 0x14, 0x07, 0x11, 0x14, 0x09,
  3740. + 0x02, 0x3b, 0x1a, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x06, 0x12, 0x0b, 0x06, 0x06, 0x12, 0x40, 0x40,
  3741. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3742. + 0x07, 0x3e, 0x07, 0x42, 0x55, 0x40, 0x18, 0x42, 0x47, 0x25, 0x40, 0x42, 0x40, 0x40, 0x0d, 0x0f,
  3743. + 0x42, 0x4d, 0x40, 0x0d, 0x52, 0x4d, 0x48, 0x02, 0x02, 0x07, 0x07, 0x0a, 0x35, 0x12, 0x0a, 0x07,
  3744. + 0x58, 0x27, 0x05, 0x12, 0x40, 0x02, 0x10, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4d, 0x50, 0x45, 0x50,
  3745. + 0x52, 0x4a, 0x4d, 0x58, 0x58, 0x4d, 0x4d, 0x55, 0x58, 0x58, 0x4d, 0x40, 0x02, 0x42, 0x4d, 0x50,
  3746. + 0x45, 0x50, 0x52, 0x4a, 0x4d, 0x58, 0x58, 0x4d, 0x4d, 0x55, 0x58, 0x58, 0x4d, 0x40, 0x02, 0x42,
  3747. + 0x12, 0x4a, 0x07, 0x40, 0x45, 0x40, 0x42, 0x07, 0x42, 0x02, 0x02, 0x48, 0x45, 0x1a, 0x0d, 0x4a,
  3748. + 0x15, 0x07, 0x40, 0x1a, 0x0d, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0d, 0x4a, 0x15, 0x07, 0x40, 0x45,
  3749. + 0x07, 0x05, 0x05, 0x0a, 0x12, 0x0a, 0x12, 0x12, 0x17, 0x0d, 0x4a, 0x17, 0x0d, 0x4a, 0x40, 0x40,
  3750. + 0x40, 0x20, 0x12, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x15, 0x25, 0x27, 0x15, 0x07, 0x12, 0x15, 0x0a,
  3751. + 0x02, 0x3a, 0x1a, 0x12, 0x40, 0x0f, 0x12, 0x15, 0x07, 0x12, 0x0d, 0x07, 0x07, 0x12, 0x40, 0x40,
  3752. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3753. + 0x07, 0x3e, 0x08, 0x42, 0x54, 0x40, 0x17, 0x43, 0x48, 0x25, 0x40, 0x42, 0x40, 0x40, 0x0c, 0x0f,
  3754. + 0x42, 0x4b, 0x40, 0x0d, 0x51, 0x4b, 0x46, 0x04, 0x04, 0x07, 0x07, 0x0a, 0x33, 0x12, 0x0b, 0x07,
  3755. + 0x57, 0x27, 0x06, 0x12, 0x40, 0x02, 0x0f, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4c, 0x4f, 0x44, 0x4f,
  3756. + 0x51, 0x49, 0x4c, 0x57, 0x57, 0x4b, 0x4c, 0x54, 0x57, 0x57, 0x4b, 0x00, 0x03, 0x41, 0x4c, 0x4f,
  3757. + 0x44, 0x4f, 0x51, 0x49, 0x4c, 0x57, 0x57, 0x4b, 0x4c, 0x54, 0x57, 0x57, 0x4b, 0x00, 0x03, 0x41,
  3758. + 0x13, 0x4a, 0x09, 0x40, 0x45, 0x40, 0x42, 0x07, 0x42, 0x03, 0x03, 0x46, 0x44, 0x1a, 0x0c, 0x4a,
  3759. + 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x45,
  3760. + 0x07, 0x05, 0x05, 0x0b, 0x13, 0x0b, 0x13, 0x12, 0x17, 0x0c, 0x4a, 0x17, 0x0c, 0x4a, 0x40, 0x40,
  3761. + 0x40, 0x1f, 0x12, 0x12, 0x40, 0x0f, 0x12, 0x14, 0x14, 0x25, 0x27, 0x15, 0x07, 0x13, 0x15, 0x0b,
  3762. + 0x02, 0x39, 0x1a, 0x12, 0x40, 0x0f, 0x12, 0x14, 0x08, 0x12, 0x0e, 0x08, 0x08, 0x12, 0x40, 0x40,
  3763. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3764. + 0x07, 0x3e, 0x09, 0x42, 0x54, 0x40, 0x16, 0x43, 0x49, 0x25, 0x40, 0x42, 0x40, 0x40, 0x0c, 0x0f,
  3765. + 0x42, 0x4a, 0x40, 0x0d, 0x50, 0x4a, 0x44, 0x07, 0x07, 0x07, 0x07, 0x0a, 0x32, 0x12, 0x0b, 0x07,
  3766. + 0x56, 0x27, 0x07, 0x12, 0x40, 0x02, 0x0e, 0x40, 0x40, 0x40, 0x42, 0x42, 0x4c, 0x4e, 0x44, 0x4e,
  3767. + 0x50, 0x48, 0x4c, 0x56, 0x56, 0x4a, 0x4c, 0x54, 0x56, 0x56, 0x4a, 0x01, 0x03, 0x40, 0x4c, 0x4e,
  3768. + 0x44, 0x4e, 0x50, 0x48, 0x4c, 0x56, 0x56, 0x4a, 0x4c, 0x54, 0x56, 0x56, 0x4a, 0x01, 0x03, 0x40,
  3769. + 0x13, 0x4a, 0x0b, 0x40, 0x45, 0x40, 0x42, 0x07, 0x42, 0x03, 0x03, 0x44, 0x44, 0x1a, 0x0c, 0x4a,
  3770. + 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x1a, 0x0c, 0x4a, 0x15, 0x07, 0x40, 0x45,
  3771. + 0x07, 0x05, 0x05, 0x0b, 0x13, 0x0b, 0x13, 0x12, 0x17, 0x0c, 0x4a, 0x17, 0x0c, 0x4a, 0x40, 0x40,
  3772. + 0x40, 0x1e, 0x12, 0x12, 0x40, 0x0f, 0x12, 0x14, 0x14, 0x25, 0x27, 0x15, 0x07, 0x13, 0x15, 0x0b,
  3773. + 0x02, 0x38, 0x1a, 0x12, 0x40, 0x0f, 0x12, 0x14, 0x09, 0x12, 0x0f, 0x09, 0x09, 0x12, 0x40, 0x40,
  3774. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3775. + 0x07, 0x3e, 0x0a, 0x41, 0x53, 0x40, 0x15, 0x44, 0x4a, 0x26, 0x40, 0x41, 0x40, 0x40, 0x0b, 0x0f,
  3776. + 0x41, 0x48, 0x40, 0x0e, 0x4f, 0x48, 0x42, 0x09, 0x09, 0x07, 0x07, 0x09, 0x30, 0x11, 0x0c, 0x07,
  3777. + 0x55, 0x27, 0x08, 0x11, 0x40, 0x01, 0x0d, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4b, 0x4d, 0x43, 0x4d,
  3778. + 0x4f, 0x47, 0x4b, 0x55, 0x55, 0x48, 0x4b, 0x53, 0x55, 0x55, 0x48, 0x02, 0x04, 0x00, 0x4b, 0x4d,
  3779. + 0x43, 0x4d, 0x4f, 0x47, 0x4b, 0x55, 0x55, 0x48, 0x4b, 0x53, 0x55, 0x55, 0x48, 0x02, 0x04, 0x00,
  3780. + 0x14, 0x49, 0x0d, 0x40, 0x46, 0x40, 0x41, 0x07, 0x41, 0x04, 0x04, 0x42, 0x43, 0x19, 0x0b, 0x49,
  3781. + 0x16, 0x07, 0x40, 0x19, 0x0b, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0b, 0x49, 0x16, 0x07, 0x40, 0x46,
  3782. + 0x07, 0x06, 0x06, 0x0c, 0x14, 0x0c, 0x14, 0x11, 0x17, 0x0b, 0x49, 0x17, 0x0b, 0x49, 0x40, 0x40,
  3783. + 0x40, 0x1d, 0x11, 0x11, 0x40, 0x0f, 0x11, 0x13, 0x13, 0x26, 0x27, 0x16, 0x07, 0x14, 0x16, 0x0c,
  3784. + 0x01, 0x36, 0x19, 0x11, 0x40, 0x0f, 0x11, 0x13, 0x0a, 0x11, 0x10, 0x0a, 0x0a, 0x11, 0x40, 0x40,
  3785. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3786. + 0x07, 0x3e, 0x0b, 0x41, 0x52, 0x40, 0x14, 0x45, 0x4b, 0x26, 0x40, 0x41, 0x40, 0x40, 0x0a, 0x0f,
  3787. + 0x41, 0x47, 0x40, 0x0e, 0x4d, 0x47, 0x40, 0x0c, 0x0c, 0x07, 0x07, 0x09, 0x2f, 0x11, 0x0d, 0x07,
  3788. + 0x54, 0x27, 0x0a, 0x11, 0x40, 0x01, 0x0c, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4a, 0x4c, 0x42, 0x4c,
  3789. + 0x4d, 0x45, 0x4a, 0x54, 0x54, 0x47, 0x4a, 0x52, 0x54, 0x54, 0x47, 0x03, 0x05, 0x02, 0x4a, 0x4c,
  3790. + 0x42, 0x4c, 0x4d, 0x45, 0x4a, 0x54, 0x54, 0x47, 0x4a, 0x52, 0x54, 0x54, 0x47, 0x03, 0x05, 0x02,
  3791. + 0x15, 0x49, 0x0f, 0x40, 0x46, 0x40, 0x41, 0x07, 0x41, 0x05, 0x05, 0x40, 0x42, 0x19, 0x0a, 0x49,
  3792. + 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x46,
  3793. + 0x07, 0x06, 0x06, 0x0d, 0x15, 0x0d, 0x15, 0x11, 0x17, 0x0a, 0x49, 0x17, 0x0a, 0x49, 0x40, 0x40,
  3794. + 0x40, 0x1c, 0x11, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x12, 0x26, 0x27, 0x16, 0x07, 0x15, 0x16, 0x0d,
  3795. + 0x01, 0x35, 0x19, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x0b, 0x11, 0x12, 0x0b, 0x0b, 0x11, 0x40, 0x40,
  3796. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3797. + 0x07, 0x3e, 0x0c, 0x41, 0x52, 0x40, 0x13, 0x45, 0x4c, 0x26, 0x40, 0x41, 0x40, 0x40, 0x0a, 0x0f,
  3798. + 0x41, 0x45, 0x40, 0x0e, 0x4c, 0x45, 0x01, 0x0e, 0x0e, 0x07, 0x07, 0x09, 0x2d, 0x11, 0x0d, 0x07,
  3799. + 0x53, 0x27, 0x0b, 0x11, 0x40, 0x01, 0x0b, 0x40, 0x40, 0x40, 0x41, 0x41, 0x4a, 0x4b, 0x42, 0x4b,
  3800. + 0x4c, 0x44, 0x4a, 0x53, 0x53, 0x45, 0x4a, 0x52, 0x53, 0x53, 0x45, 0x04, 0x05, 0x03, 0x4a, 0x4b,
  3801. + 0x42, 0x4b, 0x4c, 0x44, 0x4a, 0x53, 0x53, 0x45, 0x4a, 0x52, 0x53, 0x53, 0x45, 0x04, 0x05, 0x03,
  3802. + 0x15, 0x49, 0x11, 0x40, 0x46, 0x40, 0x41, 0x07, 0x41, 0x05, 0x05, 0x01, 0x42, 0x19, 0x0a, 0x49,
  3803. + 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x19, 0x0a, 0x49, 0x16, 0x07, 0x40, 0x46,
  3804. + 0x07, 0x06, 0x06, 0x0d, 0x15, 0x0d, 0x15, 0x11, 0x17, 0x0a, 0x49, 0x17, 0x0a, 0x49, 0x40, 0x40,
  3805. + 0x40, 0x1b, 0x11, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x12, 0x26, 0x27, 0x16, 0x07, 0x15, 0x16, 0x0d,
  3806. + 0x01, 0x34, 0x19, 0x11, 0x40, 0x0f, 0x11, 0x12, 0x0c, 0x11, 0x13, 0x0c, 0x0c, 0x11, 0x40, 0x40,
  3807. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3808. + 0x07, 0x3e, 0x0d, 0x40, 0x51, 0x40, 0x12, 0x46, 0x4d, 0x27, 0x40, 0x40, 0x40, 0x40, 0x09, 0x0f,
  3809. + 0x40, 0x44, 0x40, 0x0f, 0x4b, 0x44, 0x03, 0x11, 0x11, 0x07, 0x07, 0x08, 0x2c, 0x10, 0x0e, 0x07,
  3810. + 0x52, 0x27, 0x0c, 0x10, 0x40, 0x00, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x4a, 0x41, 0x4a,
  3811. + 0x4b, 0x43, 0x49, 0x52, 0x52, 0x44, 0x49, 0x51, 0x52, 0x52, 0x44, 0x05, 0x06, 0x04, 0x49, 0x4a,
  3812. + 0x41, 0x4a, 0x4b, 0x43, 0x49, 0x52, 0x52, 0x44, 0x49, 0x51, 0x52, 0x52, 0x44, 0x05, 0x06, 0x04,
  3813. + 0x16, 0x48, 0x13, 0x40, 0x47, 0x40, 0x40, 0x07, 0x40, 0x06, 0x06, 0x03, 0x41, 0x18, 0x09, 0x48,
  3814. + 0x17, 0x07, 0x40, 0x18, 0x09, 0x48, 0x17, 0x07, 0x40, 0x18, 0x09, 0x48, 0x17, 0x07, 0x40, 0x47,
  3815. + 0x07, 0x07, 0x07, 0x0e, 0x16, 0x0e, 0x16, 0x10, 0x17, 0x09, 0x48, 0x17, 0x09, 0x48, 0x40, 0x40,
  3816. + 0x40, 0x1a, 0x10, 0x10, 0x40, 0x0f, 0x10, 0x11, 0x11, 0x27, 0x27, 0x17, 0x07, 0x16, 0x17, 0x0e,
  3817. + 0x00, 0x33, 0x18, 0x10, 0x40, 0x0f, 0x10, 0x11, 0x0d, 0x10, 0x14, 0x0d, 0x0d, 0x10, 0x40, 0x40,
  3818. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3819. + 0x07, 0x3e, 0x0e, 0x40, 0x51, 0x40, 0x11, 0x47, 0x4e, 0x27, 0x40, 0x40, 0x40, 0x40, 0x08, 0x0f,
  3820. + 0x40, 0x42, 0x40, 0x0f, 0x4a, 0x42, 0x04, 0x13, 0x13, 0x07, 0x07, 0x08, 0x2a, 0x10, 0x0e, 0x07,
  3821. + 0x51, 0x27, 0x0d, 0x10, 0x40, 0x00, 0x09, 0x40, 0x40, 0x40, 0x40, 0x40, 0x49, 0x49, 0x41, 0x49,
  3822. + 0x4a, 0x42, 0x49, 0x51, 0x51, 0x42, 0x49, 0x51, 0x51, 0x51, 0x42, 0x06, 0x06, 0x05, 0x49, 0x49,
  3823. + 0x41, 0x49, 0x4a, 0x42, 0x49, 0x51, 0x51, 0x42, 0x49, 0x51, 0x51, 0x51, 0x42, 0x06, 0x06, 0x05,
  3824. + 0x16, 0x48, 0x14, 0x40, 0x47, 0x40, 0x40, 0x07, 0x40, 0x06, 0x06, 0x04, 0x41, 0x18, 0x08, 0x48,
  3825. + 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x47,
  3826. + 0x07, 0x07, 0x07, 0x0e, 0x16, 0x0e, 0x16, 0x10, 0x17, 0x08, 0x48, 0x17, 0x08, 0x48, 0x40, 0x40,
  3827. + 0x40, 0x19, 0x10, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x10, 0x27, 0x27, 0x17, 0x07, 0x16, 0x17, 0x0e,
  3828. + 0x00, 0x31, 0x18, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x0e, 0x10, 0x15, 0x0e, 0x0e, 0x10, 0x40, 0x40,
  3829. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3830. + 0x07, 0x3e, 0x0f, 0x40, 0x50, 0x40, 0x10, 0x47, 0x4f, 0x27, 0x40, 0x40, 0x40, 0x40, 0x08, 0x0f,
  3831. + 0x40, 0x40, 0x40, 0x0f, 0x48, 0x40, 0x06, 0x16, 0x16, 0x07, 0x07, 0x08, 0x28, 0x10, 0x0f, 0x07,
  3832. + 0x50, 0x27, 0x0f, 0x10, 0x40, 0x00, 0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, 0x48, 0x40, 0x48,
  3833. + 0x48, 0x40, 0x48, 0x50, 0x50, 0x40, 0x48, 0x50, 0x50, 0x50, 0x40, 0x07, 0x07, 0x07, 0x48, 0x48,
  3834. + 0x40, 0x48, 0x48, 0x40, 0x48, 0x50, 0x50, 0x40, 0x48, 0x50, 0x50, 0x50, 0x40, 0x07, 0x07, 0x07,
  3835. + 0x17, 0x48, 0x16, 0x40, 0x47, 0x40, 0x40, 0x07, 0x40, 0x07, 0x07, 0x06, 0x40, 0x18, 0x08, 0x48,
  3836. + 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x18, 0x08, 0x48, 0x17, 0x07, 0x40, 0x47,
  3837. + 0x07, 0x07, 0x07, 0x0f, 0x17, 0x0f, 0x17, 0x10, 0x17, 0x08, 0x48, 0x17, 0x08, 0x48, 0x40, 0x40,
  3838. + 0x40, 0x18, 0x10, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x10, 0x27, 0x27, 0x17, 0x07, 0x17, 0x17, 0x0f,
  3839. + 0x00, 0x30, 0x18, 0x10, 0x40, 0x0f, 0x10, 0x10, 0x0f, 0x10, 0x17, 0x0f, 0x0f, 0x10, 0x40, 0x40,
  3840. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3841. + 0x07, 0x3e, 0x10, 0x00, 0x4f, 0x40, 0x0f, 0x48, 0x50, 0x28, 0x40, 0x00, 0x40, 0x40, 0x07, 0x0f,
  3842. + 0x00, 0x00, 0x40, 0x10, 0x47, 0x00, 0x08, 0x18, 0x18, 0x07, 0x07, 0x07, 0x27, 0x0f, 0x10, 0x07,
  3843. + 0x4f, 0x27, 0x10, 0x0f, 0x40, 0x40, 0x07, 0x40, 0x40, 0x40, 0x00, 0x00, 0x47, 0x47, 0x00, 0x47,
  3844. + 0x47, 0x00, 0x47, 0x4f, 0x4f, 0x00, 0x47, 0x4f, 0x4f, 0x4f, 0x00, 0x08, 0x08, 0x08, 0x47, 0x47,
  3845. + 0x00, 0x47, 0x47, 0x00, 0x47, 0x4f, 0x4f, 0x00, 0x47, 0x4f, 0x4f, 0x4f, 0x00, 0x08, 0x08, 0x08,
  3846. + 0x18, 0x47, 0x18, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00, 0x08, 0x08, 0x08, 0x00, 0x17, 0x07, 0x47,
  3847. + 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x48,
  3848. + 0x07, 0x08, 0x08, 0x10, 0x18, 0x10, 0x18, 0x0f, 0x17, 0x07, 0x47, 0x17, 0x07, 0x47, 0x40, 0x40,
  3849. + 0x40, 0x17, 0x0f, 0x0f, 0x40, 0x0f, 0x0f, 0x0f, 0x0f, 0x28, 0x27, 0x18, 0x07, 0x18, 0x18, 0x10,
  3850. + 0x40, 0x2f, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x0f, 0x10, 0x0f, 0x18, 0x10, 0x10, 0x0f, 0x40, 0x40,
  3851. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3852. + 0x07, 0x3e, 0x11, 0x00, 0x4f, 0x40, 0x0e, 0x48, 0x51, 0x28, 0x40, 0x00, 0x40, 0x40, 0x07, 0x0f,
  3853. + 0x00, 0x02, 0x40, 0x10, 0x46, 0x02, 0x0a, 0x1b, 0x1b, 0x07, 0x07, 0x07, 0x25, 0x0f, 0x10, 0x07,
  3854. + 0x4e, 0x27, 0x11, 0x0f, 0x40, 0x40, 0x06, 0x40, 0x40, 0x40, 0x00, 0x00, 0x47, 0x46, 0x00, 0x46,
  3855. + 0x46, 0x01, 0x47, 0x4e, 0x4e, 0x02, 0x47, 0x4f, 0x4e, 0x4e, 0x02, 0x09, 0x08, 0x09, 0x47, 0x46,
  3856. + 0x00, 0x46, 0x46, 0x01, 0x47, 0x4e, 0x4e, 0x02, 0x47, 0x4f, 0x4e, 0x4e, 0x02, 0x09, 0x08, 0x09,
  3857. + 0x18, 0x47, 0x1a, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00, 0x08, 0x08, 0x0a, 0x00, 0x17, 0x07, 0x47,
  3858. + 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x17, 0x07, 0x47, 0x18, 0x07, 0x40, 0x48,
  3859. + 0x07, 0x08, 0x08, 0x10, 0x18, 0x10, 0x18, 0x0f, 0x17, 0x07, 0x47, 0x17, 0x07, 0x47, 0x40, 0x40,
  3860. + 0x40, 0x16, 0x0f, 0x0f, 0x40, 0x0f, 0x0f, 0x0f, 0x0f, 0x28, 0x27, 0x18, 0x07, 0x18, 0x18, 0x10,
  3861. + 0x40, 0x2e, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x0f, 0x11, 0x0f, 0x19, 0x11, 0x11, 0x0f, 0x40, 0x40,
  3862. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3863. + 0x07, 0x3e, 0x12, 0x00, 0x4e, 0x40, 0x0d, 0x49, 0x52, 0x28, 0x40, 0x00, 0x40, 0x40, 0x06, 0x0f,
  3864. + 0x00, 0x03, 0x40, 0x10, 0x45, 0x03, 0x0c, 0x1d, 0x1d, 0x07, 0x07, 0x07, 0x24, 0x0f, 0x11, 0x07,
  3865. + 0x4d, 0x27, 0x12, 0x0f, 0x40, 0x40, 0x05, 0x40, 0x40, 0x40, 0x00, 0x00, 0x46, 0x45, 0x01, 0x45,
  3866. + 0x45, 0x02, 0x46, 0x4d, 0x4d, 0x03, 0x46, 0x4e, 0x4d, 0x4d, 0x03, 0x0a, 0x09, 0x0a, 0x46, 0x45,
  3867. + 0x01, 0x45, 0x45, 0x02, 0x46, 0x4d, 0x4d, 0x03, 0x46, 0x4e, 0x4d, 0x4d, 0x03, 0x0a, 0x09, 0x0a,
  3868. + 0x19, 0x47, 0x1c, 0x40, 0x48, 0x40, 0x00, 0x07, 0x00, 0x09, 0x09, 0x0c, 0x01, 0x17, 0x06, 0x47,
  3869. + 0x18, 0x07, 0x40, 0x17, 0x06, 0x47, 0x18, 0x07, 0x40, 0x17, 0x06, 0x47, 0x18, 0x07, 0x40, 0x48,
  3870. + 0x07, 0x08, 0x08, 0x11, 0x19, 0x11, 0x19, 0x0f, 0x17, 0x06, 0x47, 0x17, 0x06, 0x47, 0x40, 0x40,
  3871. + 0x40, 0x15, 0x0f, 0x0f, 0x40, 0x0f, 0x0f, 0x0e, 0x0e, 0x28, 0x27, 0x18, 0x07, 0x19, 0x18, 0x11,
  3872. + 0x40, 0x2c, 0x17, 0x0f, 0x40, 0x0f, 0x0f, 0x0e, 0x12, 0x0f, 0x1a, 0x12, 0x12, 0x0f, 0x40, 0x40,
  3873. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3874. + 0x07, 0x3e, 0x13, 0x01, 0x4d, 0x40, 0x0c, 0x4a, 0x53, 0x29, 0x40, 0x01, 0x40, 0x40, 0x05, 0x0f,
  3875. + 0x01, 0x05, 0x40, 0x11, 0x43, 0x05, 0x0e, 0x20, 0x20, 0x07, 0x07, 0x06, 0x22, 0x0e, 0x12, 0x07,
  3876. + 0x4c, 0x27, 0x14, 0x0e, 0x40, 0x41, 0x04, 0x40, 0x40, 0x40, 0x01, 0x01, 0x45, 0x44, 0x02, 0x44,
  3877. + 0x43, 0x04, 0x45, 0x4c, 0x4c, 0x05, 0x45, 0x4d, 0x4c, 0x4c, 0x05, 0x0b, 0x0a, 0x0c, 0x45, 0x44,
  3878. + 0x02, 0x44, 0x43, 0x04, 0x45, 0x4c, 0x4c, 0x05, 0x45, 0x4d, 0x4c, 0x4c, 0x05, 0x0b, 0x0a, 0x0c,
  3879. + 0x1a, 0x46, 0x1e, 0x40, 0x49, 0x40, 0x01, 0x07, 0x01, 0x0a, 0x0a, 0x0e, 0x02, 0x16, 0x05, 0x46,
  3880. + 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x49,
  3881. + 0x07, 0x09, 0x09, 0x12, 0x1a, 0x12, 0x1a, 0x0e, 0x17, 0x05, 0x46, 0x17, 0x05, 0x46, 0x40, 0x40,
  3882. + 0x40, 0x14, 0x0e, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x0d, 0x29, 0x27, 0x19, 0x07, 0x1a, 0x19, 0x12,
  3883. + 0x41, 0x2b, 0x16, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x13, 0x0e, 0x1c, 0x13, 0x13, 0x0e, 0x40, 0x40,
  3884. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3885. + 0x07, 0x3e, 0x14, 0x01, 0x4d, 0x40, 0x0b, 0x4a, 0x54, 0x29, 0x40, 0x01, 0x40, 0x40, 0x05, 0x0f,
  3886. + 0x01, 0x06, 0x40, 0x11, 0x42, 0x06, 0x10, 0x22, 0x22, 0x07, 0x07, 0x06, 0x21, 0x0e, 0x12, 0x07,
  3887. + 0x4b, 0x27, 0x15, 0x0e, 0x40, 0x41, 0x03, 0x40, 0x40, 0x40, 0x01, 0x01, 0x45, 0x43, 0x02, 0x43,
  3888. + 0x42, 0x05, 0x45, 0x4b, 0x4b, 0x06, 0x45, 0x4d, 0x4b, 0x4b, 0x06, 0x0c, 0x0a, 0x0d, 0x45, 0x43,
  3889. + 0x02, 0x43, 0x42, 0x05, 0x45, 0x4b, 0x4b, 0x06, 0x45, 0x4d, 0x4b, 0x4b, 0x06, 0x0c, 0x0a, 0x0d,
  3890. + 0x1a, 0x46, 0x20, 0x40, 0x49, 0x40, 0x01, 0x07, 0x01, 0x0a, 0x0a, 0x10, 0x02, 0x16, 0x05, 0x46,
  3891. + 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x16, 0x05, 0x46, 0x19, 0x07, 0x40, 0x49,
  3892. + 0x07, 0x09, 0x09, 0x12, 0x1a, 0x12, 0x1a, 0x0e, 0x17, 0x05, 0x46, 0x17, 0x05, 0x46, 0x40, 0x40,
  3893. + 0x40, 0x13, 0x0e, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x0d, 0x29, 0x27, 0x19, 0x07, 0x1a, 0x19, 0x12,
  3894. + 0x41, 0x2a, 0x16, 0x0e, 0x40, 0x0f, 0x0e, 0x0d, 0x14, 0x0e, 0x1d, 0x14, 0x14, 0x0e, 0x40, 0x40,
  3895. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3896. + 0x07, 0x3e, 0x15, 0x01, 0x4c, 0x40, 0x0a, 0x4b, 0x55, 0x29, 0x40, 0x01, 0x40, 0x40, 0x04, 0x0f,
  3897. + 0x01, 0x08, 0x40, 0x11, 0x41, 0x08, 0x12, 0x25, 0x25, 0x07, 0x07, 0x06, 0x1f, 0x0e, 0x13, 0x07,
  3898. + 0x4a, 0x27, 0x16, 0x0e, 0x40, 0x41, 0x02, 0x40, 0x40, 0x40, 0x01, 0x01, 0x44, 0x42, 0x03, 0x42,
  3899. + 0x41, 0x06, 0x44, 0x4a, 0x4a, 0x08, 0x44, 0x4c, 0x4a, 0x4a, 0x08, 0x0d, 0x0b, 0x0e, 0x44, 0x42,
  3900. + 0x03, 0x42, 0x41, 0x06, 0x44, 0x4a, 0x4a, 0x08, 0x44, 0x4c, 0x4a, 0x4a, 0x08, 0x0d, 0x0b, 0x0e,
  3901. + 0x1b, 0x46, 0x22, 0x40, 0x49, 0x40, 0x01, 0x07, 0x01, 0x0b, 0x0b, 0x12, 0x03, 0x16, 0x04, 0x46,
  3902. + 0x19, 0x07, 0x40, 0x16, 0x04, 0x46, 0x19, 0x07, 0x40, 0x16, 0x04, 0x46, 0x19, 0x07, 0x40, 0x49,
  3903. + 0x07, 0x09, 0x09, 0x13, 0x1b, 0x13, 0x1b, 0x0e, 0x17, 0x04, 0x46, 0x17, 0x04, 0x46, 0x40, 0x40,
  3904. + 0x40, 0x12, 0x0e, 0x0e, 0x40, 0x0f, 0x0e, 0x0c, 0x0c, 0x29, 0x27, 0x19, 0x07, 0x1b, 0x19, 0x13,
  3905. + 0x41, 0x29, 0x16, 0x0e, 0x40, 0x0f, 0x0e, 0x0c, 0x15, 0x0e, 0x1e, 0x15, 0x15, 0x0e, 0x40, 0x40,
  3906. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3907. + 0x07, 0x3e, 0x15, 0x01, 0x4c, 0x40, 0x09, 0x4c, 0x56, 0x29, 0x40, 0x01, 0x40, 0x40, 0x03, 0x0f,
  3908. + 0x01, 0x09, 0x40, 0x11, 0x40, 0x09, 0x13, 0x27, 0x27, 0x07, 0x07, 0x05, 0x1d, 0x0d, 0x13, 0x07,
  3909. + 0x4a, 0x27, 0x17, 0x0d, 0x40, 0x42, 0x01, 0x40, 0x40, 0x40, 0x01, 0x01, 0x44, 0x42, 0x03, 0x42,
  3910. + 0x40, 0x07, 0x44, 0x4a, 0x4a, 0x09, 0x44, 0x4c, 0x4a, 0x4a, 0x09, 0x0d, 0x0b, 0x0f, 0x44, 0x42,
  3911. + 0x03, 0x42, 0x40, 0x07, 0x44, 0x4a, 0x4a, 0x09, 0x44, 0x4c, 0x4a, 0x4a, 0x09, 0x0d, 0x0b, 0x0f,
  3912. + 0x1b, 0x46, 0x23, 0x40, 0x4a, 0x40, 0x01, 0x07, 0x01, 0x0b, 0x0b, 0x13, 0x03, 0x15, 0x03, 0x46,
  3913. + 0x19, 0x07, 0x40, 0x15, 0x03, 0x46, 0x19, 0x07, 0x40, 0x15, 0x03, 0x46, 0x19, 0x07, 0x40, 0x4a,
  3914. + 0x07, 0x09, 0x09, 0x13, 0x1b, 0x13, 0x1b, 0x0d, 0x17, 0x03, 0x46, 0x17, 0x03, 0x46, 0x40, 0x40,
  3915. + 0x40, 0x11, 0x0d, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x0b, 0x29, 0x27, 0x19, 0x07, 0x1b, 0x19, 0x13,
  3916. + 0x42, 0x27, 0x15, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x15, 0x0d, 0x1f, 0x15, 0x15, 0x0d, 0x40, 0x40,
  3917. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3918. + 0x07, 0x3e, 0x16, 0x02, 0x4b, 0x40, 0x09, 0x4c, 0x56, 0x2a, 0x40, 0x02, 0x40, 0x40, 0x03, 0x0f,
  3919. + 0x02, 0x0b, 0x40, 0x12, 0x01, 0x0b, 0x15, 0x2a, 0x2a, 0x07, 0x07, 0x05, 0x1c, 0x0d, 0x14, 0x07,
  3920. + 0x49, 0x27, 0x19, 0x0d, 0x40, 0x42, 0x01, 0x40, 0x40, 0x40, 0x02, 0x02, 0x43, 0x41, 0x04, 0x41,
  3921. + 0x01, 0x09, 0x43, 0x49, 0x49, 0x0b, 0x43, 0x4b, 0x49, 0x49, 0x0b, 0x0e, 0x0c, 0x11, 0x43, 0x41,
  3922. + 0x04, 0x41, 0x01, 0x09, 0x43, 0x49, 0x49, 0x0b, 0x43, 0x4b, 0x49, 0x49, 0x0b, 0x0e, 0x0c, 0x11,
  3923. + 0x1c, 0x45, 0x25, 0x40, 0x4a, 0x40, 0x02, 0x07, 0x02, 0x0c, 0x0c, 0x15, 0x04, 0x15, 0x03, 0x45,
  3924. + 0x1a, 0x07, 0x40, 0x15, 0x03, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x03, 0x45, 0x1a, 0x07, 0x40, 0x4a,
  3925. + 0x07, 0x0a, 0x0a, 0x14, 0x1c, 0x14, 0x1c, 0x0d, 0x17, 0x03, 0x45, 0x17, 0x03, 0x45, 0x40, 0x40,
  3926. + 0x40, 0x11, 0x0d, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x0b, 0x2a, 0x27, 0x1a, 0x07, 0x1c, 0x1a, 0x14,
  3927. + 0x42, 0x26, 0x15, 0x0d, 0x40, 0x0f, 0x0d, 0x0b, 0x16, 0x0d, 0x21, 0x16, 0x16, 0x0d, 0x40, 0x40,
  3928. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3929. + 0x07, 0x3e, 0x17, 0x02, 0x4a, 0x40, 0x08, 0x4d, 0x57, 0x2a, 0x40, 0x02, 0x40, 0x40, 0x02, 0x0f,
  3930. + 0x02, 0x0d, 0x40, 0x12, 0x02, 0x0d, 0x17, 0x2c, 0x2c, 0x07, 0x07, 0x05, 0x1a, 0x0d, 0x15, 0x07,
  3931. + 0x48, 0x27, 0x1a, 0x0d, 0x40, 0x42, 0x00, 0x40, 0x40, 0x40, 0x02, 0x02, 0x42, 0x40, 0x05, 0x40,
  3932. + 0x02, 0x0a, 0x42, 0x48, 0x48, 0x0d, 0x42, 0x4a, 0x48, 0x48, 0x0d, 0x0f, 0x0d, 0x12, 0x42, 0x40,
  3933. + 0x05, 0x40, 0x02, 0x0a, 0x42, 0x48, 0x48, 0x0d, 0x42, 0x4a, 0x48, 0x48, 0x0d, 0x0f, 0x0d, 0x12,
  3934. + 0x1d, 0x45, 0x27, 0x40, 0x4a, 0x40, 0x02, 0x07, 0x02, 0x0d, 0x0d, 0x17, 0x05, 0x15, 0x02, 0x45,
  3935. + 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x4a,
  3936. + 0x07, 0x0a, 0x0a, 0x15, 0x1d, 0x15, 0x1d, 0x0d, 0x17, 0x02, 0x45, 0x17, 0x02, 0x45, 0x40, 0x40,
  3937. + 0x40, 0x10, 0x0d, 0x0d, 0x40, 0x0f, 0x0d, 0x0a, 0x0a, 0x2a, 0x27, 0x1a, 0x07, 0x1d, 0x1a, 0x15,
  3938. + 0x42, 0x25, 0x15, 0x0d, 0x40, 0x0f, 0x0d, 0x0a, 0x17, 0x0d, 0x22, 0x17, 0x17, 0x0d, 0x40, 0x40,
  3939. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3940. + 0x07, 0x3e, 0x18, 0x02, 0x4a, 0x40, 0x07, 0x4d, 0x58, 0x2a, 0x40, 0x02, 0x40, 0x40, 0x02, 0x0f,
  3941. + 0x02, 0x0e, 0x40, 0x12, 0x03, 0x0e, 0x19, 0x2f, 0x2f, 0x07, 0x07, 0x05, 0x19, 0x0d, 0x15, 0x07,
  3942. + 0x47, 0x27, 0x1b, 0x0d, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x42, 0x00, 0x05, 0x00,
  3943. + 0x03, 0x0b, 0x42, 0x47, 0x47, 0x0e, 0x42, 0x4a, 0x47, 0x47, 0x0e, 0x10, 0x0d, 0x13, 0x42, 0x00,
  3944. + 0x05, 0x00, 0x03, 0x0b, 0x42, 0x47, 0x47, 0x0e, 0x42, 0x4a, 0x47, 0x47, 0x0e, 0x10, 0x0d, 0x13,
  3945. + 0x1d, 0x45, 0x29, 0x40, 0x4a, 0x40, 0x02, 0x07, 0x02, 0x0d, 0x0d, 0x19, 0x05, 0x15, 0x02, 0x45,
  3946. + 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x15, 0x02, 0x45, 0x1a, 0x07, 0x40, 0x4a,
  3947. + 0x07, 0x0a, 0x0a, 0x15, 0x1d, 0x15, 0x1d, 0x0d, 0x17, 0x02, 0x45, 0x17, 0x02, 0x45, 0x40, 0x40,
  3948. + 0x40, 0x0f, 0x0d, 0x0d, 0x40, 0x0f, 0x0d, 0x0a, 0x0a, 0x2a, 0x27, 0x1a, 0x07, 0x1d, 0x1a, 0x15,
  3949. + 0x42, 0x24, 0x15, 0x0d, 0x40, 0x0f, 0x0d, 0x0a, 0x18, 0x0d, 0x23, 0x18, 0x18, 0x0d, 0x40, 0x40,
  3950. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3951. + 0x07, 0x3e, 0x19, 0x03, 0x49, 0x40, 0x06, 0x4e, 0x59, 0x2b, 0x40, 0x03, 0x40, 0x40, 0x01, 0x0f,
  3952. + 0x03, 0x10, 0x40, 0x13, 0x04, 0x10, 0x1b, 0x31, 0x31, 0x07, 0x07, 0x04, 0x17, 0x0c, 0x16, 0x07,
  3953. + 0x46, 0x27, 0x1c, 0x0c, 0x40, 0x43, 0x41, 0x40, 0x40, 0x40, 0x03, 0x03, 0x41, 0x01, 0x06, 0x01,
  3954. + 0x04, 0x0c, 0x41, 0x46, 0x46, 0x10, 0x41, 0x49, 0x46, 0x46, 0x10, 0x11, 0x0e, 0x14, 0x41, 0x01,
  3955. + 0x06, 0x01, 0x04, 0x0c, 0x41, 0x46, 0x46, 0x10, 0x41, 0x49, 0x46, 0x46, 0x10, 0x11, 0x0e, 0x14,
  3956. + 0x1e, 0x44, 0x2b, 0x40, 0x4b, 0x40, 0x03, 0x07, 0x03, 0x0e, 0x0e, 0x1b, 0x06, 0x14, 0x01, 0x44,
  3957. + 0x1b, 0x07, 0x40, 0x14, 0x01, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x01, 0x44, 0x1b, 0x07, 0x40, 0x4b,
  3958. + 0x07, 0x0b, 0x0b, 0x16, 0x1e, 0x16, 0x1e, 0x0c, 0x17, 0x01, 0x44, 0x17, 0x01, 0x44, 0x40, 0x40,
  3959. + 0x40, 0x0e, 0x0c, 0x0c, 0x40, 0x0f, 0x0c, 0x09, 0x09, 0x2b, 0x27, 0x1b, 0x07, 0x1e, 0x1b, 0x16,
  3960. + 0x43, 0x22, 0x14, 0x0c, 0x40, 0x0f, 0x0c, 0x09, 0x19, 0x0c, 0x24, 0x19, 0x19, 0x0c, 0x40, 0x40,
  3961. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3962. + 0x07, 0x3e, 0x1a, 0x03, 0x48, 0x40, 0x05, 0x4f, 0x5a, 0x2b, 0x40, 0x03, 0x40, 0x40, 0x00, 0x0f,
  3963. + 0x03, 0x11, 0x40, 0x13, 0x06, 0x11, 0x1d, 0x34, 0x34, 0x07, 0x07, 0x04, 0x16, 0x0c, 0x17, 0x07,
  3964. + 0x45, 0x27, 0x1e, 0x0c, 0x40, 0x43, 0x42, 0x40, 0x40, 0x40, 0x03, 0x03, 0x40, 0x02, 0x07, 0x02,
  3965. + 0x06, 0x0e, 0x40, 0x45, 0x45, 0x11, 0x40, 0x48, 0x45, 0x45, 0x11, 0x12, 0x0f, 0x16, 0x40, 0x02,
  3966. + 0x07, 0x02, 0x06, 0x0e, 0x40, 0x45, 0x45, 0x11, 0x40, 0x48, 0x45, 0x45, 0x11, 0x12, 0x0f, 0x16,
  3967. + 0x1f, 0x44, 0x2d, 0x40, 0x4b, 0x40, 0x03, 0x07, 0x03, 0x0f, 0x0f, 0x1d, 0x07, 0x14, 0x00, 0x44,
  3968. + 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x4b,
  3969. + 0x07, 0x0b, 0x0b, 0x17, 0x1f, 0x17, 0x1f, 0x0c, 0x17, 0x00, 0x44, 0x17, 0x00, 0x44, 0x40, 0x40,
  3970. + 0x40, 0x0d, 0x0c, 0x0c, 0x40, 0x0f, 0x0c, 0x08, 0x08, 0x2b, 0x27, 0x1b, 0x07, 0x1f, 0x1b, 0x17,
  3971. + 0x43, 0x21, 0x14, 0x0c, 0x40, 0x0f, 0x0c, 0x08, 0x1a, 0x0c, 0x26, 0x1a, 0x1a, 0x0c, 0x40, 0x40,
  3972. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3973. + 0x07, 0x3e, 0x1b, 0x03, 0x48, 0x40, 0x04, 0x4f, 0x5b, 0x2b, 0x40, 0x03, 0x40, 0x40, 0x00, 0x0f,
  3974. + 0x03, 0x13, 0x40, 0x13, 0x07, 0x13, 0x1f, 0x36, 0x36, 0x07, 0x07, 0x04, 0x14, 0x0c, 0x17, 0x07,
  3975. + 0x44, 0x27, 0x1f, 0x0c, 0x40, 0x43, 0x43, 0x40, 0x40, 0x40, 0x03, 0x03, 0x40, 0x03, 0x07, 0x03,
  3976. + 0x07, 0x0f, 0x40, 0x44, 0x44, 0x13, 0x40, 0x48, 0x44, 0x44, 0x13, 0x13, 0x0f, 0x17, 0x40, 0x03,
  3977. + 0x07, 0x03, 0x07, 0x0f, 0x40, 0x44, 0x44, 0x13, 0x40, 0x48, 0x44, 0x44, 0x13, 0x13, 0x0f, 0x17,
  3978. + 0x1f, 0x44, 0x2f, 0x40, 0x4b, 0x40, 0x03, 0x07, 0x03, 0x0f, 0x0f, 0x1f, 0x07, 0x14, 0x00, 0x44,
  3979. + 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x14, 0x00, 0x44, 0x1b, 0x07, 0x40, 0x4b,
  3980. + 0x07, 0x0b, 0x0b, 0x17, 0x1f, 0x17, 0x1f, 0x0c, 0x17, 0x00, 0x44, 0x17, 0x00, 0x44, 0x40, 0x40,
  3981. + 0x40, 0x0c, 0x0c, 0x0c, 0x40, 0x0f, 0x0c, 0x08, 0x08, 0x2b, 0x27, 0x1b, 0x07, 0x1f, 0x1b, 0x17,
  3982. + 0x43, 0x20, 0x14, 0x0c, 0x40, 0x0f, 0x0c, 0x08, 0x1b, 0x0c, 0x27, 0x1b, 0x1b, 0x0c, 0x40, 0x40,
  3983. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3984. + 0x07, 0x3e, 0x1c, 0x04, 0x47, 0x40, 0x03, 0x50, 0x5c, 0x2c, 0x40, 0x04, 0x40, 0x40, 0x40, 0x0f,
  3985. + 0x04, 0x14, 0x40, 0x14, 0x08, 0x14, 0x21, 0x39, 0x39, 0x07, 0x07, 0x03, 0x13, 0x0b, 0x18, 0x07,
  3986. + 0x43, 0x27, 0x20, 0x0b, 0x40, 0x44, 0x44, 0x40, 0x40, 0x40, 0x04, 0x04, 0x00, 0x04, 0x08, 0x04,
  3987. + 0x08, 0x10, 0x00, 0x43, 0x43, 0x14, 0x00, 0x47, 0x43, 0x43, 0x14, 0x14, 0x10, 0x18, 0x00, 0x04,
  3988. + 0x08, 0x04, 0x08, 0x10, 0x00, 0x43, 0x43, 0x14, 0x00, 0x47, 0x43, 0x43, 0x14, 0x14, 0x10, 0x18,
  3989. + 0x20, 0x43, 0x31, 0x40, 0x4c, 0x40, 0x04, 0x07, 0x04, 0x10, 0x10, 0x21, 0x08, 0x13, 0x40, 0x43,
  3990. + 0x1c, 0x07, 0x40, 0x13, 0x40, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x40, 0x43, 0x1c, 0x07, 0x40, 0x4c,
  3991. + 0x07, 0x0c, 0x0c, 0x18, 0x20, 0x18, 0x20, 0x0b, 0x17, 0x40, 0x43, 0x17, 0x40, 0x43, 0x40, 0x40,
  3992. + 0x40, 0x0b, 0x0b, 0x0b, 0x40, 0x0f, 0x0b, 0x07, 0x07, 0x2c, 0x27, 0x1c, 0x07, 0x20, 0x1c, 0x18,
  3993. + 0x44, 0x1f, 0x13, 0x0b, 0x40, 0x0f, 0x0b, 0x07, 0x1c, 0x0b, 0x28, 0x1c, 0x1c, 0x0b, 0x40, 0x40,
  3994. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3995. + 0x07, 0x3e, 0x1d, 0x04, 0x47, 0x40, 0x02, 0x51, 0x5d, 0x2c, 0x40, 0x04, 0x40, 0x40, 0x41, 0x0f,
  3996. + 0x04, 0x16, 0x40, 0x14, 0x09, 0x16, 0x22, 0x3b, 0x3b, 0x07, 0x07, 0x03, 0x11, 0x0b, 0x18, 0x07,
  3997. + 0x42, 0x27, 0x21, 0x0b, 0x40, 0x44, 0x45, 0x40, 0x40, 0x40, 0x04, 0x04, 0x00, 0x05, 0x08, 0x05,
  3998. + 0x09, 0x11, 0x00, 0x42, 0x42, 0x16, 0x00, 0x47, 0x42, 0x42, 0x16, 0x15, 0x10, 0x19, 0x00, 0x05,
  3999. + 0x08, 0x05, 0x09, 0x11, 0x00, 0x42, 0x42, 0x16, 0x00, 0x47, 0x42, 0x42, 0x16, 0x15, 0x10, 0x19,
  4000. + 0x20, 0x43, 0x32, 0x40, 0x4c, 0x40, 0x04, 0x07, 0x04, 0x10, 0x10, 0x22, 0x08, 0x13, 0x41, 0x43,
  4001. + 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x4c,
  4002. + 0x07, 0x0c, 0x0c, 0x18, 0x20, 0x18, 0x20, 0x0b, 0x17, 0x41, 0x43, 0x17, 0x41, 0x43, 0x40, 0x40,
  4003. + 0x40, 0x0a, 0x0b, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x06, 0x2c, 0x27, 0x1c, 0x07, 0x20, 0x1c, 0x18,
  4004. + 0x44, 0x1d, 0x13, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x1d, 0x0b, 0x29, 0x1d, 0x1d, 0x0b, 0x40, 0x40,
  4005. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4006. + 0x07, 0x3e, 0x1e, 0x04, 0x46, 0x40, 0x01, 0x51, 0x5e, 0x2c, 0x40, 0x04, 0x40, 0x40, 0x41, 0x0f,
  4007. + 0x04, 0x18, 0x40, 0x14, 0x0b, 0x18, 0x24, 0x3e, 0x3e, 0x07, 0x07, 0x03, 0x0f, 0x0b, 0x19, 0x07,
  4008. + 0x41, 0x27, 0x23, 0x0b, 0x40, 0x44, 0x46, 0x40, 0x40, 0x40, 0x04, 0x04, 0x01, 0x06, 0x09, 0x06,
  4009. + 0x0b, 0x13, 0x01, 0x41, 0x41, 0x18, 0x01, 0x46, 0x41, 0x41, 0x18, 0x16, 0x11, 0x1b, 0x01, 0x06,
  4010. + 0x09, 0x06, 0x0b, 0x13, 0x01, 0x41, 0x41, 0x18, 0x01, 0x46, 0x41, 0x41, 0x18, 0x16, 0x11, 0x1b,
  4011. + 0x21, 0x43, 0x34, 0x40, 0x4c, 0x40, 0x04, 0x07, 0x04, 0x11, 0x11, 0x24, 0x09, 0x13, 0x41, 0x43,
  4012. + 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x13, 0x41, 0x43, 0x1c, 0x07, 0x40, 0x4c,
  4013. + 0x07, 0x0c, 0x0c, 0x19, 0x21, 0x19, 0x21, 0x0b, 0x17, 0x41, 0x43, 0x17, 0x41, 0x43, 0x40, 0x40,
  4014. + 0x40, 0x09, 0x0b, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x06, 0x2c, 0x27, 0x1c, 0x07, 0x21, 0x1c, 0x19,
  4015. + 0x44, 0x1c, 0x13, 0x0b, 0x40, 0x0f, 0x0b, 0x06, 0x1e, 0x0b, 0x2b, 0x1e, 0x1e, 0x0b, 0x40, 0x40,
  4016. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4017. + 0x07, 0x3e, 0x1f, 0x05, 0x45, 0x40, 0x00, 0x52, 0x5f, 0x2d, 0x40, 0x05, 0x40, 0x40, 0x42, 0x0f,
  4018. + 0x05, 0x19, 0x40, 0x15, 0x0c, 0x19, 0x26, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0e, 0x0a, 0x1a, 0x07,
  4019. + 0x40, 0x27, 0x24, 0x0a, 0x40, 0x45, 0x47, 0x40, 0x40, 0x40, 0x05, 0x05, 0x02, 0x07, 0x0a, 0x07,
  4020. + 0x0c, 0x14, 0x02, 0x40, 0x40, 0x19, 0x02, 0x45, 0x40, 0x40, 0x19, 0x17, 0x12, 0x1c, 0x02, 0x07,
  4021. + 0x0a, 0x07, 0x0c, 0x14, 0x02, 0x40, 0x40, 0x19, 0x02, 0x45, 0x40, 0x40, 0x19, 0x17, 0x12, 0x1c,
  4022. + 0x22, 0x42, 0x36, 0x40, 0x4d, 0x40, 0x05, 0x07, 0x05, 0x12, 0x12, 0x26, 0x0a, 0x12, 0x42, 0x42,
  4023. + 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x4d,
  4024. + 0x07, 0x0d, 0x0d, 0x1a, 0x22, 0x1a, 0x22, 0x0a, 0x17, 0x42, 0x42, 0x17, 0x42, 0x42, 0x40, 0x40,
  4025. + 0x40, 0x08, 0x0a, 0x0a, 0x40, 0x0f, 0x0a, 0x05, 0x05, 0x2d, 0x27, 0x1d, 0x07, 0x22, 0x1d, 0x1a,
  4026. + 0x45, 0x1b, 0x12, 0x0a, 0x40, 0x0f, 0x0a, 0x05, 0x1f, 0x0a, 0x2c, 0x1f, 0x1f, 0x0a, 0x40, 0x40,
  4027. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4028. + 0x07, 0x3e, 0x20, 0x05, 0x45, 0x40, 0x40, 0x52, 0x60, 0x2d, 0x40, 0x05, 0x40, 0x40, 0x42, 0x0f,
  4029. + 0x05, 0x1b, 0x40, 0x15, 0x0d, 0x1b, 0x28, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0c, 0x0a, 0x1a, 0x07,
  4030. + 0x00, 0x27, 0x25, 0x0a, 0x40, 0x45, 0x48, 0x40, 0x40, 0x40, 0x05, 0x05, 0x02, 0x08, 0x0a, 0x08,
  4031. + 0x0d, 0x15, 0x02, 0x00, 0x00, 0x1b, 0x02, 0x45, 0x00, 0x00, 0x1b, 0x18, 0x12, 0x1d, 0x02, 0x08,
  4032. + 0x0a, 0x08, 0x0d, 0x15, 0x02, 0x00, 0x00, 0x1b, 0x02, 0x45, 0x00, 0x00, 0x1b, 0x18, 0x12, 0x1d,
  4033. + 0x22, 0x42, 0x38, 0x40, 0x4d, 0x40, 0x05, 0x07, 0x05, 0x12, 0x12, 0x28, 0x0a, 0x12, 0x42, 0x42,
  4034. + 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x42, 0x42, 0x1d, 0x07, 0x40, 0x4d,
  4035. + 0x07, 0x0d, 0x0d, 0x1a, 0x22, 0x1a, 0x22, 0x0a, 0x17, 0x42, 0x42, 0x17, 0x42, 0x42, 0x40, 0x40,
  4036. + 0x40, 0x07, 0x0a, 0x0a, 0x40, 0x0f, 0x0a, 0x05, 0x05, 0x2d, 0x27, 0x1d, 0x07, 0x22, 0x1d, 0x1a,
  4037. + 0x45, 0x1a, 0x12, 0x0a, 0x40, 0x0f, 0x0a, 0x05, 0x20, 0x0a, 0x2d, 0x20, 0x20, 0x0a, 0x40, 0x40,
  4038. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4039. + 0x07, 0x3e, 0x21, 0x05, 0x44, 0x40, 0x41, 0x53, 0x61, 0x2d, 0x40, 0x05, 0x40, 0x40, 0x43, 0x0f,
  4040. + 0x05, 0x1c, 0x40, 0x15, 0x0e, 0x1c, 0x2a, 0x3e, 0x3e, 0x07, 0x07, 0x02, 0x0b, 0x0a, 0x1b, 0x07,
  4041. + 0x01, 0x27, 0x26, 0x0a, 0x40, 0x45, 0x49, 0x40, 0x40, 0x40, 0x05, 0x05, 0x03, 0x09, 0x0b, 0x09,
  4042. + 0x0e, 0x16, 0x03, 0x01, 0x01, 0x1c, 0x03, 0x44, 0x01, 0x01, 0x1c, 0x19, 0x13, 0x1e, 0x03, 0x09,
  4043. + 0x0b, 0x09, 0x0e, 0x16, 0x03, 0x01, 0x01, 0x1c, 0x03, 0x44, 0x01, 0x01, 0x1c, 0x19, 0x13, 0x1e,
  4044. + 0x23, 0x42, 0x3a, 0x40, 0x4d, 0x40, 0x05, 0x07, 0x05, 0x13, 0x13, 0x2a, 0x0b, 0x12, 0x43, 0x42,
  4045. + 0x1d, 0x07, 0x40, 0x12, 0x43, 0x42, 0x1d, 0x07, 0x40, 0x12, 0x43, 0x42, 0x1d, 0x07, 0x40, 0x4d,
  4046. + 0x07, 0x0d, 0x0d, 0x1b, 0x23, 0x1b, 0x23, 0x0a, 0x17, 0x43, 0x42, 0x17, 0x43, 0x42, 0x40, 0x40,
  4047. + 0x40, 0x06, 0x0a, 0x0a, 0x40, 0x0f, 0x0a, 0x04, 0x04, 0x2d, 0x27, 0x1d, 0x07, 0x23, 0x1d, 0x1b,
  4048. + 0x45, 0x18, 0x12, 0x0a, 0x40, 0x0f, 0x0a, 0x04, 0x21, 0x0a, 0x2e, 0x21, 0x21, 0x0a, 0x40, 0x40,
  4049. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4050. + 0x07, 0x3e, 0x22, 0x06, 0x43, 0x40, 0x42, 0x54, 0x62, 0x2e, 0x40, 0x06, 0x40, 0x40, 0x44, 0x0f,
  4051. + 0x06, 0x1e, 0x40, 0x16, 0x10, 0x1e, 0x2c, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x09, 0x09, 0x1c, 0x07,
  4052. + 0x02, 0x27, 0x28, 0x09, 0x40, 0x46, 0x4a, 0x40, 0x40, 0x40, 0x06, 0x06, 0x04, 0x0a, 0x0c, 0x0a,
  4053. + 0x10, 0x18, 0x04, 0x02, 0x02, 0x1e, 0x04, 0x43, 0x02, 0x02, 0x1e, 0x1a, 0x14, 0x20, 0x04, 0x0a,
  4054. + 0x0c, 0x0a, 0x10, 0x18, 0x04, 0x02, 0x02, 0x1e, 0x04, 0x43, 0x02, 0x02, 0x1e, 0x1a, 0x14, 0x20,
  4055. + 0x24, 0x41, 0x3c, 0x40, 0x4e, 0x40, 0x06, 0x07, 0x06, 0x14, 0x14, 0x2c, 0x0c, 0x11, 0x44, 0x41,
  4056. + 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x4e,
  4057. + 0x07, 0x0e, 0x0e, 0x1c, 0x24, 0x1c, 0x24, 0x09, 0x17, 0x44, 0x41, 0x17, 0x44, 0x41, 0x40, 0x40,
  4058. + 0x40, 0x05, 0x09, 0x09, 0x40, 0x0f, 0x09, 0x03, 0x03, 0x2e, 0x27, 0x1e, 0x07, 0x24, 0x1e, 0x1c,
  4059. + 0x46, 0x17, 0x11, 0x09, 0x40, 0x0f, 0x09, 0x03, 0x22, 0x09, 0x30, 0x22, 0x22, 0x09, 0x40, 0x40,
  4060. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4061. + 0x07, 0x3e, 0x23, 0x06, 0x43, 0x40, 0x43, 0x54, 0x63, 0x2e, 0x40, 0x06, 0x40, 0x40, 0x44, 0x0f,
  4062. + 0x06, 0x1f, 0x40, 0x16, 0x11, 0x1f, 0x2e, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x08, 0x09, 0x1c, 0x07,
  4063. + 0x03, 0x27, 0x29, 0x09, 0x40, 0x46, 0x4b, 0x40, 0x40, 0x40, 0x06, 0x06, 0x04, 0x0b, 0x0c, 0x0b,
  4064. + 0x11, 0x19, 0x04, 0x03, 0x03, 0x1f, 0x04, 0x43, 0x03, 0x03, 0x1f, 0x1b, 0x14, 0x21, 0x04, 0x0b,
  4065. + 0x0c, 0x0b, 0x11, 0x19, 0x04, 0x03, 0x03, 0x1f, 0x04, 0x43, 0x03, 0x03, 0x1f, 0x1b, 0x14, 0x21,
  4066. + 0x24, 0x41, 0x3e, 0x40, 0x4e, 0x40, 0x06, 0x07, 0x06, 0x14, 0x14, 0x2e, 0x0c, 0x11, 0x44, 0x41,
  4067. + 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x44, 0x41, 0x1e, 0x07, 0x40, 0x4e,
  4068. + 0x07, 0x0e, 0x0e, 0x1c, 0x24, 0x1c, 0x24, 0x09, 0x17, 0x44, 0x41, 0x17, 0x44, 0x41, 0x40, 0x40,
  4069. + 0x40, 0x04, 0x09, 0x09, 0x40, 0x0f, 0x09, 0x03, 0x03, 0x2e, 0x27, 0x1e, 0x07, 0x24, 0x1e, 0x1c,
  4070. + 0x46, 0x16, 0x11, 0x09, 0x40, 0x0f, 0x09, 0x03, 0x23, 0x09, 0x31, 0x23, 0x23, 0x09, 0x40, 0x40,
  4071. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4072. + 0x07, 0x3e, 0x24, 0x06, 0x42, 0x40, 0x44, 0x55, 0x64, 0x2e, 0x40, 0x06, 0x40, 0x40, 0x45, 0x0f,
  4073. + 0x06, 0x21, 0x40, 0x16, 0x12, 0x21, 0x30, 0x3e, 0x3e, 0x07, 0x07, 0x01, 0x06, 0x09, 0x1d, 0x07,
  4074. + 0x04, 0x27, 0x2a, 0x09, 0x40, 0x46, 0x4c, 0x40, 0x40, 0x40, 0x06, 0x06, 0x05, 0x0c, 0x0d, 0x0c,
  4075. + 0x12, 0x1a, 0x05, 0x04, 0x04, 0x21, 0x05, 0x42, 0x04, 0x04, 0x21, 0x1c, 0x15, 0x22, 0x05, 0x0c,
  4076. + 0x0d, 0x0c, 0x12, 0x1a, 0x05, 0x04, 0x04, 0x21, 0x05, 0x42, 0x04, 0x04, 0x21, 0x1c, 0x15, 0x22,
  4077. + 0x25, 0x41, 0x3e, 0x40, 0x4e, 0x40, 0x06, 0x07, 0x06, 0x15, 0x15, 0x30, 0x0d, 0x11, 0x45, 0x41,
  4078. + 0x1e, 0x07, 0x40, 0x11, 0x45, 0x41, 0x1e, 0x07, 0x40, 0x11, 0x45, 0x41, 0x1e, 0x07, 0x40, 0x4e,
  4079. + 0x07, 0x0e, 0x0e, 0x1d, 0x25, 0x1d, 0x25, 0x09, 0x17, 0x45, 0x41, 0x17, 0x45, 0x41, 0x40, 0x40,
  4080. + 0x40, 0x03, 0x09, 0x09, 0x40, 0x0f, 0x09, 0x02, 0x02, 0x2e, 0x27, 0x1e, 0x07, 0x25, 0x1e, 0x1d,
  4081. + 0x46, 0x15, 0x11, 0x09, 0x40, 0x0f, 0x09, 0x02, 0x24, 0x09, 0x32, 0x24, 0x24, 0x09, 0x40, 0x40,
  4082. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4083. + 0x07, 0x3e, 0x24, 0x06, 0x42, 0x40, 0x45, 0x56, 0x65, 0x2e, 0x40, 0x06, 0x40, 0x40, 0x46, 0x0f,
  4084. + 0x06, 0x22, 0x40, 0x16, 0x13, 0x22, 0x31, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x04, 0x08, 0x1d, 0x07,
  4085. + 0x04, 0x27, 0x2b, 0x08, 0x40, 0x47, 0x4d, 0x40, 0x40, 0x40, 0x06, 0x06, 0x05, 0x0c, 0x0d, 0x0c,
  4086. + 0x13, 0x1b, 0x05, 0x04, 0x04, 0x22, 0x05, 0x42, 0x04, 0x04, 0x22, 0x1c, 0x15, 0x23, 0x05, 0x0c,
  4087. + 0x0d, 0x0c, 0x13, 0x1b, 0x05, 0x04, 0x04, 0x22, 0x05, 0x42, 0x04, 0x04, 0x22, 0x1c, 0x15, 0x23,
  4088. + 0x25, 0x41, 0x3e, 0x40, 0x4f, 0x40, 0x06, 0x07, 0x06, 0x15, 0x15, 0x31, 0x0d, 0x10, 0x46, 0x41,
  4089. + 0x1e, 0x07, 0x40, 0x10, 0x46, 0x41, 0x1e, 0x07, 0x40, 0x10, 0x46, 0x41, 0x1e, 0x07, 0x40, 0x4f,
  4090. + 0x07, 0x0e, 0x0e, 0x1d, 0x25, 0x1d, 0x25, 0x08, 0x17, 0x46, 0x41, 0x17, 0x46, 0x41, 0x40, 0x40,
  4091. + 0x40, 0x02, 0x08, 0x08, 0x40, 0x0f, 0x08, 0x01, 0x01, 0x2e, 0x27, 0x1e, 0x07, 0x25, 0x1e, 0x1d,
  4092. + 0x47, 0x13, 0x10, 0x08, 0x40, 0x0f, 0x08, 0x01, 0x24, 0x08, 0x33, 0x24, 0x24, 0x08, 0x40, 0x40,
  4093. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4094. + 0x07, 0x3e, 0x25, 0x07, 0x41, 0x40, 0x45, 0x56, 0x65, 0x2f, 0x40, 0x07, 0x40, 0x40, 0x46, 0x0f,
  4095. + 0x07, 0x24, 0x40, 0x17, 0x15, 0x24, 0x33, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x03, 0x08, 0x1e, 0x07,
  4096. + 0x05, 0x27, 0x2d, 0x08, 0x40, 0x47, 0x4d, 0x40, 0x40, 0x40, 0x07, 0x07, 0x06, 0x0d, 0x0e, 0x0d,
  4097. + 0x15, 0x1d, 0x06, 0x05, 0x05, 0x24, 0x06, 0x41, 0x05, 0x05, 0x24, 0x1d, 0x16, 0x25, 0x06, 0x0d,
  4098. + 0x0e, 0x0d, 0x15, 0x1d, 0x06, 0x05, 0x05, 0x24, 0x06, 0x41, 0x05, 0x05, 0x24, 0x1d, 0x16, 0x25,
  4099. + 0x26, 0x40, 0x3e, 0x40, 0x4f, 0x40, 0x07, 0x07, 0x07, 0x16, 0x16, 0x33, 0x0e, 0x10, 0x46, 0x40,
  4100. + 0x1f, 0x07, 0x40, 0x10, 0x46, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x46, 0x40, 0x1f, 0x07, 0x40, 0x4f,
  4101. + 0x07, 0x0f, 0x0f, 0x1e, 0x26, 0x1e, 0x26, 0x08, 0x17, 0x46, 0x40, 0x17, 0x46, 0x40, 0x40, 0x40,
  4102. + 0x40, 0x02, 0x08, 0x08, 0x40, 0x0f, 0x08, 0x01, 0x01, 0x2f, 0x27, 0x1f, 0x07, 0x26, 0x1f, 0x1e,
  4103. + 0x47, 0x12, 0x10, 0x08, 0x40, 0x0f, 0x08, 0x01, 0x25, 0x08, 0x35, 0x25, 0x25, 0x08, 0x40, 0x40,
  4104. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4105. + 0x07, 0x3e, 0x26, 0x07, 0x40, 0x40, 0x46, 0x57, 0x66, 0x2f, 0x40, 0x07, 0x40, 0x40, 0x47, 0x0f,
  4106. + 0x07, 0x26, 0x40, 0x17, 0x16, 0x26, 0x35, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x01, 0x08, 0x1f, 0x07,
  4107. + 0x06, 0x27, 0x2e, 0x08, 0x40, 0x47, 0x4e, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x0e, 0x0f, 0x0e,
  4108. + 0x16, 0x1e, 0x07, 0x06, 0x06, 0x26, 0x07, 0x40, 0x06, 0x06, 0x26, 0x1e, 0x17, 0x26, 0x07, 0x0e,
  4109. + 0x0f, 0x0e, 0x16, 0x1e, 0x07, 0x06, 0x06, 0x26, 0x07, 0x40, 0x06, 0x06, 0x26, 0x1e, 0x17, 0x26,
  4110. + 0x27, 0x40, 0x3e, 0x40, 0x4f, 0x40, 0x07, 0x07, 0x07, 0x17, 0x17, 0x35, 0x0f, 0x10, 0x47, 0x40,
  4111. + 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x4f,
  4112. + 0x07, 0x0f, 0x0f, 0x1f, 0x27, 0x1f, 0x27, 0x08, 0x17, 0x47, 0x40, 0x17, 0x47, 0x40, 0x40, 0x40,
  4113. + 0x40, 0x01, 0x08, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x00, 0x2f, 0x27, 0x1f, 0x07, 0x27, 0x1f, 0x1f,
  4114. + 0x47, 0x11, 0x10, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x26, 0x08, 0x36, 0x26, 0x26, 0x08, 0x40, 0x40,
  4115. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4116. + 0x07, 0x3e, 0x27, 0x07, 0x40, 0x40, 0x47, 0x57, 0x67, 0x2f, 0x40, 0x07, 0x40, 0x40, 0x47, 0x0f,
  4117. + 0x07, 0x27, 0x40, 0x17, 0x17, 0x27, 0x37, 0x3e, 0x3e, 0x07, 0x07, 0x00, 0x00, 0x08, 0x1f, 0x07,
  4118. + 0x07, 0x27, 0x2f, 0x08, 0x40, 0x47, 0x4f, 0x40, 0x40, 0x40, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x0f,
  4119. + 0x17, 0x1f, 0x07, 0x07, 0x07, 0x27, 0x07, 0x40, 0x07, 0x07, 0x27, 0x1f, 0x17, 0x27, 0x07, 0x0f,
  4120. + 0x0f, 0x0f, 0x17, 0x1f, 0x07, 0x07, 0x07, 0x27, 0x07, 0x40, 0x07, 0x07, 0x27, 0x1f, 0x17, 0x27,
  4121. + 0x27, 0x40, 0x3e, 0x40, 0x4f, 0x40, 0x07, 0x07, 0x07, 0x17, 0x17, 0x37, 0x0f, 0x10, 0x47, 0x40,
  4122. + 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x10, 0x47, 0x40, 0x1f, 0x07, 0x40, 0x4f,
  4123. + 0x07, 0x0f, 0x0f, 0x1f, 0x27, 0x1f, 0x27, 0x08, 0x17, 0x47, 0x40, 0x17, 0x47, 0x40, 0x40, 0x40,
  4124. + 0x40, 0x00, 0x08, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x00, 0x2f, 0x27, 0x1f, 0x07, 0x27, 0x1f, 0x1f,
  4125. + 0x47, 0x10, 0x10, 0x08, 0x40, 0x0f, 0x08, 0x00, 0x27, 0x08, 0x37, 0x27, 0x27, 0x08, 0x40, 0x40,
  4126. + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4127. +};
  4128. +
  4129. +static void set_ps_field(u32 *buf, struct rkvdec_ps_field field, u32 value)
  4130. +{
  4131. + u8 bit = field.offset % 32, word = field.offset / 32;
  4132. + u64 mask = GENMASK_ULL(bit + field.len - 1, bit);
  4133. + u64 val = ((u64)value << bit) & mask;
  4134. +
  4135. + buf[word] &= ~mask;
  4136. + buf[word] |= val;
  4137. + if (bit + field.len > 32) {
  4138. + buf[word + 1] &= ~(mask >> 32);
  4139. + buf[word + 1] |= val >> 32;
  4140. + }
  4141. +}
  4142. +
  4143. +static void assemble_hw_pps(struct rkvdec_ctx *ctx,
  4144. + struct rkvdec_hevc_run *run)
  4145. +{
  4146. + struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
  4147. + const struct v4l2_ctrl_hevc_sps *sps = run->sps;
  4148. + const struct v4l2_ctrl_hevc_pps *pps = run->pps;
  4149. + struct rkvdec_hevc_priv_tbl *priv_tbl = hevc_ctx->priv_tbl.cpu;
  4150. + struct rkvdec_sps_pps_packet *hw_ps;
  4151. + u32 min_cb_log2_size_y, ctb_log2_size_y, ctb_size_y;
  4152. + u32 log2_min_cu_qp_delta_size;
  4153. + dma_addr_t scaling_list_address;
  4154. + u32 scaling_distance;
  4155. + int i;
  4156. +
  4157. + /*
  4158. + * HW read the SPS/PPS information from PPS packet index by PPS id.
  4159. + * offset from the base can be calculated by PPS_id * 80 (size per PPS
  4160. + * packet unit). so the driver copy SPS/PPS information to the exact PPS
  4161. + * packet unit for HW accessing.
  4162. + */
  4163. + hw_ps = &priv_tbl->param_set[pps->pic_parameter_set_id];
  4164. + memset(hw_ps, 0, sizeof(*hw_ps));
  4165. +
  4166. + min_cb_log2_size_y = sps->log2_min_luma_coding_block_size_minus3 + 3;
  4167. + ctb_log2_size_y = min_cb_log2_size_y +
  4168. + sps->log2_diff_max_min_luma_coding_block_size;
  4169. + ctb_size_y = 1 << ctb_log2_size_y;
  4170. +
  4171. +#define WRITE_PPS(value, field) set_ps_field(hw_ps->info, field, value)
  4172. + /* write sps */
  4173. + WRITE_PPS(sps->video_parameter_set_id, VIDEO_PARAMETER_SET_ID);
  4174. + WRITE_PPS(sps->seq_parameter_set_id, SEQ_PARAMETER_SET_ID);
  4175. + WRITE_PPS(1, CHROMA_FORMAT_IDC);
  4176. + WRITE_PPS(sps->pic_width_in_luma_samples, PIC_WIDTH_IN_LUMA_SAMPLES);
  4177. + WRITE_PPS(sps->pic_height_in_luma_samples, PIC_HEIGHT_IN_LUMA_SAMPLES);
  4178. + WRITE_PPS(sps->bit_depth_luma_minus8 + 8, BIT_DEPTH_LUMA);
  4179. + WRITE_PPS(sps->bit_depth_chroma_minus8 + 8, BIT_DEPTH_CHROMA);
  4180. + WRITE_PPS(sps->log2_max_pic_order_cnt_lsb_minus4 + 4,
  4181. + LOG2_MAX_PIC_ORDER_CNT_LSB);
  4182. + WRITE_PPS(sps->log2_diff_max_min_luma_coding_block_size,
  4183. + LOG2_DIFF_MAX_MIN_LUMA_CODING_BLOCK_SIZE);
  4184. + WRITE_PPS(sps->log2_min_luma_coding_block_size_minus3 + 3,
  4185. + LOG2_MIN_LUMA_CODING_BLOCK_SIZE);
  4186. + WRITE_PPS(sps->log2_min_luma_transform_block_size_minus2 + 2,
  4187. + LOG2_MIN_TRANSFORM_BLOCK_SIZE);
  4188. + WRITE_PPS(sps->log2_diff_max_min_luma_transform_block_size,
  4189. + LOG2_DIFF_MAX_MIN_LUMA_TRANSFORM_BLOCK_SIZE);
  4190. + WRITE_PPS(sps->max_transform_hierarchy_depth_inter,
  4191. + MAX_TRANSFORM_HIERARCHY_DEPTH_INTER);
  4192. + WRITE_PPS(sps->max_transform_hierarchy_depth_intra,
  4193. + MAX_TRANSFORM_HIERARCHY_DEPTH_INTRA);
  4194. + WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED),
  4195. + SCALING_LIST_ENABLED_FLAG);
  4196. + WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_AMP_ENABLED),
  4197. + AMP_ENABLED_FLAG);
  4198. + WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET),
  4199. + SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG);
  4200. + if (sps->flags & V4L2_HEVC_SPS_FLAG_PCM_ENABLED) {
  4201. + WRITE_PPS(1, PCM_ENABLED_FLAG);
  4202. + WRITE_PPS(sps->pcm_sample_bit_depth_luma_minus1 + 1,
  4203. + PCM_SAMPLE_BIT_DEPTH_LUMA);
  4204. + WRITE_PPS(sps->pcm_sample_bit_depth_chroma_minus1 + 1,
  4205. + PCM_SAMPLE_BIT_DEPTH_CHROMA);
  4206. + WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED),
  4207. + PCM_LOOP_FILTER_DISABLED_FLAG);
  4208. + WRITE_PPS(sps->log2_diff_max_min_pcm_luma_coding_block_size,
  4209. + LOG2_DIFF_MAX_MIN_PCM_LUMA_CODING_BLOCK_SIZE);
  4210. + WRITE_PPS(sps->log2_min_pcm_luma_coding_block_size_minus3 + 3,
  4211. + LOG2_MIN_PCM_LUMA_CODING_BLOCK_SIZE);
  4212. + }
  4213. + WRITE_PPS(sps->num_short_term_ref_pic_sets, NUM_SHORT_TERM_REF_PIC_SETS);
  4214. + WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT),
  4215. + LONG_TERM_REF_PICS_PRESENT_FLAG);
  4216. + WRITE_PPS(sps->num_long_term_ref_pics_sps, NUM_LONG_TERM_REF_PICS_SPS);
  4217. + WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED),
  4218. + SPS_TEMPORAL_MVP_ENABLED_FLAG);
  4219. + WRITE_PPS(!!(sps->flags & V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED),
  4220. + STRONG_INTRA_SMOOTHING_ENABLED_FLAG);
  4221. + //WRITE_PPS(0, PS_FIELD(100, 7));
  4222. + //WRITE_PPS(0x1fffff, PS_FIELD(107, 21));
  4223. +
  4224. + /* write pps */
  4225. + WRITE_PPS(pps->pic_parameter_set_id, PIC_PARAMETER_SET_ID);
  4226. + WRITE_PPS(sps->seq_parameter_set_id, PPS_SEQ_PARAMETER_SET_ID);
  4227. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT),
  4228. + DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG);
  4229. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT),
  4230. + OUTPUT_FLAG_PRESENT_FLAG);
  4231. + WRITE_PPS(pps->num_extra_slice_header_bits, NUM_EXTRA_SLICE_HEADER_BITS);
  4232. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED),
  4233. + SIGN_DATA_HIDING_ENABLED_FLAG);
  4234. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT),
  4235. + CABAC_INIT_PRESENT_FLAG);
  4236. + WRITE_PPS(pps->num_ref_idx_l0_default_active_minus1 + 1,
  4237. + NUM_REF_IDX_L0_DEFAULT_ACTIVE);
  4238. + WRITE_PPS(pps->num_ref_idx_l1_default_active_minus1 + 1,
  4239. + NUM_REF_IDX_L1_DEFAULT_ACTIVE);
  4240. + WRITE_PPS(pps->init_qp_minus26, INIT_QP_MINUS26);
  4241. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED),
  4242. + CONSTRAINED_INTRA_PRED_FLAG);
  4243. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED),
  4244. + TRANSFORM_SKIP_ENABLED_FLAG);
  4245. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED),
  4246. + CU_QP_DELTA_ENABLED_FLAG);
  4247. +
  4248. + log2_min_cu_qp_delta_size = ctb_log2_size_y - pps->diff_cu_qp_delta_depth;
  4249. + WRITE_PPS(log2_min_cu_qp_delta_size, LOG2_MIN_CU_QP_DELTA_SIZE);
  4250. +
  4251. + WRITE_PPS(pps->pps_cb_qp_offset, PPS_CB_QP_OFFSET);
  4252. + WRITE_PPS(pps->pps_cr_qp_offset, PPS_CR_QP_OFFSET);
  4253. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT),
  4254. + PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG);
  4255. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED),
  4256. + WEIGHTED_PRED_FLAG);
  4257. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED),
  4258. + WEIGHTED_BIPRED_FLAG);
  4259. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED),
  4260. + TRANSQUANT_BYPASS_ENABLED_FLAG);
  4261. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_TILES_ENABLED),
  4262. + TILES_ENABLED_FLAG);
  4263. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED),
  4264. + ENTROPY_CODING_SYNC_ENABLED_FLAG);
  4265. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED),
  4266. + PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED_FLAG);
  4267. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED),
  4268. + LOOP_FILTER_ACROSS_TILES_ENABLED_FLAG);
  4269. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED),
  4270. + DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG);
  4271. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER),
  4272. + PPS_DEBLOCKING_FILTER_DISABLED_FLAG);
  4273. + WRITE_PPS(pps->pps_beta_offset_div2, PPS_BETA_OFFSET_DIV2);
  4274. + WRITE_PPS(pps->pps_tc_offset_div2, PPS_TC_OFFSET_DIV2);
  4275. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT),
  4276. + LISTS_MODIFICATION_PRESENT_FLAG);
  4277. + WRITE_PPS(pps->log2_parallel_merge_level_minus2 + 2, LOG2_PARALLEL_MERGE_LEVEL);
  4278. + WRITE_PPS(!!(pps->flags & V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT),
  4279. + SLICE_SEGMENT_HEADER_EXTENSION_PRESENT_FLAG);
  4280. + //WRITE_PPS(0, PS_FIELD(209, 3));
  4281. + WRITE_PPS(pps->num_tile_columns_minus1 + 1, NUM_TILE_COLUMNS);
  4282. + WRITE_PPS(pps->num_tile_rows_minus1 + 1, NUM_TILE_ROWS);
  4283. + //WRITE_PPS(0x2, PS_FIELD(222, 2));
  4284. + //WRITE_PPS(0xffffffff, PS_FIELD(224, 32));
  4285. +
  4286. + if (pps->flags & V4L2_HEVC_PPS_FLAG_TILES_ENABLED) {
  4287. + for (i = 0; i <= pps->num_tile_columns_minus1; i++)
  4288. + WRITE_PPS(pps->column_width_minus1[i], COLUMN_WIDTH(i));
  4289. + for (i = 0; i <= pps->num_tile_rows_minus1; i++)
  4290. + WRITE_PPS(pps->row_height_minus1[i], ROW_HEIGHT(i));
  4291. + } else {
  4292. + WRITE_PPS(round_up(sps->pic_width_in_luma_samples, ctb_size_y) - 1,
  4293. + COLUMN_WIDTH(0));
  4294. + WRITE_PPS(round_up(sps->pic_height_in_luma_samples, ctb_size_y) - 1,
  4295. + ROW_HEIGHT(0));
  4296. + }
  4297. +
  4298. + scaling_distance = offsetof(struct rkvdec_hevc_priv_tbl, scaling_list);
  4299. + scaling_list_address = hevc_ctx->priv_tbl.dma + scaling_distance;
  4300. + WRITE_PPS(scaling_list_address, SCALING_LIST_ADDRESS);
  4301. + //WRITE_PPS(0xffff, PS_FIELD(624, 16));
  4302. +}
  4303. +
  4304. +static void assemble_hw_rps(struct rkvdec_ctx *ctx,
  4305. + struct rkvdec_hevc_run *run)
  4306. +{
  4307. + const struct v4l2_ctrl_hevc_slice_params *sl_params;
  4308. + const struct v4l2_hevc_dpb_entry *dpb;
  4309. + struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
  4310. + struct rkvdec_hevc_priv_tbl *priv_tbl = hevc_ctx->priv_tbl.cpu;
  4311. + struct rkvdec_rps_packet *hw_ps;
  4312. + int i, j;
  4313. +
  4314. +#define WRITE_RPS(value, field) set_ps_field(hw_ps->info, field, value)
  4315. +
  4316. +#define REF_PIC_LONG_TERM_L0(i) PS_FIELD(i * 5, 1)
  4317. +#define REF_PIC_IDX_L0(i) PS_FIELD(1 + (i * 5), 4)
  4318. +#define REF_PIC_LONG_TERM_L1(i) PS_FIELD((i < 5 ? 75 : 132) + (i * 5), 1)
  4319. +#define REF_PIC_IDX_L1(i) PS_FIELD((i < 4 ? 76 : 128) + (i * 5), 4)
  4320. +
  4321. +#define LOWDELAY PS_FIELD(182, 1)
  4322. +#define SHORT_TERM_REF_PIC_SET_SIZE PS_FIELD(183, 10)
  4323. +#define LONG_TERM_REF_PIC_SET_SIZE PS_FIELD(193, 9)
  4324. +#define NUM_RPS_POC PS_FIELD(202, 4)
  4325. +
  4326. + for (j = 0; j < run->num_slices; j++) {
  4327. + sl_params = &run->slices_params[j];
  4328. + dpb = sl_params->dpb;
  4329. +
  4330. + hw_ps = &priv_tbl->rps[j];
  4331. + memset(hw_ps, 0, sizeof(*hw_ps));
  4332. +
  4333. + for (i = 0; i <= sl_params->num_ref_idx_l0_active_minus1; i++) {
  4334. + WRITE_RPS(!!(dpb[sl_params->ref_idx_l0[i]].rps == V4L2_HEVC_DPB_ENTRY_RPS_LT_CURR),
  4335. + REF_PIC_LONG_TERM_L0(i));
  4336. + WRITE_RPS(sl_params->ref_idx_l0[i], REF_PIC_IDX_L0(i));
  4337. + }
  4338. +
  4339. + for (i = 0; i <= sl_params->num_ref_idx_l1_active_minus1; i++) {
  4340. + WRITE_RPS(!!(dpb[sl_params->ref_idx_l1[i]].rps == V4L2_HEVC_DPB_ENTRY_RPS_LT_CURR),
  4341. + REF_PIC_LONG_TERM_L1(i));
  4342. + WRITE_RPS(sl_params->ref_idx_l1[i], REF_PIC_IDX_L1(i));
  4343. + }
  4344. +
  4345. + //WRITE_RPS(0xffffffff, PS_FIELD(96, 32));
  4346. +
  4347. + // TODO: lowdelay
  4348. + WRITE_RPS(0, LOWDELAY);
  4349. +
  4350. + // NOTE: these two differs from mpp
  4351. + WRITE_RPS(sl_params->short_term_ref_pic_set_size,
  4352. + SHORT_TERM_REF_PIC_SET_SIZE);
  4353. + WRITE_RPS(sl_params->long_term_ref_pic_set_size,
  4354. + LONG_TERM_REF_PIC_SET_SIZE);
  4355. +
  4356. + WRITE_RPS(sl_params->num_rps_poc_st_curr_before +
  4357. + sl_params->num_rps_poc_st_curr_after +
  4358. + sl_params->num_rps_poc_lt_curr,
  4359. + NUM_RPS_POC);
  4360. +
  4361. + //WRITE_RPS(0x3ffff, PS_FIELD(206, 18));
  4362. + //WRITE_RPS(0xffffffff, PS_FIELD(224, 32));
  4363. + }
  4364. +}
  4365. +
  4366. +static void assemble_hw_scaling_list(struct rkvdec_ctx *ctx,
  4367. + struct rkvdec_hevc_run *run)
  4368. +{
  4369. + const struct v4l2_ctrl_hevc_scaling_matrix *scaling = run->scaling_matrix;
  4370. + struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
  4371. + struct rkvdec_hevc_priv_tbl *tbl = hevc_ctx->priv_tbl.cpu;
  4372. + u8 *dst;
  4373. + scalingList_t sl;
  4374. + int i, j;
  4375. +
  4376. + if (!memcmp((void*)&hevc_ctx->scaling_matrix_cache, scaling,
  4377. + sizeof(struct v4l2_ctrl_hevc_scaling_matrix)))
  4378. + return;
  4379. +
  4380. + memset(&sl, 0, sizeof(scalingList_t));
  4381. +
  4382. + for (i = 0; i < 6; i++) {
  4383. + for (j = 0; j < 16; j++)
  4384. + sl.sl[0][i][j] = scaling->scaling_list_4x4[i][j];
  4385. + for (j = 0; j < 64; j++) {
  4386. + sl.sl[1][i][j] = scaling->scaling_list_8x8[i][j];
  4387. + sl.sl[2][i][j] = scaling->scaling_list_16x16[i][j];
  4388. + if (i < 2)
  4389. + sl.sl[3][i][j] = scaling->scaling_list_32x32[i][j];
  4390. + }
  4391. + sl.sl_dc[0][i] = scaling->scaling_list_dc_coef_16x16[i];
  4392. + if (i < 2)
  4393. + sl.sl_dc[1][i] = scaling->scaling_list_dc_coef_32x32[i];
  4394. + }
  4395. +
  4396. + dst = tbl->scaling_list;
  4397. + hal_record_scaling_list((scalingFactor_t *)dst, &sl);
  4398. +
  4399. + memcpy((void*)&hevc_ctx->scaling_matrix_cache, scaling,
  4400. + sizeof(struct v4l2_ctrl_hevc_scaling_matrix));
  4401. +}
  4402. +
  4403. +static struct vb2_buffer *
  4404. +get_ref_buf(struct rkvdec_ctx *ctx, struct rkvdec_hevc_run *run,
  4405. + unsigned int dpb_idx)
  4406. +{
  4407. + struct v4l2_m2m_ctx *m2m_ctx = ctx->fh.m2m_ctx;
  4408. + const struct v4l2_ctrl_hevc_slice_params *sl_params = &run->slices_params[0];
  4409. + const struct v4l2_hevc_dpb_entry *dpb = sl_params->dpb;
  4410. + struct vb2_queue *cap_q = &m2m_ctx->cap_q_ctx.q;
  4411. + int buf_idx = -1;
  4412. +
  4413. + if (dpb_idx < sl_params->num_active_dpb_entries)
  4414. + buf_idx = vb2_find_timestamp(cap_q,
  4415. + dpb[dpb_idx].timestamp, 0);
  4416. +
  4417. + /*
  4418. + * If a DPB entry is unused or invalid, address of current destination
  4419. + * buffer is returned.
  4420. + */
  4421. + if (buf_idx < 0)
  4422. + return &run->base.bufs.dst->vb2_buf;
  4423. +
  4424. + return vb2_get_buffer(cap_q, buf_idx);
  4425. +}
  4426. +
  4427. +static void config_registers(struct rkvdec_ctx *ctx,
  4428. + struct rkvdec_hevc_run *run)
  4429. +{
  4430. + struct rkvdec_dev *rkvdec = ctx->dev;
  4431. + const struct v4l2_ctrl_hevc_slice_params *sl_params = &run->slices_params[0];
  4432. + const struct v4l2_hevc_dpb_entry *dpb = sl_params->dpb;
  4433. + struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
  4434. + dma_addr_t priv_start_addr = hevc_ctx->priv_tbl.dma;
  4435. + const struct v4l2_pix_format_mplane *dst_fmt;
  4436. + struct vb2_v4l2_buffer *src_buf = run->base.bufs.src;
  4437. + struct vb2_v4l2_buffer *dst_buf = run->base.bufs.dst;
  4438. + const struct v4l2_format *f;
  4439. + dma_addr_t rlc_addr;
  4440. + dma_addr_t refer_addr;
  4441. + u32 rlc_len;
  4442. + u32 hor_virstride;
  4443. + u32 ver_virstride;
  4444. + u32 y_virstride;
  4445. + u32 uv_virstride;
  4446. + u32 yuv_virstride;
  4447. + u32 offset;
  4448. + dma_addr_t dst_addr;
  4449. + u32 reg, i;
  4450. +
  4451. + reg = RKVDEC_MODE(RKVDEC_MODE_HEVC);
  4452. + writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_SYSCTRL);
  4453. +
  4454. + f = &ctx->decoded_fmt;
  4455. + dst_fmt = &f->fmt.pix_mp;
  4456. + hor_virstride = dst_fmt->plane_fmt[0].bytesperline;
  4457. + ver_virstride = dst_fmt->height;
  4458. + y_virstride = hor_virstride * ver_virstride;
  4459. + uv_virstride = y_virstride / 2;
  4460. + yuv_virstride = y_virstride + uv_virstride;
  4461. +
  4462. + reg = RKVDEC_Y_HOR_VIRSTRIDE(hor_virstride / 16) |
  4463. + RKVDEC_UV_HOR_VIRSTRIDE(hor_virstride / 16) |
  4464. + RKVDEC_SLICE_NUM_LOWBITS(run->num_slices);
  4465. + writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_PICPAR);
  4466. +
  4467. + /* config rlc base address */
  4468. + rlc_addr = vb2_dma_contig_plane_dma_addr(&src_buf->vb2_buf, 0);
  4469. + writel_relaxed(rlc_addr, rkvdec->regs + RKVDEC_REG_STRM_RLC_BASE);
  4470. +
  4471. + rlc_len = vb2_get_plane_payload(&src_buf->vb2_buf, 0);
  4472. + reg = RKVDEC_STRM_LEN(round_up(rlc_len, 16) + 64);
  4473. + writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_STRM_LEN);
  4474. +
  4475. + /* config cabac table */
  4476. + offset = offsetof(struct rkvdec_hevc_priv_tbl, cabac_table);
  4477. + writel_relaxed(priv_start_addr + offset,
  4478. + rkvdec->regs + RKVDEC_REG_CABACTBL_PROB_BASE);
  4479. +
  4480. + /* config output base address */
  4481. + dst_addr = vb2_dma_contig_plane_dma_addr(&dst_buf->vb2_buf, 0);
  4482. + writel_relaxed(dst_addr, rkvdec->regs + RKVDEC_REG_DECOUT_BASE);
  4483. +
  4484. + reg = RKVDEC_Y_VIRSTRIDE(y_virstride / 16);
  4485. + writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_Y_VIRSTRIDE);
  4486. +
  4487. + reg = RKVDEC_YUV_VIRSTRIDE(yuv_virstride / 16);
  4488. + writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_YUV_VIRSTRIDE);
  4489. +
  4490. + /* config ref pic address */
  4491. + for (i = 0; i < 15; i++) {
  4492. + struct vb2_buffer *vb_buf = get_ref_buf(ctx, run, i);
  4493. +
  4494. + if (i < 4 && sl_params->num_active_dpb_entries) {
  4495. + reg = GENMASK(sl_params->num_active_dpb_entries - 1, 0);
  4496. + reg = (reg >> (i * 4)) & 0xf;
  4497. + } else
  4498. + reg = 0;
  4499. +
  4500. + refer_addr = vb2_dma_contig_plane_dma_addr(vb_buf, 0);
  4501. + writel_relaxed(refer_addr | reg,
  4502. + rkvdec->regs + RKVDEC_REG_H264_BASE_REFER(i));
  4503. +
  4504. + reg = RKVDEC_POC_REFER(i < sl_params->num_active_dpb_entries ? dpb[i].pic_order_cnt[0] : 0);
  4505. + writel_relaxed(reg,
  4506. + rkvdec->regs + RKVDEC_REG_H264_POC_REFER0(i));
  4507. + }
  4508. +
  4509. + reg = RKVDEC_CUR_POC(sl_params->slice_pic_order_cnt);
  4510. + writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_CUR_POC0);
  4511. +
  4512. + /* config hw pps address */
  4513. + offset = offsetof(struct rkvdec_hevc_priv_tbl, param_set);
  4514. + writel_relaxed(priv_start_addr + offset,
  4515. + rkvdec->regs + RKVDEC_REG_PPS_BASE);
  4516. +
  4517. + /* config hw rps address */
  4518. + offset = offsetof(struct rkvdec_hevc_priv_tbl, rps);
  4519. + writel_relaxed(priv_start_addr + offset,
  4520. + rkvdec->regs + RKVDEC_REG_RPS_BASE);
  4521. +
  4522. + reg = RKVDEC_AXI_DDR_RDATA(0);
  4523. + writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_AXI_DDR_RDATA);
  4524. +
  4525. + reg = RKVDEC_AXI_DDR_WDATA(0);
  4526. + writel_relaxed(reg, rkvdec->regs + RKVDEC_REG_AXI_DDR_WDATA);
  4527. +}
  4528. +
  4529. +#define RKVDEC_HEVC_MAX_DEPTH_IN_BYTES 2
  4530. +
  4531. +static int rkvdec_hevc_adjust_fmt(struct rkvdec_ctx *ctx,
  4532. + struct v4l2_format *f)
  4533. +{
  4534. + struct v4l2_pix_format_mplane *fmt = &f->fmt.pix_mp;
  4535. +
  4536. + fmt->num_planes = 1;
  4537. + if (!fmt->plane_fmt[0].sizeimage)
  4538. + fmt->plane_fmt[0].sizeimage = fmt->width * fmt->height *
  4539. + RKVDEC_HEVC_MAX_DEPTH_IN_BYTES;
  4540. + return 0;
  4541. +}
  4542. +
  4543. +static int rkvdec_hevc_start(struct rkvdec_ctx *ctx)
  4544. +{
  4545. + struct rkvdec_dev *rkvdec = ctx->dev;
  4546. + struct rkvdec_hevc_priv_tbl *priv_tbl;
  4547. + struct rkvdec_hevc_ctx *hevc_ctx;
  4548. + int ret;
  4549. +
  4550. + hevc_ctx = kzalloc(sizeof(*hevc_ctx), GFP_KERNEL);
  4551. + if (!hevc_ctx)
  4552. + return -ENOMEM;
  4553. +
  4554. + priv_tbl = dma_alloc_coherent(rkvdec->dev, sizeof(*priv_tbl),
  4555. + &hevc_ctx->priv_tbl.dma, GFP_KERNEL);
  4556. + if (!priv_tbl) {
  4557. + ret = -ENOMEM;
  4558. + goto err_free_ctx;
  4559. + }
  4560. +
  4561. + hevc_ctx->priv_tbl.size = sizeof(*priv_tbl);
  4562. + hevc_ctx->priv_tbl.cpu = priv_tbl;
  4563. + memset(priv_tbl, 0, sizeof(*priv_tbl));
  4564. + memcpy(priv_tbl->cabac_table, rkvdec_hevc_cabac_table,
  4565. + sizeof(rkvdec_hevc_cabac_table));
  4566. +
  4567. + ctx->priv = hevc_ctx;
  4568. + return 0;
  4569. +
  4570. +err_free_ctx:
  4571. + kfree(hevc_ctx);
  4572. + return ret;
  4573. +}
  4574. +
  4575. +static void rkvdec_hevc_stop(struct rkvdec_ctx *ctx)
  4576. +{
  4577. + struct rkvdec_hevc_ctx *hevc_ctx = ctx->priv;
  4578. + struct rkvdec_dev *rkvdec = ctx->dev;
  4579. +
  4580. + dma_free_coherent(rkvdec->dev, hevc_ctx->priv_tbl.size,
  4581. + hevc_ctx->priv_tbl.cpu, hevc_ctx->priv_tbl.dma);
  4582. + kfree(hevc_ctx);
  4583. +}
  4584. +
  4585. +static void rkvdec_hevc_run_preamble(struct rkvdec_ctx *ctx,
  4586. + struct rkvdec_hevc_run *run)
  4587. +{
  4588. + struct v4l2_ctrl *ctrl;
  4589. +
  4590. + ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
  4591. + V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS);
  4592. + run->slices_params = ctrl ? ctrl->p_cur.p : NULL;
  4593. + ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
  4594. + V4L2_CID_MPEG_VIDEO_HEVC_SPS);
  4595. + run->sps = ctrl ? ctrl->p_cur.p : NULL;
  4596. + ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
  4597. + V4L2_CID_MPEG_VIDEO_HEVC_PPS);
  4598. + run->pps = ctrl ? ctrl->p_cur.p : NULL;
  4599. + ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
  4600. + V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX);
  4601. + run->scaling_matrix = ctrl ? ctrl->p_cur.p : NULL;
  4602. +
  4603. + rkvdec_run_preamble(ctx, &run->base);
  4604. +
  4605. + // HACK: we need num slices from somewhere
  4606. + run->num_slices = run->sps->num_slices;
  4607. +}
  4608. +
  4609. +static int rkvdec_hevc_run(struct rkvdec_ctx *ctx)
  4610. +{
  4611. + struct rkvdec_dev *rkvdec = ctx->dev;
  4612. + struct rkvdec_hevc_run run;
  4613. +
  4614. + rkvdec_hevc_run_preamble(ctx, &run);
  4615. +
  4616. + assemble_hw_scaling_list(ctx, &run);
  4617. + assemble_hw_pps(ctx, &run);
  4618. + assemble_hw_rps(ctx, &run);
  4619. + config_registers(ctx, &run);
  4620. +
  4621. + rkvdec_run_postamble(ctx, &run.base);
  4622. +
  4623. + // sw_cabac_error_e - cabac error enable
  4624. + writel_relaxed(0xfdfffffd, rkvdec->regs + RKVDEC_REG_STRMD_ERR_EN);
  4625. + // slice end error enable = BIT(28)
  4626. + // frame end error enable = BIT(29)
  4627. + writel_relaxed(0x30000000, rkvdec->regs + RKVDEC_REG_H264_ERR_E);
  4628. +
  4629. + schedule_delayed_work(&rkvdec->watchdog_work, msecs_to_jiffies(2000));
  4630. +
  4631. + writel(1, rkvdec->regs + RKVDEC_REG_PREF_LUMA_CACHE_COMMAND);
  4632. + writel(1, rkvdec->regs + RKVDEC_REG_PREF_CHR_CACHE_COMMAND);
  4633. +
  4634. + /* Start decoding! */
  4635. + writel(RKVDEC_INTERRUPT_DEC_E | RKVDEC_CONFIG_DEC_CLK_GATE_E |
  4636. + RKVDEC_TIMEOUT_E | RKVDEC_BUF_EMPTY_E,
  4637. + rkvdec->regs + RKVDEC_REG_INTERRUPT);
  4638. +
  4639. + return 0;
  4640. +}
  4641. +
  4642. +const struct rkvdec_coded_fmt_ops rkvdec_hevc_fmt_ops = {
  4643. + .adjust_fmt = rkvdec_hevc_adjust_fmt,
  4644. + .start = rkvdec_hevc_start,
  4645. + .stop = rkvdec_hevc_stop,
  4646. + .run = rkvdec_hevc_run,
  4647. +};
  4648. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/staging/media/rkvdec/rkvdec-regs.h linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec-regs.h
  4649. --- media_tree_master/drivers/staging/media/rkvdec/rkvdec-regs.h 2020-05-30 15:14:44.771016868 -0700
  4650. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec-regs.h 2020-05-30 15:12:49.823502132 -0700
  4651. @@ -43,6 +43,7 @@
  4652. #define RKVDEC_RLC_MODE BIT(11)
  4653. #define RKVDEC_STRM_START_BIT(x) (((x) & 0x7f) << 12)
  4654. #define RKVDEC_MODE(x) (((x) & 0x03) << 20)
  4655. +#define RKVDEC_MODE_HEVC 0
  4656. #define RKVDEC_MODE_H264 1
  4657. #define RKVDEC_MODE_VP9 2
  4658. #define RKVDEC_RPS_MODE BIT(24)
  4659. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/drivers/staging/media/rkvdec/rkvdec-vp9.c linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec-vp9.c
  4660. --- media_tree_master/drivers/staging/media/rkvdec/rkvdec-vp9.c 1969-12-31 16:00:00.000000000 -0800
  4661. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/drivers/staging/media/rkvdec/rkvdec-vp9.c 2020-05-30 15:12:49.823502132 -0700
  4662. @@ -0,0 +1,1577 @@
  4663. +// SPDX-License-Identifier: GPL-2.0
  4664. +/*
  4665. + * Rockchip Video Decoder VP9 backend
  4666. + *
  4667. + * Copyright (C) 2019 Collabora, Ltd.
  4668. + * Boris Brezillon <boris.brezillon@collabora.com>
  4669. + *
  4670. + * Copyright (C) 2016 Rockchip Electronics Co., Ltd.
  4671. + * Alpha Lin <Alpha.Lin@rock-chips.com>
  4672. + */
  4673. +
  4674. +#include <linux/kernel.h>
  4675. +#include <linux/vmalloc.h>
  4676. +#include <media/v4l2-mem2mem.h>
  4677. +
  4678. +#include "rkvdec.h"
  4679. +#include "rkvdec-regs.h"
  4680. +
  4681. +#define RKVDEC_VP9_PROBE_SIZE 4864
  4682. +#define RKVDEC_VP9_COUNT_SIZE 13232
  4683. +#define RKVDEC_VP9_MAX_SEGMAP_SIZE 73728
  4684. +
  4685. +struct rkvdec_vp9_intra_mode_probs {
  4686. + u8 y_mode[105];
  4687. + u8 uv_mode[23];
  4688. +};
  4689. +
  4690. +struct rkvdec_vp9_intra_only_frame_probs {
  4691. + u8 coef_intra[4][2][128];
  4692. + struct rkvdec_vp9_intra_mode_probs intra_mode[10];
  4693. +};
  4694. +
  4695. +struct rkvdec_vp9_inter_frame_probs {
  4696. + u8 y_mode[4][9];
  4697. + u8 comp_mode[5];
  4698. + u8 comp_ref[5];
  4699. + u8 single_ref[5][2];
  4700. + u8 inter_mode[7][3];
  4701. + u8 interp_filter[4][2];
  4702. + u8 padding0[11];
  4703. + u8 coef[2][4][2][128];
  4704. + u8 uv_mode_0_2[3][9];
  4705. + u8 padding1[5];
  4706. + u8 uv_mode_3_5[3][9];
  4707. + u8 padding2[5];
  4708. + u8 uv_mode_6_8[3][9];
  4709. + u8 padding3[5];
  4710. + u8 uv_mode_9[9];
  4711. + u8 padding4[7];
  4712. + u8 padding5[16];
  4713. + struct {
  4714. + u8 joint[3];
  4715. + u8 sign[2];
  4716. + u8 class[2][10];
  4717. + u8 class0_bit[2];
  4718. + u8 bits[2][10];
  4719. + u8 class0_fr[2][2][3];
  4720. + u8 fr[2][3];
  4721. + u8 class0_hp[2];
  4722. + u8 hp[2];
  4723. + } mv;
  4724. +};
  4725. +
  4726. +struct rkvdec_vp9_probs {
  4727. + u8 partition[16][3];
  4728. + u8 pred[3];
  4729. + u8 tree[7];
  4730. + u8 skip[3];
  4731. + u8 tx32[2][3];
  4732. + u8 tx16[2][2];
  4733. + u8 tx8[2][1];
  4734. + u8 is_inter[4];
  4735. + /* 128 bit alignment */
  4736. + u8 padding0[3];
  4737. + union {
  4738. + struct rkvdec_vp9_inter_frame_probs inter;
  4739. + struct rkvdec_vp9_intra_only_frame_probs intra_only;
  4740. + };
  4741. +};
  4742. +
  4743. +/* Data structure describing auxiliary buffer format. */
  4744. +struct rkvdec_vp9_priv_tbl {
  4745. + struct rkvdec_vp9_probs probs;
  4746. + u8 segmap[2][RKVDEC_VP9_MAX_SEGMAP_SIZE];
  4747. +};
  4748. +
  4749. +struct rkvdec_vp9_refs_counts {
  4750. + u32 eob[2];
  4751. + u32 coeff[3];
  4752. +};
  4753. +
  4754. +struct rkvdec_vp9_inter_frame_symbol_counts {
  4755. + u32 partition[16][4];
  4756. + u32 skip[3][2];
  4757. + u32 inter[4][2];
  4758. + u32 tx32p[2][4];
  4759. + u32 tx16p[2][4];
  4760. + u32 tx8p[2][2];
  4761. + u32 y_mode[4][10];
  4762. + u32 uv_mode[10][10];
  4763. + u32 comp[5][2];
  4764. + u32 comp_ref[5][2];
  4765. + u32 single_ref[5][2][2];
  4766. + u32 mv_mode[7][4];
  4767. + u32 filter[4][3];
  4768. + u32 mv_joint[4];
  4769. + u32 sign[2][2];
  4770. + /* add 1 element for align */
  4771. + u32 classes[2][11 + 1];
  4772. + u32 class0[2][2];
  4773. + u32 bits[2][10][2];
  4774. + u32 class0_fp[2][2][4];
  4775. + u32 fp[2][4];
  4776. + u32 class0_hp[2][2];
  4777. + u32 hp[2][2];
  4778. + struct rkvdec_vp9_refs_counts ref_cnt[2][4][2][6][6];
  4779. +};
  4780. +
  4781. +struct rkvdec_vp9_intra_frame_symbol_counts {
  4782. + u32 partition[4][4][4];
  4783. + u32 skip[3][2];
  4784. + u32 intra[4][2];
  4785. + u32 tx32p[2][4];
  4786. + u32 tx16p[2][4];
  4787. + u32 tx8p[2][2];
  4788. + struct rkvdec_vp9_refs_counts ref_cnt[2][4][2][6][6];
  4789. +};
  4790. +
  4791. +struct rkvdec_vp9_run {
  4792. + struct rkvdec_run base;
  4793. + const struct v4l2_ctrl_vp9_frame_decode_params *decode_params;
  4794. +};
  4795. +
  4796. +struct rkvdec_vp9_frame_info {
  4797. + u32 valid : 1;
  4798. + u32 segmapid : 1;
  4799. + u32 frame_context_idx : 2;
  4800. + u32 reference_mode : 2;
  4801. + u32 tx_mode : 3;
  4802. + u32 interpolation_filter : 3;
  4803. + u32 flags;
  4804. + u64 timestamp;
  4805. + struct v4l2_vp9_segmentation seg;
  4806. + struct v4l2_vp9_loop_filter lf;
  4807. +};
  4808. +
  4809. +struct rkvdec_vp9_ctx {
  4810. + struct rkvdec_aux_buf priv_tbl;
  4811. + struct rkvdec_aux_buf count_tbl;
  4812. + struct v4l2_ctrl_vp9_frame_ctx frame_context;
  4813. + struct rkvdec_vp9_frame_info cur;
  4814. + struct rkvdec_vp9_frame_info last;
  4815. +};
  4816. +
  4817. +static u32 rkvdec_fastdiv(u32 dividend, u16 divisor)
  4818. +{
  4819. +#define DIV_INV(d) (u32)(((1ULL << 32) + ((d) - 1)) / (d))
  4820. +#define DIVS_INV(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) \
  4821. + DIV_INV(d0), DIV_INV(d1), DIV_INV(d2), DIV_INV(d3), \
  4822. + DIV_INV(d4), DIV_INV(d5), DIV_INV(d6), DIV_INV(d7), \
  4823. + DIV_INV(d8), DIV_INV(d9)
  4824. +
  4825. + static const u32 inv[] = {
  4826. + DIV_INV(2), DIV_INV(3), DIV_INV(4), DIV_INV(5),
  4827. + DIV_INV(6), DIV_INV(7), DIV_INV(8), DIV_INV(9),
  4828. + DIVS_INV(10, 11, 12, 13, 14, 15, 16, 17, 18, 19),
  4829. + DIVS_INV(20, 21, 22, 23, 24, 25, 26, 27, 28, 29),
  4830. + DIVS_INV(30, 31, 32, 33, 34, 35, 36, 37, 38, 39),
  4831. + DIVS_INV(40, 41, 42, 43, 44, 45, 46, 47, 48, 49),
  4832. + DIVS_INV(50, 51, 52, 53, 54, 55, 56, 57, 58, 59),
  4833. + DIVS_INV(60, 61, 62, 63, 64, 65, 66, 67, 68, 69),
  4834. + DIVS_INV(70, 71, 72, 73, 74, 75, 76, 77, 78, 79),
  4835. + DIVS_INV(80, 81, 82, 83, 84, 85, 86, 87, 88, 89),
  4836. + DIVS_INV(90, 91, 92, 93, 94, 95, 96, 97, 98, 99),
  4837. + DIVS_INV(100, 101, 102, 103, 104, 105, 106, 107, 108, 109),
  4838. + DIVS_INV(110, 111, 112, 113, 114, 115, 116, 117, 118, 119),
  4839. + DIVS_INV(120, 121, 122, 123, 124, 125, 126, 127, 128, 129),
  4840. + DIVS_INV(130, 131, 132, 133, 134, 135, 136, 137, 138, 139),
  4841. + DIVS_INV(140, 141, 142, 143, 144, 145, 146, 147, 148, 149),
  4842. + DIVS_INV(150, 151, 152, 153, 154, 155, 156, 157, 158, 159),
  4843. + DIVS_INV(160, 161, 162, 163, 164, 165, 166, 167, 168, 169),
  4844. + DIVS_INV(170, 171, 172, 173, 174, 175, 176, 177, 178, 179),
  4845. + DIVS_INV(180, 181, 182, 183, 184, 185, 186, 187, 188, 189),
  4846. + DIVS_INV(190, 191, 192, 193, 194, 195, 196, 197, 198, 199),
  4847. + DIVS_INV(200, 201, 202, 203, 204, 205, 206, 207, 208, 209),
  4848. + DIVS_INV(210, 211, 212, 213, 214, 215, 216, 217, 218, 219),
  4849. + DIVS_INV(220, 221, 222, 223, 224, 225, 226, 227, 228, 229),
  4850. + DIVS_INV(230, 231, 232, 233, 234, 235, 236, 237, 238, 239),
  4851. + DIVS_INV(240, 241, 242, 243, 244, 245, 246, 247, 248, 249),
  4852. + DIV_INV(250), DIV_INV(251), DIV_INV(252), DIV_INV(253),
  4853. + DIV_INV(254), DIV_INV(255), DIV_INV(256),
  4854. + };
  4855. +
  4856. + if (divisor == 0)
  4857. + return 0;
  4858. + else if (divisor == 1)
  4859. + return dividend;
  4860. +
  4861. + if (WARN_ON(divisor - 2 >= ARRAY_SIZE(inv)))
  4862. + return dividend;
  4863. +
  4864. + return ((u64)dividend * inv[divisor - 2]) >> 32;
  4865. +}
  4866. +
  4867. +static const u8 vp9_kf_y_mode_prob[10][10][9] = {
  4868. + {
  4869. + /* above = dc */
  4870. + { 137, 30, 42, 148, 151, 207, 70, 52, 91 },/*left = dc */
  4871. + { 92, 45, 102, 136, 116, 180, 74, 90, 100 },/*left = v */
  4872. + { 73, 32, 19, 187, 222, 215, 46, 34, 100 },/*left = h */
  4873. + { 91, 30, 32, 116, 121, 186, 93, 86, 94 },/*left = d45 */
  4874. + { 72, 35, 36, 149, 68, 206, 68, 63, 105 },/*left = d135*/
  4875. + { 73, 31, 28, 138, 57, 124, 55, 122, 151 },/*left = d117*/
  4876. + { 67, 23, 21, 140, 126, 197, 40, 37, 171 },/*left = d153*/
  4877. + { 86, 27, 28, 128, 154, 212, 45, 43, 53 },/*left = d207*/
  4878. + { 74, 32, 27, 107, 86, 160, 63, 134, 102 },/*left = d63 */
  4879. + { 59, 67, 44, 140, 161, 202, 78, 67, 119 } /*left = tm */
  4880. + }, { /* above = v */
  4881. + { 63, 36, 126, 146, 123, 158, 60, 90, 96 },/*left = dc */
  4882. + { 43, 46, 168, 134, 107, 128, 69, 142, 92 },/*left = v */
  4883. + { 44, 29, 68, 159, 201, 177, 50, 57, 77 },/*left = h */
  4884. + { 58, 38, 76, 114, 97, 172, 78, 133, 92 },/*left = d45 */
  4885. + { 46, 41, 76, 140, 63, 184, 69, 112, 57 },/*left = d135*/
  4886. + { 38, 32, 85, 140, 46, 112, 54, 151, 133 },/*left = d117*/
  4887. + { 39, 27, 61, 131, 110, 175, 44, 75, 136 },/*left = d153*/
  4888. + { 52, 30, 74, 113, 130, 175, 51, 64, 58 },/*left = d207*/
  4889. + { 47, 35, 80, 100, 74, 143, 64, 163, 74 },/*left = d63 */
  4890. + { 36, 61, 116, 114, 128, 162, 80, 125, 82 } /*left = tm */
  4891. + }, { /* above = h */
  4892. + { 82, 26, 26, 171, 208, 204, 44, 32, 105 },/*left = dc */
  4893. + { 55, 44, 68, 166, 179, 192, 57, 57, 108 },/*left = v */
  4894. + { 42, 26, 11, 199, 241, 228, 23, 15, 85 },/*left = h */
  4895. + { 68, 42, 19, 131, 160, 199, 55, 52, 83 },/*left = d45 */
  4896. + { 58, 50, 25, 139, 115, 232, 39, 52, 118 },/*left = d135*/
  4897. + { 50, 35, 33, 153, 104, 162, 64, 59, 131 },/*left = d117*/
  4898. + { 44, 24, 16, 150, 177, 202, 33, 19, 156 },/*left = d153*/
  4899. + { 55, 27, 12, 153, 203, 218, 26, 27, 49 },/*left = d207*/
  4900. + { 53, 49, 21, 110, 116, 168, 59, 80, 76 },/*left = d63 */
  4901. + { 38, 72, 19, 168, 203, 212, 50, 50, 107 } /*left = tm */
  4902. + }, { /* above = d45 */
  4903. + { 103, 26, 36, 129, 132, 201, 83, 80, 93 },/*left = dc */
  4904. + { 59, 38, 83, 112, 103, 162, 98, 136, 90 },/*left = v */
  4905. + { 62, 30, 23, 158, 200, 207, 59, 57, 50 },/*left = h */
  4906. + { 67, 30, 29, 84, 86, 191, 102, 91, 59 },/*left = d45 */
  4907. + { 60, 32, 33, 112, 71, 220, 64, 89, 104 },/*left = d135*/
  4908. + { 53, 26, 34, 130, 56, 149, 84, 120, 103 },/*left = d117*/
  4909. + { 53, 21, 23, 133, 109, 210, 56, 77, 172 },/*left = d153*/
  4910. + { 77, 19, 29, 112, 142, 228, 55, 66, 36 },/*left = d207*/
  4911. + { 61, 29, 29, 93, 97, 165, 83, 175, 162 },/*left = d63 */
  4912. + { 47, 47, 43, 114, 137, 181, 100, 99, 95 } /*left = tm */
  4913. + }, { /* above = d135 */
  4914. + { 69, 23, 29, 128, 83, 199, 46, 44, 101 },/*left = dc */
  4915. + { 53, 40, 55, 139, 69, 183, 61, 80, 110 },/*left = v */
  4916. + { 40, 29, 19, 161, 180, 207, 43, 24, 91 },/*left = h */
  4917. + { 60, 34, 19, 105, 61, 198, 53, 64, 89 },/*left = d45 */
  4918. + { 52, 31, 22, 158, 40, 209, 58, 62, 89 },/*left = d135*/
  4919. + { 44, 31, 29, 147, 46, 158, 56, 102, 198 },/*left = d117*/
  4920. + { 35, 19, 12, 135, 87, 209, 41, 45, 167 },/*left = d153*/
  4921. + { 55, 25, 21, 118, 95, 215, 38, 39, 66 },/*left = d207*/
  4922. + { 51, 38, 25, 113, 58, 164, 70, 93, 97 },/*left = d63 */
  4923. + { 47, 54, 34, 146, 108, 203, 72, 103, 151 } /*left = tm */
  4924. + }, { /* above = d117 */
  4925. + { 64, 19, 37, 156, 66, 138, 49, 95, 133 },/*left = dc */
  4926. + { 46, 27, 80, 150, 55, 124, 55, 121, 135 },/*left = v */
  4927. + { 36, 23, 27, 165, 149, 166, 54, 64, 118 },/*left = h */
  4928. + { 53, 21, 36, 131, 63, 163, 60, 109, 81 },/*left = d45 */
  4929. + { 40, 26, 35, 154, 40, 185, 51, 97, 123 },/*left = d135*/
  4930. + { 35, 19, 34, 179, 19, 97, 48, 129, 124 },/*left = d117*/
  4931. + { 36, 20, 26, 136, 62, 164, 33, 77, 154 },/*left = d153*/
  4932. + { 45, 18, 32, 130, 90, 157, 40, 79, 91 },/*left = d207*/
  4933. + { 45, 26, 28, 129, 45, 129, 49, 147, 123 },/*left = d63 */
  4934. + { 38, 44, 51, 136, 74, 162, 57, 97, 121 } /*left = tm */
  4935. + }, { /* above = d153 */
  4936. + { 75, 17, 22, 136, 138, 185, 32, 34, 166 },/*left = dc */
  4937. + { 56, 39, 58, 133, 117, 173, 48, 53, 187 },/*left = v */
  4938. + { 35, 21, 12, 161, 212, 207, 20, 23, 145 },/*left = h */
  4939. + { 56, 29, 19, 117, 109, 181, 55, 68, 112 },/*left = d45 */
  4940. + { 47, 29, 17, 153, 64, 220, 59, 51, 114 },/*left = d135*/
  4941. + { 46, 16, 24, 136, 76, 147, 41, 64, 172 },/*left = d117*/
  4942. + { 34, 17, 11, 108, 152, 187, 13, 15, 209 },/*left = d153*/
  4943. + { 51, 24, 14, 115, 133, 209, 32, 26, 104 },/*left = d207*/
  4944. + { 55, 30, 18, 122, 79, 179, 44, 88, 116 },/*left = d63 */
  4945. + { 37, 49, 25, 129, 168, 164, 41, 54, 148 } /*left = tm */
  4946. + }, { /* above = d207 */
  4947. + { 82, 22, 32, 127, 143, 213, 39, 41, 70 },/*left = dc */
  4948. + { 62, 44, 61, 123, 105, 189, 48, 57, 64 },/*left = v */
  4949. + { 47, 25, 17, 175, 222, 220, 24, 30, 86 },/*left = h */
  4950. + { 68, 36, 17, 106, 102, 206, 59, 74, 74 },/*left = d45 */
  4951. + { 57, 39, 23, 151, 68, 216, 55, 63, 58 },/*left = d135*/
  4952. + { 49, 30, 35, 141, 70, 168, 82, 40, 115 },/*left = d117*/
  4953. + { 51, 25, 15, 136, 129, 202, 38, 35, 139 },/*left = d153*/
  4954. + { 68, 26, 16, 111, 141, 215, 29, 28, 28 },/*left = d207*/
  4955. + { 59, 39, 19, 114, 75, 180, 77, 104, 42 },/*left = d63 */
  4956. + { 40, 61, 26, 126, 152, 206, 61, 59, 93 } /*left = tm */
  4957. + }, { /* above = d63 */
  4958. + { 78, 23, 39, 111, 117, 170, 74, 124, 94 },/*left = dc */
  4959. + { 48, 34, 86, 101, 92, 146, 78, 179, 134 },/*left = v */
  4960. + { 47, 22, 24, 138, 187, 178, 68, 69, 59 },/*left = h */
  4961. + { 56, 25, 33, 105, 112, 187, 95, 177, 129 },/*left = d45 */
  4962. + { 48, 31, 27, 114, 63, 183, 82, 116, 56 },/*left = d135*/
  4963. + { 43, 28, 37, 121, 63, 123, 61, 192, 169 },/*left = d117*/
  4964. + { 42, 17, 24, 109, 97, 177, 56, 76, 122 },/*left = d153*/
  4965. + { 58, 18, 28, 105, 139, 182, 70, 92, 63 },/*left = d207*/
  4966. + { 46, 23, 32, 74, 86, 150, 67, 183, 88 },/*left = d63 */
  4967. + { 36, 38, 48, 92, 122, 165, 88, 137, 91 } /*left = tm */
  4968. + }, { /* above = tm */
  4969. + { 65, 70, 60, 155, 159, 199, 61, 60, 81 },/*left = dc */
  4970. + { 44, 78, 115, 132, 119, 173, 71, 112, 93 },/*left = v */
  4971. + { 39, 38, 21, 184, 227, 206, 42, 32, 64 },/*left = h */
  4972. + { 58, 47, 36, 124, 137, 193, 80, 82, 78 },/*left = d45 */
  4973. + { 49, 50, 35, 144, 95, 205, 63, 78, 59 },/*left = d135*/
  4974. + { 41, 53, 52, 148, 71, 142, 65, 128, 51 },/*left = d117*/
  4975. + { 40, 36, 28, 143, 143, 202, 40, 55, 137 },/*left = d153*/
  4976. + { 52, 34, 29, 129, 183, 227, 42, 35, 43 },/*left = d207*/
  4977. + { 42, 44, 44, 104, 105, 164, 64, 130, 80 },/*left = d63 */
  4978. + { 43, 81, 53, 140, 169, 204, 68, 84, 72 } /*left = tm */
  4979. + }
  4980. +};
  4981. +
  4982. +static const u8 kf_partition_probs[16][3] = {
  4983. + /* 8x8 -> 4x4 */
  4984. + { 158, 97, 94 }, /* a/l both not split */
  4985. + { 93, 24, 99 }, /* a split, l not split */
  4986. + { 85, 119, 44 }, /* l split, a not split */
  4987. + { 62, 59, 67 }, /* a/l both split */
  4988. + /* 16x16 -> 8x8 */
  4989. + { 149, 53, 53 }, /* a/l both not split */
  4990. + { 94, 20, 48 }, /* a split, l not split */
  4991. + { 83, 53, 24 }, /* l split, a not split */
  4992. + { 52, 18, 18 }, /* a/l both split */
  4993. + /* 32x32 -> 16x16 */
  4994. + { 150, 40, 39 }, /* a/l both not split */
  4995. + { 78, 12, 26 }, /* a split, l not split */
  4996. + { 67, 33, 11 }, /* l split, a not split */
  4997. + { 24, 7, 5 }, /* a/l both split */
  4998. + /* 64x64 -> 32x32 */
  4999. + { 174, 35, 49 }, /* a/l both not split */
  5000. + { 68, 11, 27 }, /* a split, l not split */
  5001. + { 57, 15, 9 }, /* l split, a not split */
  5002. + { 12, 3, 3 }, /* a/l both split */
  5003. +};
  5004. +
  5005. +static const u8 kf_uv_mode_prob[10][9] = {
  5006. + { 144, 11, 54, 157, 195, 130, 46, 58, 108 }, /* y = dc */
  5007. + { 118, 15, 123, 148, 131, 101, 44, 93, 131 }, /* y = v */
  5008. + { 113, 12, 23, 188, 226, 142, 26, 32, 125 }, /* y = h */
  5009. + { 120, 11, 50, 123, 163, 135, 64, 77, 103 }, /* y = d45 */
  5010. + { 113, 9, 36, 155, 111, 157, 32, 44, 161 }, /* y = d135 */
  5011. + { 116, 9, 55, 176, 76, 96, 37, 61, 149 }, /* y = d117 */
  5012. + { 115, 9, 28, 141, 161, 167, 21, 25, 193 }, /* y = d153 */
  5013. + { 120, 12, 32, 145, 195, 142, 32, 38, 86 }, /* y = d207 */
  5014. + { 116, 12, 64, 120, 140, 125, 49, 115, 121 }, /* y = d63 */
  5015. + { 102, 19, 66, 162, 182, 122, 35, 59, 128 } /* y = tm */
  5016. +};
  5017. +
  5018. +static void write_coeff_plane(const u8 coef[6][6][3], u8 *coeff_plane)
  5019. +{
  5020. + unsigned int idx = 0;
  5021. + u8 byte_count = 0, p;
  5022. + s32 k, m, n;
  5023. +
  5024. + for (k = 0; k < 6; k++) {
  5025. + for (m = 0; m < 6; m++) {
  5026. + for (n = 0; n < 3; n++) {
  5027. + p = coef[k][m][n];
  5028. + coeff_plane[idx++] = p;
  5029. + byte_count++;
  5030. + if (byte_count == 27) {
  5031. + idx += 5;
  5032. + byte_count = 0;
  5033. + }
  5034. + }
  5035. + }
  5036. + }
  5037. +}
  5038. +
  5039. +static void init_intra_only_probs(struct rkvdec_ctx *ctx,
  5040. + const struct rkvdec_vp9_run *run)
  5041. +{
  5042. + const struct v4l2_ctrl_vp9_frame_decode_params *dec_params;
  5043. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  5044. + struct rkvdec_vp9_priv_tbl *tbl = vp9_ctx->priv_tbl.cpu;
  5045. + struct rkvdec_vp9_intra_only_frame_probs *rkprobs;
  5046. + const struct v4l2_vp9_probabilities *probs;
  5047. + unsigned int i, j, k, m;
  5048. +
  5049. + rkprobs = &tbl->probs.intra_only;
  5050. + dec_params = run->decode_params;
  5051. + probs = &dec_params->probs;
  5052. +
  5053. + /*
  5054. + * intra only 149 x 128 bits ,aligned to 152 x 128 bits coeff related
  5055. + * prob 64 x 128 bits
  5056. + */
  5057. + for (i = 0; i < ARRAY_SIZE(probs->coef); i++) {
  5058. + for (j = 0; j < ARRAY_SIZE(probs->coef[0]); j++)
  5059. + write_coeff_plane(probs->coef[i][j][0],
  5060. + rkprobs->coef_intra[i][j]);
  5061. + }
  5062. +
  5063. + /* intra mode prob 80 x 128 bits */
  5064. + for (i = 0; i < ARRAY_SIZE(vp9_kf_y_mode_prob); i++) {
  5065. + u32 byte_count = 0;
  5066. + int idx = 0;
  5067. +
  5068. + /* vp9_kf_y_mode_prob */
  5069. + for (j = 0; j < ARRAY_SIZE(vp9_kf_y_mode_prob[0]); j++) {
  5070. + for (k = 0; k < ARRAY_SIZE(vp9_kf_y_mode_prob[0][0]);
  5071. + k++) {
  5072. + u8 val = vp9_kf_y_mode_prob[i][j][k];
  5073. +
  5074. + rkprobs->intra_mode[i].y_mode[idx++] = val;
  5075. + byte_count++;
  5076. + if (byte_count == 27) {
  5077. + byte_count = 0;
  5078. + idx += 5;
  5079. + }
  5080. + }
  5081. + }
  5082. +
  5083. + idx = 0;
  5084. + if (i < 4) {
  5085. + for (m = 0; m < (i < 3 ? 23 : 21); m++) {
  5086. + const u8 *ptr = (const u8 *)kf_uv_mode_prob;
  5087. +
  5088. + rkprobs->intra_mode[i].uv_mode[idx++] = ptr[i * 23 + m];
  5089. + }
  5090. + }
  5091. + }
  5092. +}
  5093. +
  5094. +static void init_inter_probs(struct rkvdec_ctx *ctx,
  5095. + const struct rkvdec_vp9_run *run)
  5096. +{
  5097. + const struct v4l2_ctrl_vp9_frame_decode_params *dec_params;
  5098. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  5099. + struct rkvdec_vp9_priv_tbl *tbl = vp9_ctx->priv_tbl.cpu;
  5100. + struct rkvdec_vp9_inter_frame_probs *rkprobs;
  5101. + const struct v4l2_vp9_probabilities *probs;
  5102. + unsigned int i, j, k;
  5103. +
  5104. + rkprobs = &tbl->probs.inter;
  5105. + dec_params = run->decode_params;
  5106. + probs = &dec_params->probs;
  5107. +
  5108. + /*
  5109. + * inter probs
  5110. + * 151 x 128 bits, aligned to 152 x 128 bits
  5111. + * inter only
  5112. + * intra_y_mode & inter_block info 6 x 128 bits
  5113. + */
  5114. +
  5115. + memcpy(rkprobs->y_mode, probs->y_mode, sizeof(rkprobs->y_mode));
  5116. + memcpy(rkprobs->comp_mode, probs->comp_mode,
  5117. + sizeof(rkprobs->comp_mode));
  5118. + memcpy(rkprobs->comp_ref, probs->comp_ref,
  5119. + sizeof(rkprobs->comp_ref));
  5120. + memcpy(rkprobs->single_ref, probs->single_ref,
  5121. + sizeof(rkprobs->single_ref));
  5122. + memcpy(rkprobs->inter_mode, probs->inter_mode,
  5123. + sizeof(rkprobs->inter_mode));
  5124. + memcpy(rkprobs->interp_filter, probs->interp_filter,
  5125. + sizeof(rkprobs->interp_filter));
  5126. +
  5127. + /* 128 x 128 bits coeff related */
  5128. + for (i = 0; i < ARRAY_SIZE(probs->coef); i++) {
  5129. + for (j = 0; j < ARRAY_SIZE(probs->coef[0]); j++) {
  5130. + for (k = 0; k < ARRAY_SIZE(probs->coef[0][0]); k++)
  5131. + write_coeff_plane(probs->coef[i][j][k],
  5132. + rkprobs->coef[k][i][j]);
  5133. + }
  5134. + }
  5135. +
  5136. + /* intra uv mode 6 x 128 */
  5137. + memcpy(rkprobs->uv_mode_0_2, &probs->uv_mode[0],
  5138. + sizeof(rkprobs->uv_mode_0_2));
  5139. + memcpy(rkprobs->uv_mode_3_5, &probs->uv_mode[3],
  5140. + sizeof(rkprobs->uv_mode_3_5));
  5141. + memcpy(rkprobs->uv_mode_6_8, &probs->uv_mode[6],
  5142. + sizeof(rkprobs->uv_mode_6_8));
  5143. + memcpy(rkprobs->uv_mode_9, &probs->uv_mode[9],
  5144. + sizeof(rkprobs->uv_mode_9));
  5145. +
  5146. + /* mv related 6 x 128 */
  5147. + memcpy(rkprobs->mv.joint, probs->mv.joint,
  5148. + sizeof(rkprobs->mv.joint));
  5149. + memcpy(rkprobs->mv.sign, probs->mv.sign,
  5150. + sizeof(rkprobs->mv.sign));
  5151. + memcpy(rkprobs->mv.class, probs->mv.class,
  5152. + sizeof(rkprobs->mv.class));
  5153. + memcpy(rkprobs->mv.class0_bit, probs->mv.class0_bit,
  5154. + sizeof(rkprobs->mv.class0_bit));
  5155. + memcpy(rkprobs->mv.bits, probs->mv.bits,
  5156. + sizeof(rkprobs->mv.bits));
  5157. + memcpy(rkprobs->mv.class0_fr, probs->mv.class0_fr,
  5158. + sizeof(rkprobs->mv.class0_fr));
  5159. + memcpy(rkprobs->mv.fr, probs->mv.fr,
  5160. + sizeof(rkprobs->mv.fr));
  5161. + memcpy(rkprobs->mv.class0_hp, probs->mv.class0_hp,
  5162. + sizeof(rkprobs->mv.class0_hp));
  5163. + memcpy(rkprobs->mv.hp, probs->mv.hp,
  5164. + sizeof(rkprobs->mv.hp));
  5165. +}
  5166. +
  5167. +static void init_probs(struct rkvdec_ctx *ctx,
  5168. + const struct rkvdec_vp9_run *run)
  5169. +{
  5170. + const struct v4l2_ctrl_vp9_frame_decode_params *dec_params;
  5171. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  5172. + struct rkvdec_vp9_priv_tbl *tbl = vp9_ctx->priv_tbl.cpu;
  5173. + struct rkvdec_vp9_probs *rkprobs = &tbl->probs;
  5174. + const struct v4l2_vp9_segmentation *seg;
  5175. + const struct v4l2_vp9_probabilities *probs;
  5176. + bool intra_only;
  5177. +
  5178. + dec_params = run->decode_params;
  5179. + probs = &dec_params->probs;
  5180. + seg = &dec_params->seg;
  5181. +
  5182. + memset(rkprobs, 0, sizeof(*rkprobs));
  5183. +
  5184. + intra_only = !!(dec_params->flags &
  5185. + (V4L2_VP9_FRAME_FLAG_KEY_FRAME |
  5186. + V4L2_VP9_FRAME_FLAG_INTRA_ONLY));
  5187. +
  5188. + /* sb info 5 x 128 bit */
  5189. + memcpy(rkprobs->partition,
  5190. + intra_only ? kf_partition_probs : probs->partition,
  5191. + sizeof(rkprobs->partition));
  5192. +
  5193. + memcpy(rkprobs->pred, seg->pred_probs, sizeof(rkprobs->pred));
  5194. + memcpy(rkprobs->tree, seg->tree_probs, sizeof(rkprobs->tree));
  5195. + memcpy(rkprobs->skip, probs->skip, sizeof(rkprobs->skip));
  5196. + memcpy(rkprobs->tx32, probs->tx32, sizeof(rkprobs->tx32));
  5197. + memcpy(rkprobs->tx16, probs->tx16, sizeof(rkprobs->tx16));
  5198. + memcpy(rkprobs->tx8, probs->tx8, sizeof(rkprobs->tx8));
  5199. + memcpy(rkprobs->is_inter, probs->is_inter, sizeof(rkprobs->is_inter));
  5200. +
  5201. + if (intra_only)
  5202. + init_intra_only_probs(ctx, run);
  5203. + else
  5204. + init_inter_probs(ctx, run);
  5205. +}
  5206. +
  5207. +struct vp9d_ref_config {
  5208. + u32 reg_frm_size;
  5209. + u32 reg_hor_stride;
  5210. + u32 reg_y_stride;
  5211. + u32 reg_yuv_stride;
  5212. + u32 reg_ref_base;
  5213. +};
  5214. +
  5215. +static struct vp9d_ref_config ref_config[3] = {
  5216. + {
  5217. + .reg_frm_size = RKVDEC_REG_VP9_FRAME_SIZE(0),
  5218. + .reg_hor_stride = RKVDEC_VP9_HOR_VIRSTRIDE(0),
  5219. + .reg_y_stride = RKVDEC_VP9_LAST_FRAME_YSTRIDE,
  5220. + .reg_yuv_stride = RKVDEC_VP9_LAST_FRAME_YUVSTRIDE,
  5221. + .reg_ref_base = RKVDEC_REG_VP9_LAST_FRAME_BASE,
  5222. + },
  5223. + {
  5224. + .reg_frm_size = RKVDEC_REG_VP9_FRAME_SIZE(1),
  5225. + .reg_hor_stride = RKVDEC_VP9_HOR_VIRSTRIDE(1),
  5226. + .reg_y_stride = RKVDEC_VP9_GOLDEN_FRAME_YSTRIDE,
  5227. + .reg_yuv_stride = 0,
  5228. + .reg_ref_base = RKVDEC_REG_VP9_GOLDEN_FRAME_BASE,
  5229. + },
  5230. + {
  5231. + .reg_frm_size = RKVDEC_REG_VP9_FRAME_SIZE(2),
  5232. + .reg_hor_stride = RKVDEC_VP9_HOR_VIRSTRIDE(2),
  5233. + .reg_y_stride = RKVDEC_VP9_ALTREF_FRAME_YSTRIDE,
  5234. + .reg_yuv_stride = 0,
  5235. + .reg_ref_base = RKVDEC_REG_VP9_ALTREF_FRAME_BASE,
  5236. + }
  5237. +};
  5238. +
  5239. +static struct rkvdec_decoded_buffer *
  5240. +get_ref_buf(struct rkvdec_ctx *ctx, struct vb2_v4l2_buffer *dst, u64 timestamp)
  5241. +{
  5242. + struct v4l2_m2m_ctx *m2m_ctx = ctx->fh.m2m_ctx;
  5243. + struct vb2_queue *cap_q = &m2m_ctx->cap_q_ctx.q;
  5244. + int buf_idx;
  5245. +
  5246. + /*
  5247. + * If a ref is unused or invalid, address of current destination
  5248. + * buffer is returned.
  5249. + */
  5250. + buf_idx = vb2_find_timestamp(cap_q, timestamp, 0);
  5251. + if (buf_idx < 0)
  5252. + return vb2_to_rkvdec_decoded_buf(&dst->vb2_buf);
  5253. +
  5254. + return vb2_to_rkvdec_decoded_buf(vb2_get_buffer(cap_q, buf_idx));
  5255. +}
  5256. +
  5257. +static dma_addr_t get_mv_base_addr(struct rkvdec_decoded_buffer *buf)
  5258. +{
  5259. + u32 aligned_pitch, aligned_height, yuv_len;
  5260. +
  5261. + aligned_height = round_up(buf->vp9.height, 64);
  5262. + aligned_pitch = round_up(buf->vp9.width * buf->vp9.bit_depth, 512) / 8;
  5263. + yuv_len = (aligned_height * aligned_pitch * 3) / 2;
  5264. +
  5265. + return vb2_dma_contig_plane_dma_addr(&buf->base.vb.vb2_buf, 0) +
  5266. + yuv_len;
  5267. +}
  5268. +
  5269. +static void
  5270. +config_ref_registers(struct rkvdec_ctx *ctx,
  5271. + const struct rkvdec_vp9_run *run,
  5272. + struct rkvdec_decoded_buffer **ref_bufs,
  5273. + enum v4l2_vp9_ref_id id)
  5274. +{
  5275. + u32 aligned_pitch, aligned_height, y_len, yuv_len;
  5276. + struct rkvdec_decoded_buffer *buf = ref_bufs[id];
  5277. + struct rkvdec_dev *rkvdec = ctx->dev;
  5278. +
  5279. + aligned_height = round_up(buf->vp9.height, 64);
  5280. + writel_relaxed(RKVDEC_VP9_FRAMEWIDTH(buf->vp9.width) |
  5281. + RKVDEC_VP9_FRAMEHEIGHT(buf->vp9.height),
  5282. + rkvdec->regs + ref_config[id].reg_frm_size);
  5283. +
  5284. + writel_relaxed(vb2_dma_contig_plane_dma_addr(&buf->base.vb.vb2_buf, 0),
  5285. + rkvdec->regs + ref_config[id].reg_ref_base);
  5286. +
  5287. + if (&buf->base.vb == run->base.bufs.dst)
  5288. + return;
  5289. +
  5290. + aligned_pitch = round_up(buf->vp9.width * buf->vp9.bit_depth, 512) / 8;
  5291. + y_len = aligned_height * aligned_pitch;
  5292. + yuv_len = (y_len * 3) / 2;
  5293. +
  5294. + writel_relaxed(RKVDEC_HOR_Y_VIRSTRIDE(aligned_pitch / 16) |
  5295. + RKVDEC_HOR_UV_VIRSTRIDE(aligned_pitch / 16),
  5296. + rkvdec->regs + ref_config[id].reg_hor_stride);
  5297. + writel_relaxed(RKVDEC_VP9_REF_YSTRIDE(y_len / 16),
  5298. + rkvdec->regs + ref_config[id].reg_y_stride);
  5299. +
  5300. + if (!ref_config[id].reg_yuv_stride)
  5301. + return;
  5302. +
  5303. + writel_relaxed(RKVDEC_VP9_REF_YUVSTRIDE(yuv_len / 16),
  5304. + rkvdec->regs + ref_config[id].reg_yuv_stride);
  5305. +}
  5306. +
  5307. +static bool seg_featured_enabled(const struct v4l2_vp9_segmentation *seg,
  5308. + enum v4l2_vp9_segment_feature feature,
  5309. + unsigned int segid)
  5310. +{
  5311. + u8 mask = V4L2_VP9_SEGMENT_FEATURE_ENABLED(feature);
  5312. +
  5313. + return !!(seg->feature_enabled[segid] & mask);
  5314. +}
  5315. +
  5316. +static void
  5317. +config_seg_registers(struct rkvdec_ctx *ctx,
  5318. + unsigned int segid)
  5319. +{
  5320. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  5321. + const struct v4l2_vp9_segmentation *seg;
  5322. + struct rkvdec_dev *rkvdec = ctx->dev;
  5323. + s16 feature_val;
  5324. + u8 feature_id;
  5325. + u32 val = 0;
  5326. +
  5327. + seg = vp9_ctx->last.valid ? &vp9_ctx->last.seg : &vp9_ctx->cur.seg;
  5328. + feature_id = V4L2_VP9_SEGMENT_FEATURE_QP_DELTA;
  5329. + if (seg_featured_enabled(seg, feature_id, segid)) {
  5330. + feature_val = seg->feature_data[segid][feature_id];
  5331. + val |= RKVDEC_SEGID_FRAME_QP_DELTA_EN(1) |
  5332. + RKVDEC_SEGID_FRAME_QP_DELTA(feature_val);
  5333. + }
  5334. +
  5335. + feature_id = V4L2_VP9_SEGMENT_FEATURE_LF;
  5336. + if (seg_featured_enabled(seg, feature_id, segid)) {
  5337. + feature_val = seg->feature_data[segid][feature_id];
  5338. + val |= RKVDEC_SEGID_FRAME_LOOPFILTER_VALUE_EN(1) |
  5339. + RKVDEC_SEGID_FRAME_LOOPFILTER_VALUE(feature_val);
  5340. + }
  5341. +
  5342. + feature_id = V4L2_VP9_SEGMENT_FEATURE_REF_FRAME;
  5343. + if (seg_featured_enabled(seg, feature_id, segid)) {
  5344. + feature_val = seg->feature_data[segid][feature_id];
  5345. + val |= RKVDEC_SEGID_REFERINFO_EN(1) |
  5346. + RKVDEC_SEGID_REFERINFO(feature_val);
  5347. + }
  5348. +
  5349. + feature_id = V4L2_VP9_SEGMENT_FEATURE_SKIP;
  5350. + if (seg_featured_enabled(seg, feature_id, segid))
  5351. + val |= RKVDEC_SEGID_FRAME_SKIP_EN(1);
  5352. +
  5353. + if (!segid &&
  5354. + (seg->flags & V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE))
  5355. + val |= RKVDEC_SEGID_ABS_DELTA(1);
  5356. +
  5357. + writel_relaxed(val, rkvdec->regs + RKVDEC_VP9_SEGID_GRP(segid));
  5358. +}
  5359. +
  5360. +static void
  5361. +update_dec_buf_info(struct rkvdec_decoded_buffer *buf,
  5362. + const struct v4l2_ctrl_vp9_frame_decode_params *dec_params)
  5363. +{
  5364. + buf->vp9.width = dec_params->frame_width_minus_1 + 1;
  5365. + buf->vp9.height = dec_params->frame_height_minus_1 + 1;
  5366. + buf->vp9.bit_depth = dec_params->bit_depth;
  5367. +}
  5368. +
  5369. +static void
  5370. +update_ctx_cur_info(struct rkvdec_vp9_ctx *vp9_ctx,
  5371. + struct rkvdec_decoded_buffer *buf,
  5372. + const struct v4l2_ctrl_vp9_frame_decode_params *dec_params)
  5373. +{
  5374. + vp9_ctx->cur.valid = true;
  5375. + vp9_ctx->cur.frame_context_idx = dec_params->frame_context_idx;
  5376. + vp9_ctx->cur.reference_mode = dec_params->reference_mode;
  5377. + vp9_ctx->cur.tx_mode = dec_params->tx_mode;
  5378. + vp9_ctx->cur.interpolation_filter = dec_params->interpolation_filter;
  5379. + vp9_ctx->cur.flags = dec_params->flags;
  5380. + vp9_ctx->cur.timestamp = buf->base.vb.vb2_buf.timestamp;
  5381. + vp9_ctx->cur.seg = dec_params->seg;
  5382. + vp9_ctx->cur.lf = dec_params->lf;
  5383. +}
  5384. +
  5385. +static void
  5386. +update_ctx_last_info(struct rkvdec_vp9_ctx *vp9_ctx)
  5387. +{
  5388. + vp9_ctx->last = vp9_ctx->cur;
  5389. +}
  5390. +
  5391. +static void config_registers(struct rkvdec_ctx *ctx,
  5392. + const struct rkvdec_vp9_run *run)
  5393. +{
  5394. + u32 y_len, uv_len, yuv_len, bit_depth, aligned_height, aligned_pitch;
  5395. + const struct v4l2_ctrl_vp9_frame_decode_params *dec_params;
  5396. + struct rkvdec_decoded_buffer *ref_bufs[V4L2_REF_ID_CNT];
  5397. + struct rkvdec_decoded_buffer *dst, *last, *mv_ref;
  5398. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  5399. + u32 val, stream_len, last_frame_info = 0;
  5400. + const struct v4l2_vp9_segmentation *seg;
  5401. + struct rkvdec_dev *rkvdec = ctx->dev;
  5402. + dma_addr_t addr;
  5403. + bool intra_only;
  5404. + unsigned int i;
  5405. +
  5406. + dec_params = run->decode_params;
  5407. + dst = vb2_to_rkvdec_decoded_buf(&run->base.bufs.dst->vb2_buf);
  5408. + for (i = 0; i < ARRAY_SIZE(ref_bufs); i++)
  5409. + ref_bufs[i] = get_ref_buf(ctx, &dst->base.vb,
  5410. + dec_params->refs[i]);
  5411. +
  5412. + if (vp9_ctx->last.valid)
  5413. + last = get_ref_buf(ctx, &dst->base.vb, vp9_ctx->last.timestamp);
  5414. + else
  5415. + last = dst;
  5416. +
  5417. + update_dec_buf_info(dst, dec_params);
  5418. + update_ctx_cur_info(vp9_ctx, dst, dec_params);
  5419. + seg = &dec_params->seg;
  5420. +
  5421. + intra_only = !!(dec_params->flags &
  5422. + (V4L2_VP9_FRAME_FLAG_KEY_FRAME |
  5423. + V4L2_VP9_FRAME_FLAG_INTRA_ONLY));
  5424. +
  5425. + writel_relaxed(RKVDEC_MODE(RKVDEC_MODE_VP9),
  5426. + rkvdec->regs + RKVDEC_REG_SYSCTRL);
  5427. +
  5428. + bit_depth = dec_params->bit_depth;
  5429. + aligned_height = round_up(ctx->decoded_fmt.fmt.pix_mp.height, 64);
  5430. +
  5431. + aligned_pitch = round_up(ctx->decoded_fmt.fmt.pix_mp.width *
  5432. + bit_depth,
  5433. + 512) / 8;
  5434. + y_len = aligned_height * aligned_pitch;
  5435. + uv_len = y_len / 2;
  5436. + yuv_len = y_len + uv_len;
  5437. +
  5438. + writel_relaxed(RKVDEC_Y_HOR_VIRSTRIDE(aligned_pitch / 16) |
  5439. + RKVDEC_UV_HOR_VIRSTRIDE(aligned_pitch / 16),
  5440. + rkvdec->regs + RKVDEC_REG_PICPAR);
  5441. + writel_relaxed(RKVDEC_Y_VIRSTRIDE(y_len / 16),
  5442. + rkvdec->regs + RKVDEC_REG_Y_VIRSTRIDE);
  5443. + writel_relaxed(RKVDEC_YUV_VIRSTRIDE(yuv_len / 16),
  5444. + rkvdec->regs + RKVDEC_REG_YUV_VIRSTRIDE);
  5445. +
  5446. + stream_len = vb2_get_plane_payload(&run->base.bufs.src->vb2_buf, 0);
  5447. + writel_relaxed(RKVDEC_STRM_LEN(stream_len),
  5448. + rkvdec->regs + RKVDEC_REG_STRM_LEN);
  5449. +
  5450. + /*
  5451. + * Reset count buffer, because decoder only output intra related syntax
  5452. + * counts when decoding intra frame, but update entropy need to update
  5453. + * all the probabilities.
  5454. + */
  5455. + if (intra_only)
  5456. + memset(vp9_ctx->count_tbl.cpu, 0, vp9_ctx->count_tbl.size);
  5457. +
  5458. + vp9_ctx->cur.segmapid = vp9_ctx->last.segmapid;
  5459. + if (!intra_only &&
  5460. + !(dec_params->flags & V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT) &&
  5461. + (!(seg->flags & V4L2_VP9_SEGMENTATION_FLAG_ENABLED) ||
  5462. + (seg->flags & V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP)))
  5463. + vp9_ctx->cur.segmapid++;
  5464. +
  5465. + for (i = 0; i < ARRAY_SIZE(ref_bufs); i++)
  5466. + config_ref_registers(ctx, run, ref_bufs, i);
  5467. +
  5468. + for (i = 0; i < 8; i++)
  5469. + config_seg_registers(ctx, i);
  5470. +
  5471. + writel_relaxed(RKVDEC_VP9_TX_MODE(dec_params->tx_mode) |
  5472. + RKVDEC_VP9_FRAME_REF_MODE(dec_params->reference_mode),
  5473. + rkvdec->regs + RKVDEC_VP9_CPRHEADER_CONFIG);
  5474. +
  5475. + if (!intra_only) {
  5476. + const struct v4l2_vp9_loop_filter *lf;
  5477. + s8 delta;
  5478. +
  5479. + if (vp9_ctx->last.valid)
  5480. + lf = &vp9_ctx->last.lf;
  5481. + else
  5482. + lf = &vp9_ctx->cur.lf;
  5483. +
  5484. + val = 0;
  5485. + for (i = 0; i < ARRAY_SIZE(lf->ref_deltas); i++) {
  5486. + delta = lf->ref_deltas[i];
  5487. + val |= RKVDEC_REF_DELTAS_LASTFRAME(i, delta);
  5488. + }
  5489. +
  5490. + writel_relaxed(val,
  5491. + rkvdec->regs + RKVDEC_VP9_REF_DELTAS_LASTFRAME);
  5492. +
  5493. + for (i = 0; i < ARRAY_SIZE(lf->mode_deltas); i++) {
  5494. + delta = lf->mode_deltas[i];
  5495. + last_frame_info |= RKVDEC_MODE_DELTAS_LASTFRAME(i,
  5496. + delta);
  5497. + }
  5498. + }
  5499. +
  5500. + if (vp9_ctx->last.valid && !intra_only &&
  5501. + vp9_ctx->last.seg.flags & V4L2_VP9_SEGMENTATION_FLAG_ENABLED)
  5502. + last_frame_info |= RKVDEC_SEG_EN_LASTFRAME;
  5503. +
  5504. + if (vp9_ctx->last.valid &&
  5505. + vp9_ctx->last.flags & V4L2_VP9_FRAME_FLAG_SHOW_FRAME)
  5506. + last_frame_info |= RKVDEC_LAST_SHOW_FRAME;
  5507. +
  5508. + if (vp9_ctx->last.valid &&
  5509. + vp9_ctx->last.flags &
  5510. + (V4L2_VP9_FRAME_FLAG_KEY_FRAME | V4L2_VP9_FRAME_FLAG_INTRA_ONLY))
  5511. + last_frame_info |= RKVDEC_LAST_INTRA_ONLY;
  5512. +
  5513. + if (vp9_ctx->last.valid &&
  5514. + last->vp9.width == dst->vp9.width &&
  5515. + last->vp9.height == dst->vp9.height)
  5516. + last_frame_info |= RKVDEC_LAST_WIDHHEIGHT_EQCUR;
  5517. +
  5518. + writel_relaxed(last_frame_info,
  5519. + rkvdec->regs + RKVDEC_VP9_INFO_LASTFRAME);
  5520. +
  5521. + writel_relaxed(stream_len - dec_params->compressed_header_size -
  5522. + dec_params->uncompressed_header_size,
  5523. + rkvdec->regs + RKVDEC_VP9_LASTTILE_SIZE);
  5524. +
  5525. + for (i = 0; !intra_only && i < ARRAY_SIZE(ref_bufs); i++) {
  5526. + u32 refw = ref_bufs[i]->vp9.width;
  5527. + u32 refh = ref_bufs[i]->vp9.height;
  5528. + u32 hscale, vscale;
  5529. +
  5530. + hscale = (refw << 14) / dst->vp9.width;
  5531. + vscale = (refh << 14) / dst->vp9.height;
  5532. + writel_relaxed(RKVDEC_VP9_REF_HOR_SCALE(hscale) |
  5533. + RKVDEC_VP9_REF_VER_SCALE(vscale),
  5534. + rkvdec->regs + RKVDEC_VP9_REF_SCALE(i));
  5535. + }
  5536. +
  5537. + addr = vb2_dma_contig_plane_dma_addr(&dst->base.vb.vb2_buf, 0);
  5538. + writel_relaxed(addr, rkvdec->regs + RKVDEC_REG_DECOUT_BASE);
  5539. + addr = vb2_dma_contig_plane_dma_addr(&run->base.bufs.src->vb2_buf, 0);
  5540. + writel_relaxed(addr, rkvdec->regs + RKVDEC_REG_STRM_RLC_BASE);
  5541. + writel_relaxed(vp9_ctx->priv_tbl.dma +
  5542. + offsetof(struct rkvdec_vp9_priv_tbl, probs),
  5543. + rkvdec->regs + RKVDEC_REG_CABACTBL_PROB_BASE);
  5544. + writel_relaxed(vp9_ctx->count_tbl.dma,
  5545. + rkvdec->regs + RKVDEC_REG_VP9COUNT_BASE);
  5546. +
  5547. + writel_relaxed(vp9_ctx->priv_tbl.dma +
  5548. + offsetof(struct rkvdec_vp9_priv_tbl, segmap) +
  5549. + (RKVDEC_VP9_MAX_SEGMAP_SIZE * vp9_ctx->cur.segmapid),
  5550. + rkvdec->regs + RKVDEC_REG_VP9_SEGIDCUR_BASE);
  5551. + writel_relaxed(vp9_ctx->priv_tbl.dma +
  5552. + offsetof(struct rkvdec_vp9_priv_tbl, segmap) +
  5553. + (RKVDEC_VP9_MAX_SEGMAP_SIZE * (!vp9_ctx->cur.segmapid)),
  5554. + rkvdec->regs + RKVDEC_REG_VP9_SEGIDLAST_BASE);
  5555. +
  5556. + if (!intra_only &&
  5557. + !(dec_params->flags & V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT) &&
  5558. + vp9_ctx->last.valid)
  5559. + mv_ref = last;
  5560. + else
  5561. + mv_ref = dst;
  5562. +
  5563. + writel_relaxed(get_mv_base_addr(mv_ref),
  5564. + rkvdec->regs + RKVDEC_VP9_REF_COLMV_BASE);
  5565. +
  5566. + writel_relaxed(ctx->decoded_fmt.fmt.pix_mp.width |
  5567. + (ctx->decoded_fmt.fmt.pix_mp.height << 16),
  5568. + rkvdec->regs + RKVDEC_REG_PERFORMANCE_CYCLE);
  5569. +}
  5570. +
  5571. +static int
  5572. +validate_dec_params(struct rkvdec_ctx *ctx,
  5573. + const struct v4l2_ctrl_vp9_frame_decode_params *dec_params)
  5574. +{
  5575. + unsigned int aligned_width, aligned_height;
  5576. +
  5577. + /* We only support profile 0. */
  5578. + if (dec_params->profile != 0) {
  5579. + dev_err(ctx->dev->dev, "unsupported profile %d\n",
  5580. + dec_params->profile);
  5581. + return -EINVAL;
  5582. + }
  5583. +
  5584. + aligned_width = round_up(dec_params->frame_width_minus_1 + 1, 64);
  5585. + aligned_height = round_up(dec_params->frame_height_minus_1 + 1, 64);
  5586. +
  5587. + /*
  5588. + * Userspace should update the capture/decoded format when the
  5589. + * resolution changes.
  5590. + */
  5591. + if (aligned_width != ctx->decoded_fmt.fmt.pix_mp.width ||
  5592. + aligned_height != ctx->decoded_fmt.fmt.pix_mp.height) {
  5593. + dev_err(ctx->dev->dev,
  5594. + "unexpected bitstream resolution %dx%d\n",
  5595. + dec_params->frame_width_minus_1 + 1,
  5596. + dec_params->frame_height_minus_1 +1);
  5597. + return -EINVAL;
  5598. + }
  5599. +
  5600. + return 0;
  5601. +}
  5602. +
  5603. +static int rkvdec_vp9_run_preamble(struct rkvdec_ctx *ctx,
  5604. + struct rkvdec_vp9_run *run)
  5605. +{
  5606. + const struct v4l2_ctrl_vp9_frame_decode_params *dec_params;
  5607. + const struct v4l2_ctrl_vp9_frame_ctx *fctx = NULL;
  5608. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  5609. + struct v4l2_ctrl *ctrl;
  5610. + u8 frm_ctx;
  5611. + int ret;
  5612. +
  5613. + rkvdec_run_preamble(ctx, &run->base);
  5614. +
  5615. + ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
  5616. + V4L2_CID_MPEG_VIDEO_VP9_FRAME_DECODE_PARAMS);
  5617. + WARN_ON(!ctrl);
  5618. +
  5619. + dec_params = ctrl ? ctrl->p_cur.p : NULL;
  5620. + if (WARN_ON(!dec_params))
  5621. + return -EINVAL;
  5622. +
  5623. + ret = validate_dec_params(ctx, dec_params);
  5624. + if (ret)
  5625. + return ret;
  5626. +
  5627. + run->decode_params = dec_params;
  5628. +
  5629. + /* No need to load the frame context if we don't need to update it. */
  5630. + if (!(dec_params->flags & V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX))
  5631. + return 0;
  5632. +
  5633. + /*
  5634. + * When a refresh context is requested in parallel mode, we should just
  5635. + * update the context with the probs passed in the decode parameters.
  5636. + */
  5637. + if (dec_params->flags & V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE) {
  5638. + vp9_ctx->frame_context.probs = dec_params->probs;
  5639. + return 0;
  5640. + }
  5641. +
  5642. + frm_ctx = run->decode_params->frame_context_idx;
  5643. + ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
  5644. + V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(frm_ctx));
  5645. + if (WARN_ON(!ctrl))
  5646. + return 0;
  5647. +
  5648. + fctx = ctrl->p_cur.p;
  5649. + vp9_ctx->frame_context = *fctx;
  5650. +
  5651. + /*
  5652. + * For intra-only frames, we must update the context TX and skip probs
  5653. + * with the value passed in the decode params.
  5654. + */
  5655. + if (dec_params->flags &
  5656. + (V4L2_VP9_FRAME_FLAG_KEY_FRAME | V4L2_VP9_FRAME_FLAG_INTRA_ONLY)) {
  5657. + struct v4l2_vp9_probabilities *probs;
  5658. +
  5659. + probs = &vp9_ctx->frame_context.probs;
  5660. + memcpy(probs->skip, dec_params->probs.skip,
  5661. + sizeof(probs->skip));
  5662. + memcpy(probs->tx8, dec_params->probs.tx8,
  5663. + sizeof(probs->tx8));
  5664. + memcpy(probs->tx16, dec_params->probs.tx16,
  5665. + sizeof(probs->tx16));
  5666. + memcpy(probs->tx32, dec_params->probs.tx32,
  5667. + sizeof(probs->tx32));
  5668. + }
  5669. +
  5670. + return 0;
  5671. +}
  5672. +
  5673. +static int rkvdec_vp9_run(struct rkvdec_ctx *ctx)
  5674. +{
  5675. + struct rkvdec_dev *rkvdec = ctx->dev;
  5676. + struct rkvdec_vp9_run run = { };
  5677. + int ret;
  5678. +
  5679. + ret = rkvdec_vp9_run_preamble(ctx, &run);
  5680. + if (ret) {
  5681. + rkvdec_run_postamble(ctx, &run.base);
  5682. + return ret;
  5683. + }
  5684. +
  5685. + /* Prepare probs. */
  5686. + init_probs(ctx, &run);
  5687. +
  5688. + /* Configure hardware registers. */
  5689. + config_registers(ctx, &run);
  5690. +
  5691. + rkvdec_run_postamble(ctx, &run.base);
  5692. +
  5693. + schedule_delayed_work(&rkvdec->watchdog_work, msecs_to_jiffies(2000));
  5694. +
  5695. + writel(1, rkvdec->regs + RKVDEC_REG_PREF_LUMA_CACHE_COMMAND);
  5696. + writel(1, rkvdec->regs + RKVDEC_REG_PREF_CHR_CACHE_COMMAND);
  5697. +
  5698. + writel(0xe, rkvdec->regs + RKVDEC_REG_STRMD_ERR_EN);
  5699. + /* Start decoding! */
  5700. + writel(RKVDEC_INTERRUPT_DEC_E | RKVDEC_CONFIG_DEC_CLK_GATE_E |
  5701. + RKVDEC_TIMEOUT_E | RKVDEC_BUF_EMPTY_E,
  5702. + rkvdec->regs + RKVDEC_REG_INTERRUPT);
  5703. +
  5704. + return 0;
  5705. +}
  5706. +
  5707. +static u8 adapt_prob(u8 p1, u32 ct0, u32 ct1, u16 max_count, u32 update_factor)
  5708. +{
  5709. + u32 ct = ct0 + ct1, p2;
  5710. + u32 lo = 1;
  5711. + u32 hi = 255;
  5712. +
  5713. + if (!ct)
  5714. + return p1;
  5715. +
  5716. + p2 = ((ct0 << 8) + (ct >> 1)) / ct;
  5717. + p2 = clamp(p2, lo, hi);
  5718. + ct = min_t(u32, ct, max_count);
  5719. +
  5720. + if (WARN_ON(max_count >= 257))
  5721. + return p1;
  5722. +
  5723. + update_factor = rkvdec_fastdiv(update_factor * ct, max_count);
  5724. +
  5725. + return p1 + (((p2 - p1) * update_factor + 128) >> 8);
  5726. +}
  5727. +
  5728. +#define BAND_6(band) ((band) == 0 ? 3 : 6)
  5729. +
  5730. +static void adapt_coeff(u8 coef[6][6][3],
  5731. + const struct rkvdec_vp9_refs_counts ref_cnt[6][6],
  5732. + u32 uf)
  5733. +{
  5734. + s32 l, m, n;
  5735. +
  5736. + for (l = 0; l < 6; l++) {
  5737. + for (m = 0; m < BAND_6(l); m++) {
  5738. + u8 *p = coef[l][m];
  5739. + const u32 n0 = ref_cnt[l][m].coeff[0];
  5740. + const u32 n1 = ref_cnt[l][m].coeff[1];
  5741. + const u32 n2 = ref_cnt[l][m].coeff[2];
  5742. + const u32 neob = ref_cnt[l][m].eob[1];
  5743. + const u32 eob_count = ref_cnt[l][m].eob[0];
  5744. + const u32 branch_ct[3][2] = {
  5745. + { neob, eob_count - neob },
  5746. + { n0, n1 + n2 },
  5747. + { n1, n2 }
  5748. + };
  5749. +
  5750. + for (n = 0; n < 3; n++)
  5751. + p[n] = adapt_prob(p[n], branch_ct[n][0],
  5752. + branch_ct[n][1], 24, uf);
  5753. + }
  5754. + }
  5755. +}
  5756. +
  5757. +static void
  5758. +adapt_coef_probs(struct v4l2_vp9_probabilities *probs,
  5759. + const struct rkvdec_vp9_refs_counts ref_cnt[2][4][2][6][6],
  5760. + unsigned int uf)
  5761. +{
  5762. + unsigned int i, j, k;
  5763. +
  5764. + for (i = 0; i < ARRAY_SIZE(probs->coef); i++) {
  5765. + for (j = 0; j < ARRAY_SIZE(probs->coef[0]); j++) {
  5766. + for (k = 0; k < ARRAY_SIZE(probs->coef[0][0]);
  5767. + k++) {
  5768. + adapt_coeff(probs->coef[i][j][k],
  5769. + ref_cnt[k][i][j],
  5770. + uf);
  5771. + }
  5772. + }
  5773. + }
  5774. +}
  5775. +
  5776. +static void adapt_intra_frame_probs(struct rkvdec_ctx *ctx)
  5777. +{
  5778. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  5779. + struct v4l2_vp9_probabilities *probs = &vp9_ctx->frame_context.probs;
  5780. + const struct rkvdec_vp9_intra_frame_symbol_counts *sym_cnts;
  5781. +
  5782. + sym_cnts = vp9_ctx->count_tbl.cpu;
  5783. + adapt_coef_probs(probs, sym_cnts->ref_cnt, 112);
  5784. +}
  5785. +
  5786. +static void
  5787. +adapt_skip_probs(struct v4l2_vp9_probabilities *probs,
  5788. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  5789. +{
  5790. + unsigned int i;
  5791. +
  5792. + for (i = 0; i < ARRAY_SIZE(probs->skip); i++)
  5793. + probs->skip[i] = adapt_prob(probs->skip[i],
  5794. + sym_cnts->skip[i][0],
  5795. + sym_cnts->skip[i][1],
  5796. + 20, 128);
  5797. +}
  5798. +
  5799. +static void
  5800. +adapt_is_inter_probs(struct v4l2_vp9_probabilities *probs,
  5801. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  5802. +{
  5803. + unsigned int i;
  5804. +
  5805. + for (i = 0; i < ARRAY_SIZE(probs->is_inter); i++)
  5806. + probs->is_inter[i] = adapt_prob(probs->is_inter[i],
  5807. + sym_cnts->inter[i][0],
  5808. + sym_cnts->inter[i][1],
  5809. + 20, 128);
  5810. +}
  5811. +
  5812. +static void
  5813. +adapt_comp_mode_probs(struct v4l2_vp9_probabilities *probs,
  5814. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  5815. +{
  5816. + unsigned int i;
  5817. +
  5818. + for (i = 0; i < ARRAY_SIZE(probs->comp_mode); i++)
  5819. + probs->comp_mode[i] = adapt_prob(probs->comp_mode[i],
  5820. + sym_cnts->comp[i][0],
  5821. + sym_cnts->comp[i][1],
  5822. + 20, 128);
  5823. +}
  5824. +
  5825. +static void
  5826. +adapt_comp_ref_probs(struct v4l2_vp9_probabilities *probs,
  5827. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  5828. +{
  5829. + unsigned int i;
  5830. +
  5831. + for (i = 0; i < ARRAY_SIZE(probs->comp_ref); i++)
  5832. + probs->comp_ref[i] = adapt_prob(probs->comp_ref[i],
  5833. + sym_cnts->comp_ref[i][0],
  5834. + sym_cnts->comp_ref[i][1],
  5835. + 20, 128);
  5836. +}
  5837. +
  5838. +static void
  5839. +adapt_single_ref_probs(struct v4l2_vp9_probabilities *probs,
  5840. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  5841. +{
  5842. + unsigned int i;
  5843. +
  5844. + for (i = 0; i < ARRAY_SIZE(probs->single_ref); i++) {
  5845. + u8 *p = probs->single_ref[i];
  5846. +
  5847. + p[0] = adapt_prob(p[0], sym_cnts->single_ref[i][0][0],
  5848. + sym_cnts->single_ref[i][0][1], 20, 128);
  5849. + p[1] = adapt_prob(p[1], sym_cnts->single_ref[i][1][0],
  5850. + sym_cnts->single_ref[i][1][1], 20, 128);
  5851. + }
  5852. +}
  5853. +
  5854. +static void
  5855. +adapt_partition_probs(struct v4l2_vp9_probabilities *probs,
  5856. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  5857. +{
  5858. + unsigned int i;
  5859. +
  5860. + for (i = 0; i < ARRAY_SIZE(probs->partition); i++) {
  5861. + const u32 *c = sym_cnts->partition[i];
  5862. + u8 *p = probs->partition[i];
  5863. +
  5864. + p[0] = adapt_prob(p[0], c[0], c[1] + c[2] + c[3], 20, 128);
  5865. + p[1] = adapt_prob(p[1], c[1], c[2] + c[3], 20, 128);
  5866. + p[2] = adapt_prob(p[2], c[2], c[3], 20, 128);
  5867. + }
  5868. +}
  5869. +
  5870. +static void
  5871. +adapt_tx_probs(struct v4l2_vp9_probabilities *probs,
  5872. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  5873. +{
  5874. + unsigned int i;
  5875. +
  5876. + for (i = 0; i < ARRAY_SIZE(probs->tx8); i++) {
  5877. + u8 *p16x16 = probs->tx16[i];
  5878. + u8 *p32x32 = probs->tx32[i];
  5879. + const u32 *c16 = sym_cnts->tx16p[i];
  5880. + const u32 *c32 = sym_cnts->tx32p[i];
  5881. + const u32 *c8 = sym_cnts->tx8p[i];
  5882. + u8 *p8x8 = probs->tx8[i];
  5883. +
  5884. + p8x8[0] = adapt_prob(p8x8[0], c8[0], c8[1], 20, 128);
  5885. + p16x16[0] = adapt_prob(p16x16[0], c16[0], c16[1] + c16[2],
  5886. + 20, 128);
  5887. + p16x16[1] = adapt_prob(p16x16[1], c16[1], c16[2], 20, 128);
  5888. + p32x32[0] = adapt_prob(p32x32[0], c32[0],
  5889. + c32[1] + c32[2] + c32[3], 20, 128);
  5890. + p32x32[1] = adapt_prob(p32x32[1], c32[1], c32[2] + c32[3],
  5891. + 20, 128);
  5892. + p32x32[2] = adapt_prob(p32x32[2], c32[2], c32[3], 20, 128);
  5893. + }
  5894. +}
  5895. +
  5896. +static void
  5897. +adapt_interp_filter_probs(struct v4l2_vp9_probabilities *probs,
  5898. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  5899. +{
  5900. + unsigned int i;
  5901. +
  5902. + for (i = 0; i < ARRAY_SIZE(probs->interp_filter); i++) {
  5903. + u8 *p = probs->interp_filter[i];
  5904. + const u32 *c = sym_cnts->filter[i];
  5905. +
  5906. + p[0] = adapt_prob(p[0], c[0], c[1] + c[2], 20, 128);
  5907. + p[1] = adapt_prob(p[1], c[1], c[2], 20, 128);
  5908. + }
  5909. +}
  5910. +
  5911. +static void
  5912. +adapt_inter_mode_probs(struct v4l2_vp9_probabilities *probs,
  5913. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  5914. +{
  5915. + unsigned int i;
  5916. +
  5917. + for (i = 0; i < ARRAY_SIZE(probs->inter_mode); i++) {
  5918. + const u32 *c = sym_cnts->mv_mode[i];
  5919. + u8 *p = probs->inter_mode[i];
  5920. +
  5921. + p[0] = adapt_prob(p[0], c[2], c[1] + c[0] + c[3], 20, 128);
  5922. + p[1] = adapt_prob(p[1], c[0], c[1] + c[3], 20, 128);
  5923. + p[2] = adapt_prob(p[2], c[1], c[3], 20, 128);
  5924. + }
  5925. +}
  5926. +
  5927. +static void
  5928. +adapt_mv_probs(struct v4l2_vp9_probabilities *probs,
  5929. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts,
  5930. + bool high_prec_mv)
  5931. +{
  5932. + const u32 *c = sym_cnts->mv_joint;
  5933. + u8 *p = probs->mv.joint;
  5934. + unsigned int i, j;
  5935. + u32 sum;
  5936. +
  5937. + p[0] = adapt_prob(p[0], c[0], c[1] + c[2] + c[3], 20, 128);
  5938. + p[1] = adapt_prob(p[1], c[1], c[2] + c[3], 20, 128);
  5939. + p[2] = adapt_prob(p[2], c[2], c[3], 20, 128);
  5940. +
  5941. + for (i = 0; i < ARRAY_SIZE(probs->mv.sign); i++) {
  5942. + p = probs->mv.sign;
  5943. +
  5944. + p[i] = adapt_prob(p[i], sym_cnts->sign[i][0],
  5945. + sym_cnts->sign[i][1], 20, 128);
  5946. +
  5947. + p = probs->mv.class[i];
  5948. + c = sym_cnts->classes[i];
  5949. + sum = c[1] + c[2] + c[3] + c[4] + c[5] + c[6] + c[7] + c[8] +
  5950. + c[9] + c[10];
  5951. + p[0] = adapt_prob(p[0], c[0], sum, 20, 128);
  5952. + sum -= c[1];
  5953. + p[1] = adapt_prob(p[1], c[1], sum, 20, 128);
  5954. + sum -= c[2] + c[3];
  5955. + p[2] = adapt_prob(p[2], c[2] + c[3], sum, 20, 128);
  5956. + p[3] = adapt_prob(p[3], c[2], c[3], 20, 128);
  5957. + sum -= c[4] + c[5];
  5958. + p[4] = adapt_prob(p[4], c[4] + c[5], sum, 20, 128);
  5959. + p[5] = adapt_prob(p[5], c[4], c[5], 20, 128);
  5960. + sum -= c[6];
  5961. + p[6] = adapt_prob(p[6], c[6], sum, 20, 128);
  5962. + p[7] = adapt_prob(p[7], c[7] + c[8], c[9] + c[10], 20, 128);
  5963. + p[8] = adapt_prob(p[8], c[7], c[8], 20, 128);
  5964. + p[9] = adapt_prob(p[9], c[9], c[10], 20, 128);
  5965. +
  5966. + p = probs->mv.class0_bit;
  5967. + p[i] = adapt_prob(p[i],
  5968. + sym_cnts->class0[i][0],
  5969. + sym_cnts->class0[i][1], 20, 128);
  5970. +
  5971. + p = probs->mv.bits[i];
  5972. + for (j = 0; j < 10; j++)
  5973. + p[j] = adapt_prob(p[j], sym_cnts->bits[i][j][0],
  5974. + sym_cnts->bits[i][j][1], 20, 128);
  5975. +
  5976. + for (j = 0; j < 2; j++) {
  5977. + p = probs->mv.class0_fr[i][j];
  5978. + c = sym_cnts->class0_fp[i][j];
  5979. + p[0] = adapt_prob(p[0], c[0], c[1] + c[2] + c[3],
  5980. + 20, 128);
  5981. + p[1] = adapt_prob(p[1], c[1], c[2] + c[3], 20, 128);
  5982. + p[2] = adapt_prob(p[2], c[2], c[3], 20, 128);
  5983. + }
  5984. +
  5985. + p = probs->mv.fr[i];
  5986. + c = sym_cnts->fp[i];
  5987. + p[0] = adapt_prob(p[0], c[0], c[1] + c[2] + c[3], 20, 128);
  5988. + p[1] = adapt_prob(p[1], c[1], c[2] + c[3], 20, 128);
  5989. + p[2] = adapt_prob(p[2], c[2], c[3], 20, 128);
  5990. +
  5991. + if (!high_prec_mv)
  5992. + continue;
  5993. +
  5994. + p = probs->mv.class0_hp;
  5995. + p[i] = adapt_prob(p[i], sym_cnts->class0_hp[i][0],
  5996. + sym_cnts->class0_hp[i][1], 20, 128);
  5997. +
  5998. + p = probs->mv.hp;
  5999. + p[i] = adapt_prob(p[i], sym_cnts->hp[i][0],
  6000. + sym_cnts->hp[i][1], 20, 128);
  6001. + }
  6002. +}
  6003. +
  6004. +static void
  6005. +adapt_intra_mode_probs(u8 *p, const u32 *c)
  6006. +{
  6007. + u32 sum = 0, s2;
  6008. + unsigned int i;
  6009. +
  6010. + for (i = V4L2_VP9_INTRA_PRED_MODE_V; i <= V4L2_VP9_INTRA_PRED_MODE_TM;
  6011. + i++)
  6012. + sum += c[i];
  6013. +
  6014. + p[0] = adapt_prob(p[0], c[V4L2_VP9_INTRA_PRED_MODE_DC], sum, 20, 128);
  6015. + sum -= c[V4L2_VP9_INTRA_PRED_MODE_TM];
  6016. + p[1] = adapt_prob(p[1], c[V4L2_VP9_INTRA_PRED_MODE_TM], sum, 20, 128);
  6017. + sum -= c[V4L2_VP9_INTRA_PRED_MODE_V];
  6018. + p[2] = adapt_prob(p[2], c[V4L2_VP9_INTRA_PRED_MODE_V], sum, 20, 128);
  6019. + s2 = c[V4L2_VP9_INTRA_PRED_MODE_H] + c[V4L2_VP9_INTRA_PRED_MODE_D135] +
  6020. + c[V4L2_VP9_INTRA_PRED_MODE_D117];
  6021. + sum -= s2;
  6022. + p[3] = adapt_prob(p[3], s2, sum, 20, 128);
  6023. + s2 -= c[V4L2_VP9_INTRA_PRED_MODE_H];
  6024. + p[4] = adapt_prob(p[4], c[V4L2_VP9_INTRA_PRED_MODE_H], s2, 20, 128);
  6025. + p[5] = adapt_prob(p[5], c[V4L2_VP9_INTRA_PRED_MODE_D135],
  6026. + c[V4L2_VP9_INTRA_PRED_MODE_D117], 20, 128);
  6027. + sum -= c[V4L2_VP9_INTRA_PRED_MODE_D45];
  6028. + p[6] = adapt_prob(p[6], c[V4L2_VP9_INTRA_PRED_MODE_D45],
  6029. + sum, 20, 128);
  6030. + sum -= c[V4L2_VP9_INTRA_PRED_MODE_D63];
  6031. + p[7] = adapt_prob(p[7], c[V4L2_VP9_INTRA_PRED_MODE_D63], sum,
  6032. + 20, 128);
  6033. + p[8] = adapt_prob(p[8], c[V4L2_VP9_INTRA_PRED_MODE_D153],
  6034. + c[V4L2_VP9_INTRA_PRED_MODE_D207], 20, 128);
  6035. +}
  6036. +
  6037. +static void
  6038. +adapt_y_intra_mode_probs(struct v4l2_vp9_probabilities *probs,
  6039. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  6040. +{
  6041. + unsigned int i;
  6042. +
  6043. + for (i = 0; i < ARRAY_SIZE(probs->y_mode); i++)
  6044. + adapt_intra_mode_probs(probs->y_mode[i], sym_cnts->y_mode[i]);
  6045. +}
  6046. +
  6047. +static void
  6048. +adapt_uv_intra_mode_probs(struct v4l2_vp9_probabilities *probs,
  6049. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts)
  6050. +{
  6051. + unsigned int i;
  6052. +
  6053. + for (i = 0; i < ARRAY_SIZE(probs->uv_mode); i++)
  6054. + adapt_intra_mode_probs(probs->uv_mode[i],
  6055. + sym_cnts->uv_mode[i]);
  6056. +}
  6057. +
  6058. +static void
  6059. +adapt_inter_frame_probs(struct rkvdec_ctx *ctx)
  6060. +{
  6061. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  6062. + struct v4l2_vp9_probabilities *probs = &vp9_ctx->frame_context.probs;
  6063. + const struct rkvdec_vp9_inter_frame_symbol_counts *sym_cnts;
  6064. +
  6065. + sym_cnts = vp9_ctx->count_tbl.cpu;
  6066. + /* coefficients */
  6067. + if (vp9_ctx->last.valid &&
  6068. + !(vp9_ctx->last.flags & V4L2_VP9_FRAME_FLAG_KEY_FRAME))
  6069. + adapt_coef_probs(probs, sym_cnts->ref_cnt, 112);
  6070. + else
  6071. + adapt_coef_probs(probs, sym_cnts->ref_cnt, 128);
  6072. +
  6073. + /* skip flag */
  6074. + adapt_skip_probs(probs, sym_cnts);
  6075. +
  6076. + /* intra/inter flag */
  6077. + adapt_is_inter_probs(probs, sym_cnts);
  6078. +
  6079. + /* comppred flag */
  6080. + adapt_comp_mode_probs(probs, sym_cnts);
  6081. +
  6082. + /* reference frames */
  6083. + adapt_comp_ref_probs(probs, sym_cnts);
  6084. +
  6085. + if (vp9_ctx->cur.reference_mode != V4L2_VP9_REF_MODE_COMPOUND)
  6086. + adapt_single_ref_probs(probs, sym_cnts);
  6087. +
  6088. + /* block partitioning */
  6089. + adapt_partition_probs(probs, sym_cnts);
  6090. +
  6091. + /* tx size */
  6092. + if (vp9_ctx->cur.tx_mode == V4L2_VP9_TX_MODE_SELECT)
  6093. + adapt_tx_probs(probs, sym_cnts);
  6094. +
  6095. + /* interpolation filter */
  6096. + if (vp9_ctx->cur.interpolation_filter == V4L2_VP9_INTERP_FILTER_SWITCHABLE)
  6097. + adapt_interp_filter_probs(probs, sym_cnts);
  6098. +
  6099. + /* inter modes */
  6100. + adapt_inter_mode_probs(probs, sym_cnts);
  6101. +
  6102. + /* mv probs */
  6103. + adapt_mv_probs(probs, sym_cnts,
  6104. + !!(vp9_ctx->cur.flags &
  6105. + V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV));
  6106. +
  6107. + /* y intra modes */
  6108. + adapt_y_intra_mode_probs(probs, sym_cnts);
  6109. +
  6110. + /* uv intra modes */
  6111. + adapt_uv_intra_mode_probs(probs, sym_cnts);
  6112. +}
  6113. +
  6114. +static void adapt_probs(struct rkvdec_ctx *ctx)
  6115. +{
  6116. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  6117. + bool intra_only;
  6118. +
  6119. + intra_only = !!(vp9_ctx->cur.flags &
  6120. + (V4L2_VP9_FRAME_FLAG_KEY_FRAME |
  6121. + V4L2_VP9_FRAME_FLAG_INTRA_ONLY));
  6122. +
  6123. + if (intra_only)
  6124. + adapt_intra_frame_probs(ctx);
  6125. + else
  6126. + adapt_inter_frame_probs(ctx);
  6127. +}
  6128. +
  6129. +static void rkvdec_vp9_done(struct rkvdec_ctx *ctx,
  6130. + struct vb2_v4l2_buffer *src_buf,
  6131. + struct vb2_v4l2_buffer *dst_buf,
  6132. + enum vb2_buffer_state result)
  6133. +{
  6134. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  6135. + struct v4l2_ctrl *ctrl;
  6136. + unsigned int fctx_idx;
  6137. +
  6138. + if (result == VB2_BUF_STATE_ERROR)
  6139. + goto out_update_last;
  6140. +
  6141. + if (!(vp9_ctx->cur.flags & V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX))
  6142. + goto out_update_last;
  6143. +
  6144. + fctx_idx = vp9_ctx->cur.frame_context_idx;
  6145. +
  6146. + if (!(vp9_ctx->cur.flags &
  6147. + (V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT |
  6148. + V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE)))
  6149. + adapt_probs(ctx);
  6150. +
  6151. + ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
  6152. + V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(fctx_idx));
  6153. + if (WARN_ON(!ctrl))
  6154. + goto out_update_last;
  6155. +
  6156. + v4l2_ctrl_s_ctrl_compound(ctrl, V4L2_CTRL_TYPE_VP9_FRAME_CONTEXT,
  6157. + &vp9_ctx->frame_context);
  6158. +
  6159. +out_update_last:
  6160. + update_ctx_last_info(vp9_ctx);
  6161. +}
  6162. +
  6163. +static int rkvdec_vp9_start(struct rkvdec_ctx *ctx)
  6164. +{
  6165. + struct rkvdec_dev *rkvdec = ctx->dev;
  6166. + struct rkvdec_vp9_priv_tbl *priv_tbl;
  6167. + struct rkvdec_vp9_ctx *vp9_ctx;
  6168. + u8 *count_tbl;
  6169. + int ret;
  6170. +
  6171. + vp9_ctx = kzalloc(sizeof(*vp9_ctx), GFP_KERNEL);
  6172. + if (!vp9_ctx)
  6173. + return -ENOMEM;
  6174. +
  6175. + ctx->priv = vp9_ctx;
  6176. +
  6177. + priv_tbl = dma_alloc_coherent(rkvdec->dev, sizeof(*priv_tbl),
  6178. + &vp9_ctx->priv_tbl.dma, GFP_KERNEL);
  6179. + if (!priv_tbl) {
  6180. + ret = -ENOMEM;
  6181. + goto err_free_ctx;
  6182. + }
  6183. +
  6184. + vp9_ctx->priv_tbl.size = sizeof(*priv_tbl);
  6185. + vp9_ctx->priv_tbl.cpu = priv_tbl;
  6186. + memset(priv_tbl, 0, sizeof(*priv_tbl));
  6187. +
  6188. + count_tbl = dma_alloc_coherent(rkvdec->dev, RKVDEC_VP9_COUNT_SIZE,
  6189. + &vp9_ctx->count_tbl.dma, GFP_KERNEL);
  6190. + if (!count_tbl) {
  6191. + ret = -ENOMEM;
  6192. + goto err_free_priv_tbl;
  6193. + }
  6194. +
  6195. + vp9_ctx->count_tbl.size = RKVDEC_VP9_COUNT_SIZE;
  6196. + vp9_ctx->count_tbl.cpu = count_tbl;
  6197. + memset(count_tbl, 0, sizeof(*count_tbl));
  6198. +
  6199. + return 0;
  6200. +
  6201. +err_free_priv_tbl:
  6202. + dma_free_coherent(rkvdec->dev, vp9_ctx->priv_tbl.size,
  6203. + vp9_ctx->priv_tbl.cpu, vp9_ctx->priv_tbl.dma);
  6204. +
  6205. +err_free_ctx:
  6206. + kfree(vp9_ctx);
  6207. + return ret;
  6208. +}
  6209. +
  6210. +static void rkvdec_vp9_stop(struct rkvdec_ctx *ctx)
  6211. +{
  6212. + struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
  6213. + struct rkvdec_dev *rkvdec = ctx->dev;
  6214. +
  6215. + dma_free_coherent(rkvdec->dev, vp9_ctx->count_tbl.size,
  6216. + vp9_ctx->count_tbl.cpu, vp9_ctx->count_tbl.dma);
  6217. + dma_free_coherent(rkvdec->dev, vp9_ctx->priv_tbl.size,
  6218. + vp9_ctx->priv_tbl.cpu, vp9_ctx->priv_tbl.dma);
  6219. + kfree(vp9_ctx);
  6220. +}
  6221. +
  6222. +static int rkvdec_vp9_adjust_fmt(struct rkvdec_ctx *ctx,
  6223. + struct v4l2_format *f)
  6224. +{
  6225. + struct v4l2_pix_format_mplane *fmt = &f->fmt.pix_mp;
  6226. +
  6227. + fmt->num_planes = 1;
  6228. + if (!fmt->plane_fmt[0].sizeimage)
  6229. + fmt->plane_fmt[0].sizeimage = fmt->width * fmt->height * 2;
  6230. + return 0;
  6231. +}
  6232. +
  6233. +const struct rkvdec_coded_fmt_ops rkvdec_vp9_fmt_ops = {
  6234. + .adjust_fmt = rkvdec_vp9_adjust_fmt,
  6235. + .start = rkvdec_vp9_start,
  6236. + .stop = rkvdec_vp9_stop,
  6237. + .run = rkvdec_vp9_run,
  6238. + .done = rkvdec_vp9_done,
  6239. +};
  6240. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/include/media/h264-ctrls.h linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/media/h264-ctrls.h
  6241. --- media_tree_master/include/media/h264-ctrls.h 2020-05-30 15:14:45.575014516 -0700
  6242. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/media/h264-ctrls.h 2020-05-30 15:12:50.979495663 -0700
  6243. @@ -188,11 +188,12 @@
  6244. __u32 flags;
  6245. };
  6246.  
  6247. -#define V4L2_H264_DPB_ENTRY_FLAG_VALID 0x01
  6248. -#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x02
  6249. +#define V4L2_H264_DPB_ENTRY_FLAG_TOP_REF 0x01
  6250. +#define V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_REF 0x02
  6251. +#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE (0x01|0x02)
  6252. #define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x04
  6253. -#define V4L2_H264_DPB_ENTRY_FLAG_FIELD 0x08
  6254. -#define V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_FIELD 0x10
  6255. +#define V4L2_H264_DPB_ENTRY_FLAG_FIELD_PIC 0x08
  6256. +#define V4L2_H264_DPB_ENTRY_FLAG_VALID 0x10
  6257.  
  6258. struct v4l2_h264_dpb_entry {
  6259. __u64 reference_ts;
  6260. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/include/media/hevc-ctrls.h linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/media/hevc-ctrls.h
  6261. --- media_tree_master/include/media/hevc-ctrls.h 2020-05-30 15:14:45.575014516 -0700
  6262. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/media/hevc-ctrls.h 2020-05-30 15:12:50.979495663 -0700
  6263. @@ -19,6 +19,7 @@
  6264. #define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_MPEG_BASE + 1008)
  6265. #define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_MPEG_BASE + 1009)
  6266. #define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_MPEG_BASE + 1010)
  6267. +#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_MPEG_BASE + 1011)
  6268. #define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (V4L2_CID_MPEG_BASE + 1015)
  6269. #define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE (V4L2_CID_MPEG_BASE + 1016)
  6270.  
  6271. @@ -26,6 +27,7 @@
  6272. #define V4L2_CTRL_TYPE_HEVC_SPS 0x0120
  6273. #define V4L2_CTRL_TYPE_HEVC_PPS 0x0121
  6274. #define V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS 0x0122
  6275. +#define V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX 0x0123
  6276.  
  6277. enum v4l2_mpeg_video_hevc_decode_mode {
  6278. V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED,
  6279. @@ -54,6 +56,9 @@
  6280. /* The controls are not stable at the moment and will likely be reworked. */
  6281. struct v4l2_ctrl_hevc_sps {
  6282. /* ISO/IEC 23008-2, ITU-T Rec. H.265: Sequence parameter set */
  6283. + __u8 video_parameter_set_id;
  6284. + __u8 seq_parameter_set_id;
  6285. + __u8 chroma_format_idc;
  6286. __u16 pic_width_in_luma_samples;
  6287. __u16 pic_height_in_luma_samples;
  6288. __u8 bit_depth_luma_minus8;
  6289. @@ -74,9 +79,9 @@
  6290. __u8 log2_diff_max_min_pcm_luma_coding_block_size;
  6291. __u8 num_short_term_ref_pic_sets;
  6292. __u8 num_long_term_ref_pics_sps;
  6293. - __u8 chroma_format_idc;
  6294.  
  6295. - __u8 padding;
  6296. + __u8 num_slices;
  6297. + __u8 padding[6];
  6298.  
  6299. __u64 flags;
  6300. };
  6301. @@ -103,7 +108,10 @@
  6302.  
  6303. struct v4l2_ctrl_hevc_pps {
  6304. /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture parameter set */
  6305. + __u8 pic_parameter_set_id;
  6306. __u8 num_extra_slice_header_bits;
  6307. + __u8 num_ref_idx_l0_default_active_minus1;
  6308. + __u8 num_ref_idx_l1_default_active_minus1;
  6309. __s8 init_qp_minus26;
  6310. __u8 diff_cu_qp_delta_depth;
  6311. __s8 pps_cb_qp_offset;
  6312. @@ -116,7 +124,7 @@
  6313. __s8 pps_tc_offset_div2;
  6314. __u8 log2_parallel_merge_level_minus2;
  6315.  
  6316. - __u8 padding[4];
  6317. + __u8 padding;
  6318. __u64 flags;
  6319. };
  6320.  
  6321. @@ -165,6 +173,10 @@
  6322. __u32 bit_size;
  6323. __u32 data_bit_offset;
  6324.  
  6325. + /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */
  6326. + __u32 slice_segment_addr;
  6327. + __u32 num_entry_point_offsets;
  6328. +
  6329. /* ISO/IEC 23008-2, ITU-T Rec. H.265: NAL unit header */
  6330. __u8 nal_unit_type;
  6331. __u8 nuh_temporal_id_plus1;
  6332. @@ -198,7 +210,12 @@
  6333. __u8 num_rps_poc_st_curr_after;
  6334. __u8 num_rps_poc_lt_curr;
  6335.  
  6336. - __u8 padding;
  6337. + __u16 short_term_ref_pic_set_size;
  6338. + __u16 long_term_ref_pic_set_size;
  6339. +
  6340. + __u8 padding[5];
  6341. +
  6342. + __u32 entry_point_offset_minus1[256];
  6343.  
  6344. /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */
  6345. struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
  6346. @@ -209,4 +226,13 @@
  6347. __u64 flags;
  6348. };
  6349.  
  6350. +struct v4l2_ctrl_hevc_scaling_matrix {
  6351. + __u8 scaling_list_4x4[6][16];
  6352. + __u8 scaling_list_8x8[6][64];
  6353. + __u8 scaling_list_16x16[6][64];
  6354. + __u8 scaling_list_32x32[2][64];
  6355. + __u8 scaling_list_dc_coef_16x16[6];
  6356. + __u8 scaling_list_dc_coef_32x32[2];
  6357. +};
  6358. +
  6359. #endif
  6360. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/include/media/v4l2-ctrls.h linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/media/v4l2-ctrls.h
  6361. --- media_tree_master/include/media/v4l2-ctrls.h 2020-05-30 15:14:45.579014505 -0700
  6362. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/media/v4l2-ctrls.h 2020-05-30 15:12:50.983495641 -0700
  6363. @@ -21,6 +21,7 @@
  6364. #include <media/fwht-ctrls.h>
  6365. #include <media/h264-ctrls.h>
  6366. #include <media/vp8-ctrls.h>
  6367. +#include <media/vp9-ctrls.h>
  6368. #include <media/hevc-ctrls.h>
  6369.  
  6370. /* forward references */
  6371. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/include/media/vp9-ctrls.h linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/media/vp9-ctrls.h
  6372. --- media_tree_master/include/media/vp9-ctrls.h 1969-12-31 16:00:00.000000000 -0800
  6373. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/media/vp9-ctrls.h 2020-05-30 15:12:50.987495619 -0700
  6374. @@ -0,0 +1,485 @@
  6375. +/* SPDX-License-Identifier: GPL-2.0 */
  6376. +/*
  6377. + * These are the VP9 state controls for use with stateless VP9
  6378. + * codec drivers.
  6379. + *
  6380. + * It turns out that these structs are not stable yet and will undergo
  6381. + * more changes. So keep them private until they are stable and ready to
  6382. + * become part of the official public API.
  6383. + */
  6384. +
  6385. +#ifndef _VP9_CTRLS_H_
  6386. +#define _VP9_CTRLS_H_
  6387. +
  6388. +#include <linux/types.h>
  6389. +
  6390. +#define V4L2_PIX_FMT_VP9_FRAME v4l2_fourcc('V', 'P', '9', 'F')
  6391. +
  6392. +#define V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(i) (V4L2_CID_MPEG_BASE + 4000 + (i))
  6393. +#define V4L2_CID_MPEG_VIDEO_VP9_FRAME_DECODE_PARAMS (V4L2_CID_MPEG_BASE + 4004)
  6394. +#define V4L2_CTRL_TYPE_VP9_FRAME_CONTEXT 0x400
  6395. +#define V4L2_CTRL_TYPE_VP9_FRAME_DECODE_PARAMS 0x404
  6396. +
  6397. +/**
  6398. + * enum v4l2_vp9_loop_filter_flags - VP9 loop filter flags
  6399. + *
  6400. + * @V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED: the filter level depends on
  6401. + * the mode and reference frame used
  6402. + * to predict a block
  6403. + * @V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE: the bitstream contains additional
  6404. + * syntax elements that specify which
  6405. + * mode and reference frame deltas
  6406. + * are to be updated
  6407. + *
  6408. + * Those are the flags you should pass to &v4l2_vp9_loop_filter.flags. See
  6409. + * section '7.2.8 Loop filter semantics' of the VP9 specification for more
  6410. + * details.
  6411. + */
  6412. +enum v4l2_vp9_loop_filter_flags {
  6413. + V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED = 1 << 0,
  6414. + V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE = 1 << 1,
  6415. +};
  6416. +
  6417. +/**
  6418. + * struct v4l2_vp9_loop_filter - VP9 loop filter parameters
  6419. + *
  6420. + * @flags: combination of V4L2_VP9_LOOP_FILTER_FLAG_* flags
  6421. + * @level: indicates the loop filter strength
  6422. + * @sharpness: indicates the sharpness level
  6423. + * @ref_deltas: contains the adjustment needed for the filter level based on
  6424. + * the chosen reference frame
  6425. + * @mode_deltas: contains the adjustment needed for the filter level based on
  6426. + * the chosen mode
  6427. + * @level_lookup: level lookup table
  6428. + *
  6429. + * This structure contains all loop filter related parameters. See sections
  6430. + * '7.2.8 Loop filter semantics' and '8.8.1 Loop filter frame init process'
  6431. + * of the VP9 specification for more details.
  6432. + */
  6433. +struct v4l2_vp9_loop_filter {
  6434. + __u8 flags;
  6435. + __u8 level;
  6436. + __u8 sharpness;
  6437. + __s8 ref_deltas[4];
  6438. + __s8 mode_deltas[2];
  6439. + __u8 level_lookup[8][4][2];
  6440. +};
  6441. +
  6442. +/**
  6443. + * struct v4l2_vp9_quantization - VP9 quantization parameters
  6444. + *
  6445. + * @base_q_idx: indicates the base frame qindex
  6446. + * @delta_q_y_dc: indicates the Y DC quantizer relative to base_q_idx
  6447. + * @delta_q_uv_dc: indicates the UV DC quantizer relative to base_q_idx
  6448. + * @delta_q_uv_ac indicates the UV AC quantizer relative to base_q_idx
  6449. + * @padding: padding bytes to align things on 64 bits. Must be set to 0
  6450. + *
  6451. + * Encodes the quantization parameters. See section '7.2.9 Quantization params
  6452. + * syntax' of the VP9 specification for more details.
  6453. + */
  6454. +struct v4l2_vp9_quantization {
  6455. + __u8 base_q_idx;
  6456. + __s8 delta_q_y_dc;
  6457. + __s8 delta_q_uv_dc;
  6458. + __s8 delta_q_uv_ac;
  6459. + __u8 padding[4];
  6460. +};
  6461. +
  6462. +/**
  6463. + * enum v4l2_vp9_segmentation_flags - VP9 segmentation flags
  6464. + *
  6465. + * @V4L2_VP9_SEGMENTATION_FLAG_ENABLED: indicates that this frame makes use of
  6466. + * the segmentation tool
  6467. + * @V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP: indicates that the segmentation map
  6468. + * should be updated during the
  6469. + * decoding of this frame
  6470. + * @V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE: indicates that the updates to
  6471. + * the segmentation map are coded
  6472. + * relative to the existing
  6473. + * segmentation map
  6474. + * @V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA: indicates that new parameters are
  6475. + * about to be specified for each
  6476. + * segment
  6477. + * @V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE: indicates that the
  6478. + * segmentation parameters
  6479. + * represent the actual values
  6480. + * to be used
  6481. + *
  6482. + * Those are the flags you should pass to &v4l2_vp9_segmentation.flags. See
  6483. + * section '7.2.10 Segmentation params syntax' of the VP9 specification for
  6484. + * more details.
  6485. + */
  6486. +enum v4l2_vp9_segmentation_flags {
  6487. + V4L2_VP9_SEGMENTATION_FLAG_ENABLED = 1 << 0,
  6488. + V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP = 1 << 1,
  6489. + V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE = 1 << 2,
  6490. + V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA = 1 << 3,
  6491. + V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE = 1 << 4,
  6492. +};
  6493. +
  6494. +#define V4L2_VP9_SEGMENT_FEATURE_ENABLED(id) (1 << (id))
  6495. +#define V4L2_VP9_SEGMENT_FEATURE_ENABLED_MASK 0xf
  6496. +
  6497. +/**
  6498. + * enum v4l2_vp9_segment_feature - VP9 segment feature IDs
  6499. + *
  6500. + * @V4L2_VP9_SEGMENT_FEATURE_QP_DELTA: QP delta segment feature
  6501. + * @V4L2_VP9_SEGMENT_FEATURE_LF: loop filter segment feature
  6502. + * @V4L2_VP9_SEGMENT_FEATURE_REF_FRAME: reference frame segment feature
  6503. + * @V4L2_VP9_SEGMENT_FEATURE_SKIP: skip segment feature
  6504. + * @V4L2_VP9_SEGMENT_FEATURE_CNT: number of segment features
  6505. + *
  6506. + * Segment feature IDs. See section '7.2.10 Segmentation params syntax' of the
  6507. + * VP9 specification for more details.
  6508. + */
  6509. +enum v4l2_vp9_segment_feature {
  6510. + V4L2_VP9_SEGMENT_FEATURE_QP_DELTA,
  6511. + V4L2_VP9_SEGMENT_FEATURE_LF,
  6512. + V4L2_VP9_SEGMENT_FEATURE_REF_FRAME,
  6513. + V4L2_VP9_SEGMENT_FEATURE_SKIP,
  6514. + V4L2_VP9_SEGMENT_FEATURE_CNT,
  6515. +};
  6516. +
  6517. +/**
  6518. + * struct v4l2_vp9_segmentation - VP9 segmentation parameters
  6519. + *
  6520. + * @flags: combination of V4L2_VP9_SEGMENTATION_FLAG_* flags
  6521. + * @tree_probs: specifies the probability values to be used when
  6522. + * decoding a Segment-ID. See '5.15. Segmentation map'
  6523. + * section of the VP9 specification for more details.
  6524. + * @pred_prob: specifies the probability values to be used when decoding a
  6525. + * Predicted-Segment-ID. See '6.4.14. Get segment id syntax'
  6526. + * section of :ref:`vp9` for more details..
  6527. + * @padding: padding used to make things aligned on 64 bits. Shall be zero
  6528. + * filled
  6529. + * @feature_enabled: bitmask defining which features are enabled in each
  6530. + * segment
  6531. + * @feature_data: data attached to each feature. Data entry is only valid if
  6532. + * the feature is enabled
  6533. + *
  6534. + * Encodes the quantization parameters. See section '7.2.10 Segmentation
  6535. + * params syntax' of the VP9 specification for more details.
  6536. + */
  6537. +struct v4l2_vp9_segmentation {
  6538. + __u8 flags;
  6539. + __u8 tree_probs[7];
  6540. + __u8 pred_probs[3];
  6541. + __u8 padding[5];
  6542. + __u8 feature_enabled[8];
  6543. + __s16 feature_data[8][4];
  6544. +};
  6545. +
  6546. +/**
  6547. + * enum v4l2_vp9_intra_prediction_mode - VP9 Intra prediction modes
  6548. + *
  6549. + * @V4L2_VP9_INTRA_PRED_DC: DC intra prediction
  6550. + * @V4L2_VP9_INTRA_PRED_MODE_V: vertical intra prediction
  6551. + * @V4L2_VP9_INTRA_PRED_MODE_H: horizontal intra prediction
  6552. + * @V4L2_VP9_INTRA_PRED_MODE_D45: D45 intra prediction
  6553. + * @V4L2_VP9_INTRA_PRED_MODE_D135: D135 intra prediction
  6554. + * @V4L2_VP9_INTRA_PRED_MODE_D117: D117 intra prediction
  6555. + * @V4L2_VP9_INTRA_PRED_MODE_D153: D153 intra prediction
  6556. + * @V4L2_VP9_INTRA_PRED_MODE_D207: D207 intra prediction
  6557. + * @V4L2_VP9_INTRA_PRED_MODE_D63: D63 intra prediction
  6558. + * @V4L2_VP9_INTRA_PRED_MODE_TM: True Motion intra prediction
  6559. + *
  6560. + * See section '7.4.5 Intra frame mode info semantics' for more details.
  6561. + */
  6562. +enum v4l2_vp9_intra_prediction_mode {
  6563. + V4L2_VP9_INTRA_PRED_MODE_DC,
  6564. + V4L2_VP9_INTRA_PRED_MODE_V,
  6565. + V4L2_VP9_INTRA_PRED_MODE_H,
  6566. + V4L2_VP9_INTRA_PRED_MODE_D45,
  6567. + V4L2_VP9_INTRA_PRED_MODE_D135,
  6568. + V4L2_VP9_INTRA_PRED_MODE_D117,
  6569. + V4L2_VP9_INTRA_PRED_MODE_D153,
  6570. + V4L2_VP9_INTRA_PRED_MODE_D207,
  6571. + V4L2_VP9_INTRA_PRED_MODE_D63,
  6572. + V4L2_VP9_INTRA_PRED_MODE_TM,
  6573. +};
  6574. +
  6575. +/**
  6576. + * struct v4l2_vp9_mv_probabilities - VP9 Motion vector probabilities
  6577. + * @joint: motion vector joint probabilities
  6578. + * @sign: motion vector sign probabilities
  6579. + * @class: motion vector class probabilities
  6580. + * @class0_bit: motion vector class0 bit probabilities
  6581. + * @bits: motion vector bits probabilities
  6582. + * @class0_fr: motion vector class0 fractional bit probabilities
  6583. + * @fr: motion vector fractional bit probabilities
  6584. + * @class0_hp: motion vector class0 high precision fractional bit probabilities
  6585. + * @hp: motion vector high precision fractional bit probabilities
  6586. + */
  6587. +struct v4l2_vp9_mv_probabilities {
  6588. + __u8 joint[3];
  6589. + __u8 sign[2];
  6590. + __u8 class[2][10];
  6591. + __u8 class0_bit[2];
  6592. + __u8 bits[2][10];
  6593. + __u8 class0_fr[2][2][3];
  6594. + __u8 fr[2][3];
  6595. + __u8 class0_hp[2];
  6596. + __u8 hp[2];
  6597. +};
  6598. +
  6599. +/**
  6600. + * struct v4l2_vp9_probabilities - VP9 Probabilities
  6601. + *
  6602. + * @tx8: TX 8x8 probabilities
  6603. + * @tx16: TX 16x16 probabilities
  6604. + * @tx32: TX 32x32 probabilities
  6605. + * @coef: coefficient probabilities
  6606. + * @skip: skip probabilities
  6607. + * @inter_mode: inter mode probabilities
  6608. + * @interp_filter: interpolation filter probabilities
  6609. + * @is_inter: is inter-block probabilities
  6610. + * @comp_mode: compound prediction mode probabilities
  6611. + * @single_ref: single ref probabilities
  6612. + * @comp_ref: compound ref probabilities
  6613. + * @y_mode: Y prediction mode probabilities
  6614. + * @uv_mode: UV prediction mode probabilities
  6615. + * @partition: partition probabilities
  6616. + * @mv: motion vector probabilities
  6617. + *
  6618. + * Structure containing most VP9 probabilities. See the VP9 specification
  6619. + * for more details.
  6620. + */
  6621. +struct v4l2_vp9_probabilities {
  6622. + __u8 tx8[2][1];
  6623. + __u8 tx16[2][2];
  6624. + __u8 tx32[2][3];
  6625. + __u8 coef[4][2][2][6][6][3];
  6626. + __u8 skip[3];
  6627. + __u8 inter_mode[7][3];
  6628. + __u8 interp_filter[4][2];
  6629. + __u8 is_inter[4];
  6630. + __u8 comp_mode[5];
  6631. + __u8 single_ref[5][2];
  6632. + __u8 comp_ref[5];
  6633. + __u8 y_mode[4][9];
  6634. + __u8 uv_mode[10][9];
  6635. + __u8 partition[16][3];
  6636. +
  6637. + struct v4l2_vp9_mv_probabilities mv;
  6638. +};
  6639. +
  6640. +/**
  6641. + * enum v4l2_vp9_reset_frame_context - Valid values for
  6642. + * &v4l2_ctrl_vp9_frame_decode_params->reset_frame_context
  6643. + *
  6644. + * @V4L2_VP9_RESET_FRAME_CTX_NONE: don't reset any frame context
  6645. + * @V4L2_VP9_RESET_FRAME_CTX_SPEC: reset the frame context pointed by
  6646. + * &v4l2_ctrl_vp9_frame_decode_params.frame_context_idx
  6647. + * @V4L2_VP9_RESET_FRAME_CTX_ALL: reset all frame contexts
  6648. + *
  6649. + * See section '7.2 Uncompressed header semantics' of the VP9 specification
  6650. + * for more details.
  6651. + */
  6652. +enum v4l2_vp9_reset_frame_context {
  6653. + V4L2_VP9_RESET_FRAME_CTX_NONE,
  6654. + V4L2_VP9_RESET_FRAME_CTX_SPEC,
  6655. + V4L2_VP9_RESET_FRAME_CTX_ALL,
  6656. +};
  6657. +
  6658. +/**
  6659. + * enum v4l2_vp9_interpolation_filter - VP9 interpolation filter types
  6660. + *
  6661. + * @V4L2_VP9_INTERP_FILTER_8TAP: height tap filter
  6662. + * @V4L2_VP9_INTERP_FILTER_8TAP_SMOOTH: height tap smooth filter
  6663. + * @V4L2_VP9_INTERP_FILTER_8TAP_SHARP: height tap sharp filter
  6664. + * @V4L2_VP9_INTERP_FILTER_BILINEAR: bilinear filter
  6665. + * @V4L2_VP9_INTERP_FILTER_SWITCHABLE: filter selection is signaled at the
  6666. + * block level
  6667. + *
  6668. + * See section '7.2.7 Interpolation filter semantics' of the VP9 specification
  6669. + * for more details.
  6670. + */
  6671. +enum v4l2_vp9_interpolation_filter {
  6672. + V4L2_VP9_INTERP_FILTER_8TAP,
  6673. + V4L2_VP9_INTERP_FILTER_8TAP_SMOOTH,
  6674. + V4L2_VP9_INTERP_FILTER_8TAP_SHARP,
  6675. + V4L2_VP9_INTERP_FILTER_BILINEAR,
  6676. + V4L2_VP9_INTERP_FILTER_SWITCHABLE,
  6677. +};
  6678. +
  6679. +/**
  6680. + * enum v4l2_vp9_reference_mode - VP9 reference modes
  6681. + *
  6682. + * @V4L2_VP9_REF_MODE_SINGLE: indicates that all the inter blocks use only a
  6683. + * single reference frame to generate motion
  6684. + * compensated prediction
  6685. + * @V4L2_VP9_REF_MODE_COMPOUND: requires all the inter blocks to use compound
  6686. + * mode. Single reference frame prediction is not
  6687. + * allowed
  6688. + * @V4L2_VP9_REF_MODE_SELECT: allows each individual inter block to select
  6689. + * between single and compound prediction modes
  6690. + *
  6691. + * See section '7.3.6 Frame reference mode semantics' of the VP9 specification
  6692. + * for more details.
  6693. + */
  6694. +enum v4l2_vp9_reference_mode {
  6695. + V4L2_VP9_REF_MODE_SINGLE,
  6696. + V4L2_VP9_REF_MODE_COMPOUND,
  6697. + V4L2_VP9_REF_MODE_SELECT,
  6698. +};
  6699. +
  6700. +/**
  6701. + * enum v4l2_vp9_tx_mode - VP9 TX modes
  6702. + *
  6703. + * @V4L2_VP9_TX_MODE_ONLY_4X4: transform size is 4x4
  6704. + * @V4L2_VP9_TX_MODE_ALLOW_8X8: transform size can be up to 8x8
  6705. + * @V4L2_VP9_TX_MODE_ALLOW_16X16: transform size can be up to 16x16
  6706. + * @V4L2_VP9_TX_MODE_ALLOW_32X32: transform size can be up to 32x32
  6707. + * @V4L2_VP9_TX_MODE_SELECT: bitstream contains transform size for each block
  6708. + *
  6709. + * See section '7.3.1 Tx mode semantics' of the VP9 specification for more
  6710. + * details.
  6711. + */
  6712. +enum v4l2_vp9_tx_mode {
  6713. + V4L2_VP9_TX_MODE_ONLY_4X4,
  6714. + V4L2_VP9_TX_MODE_ALLOW_8X8,
  6715. + V4L2_VP9_TX_MODE_ALLOW_16X16,
  6716. + V4L2_VP9_TX_MODE_ALLOW_32X32,
  6717. + V4L2_VP9_TX_MODE_SELECT,
  6718. +};
  6719. +
  6720. +/**
  6721. + * enum v4l2_vp9_ref_id - VP9 Reference frame IDs
  6722. + *
  6723. + * @V4L2_REF_ID_LAST: last reference frame
  6724. + * @V4L2_REF_ID_GOLDEN: golden reference frame
  6725. + * @V4L2_REF_ID_ALTREF: alternative reference frame
  6726. + * @V4L2_REF_ID_CNT: number of reference frames
  6727. + *
  6728. + * See section '7.4.12 Ref frames semantics' of the VP9 specification for more
  6729. + * details.
  6730. + */
  6731. +enum v4l2_vp9_ref_id {
  6732. + V4L2_REF_ID_LAST,
  6733. + V4L2_REF_ID_GOLDEN,
  6734. + V4L2_REF_ID_ALTREF,
  6735. + V4L2_REF_ID_CNT,
  6736. +};
  6737. +
  6738. +/**
  6739. + * enum v4l2_vp9_frame_flags - VP9 frame flags
  6740. + * @V4L2_VP9_FRAME_FLAG_KEY_FRAME: the frame is a key frame
  6741. + * @V4L2_VP9_FRAME_FLAG_SHOW_FRAME: the frame should be displayed
  6742. + * @V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT: the decoding should be error resilient
  6743. + * @V4L2_VP9_FRAME_FLAG_INTRA_ONLY: the frame does not reference other frames
  6744. + * @V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV: the frame might can high precision
  6745. + * motion vectors
  6746. + * @V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX: frame context should be updated
  6747. + * after decoding
  6748. + * @V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE: parallel decoding is used
  6749. + * @V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING: vertical subsampling is enabled
  6750. + * @V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING: horizontal subsampling is enabled
  6751. + * @V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING: full UV range is used
  6752. + *
  6753. + * Check the VP9 specification for more details.
  6754. + */
  6755. +enum v4l2_vp9_frame_flags {
  6756. + V4L2_VP9_FRAME_FLAG_KEY_FRAME = 1 << 0,
  6757. + V4L2_VP9_FRAME_FLAG_SHOW_FRAME = 1 << 1,
  6758. + V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT = 1 << 2,
  6759. + V4L2_VP9_FRAME_FLAG_INTRA_ONLY = 1 << 3,
  6760. + V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV = 1 << 4,
  6761. + V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX = 1 << 5,
  6762. + V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE = 1 << 6,
  6763. + V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING = 1 << 7,
  6764. + V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING = 1 << 8,
  6765. + V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING = 1 << 9,
  6766. +};
  6767. +
  6768. +#define V4L2_VP9_PROFILE_MAX 3
  6769. +
  6770. +/**
  6771. + * struct v4l2_ctrl_vp9_frame_decode_params - VP9 frame decoding control
  6772. + *
  6773. + * @flags: combination of V4L2_VP9_FRAME_FLAG_* flags
  6774. + * @compressed_header_size: compressed header size in bytes
  6775. + * @uncompressed_header_size: uncompressed header size in bytes
  6776. + * @profile: VP9 profile. Can be 0, 1, 2 or 3
  6777. + * @reset_frame_context: specifies whether the frame context should be reset
  6778. + * to default values. See &v4l2_vp9_reset_frame_context
  6779. + * for more details
  6780. + * @frame_context_idx: frame context that should be used/updated
  6781. + * @bit_depth: bits per components. Can be 8, 10 or 12. Note that not all
  6782. + * profiles support 10 and/or 12 bits depths
  6783. + * @interpolation_filter: specifies the filter selection used for performing
  6784. + * inter prediction. See &v4l2_vp9_interpolation_filter
  6785. + * for more details
  6786. + * @tile_cols_log2: specifies the base 2 logarithm of the width of each tile
  6787. + * (where the width is measured in units of 8x8 blocks).
  6788. + * Shall be less than or equal to 6
  6789. + * @tile_rows_log2: specifies the base 2 logarithm of the height of each tile
  6790. + * (where the height is measured in units of 8x8 blocks)
  6791. + * @tx_mode: specifies the TX mode. See &v4l2_vp9_tx_mode for more details
  6792. + * @reference_mode: specifies the type of inter prediction to be used. See
  6793. + * &v4l2_vp9_reference_mode for more details
  6794. + * @padding: needed to make this struct 64 bit aligned. Shall be filled with
  6795. + * zeros
  6796. + * @frame_width_minus_1: add 1 to it and you'll get the frame width expressed
  6797. + * in pixels
  6798. + * @frame_height_minus_1: add 1 to it and you'll get the frame height expressed
  6799. + * in pixels
  6800. + * @frame_width_minus_1: add 1 to it and you'll get the expected render width
  6801. + * expressed in pixels. This is not used during the
  6802. + * decoding process but might be used by HW scalers to
  6803. + * prepare a frame that's ready for scanout
  6804. + * @frame_height_minus_1: add 1 to it and you'll get the expected render height
  6805. + * expressed in pixels. This is not used during the
  6806. + * decoding process but might be used by HW scalers to
  6807. + * prepare a frame that's ready for scanout
  6808. + * @refs: array of reference frames. See &v4l2_vp9_ref_id for more details
  6809. + * @lf: loop filter parameters. See &v4l2_vp9_loop_filter for more details
  6810. + * @quant: quantization parameters. See &v4l2_vp9_quantization for more details
  6811. + * @seg: segmentation parameters. See &v4l2_vp9_segmentation for more details
  6812. + * @probs: probabilities. See &v4l2_vp9_probabilities for more details
  6813. + */
  6814. +struct v4l2_ctrl_vp9_frame_decode_params {
  6815. + __u32 flags;
  6816. + __u16 compressed_header_size;
  6817. + __u16 uncompressed_header_size;
  6818. + __u8 profile;
  6819. + __u8 reset_frame_context;
  6820. + __u8 frame_context_idx;
  6821. + __u8 bit_depth;
  6822. + __u8 interpolation_filter;
  6823. + __u8 tile_cols_log2;
  6824. + __u8 tile_rows_log2;
  6825. + __u8 tx_mode;
  6826. + __u8 reference_mode;
  6827. + __u8 padding[6];
  6828. + __u16 frame_width_minus_1;
  6829. + __u16 frame_height_minus_1;
  6830. + __u16 render_width_minus_1;
  6831. + __u16 render_height_minus_1;
  6832. + __u64 refs[V4L2_REF_ID_CNT];
  6833. + struct v4l2_vp9_loop_filter lf;
  6834. + struct v4l2_vp9_quantization quant;
  6835. + struct v4l2_vp9_segmentation seg;
  6836. + struct v4l2_vp9_probabilities probs;
  6837. +};
  6838. +
  6839. +#define V4L2_VP9_NUM_FRAME_CTX 4
  6840. +
  6841. +/**
  6842. + * struct v4l2_ctrl_vp9_frame_ctx - VP9 frame context control
  6843. + *
  6844. + * @probs: VP9 probabilities
  6845. + *
  6846. + * This control is accessed in both direction. The user should initialize the
  6847. + * 4 contexts with default values just after starting the stream. Then before
  6848. + * decoding a frame it should query the current frame context (the one passed
  6849. + * through &v4l2_ctrl_vp9_frame_decode_params.frame_context_idx) to initialize
  6850. + * &v4l2_ctrl_vp9_frame_decode_params.probs. The probs are then adjusted based
  6851. + * on the bitstream info and passed to the kernel. The codec should update
  6852. + * the frame context after the frame has been decoded, so that next time
  6853. + * userspace query this context it contains the updated probabilities.
  6854. + */
  6855. +struct v4l2_ctrl_vp9_frame_ctx {
  6856. + struct v4l2_vp9_probabilities probs;
  6857. +};
  6858. +
  6859. +#endif /* _VP9_CTRLS_H_ */
  6860. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/include/uapi/drm/drm_fourcc.h linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/uapi/drm/drm_fourcc.h
  6861. --- media_tree_master/include/uapi/drm/drm_fourcc.h 2020-05-30 15:14:45.651014295 -0700
  6862. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/uapi/drm/drm_fourcc.h 2020-05-30 15:12:51.107494950 -0700
  6863. @@ -236,6 +236,13 @@
  6864. #define DRM_FORMAT_NV61 fourcc_code('N', 'V', '6', '1') /* 2x1 subsampled Cb:Cr plane */
  6865. #define DRM_FORMAT_NV24 fourcc_code('N', 'V', '2', '4') /* non-subsampled Cr:Cb plane */
  6866. #define DRM_FORMAT_NV42 fourcc_code('N', 'V', '4', '2') /* non-subsampled Cb:Cr plane */
  6867. +/*
  6868. + * 2 plane YCbCr
  6869. + * index 0 = Y plane, [39:0] Y3:Y2:Y1:Y0 little endian
  6870. + * index 1 = Cr:Cb plane, [39:0] Cr1:Cb1:Cr0:Cb0 little endian
  6871. + */
  6872. +#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5') /* 2x2 subsampled Cr:Cb plane */
  6873. +#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0') /* 2x1 subsampled Cr:Cb plane */
  6874.  
  6875. /*
  6876. * 2 plane YCbCr MSB aligned
  6877. @@ -265,6 +272,24 @@
  6878. */
  6879. #define DRM_FORMAT_P016 fourcc_code('P', '0', '1', '6') /* 2x2 subsampled Cr:Cb plane 16 bits per channel */
  6880.  
  6881. +
  6882. +/* 3 plane non-subsampled (444) YCbCr
  6883. + * 16 bits per component, but only 10 bits are used and 6 bits are padded
  6884. + * index 0: Y plane, [15:0] Y:x [10:6] little endian
  6885. + * index 1: Cb plane, [15:0] Cb:x [10:6] little endian
  6886. + * index 2: Cr plane, [15:0] Cr:x [10:6] little endian
  6887. + */
  6888. +#define DRM_FORMAT_Q410 fourcc_code('Q', '4', '1', '0')
  6889. +
  6890. +/* 3 plane non-subsampled (444) YCrCb
  6891. + * 16 bits per component, but only 10 bits are used and 6 bits are padded
  6892. + * index 0: Y plane, [15:0] Y:x [10:6] little endian
  6893. + * index 1: Cr plane, [15:0] Cr:x [10:6] little endian
  6894. + * index 2: Cb plane, [15:0] Cb:x [10:6] little endian
  6895. + */
  6896. +#define DRM_FORMAT_Q401 fourcc_code('Q', '4', '0', '1')
  6897. +
  6898. +
  6899. /*
  6900. * 3 plane YCbCr
  6901. * index 0: Y plane, [7:0] Y
  6902. diff -uNr '--exclude=.git' '--exclude=sunxi' media_tree_master/include/uapi/linux/videodev2.h linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/uapi/linux/videodev2.h
  6903. --- media_tree_master/include/uapi/linux/videodev2.h 2020-05-30 15:14:45.707014131 -0700
  6904. +++ linux-rockchip_linuxtv-rkvdec-work-in-progress-2/include/uapi/linux/videodev2.h 2020-05-30 15:12:51.151494704 -0700
  6905. @@ -608,6 +608,9 @@
  6906. #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
  6907. #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
  6908.  
  6909. +#define V4L2_PIX_FMT_NV15 v4l2_fourcc('N', 'V', '1', '5') /* 15 Y/CbCr 4:2:0 10-bit packed */
  6910. +#define V4L2_PIX_FMT_NV20 v4l2_fourcc('N', 'V', '2', '0') /* 20 Y/CbCr 4:2:2 10-bit packed */
  6911. +
  6912. /* two non contiguous planes - one Y, one Cr + Cb interleaved */
  6913. #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
  6914. #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */
RAW Paste Data