Codec/a> provides functions for codec devices.<\/p>\n<h2 id=\"content-required-header\"><a href=https://samsungtizenos.com/"#content-required-header\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Required Header<\/h2>\n<p>#include <hal-codec.h><\/p>\n<h2 id=\"content-overview\"><a href=https://samsungtizenos.com/"#content-overview\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Overview<\/h2>\n<p>The codec devices have various specifications and backend interfaces, so it's hard to control them using single code. The codec HAL provides common abstraction interfaces to control codec devices which are different.<\/p>\n<p>Key functionalities include:<\/p>\n<ul>\n<li>Configure and release codec devices<\/li>\n<li>Decode or encode image<\/li>\n<\/ul>\n<h3 id=\"content-state-diagram\"><a href=https://samsungtizenos.com/"#content-state-diagram\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>State Diagram<\/h3>\n<p><img src=https://samsungtizenos.com/"media//hal_codec_state_diagram.png/" alt=\"hal_codec_state_diagram.png\" \/><\/p>\n<h3 id=\"content-state-transitions\"><a href=https://samsungtizenos.com/"#content-state-transitions\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>State Transitions<\/h3>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><strong>FUNCTION<\/strong><\/th>\n<th><strong>PRE-STATE<\/strong><\/th>\n<th><strong>POST-STATE<\/strong><\/th>\n<th><strong>SYNC TYPE<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>hal_codec_init()<\/td>\n<td>N\/A<\/td>\n<td>INITIALIZED<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<tr>\n<td>hal_codec_deinit()<\/td>\n<td>INITIALIZED<\/td>\n<td>N\/A<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<tr>\n<td>hal_codec_configure()<\/td>\n<td>INITIALIZED<\/td>\n<td>CONFIGURED<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<tr>\n<td>hal_codec_release()<\/td>\n<td>CONFIGURED<\/td>\n<td>INITIALIZED<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<tr>\n<td>hal_codec_start()<\/td>\n<td>CONFIGURED<\/td>\n<td>STARTED<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<tr>\n<td>hal_codec_stop()<\/td>\n<td>STARTED<\/td>\n<td>CONFIGURED<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>For more information on the Codec features and the macros, see HAL Codec programming guides and tutorials.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Typedefs<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>typedef int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga0cd7cb39b78e2a2ced30b9ac1b213440\">hal_codec_message_cb<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__message__s\">hal_codec_message_s<\/a> *message, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Callback function for notification from codec HAL.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#struct__hal__backend__codec__funcs\">_hal_backend_codec_funcs<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gacdd5722849f00c3f6cb7be9b79a45381\">hal_backend_codec_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the codec HAL functions.<\/td>\n<\/tr>\n<tr>\n<td>Defines<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>#define<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga429fc69ec404b25ee3e3d897b52fb2f5\">HAL_CODEC_BUFFER_PLANE_MAX<\/a>\u00a0\u00a0\u00a04<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The maximum number of planes in buffer.<\/td>\n<\/tr>\n<tr>\n<td>#define<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga2c3f61315b29d141a054493302765290\">HAL_CODEC_CAPABILITY_MAX<\/a>\u00a0\u00a0\u00a08<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The maximum number of codec capability.<\/td>\n<\/tr>\n<tr>\n<td>#define<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga3a606667ae1b8f6ce7d84971b2cb1f95\">HAL_CODEC_CAPABILITY_FORMAT_MAX<\/a>\u00a0\u00a0\u00a04<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The maximum number of codec capability format.<\/td>\n<\/tr>\n<tr>\n<td>#define<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga40958229c91ffd46856825b24ae1563a\">HAL_CODEC_CAPABILITY_FEATURE_MAX<\/a>\u00a0\u00a0\u00a016<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The maximum number of codec capability feature.<\/td>\n<\/tr>\n<tr>\n<td>#define<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaa9ff6c2f1f958c59999080f226f3cb2f\">HAL_CODEC_FEATURE_LENGTH<\/a>\u00a0\u00a0\u00a016<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The length of codec capability feature.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h2 id=\"content-data-structure-documentation\"><a href=https://samsungtizenos.com/"#content-data-structure-documentation\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Data Structure Documentation<\/h2>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_resolution_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the resolution.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1625a6511ee25cf2f1b10befdc35e120\">width<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a5c0fc1024f94996c7680ce2b1851930d\">height<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation\"><a href=https://samsungtizenos.com/"#content-field-documentation\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a5c0fc1024f94996c7680ce2b1851930d\">hal_codec_resolution_s::height<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The height of resolution<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1625a6511ee25cf2f1b10befdc35e120\">hal_codec_resolution_s::width<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The width of resolution<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_plane_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the buffer plane.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>unsigned char *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a04734cd28bb7d45f9d2f9151fdcb81f1\">data<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a9469d293e90768cb9e2d8e00c8b83251\">stride<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a544067c4c4358eaa873fa298f0251a66\">size<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1693ac0e5c423a6469dca44160b3b85b\">bytesused<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-1\"><a href=https://samsungtizenos.com/"#content-field-documentation-1\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1693ac0e5c423a6469dca44160b3b85b\">hal_codec_plane_s::bytesused<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The actual data size of plane<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned char* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a04734cd28bb7d45f9d2f9151fdcb81f1\">hal_codec_plane_s::data<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The data pointer of plane, it could be NULL when it's secure buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a544067c4c4358eaa873fa298f0251a66\">hal_codec_plane_s::size<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The size of plane<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a9469d293e90768cb9e2d8e00c8b83251\">hal_codec_plane_s::stride<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The stride of plane<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_planes_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the buffer planes.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ad7f192f4bd02ca5127b452af647c0ef0\">num_planes<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__plane__s\">hal_codec_plane_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a5597685aeaa8304081db34508af7cfe4\">plane<\/a> [4]<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-2\"><a href=https://samsungtizenos.com/"#content-field-documentation-2\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ad7f192f4bd02ca5127b452af647c0ef0\">hal_codec_planes_s::num_planes<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The number of planes<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__plane__s\">hal_codec_plane_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a5597685aeaa8304081db34508af7cfe4\">hal_codec_planes_s::plane<\/a>[4]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The array of planes<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_memory_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the buffer memory.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#adf367c10bdb0e403f84510492702e3d5\">num_fd<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a150d14a9a523a0acb6a86ec8792897cd\">fd<\/a> [4]<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-3\"><a href=https://samsungtizenos.com/"#content-field-documentation-3\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a150d14a9a523a0acb6a86ec8792897cd\">hal_codec_memory_s::fd<\/a>[4]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The fd<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#adf367c10bdb0e403f84510492702e3d5\">hal_codec_memory_s::num_fd<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The number of fd<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_meta_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the buffer meta.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1b0225330802937d3b1c56d0fa0f5622\">format<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__resolution__s\">hal_codec_resolution_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a60a6cbaf6188e4f674ca1afab57a9386\">resolution<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gae72217a4210d097abf41cde550ead051\">hal_codec_rotation_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ac94e564bdc49329f5d63451414c26954\">rotation<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint64_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a99b11fe8da2ad4fece5a424251516435\">timestamp<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ad547fef1c25e90baf5695c97ea6126ba\">duration<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a34f0ce9250db056384d373395b980a2a\">flags<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-4\"><a href=https://samsungtizenos.com/"#content-field-documentation-4\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ad547fef1c25e90baf5695c97ea6126ba\">hal_codec_meta_s::duration<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The duration<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a34f0ce9250db056384d373395b980a2a\">hal_codec_meta_s::flags<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The flags<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1b0225330802937d3b1c56d0fa0f5622\">hal_codec_meta_s::format<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The format<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__resolution__s\">hal_codec_resolution_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a60a6cbaf6188e4f674ca1afab57a9386\">hal_codec_meta_s::resolution<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The resolution of frame<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gae72217a4210d097abf41cde550ead051\">hal_codec_rotation_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ac94e564bdc49329f5d63451414c26954\">hal_codec_meta_s::rotation<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The rotation of frame<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint64_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a99b11fe8da2ad4fece5a424251516435\">hal_codec_meta_s::timestamp<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The timestamp<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_buffer_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the buffer.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ad2125ff11111ff65933b7f8feb417511\">index<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ac0b7813dc5105ad233b580e5ce59a33b\">size<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__planes__s\">hal_codec_planes_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a234eab7ed5556e64b77c6f2b8c794244\">planes<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__memory__s\">hal_codec_memory_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a7f8c497d3304bcda7b5fd16c6afe351d\">memory<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__meta__s\">hal_codec_meta_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a4160aa14065e146a8dc727c28dab8947\">meta<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-5\"><a href=https://samsungtizenos.com/"#content-field-documentation-5\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ad2125ff11111ff65933b7f8feb417511\">hal_codec_buffer_s::index<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The index of buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__memory__s\">hal_codec_memory_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a7f8c497d3304bcda7b5fd16c6afe351d\">hal_codec_buffer_s::memory<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The memory of buffer for zero copy<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__meta__s\">hal_codec_meta_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a4160aa14065e146a8dc727c28dab8947\">hal_codec_buffer_s::meta<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The meta data of buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__planes__s\">hal_codec_planes_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a234eab7ed5556e64b77c6f2b8c794244\">hal_codec_buffer_s::planes<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The planes of buffer - logical plane data<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ac0b7813dc5105ad233b580e5ce59a33b\">hal_codec_buffer_s::size<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The size of buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_custom_command_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec HAL custom command.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>const char *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1a94aa17d5a877e61fa3b88475fefb95\">name<\/a><\/td>\n<\/tr>\n<tr>\n<td>void *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ab280ac1723d7eb98fbf6b26394aad6f5\">value<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-6\"><a href=https://samsungtizenos.com/"#content-field-documentation-6\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>const char* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1a94aa17d5a877e61fa3b88475fefb95\">hal_codec_custom_command_s::name<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The name of custom command<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>void* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ab280ac1723d7eb98fbf6b26394aad6f5\">hal_codec_custom_command_s::value<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The value of custom command<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_batch_command_control_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec HAL batch command.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>uint64_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a834b93b676f3d49989a86d7d049fd210\">command_set_flag<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint64_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a333c48edb199a09fc69c80c03141a32f\">bitrate<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__custom__command__s\">hal_codec_custom_command_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a7accc00c50dbc3be6261b7a824cd2353\">custom<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-7\"><a href=https://samsungtizenos.com/"#content-field-documentation-7\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint64_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a333c48edb199a09fc69c80c03141a32f\">hal_codec_batch_command_control_s::bitrate<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The value for bitrate command<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint64_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a834b93b676f3d49989a86d7d049fd210\">hal_codec_batch_command_control_s::command_set_flag<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The flag for updating commands<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__custom__command__s\">hal_codec_custom_command_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a7accc00c50dbc3be6261b7a824cd2353\">hal_codec_batch_command_control_s::custom<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The value for custom command<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_message_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec HAL message.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaba9af87f26b2e3444559eca629cf5bd6\">hal_codec_message_type_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1883d35914efda8caec605096e64e5c7\">type<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaf5dfc87ebac67edfb8c4e1ee25b4399f\">hal_codec_error_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a85e2d49cff5ef9e4256c7041c32b9ab0\">error_code<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__buffer__s\">hal_codec_buffer_s<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a35262e8cba975c2bb738a20cfb746ad7\">buffer<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__resolution__s\">hal_codec_resolution_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ac32dabb576bd0876592e01511bb512a8\">resolution<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint64_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a98d046a521941704b61d2358cb6460db\">timestamp<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-8\"><a href=https://samsungtizenos.com/"#content-field-documentation-8\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__buffer__s\">hal_codec_buffer_s<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a35262e8cba975c2bb738a20cfb746ad7\">hal_codec_message_s::buffer<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The buffer for <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ggaba9af87f26b2e3444559eca629cf5bd6aa46962df9fbd19747264cf68788d434b\">HAL_CODEC_MESSAGE_TYPE_INPUT_BUFFER_USED<\/a> or <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ggaba9af87f26b2e3444559eca629cf5bd6ad5a48f73220d99cc2b7da3924a3cc9b8\">HAL_CODEC_MESSAGE_TYPE_OUTPUT_BUFFER<\/a><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaf5dfc87ebac67edfb8c4e1ee25b4399f\">hal_codec_error_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a85e2d49cff5ef9e4256c7041c32b9ab0\">hal_codec_message_s::error_code<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The error code<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__resolution__s\">hal_codec_resolution_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ac32dabb576bd0876592e01511bb512a8\">hal_codec_message_s::resolution<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The changed resolution<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint64_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a98d046a521941704b61d2358cb6460db\">hal_codec_message_s::timestamp<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The timestamp of invalid input buffer (Since 1.3)<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaba9af87f26b2e3444559eca629cf5bd6\">hal_codec_message_type_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1883d35914efda8caec605096e64e5c7\">hal_codec_message_s::type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The type of message<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_capability_feature_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec capability feature.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.2<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a4f7a56e2175c2af6ad2d6b7661480390\">count<\/a><\/td>\n<\/tr>\n<tr>\n<td>char<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ac7ff6096305729f4d39c160383293ac4\">value<\/a> [16][16]<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-9\"><a href=https://samsungtizenos.com/"#content-field-documentation-9\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a4f7a56e2175c2af6ad2d6b7661480390\">hal_codec_capability_feature_s::count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The count of feature<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>char <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ac7ff6096305729f4d39c160383293ac4\">hal_codec_capability_feature_s::value<\/a>[16][16]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The value of feature<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_capability_base_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec capability base.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.2<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__feature__s\">hal_codec_capability_feature_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ab33f28b9b1525bb5246df7b73e89e6f9\">alignment<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__feature__s\">hal_codec_capability_feature_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aea47ef3e0140b200df2e52032a84ba0f\">stream_format<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__feature__s\">hal_codec_capability_feature_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a5a6f8ce1cd12413db5e79b95eaf5c80f\">level<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__feature__s\">hal_codec_capability_feature_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a840b11477003161d90f10b1da4a5ff85\">profile<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__resolution__s\">hal_codec_resolution_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aab643117a42f73ee9641be5e394a0a05\">max_resolution<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-10\"><a href=https://samsungtizenos.com/"#content-field-documentation-10\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__feature__s\">hal_codec_capability_feature_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ab33f28b9b1525bb5246df7b73e89e6f9\">hal_codec_capability_base_s::alignment<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The alignment<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__feature__s\">hal_codec_capability_feature_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a5a6f8ce1cd12413db5e79b95eaf5c80f\">hal_codec_capability_base_s::level<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The level<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__resolution__s\">hal_codec_resolution_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aab643117a42f73ee9641be5e394a0a05\">hal_codec_capability_base_s::max_resolution<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The max resolution<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__feature__s\">hal_codec_capability_feature_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a840b11477003161d90f10b1da4a5ff85\">hal_codec_capability_base_s::profile<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The profile<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__feature__s\">hal_codec_capability_feature_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aea47ef3e0140b200df2e52032a84ba0f\">hal_codec_capability_base_s::stream_format<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The stream format<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_capability_decoder_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec capability for decoder.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.2<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__base__s\">hal_codec_capability_base_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ae07c1c56f5099543be64b50c4b43363e\">base<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#add335c46dc0a3a02acf39200ad30e259\">in_format<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a5e8d0df66e9b05fbb1124d2b9b50a0d9\">out_format_count<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a402b91b11a25e71efc5f7fedd9e0aa81\">out_format<\/a> [4]<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-11\"><a href=https://samsungtizenos.com/"#content-field-documentation-11\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__base__s\">hal_codec_capability_base_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ae07c1c56f5099543be64b50c4b43363e\">hal_codec_capability_decoder_s::base<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The base capability<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#add335c46dc0a3a02acf39200ad30e259\">hal_codec_capability_decoder_s::in_format<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The input format<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a402b91b11a25e71efc5f7fedd9e0aa81\">hal_codec_capability_decoder_s::out_format<\/a>[4]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output format array<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a5e8d0df66e9b05fbb1124d2b9b50a0d9\">hal_codec_capability_decoder_s::out_format_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output format count<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_capability_encoder_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec capability for encoder.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.2<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__base__s\">hal_codec_capability_base_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa89f9771dffc8d396587af987e96e0ae\">base<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa9838376c4315201a4b0c06d50e22547\">in_format_count<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a648c9c80cc309ec1c91f5949f03c8fb2\">in_format<\/a> [4]<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a0bdc05fb3816f995ef119c4259aaeef7\">out_format<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-12\"><a href=https://samsungtizenos.com/"#content-field-documentation-12\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__base__s\">hal_codec_capability_base_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa89f9771dffc8d396587af987e96e0ae\">hal_codec_capability_encoder_s::base<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The base capability<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a648c9c80cc309ec1c91f5949f03c8fb2\">hal_codec_capability_encoder_s::in_format<\/a>[4]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The input format array<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa9838376c4315201a4b0c06d50e22547\">hal_codec_capability_encoder_s::in_format_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The input format count<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a0bdc05fb3816f995ef119c4259aaeef7\">hal_codec_capability_encoder_s::out_format<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output format<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_codec_capability_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec capability.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.2<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ae81853167eb22a4bfd4b7715a65c7c2d\">decoder_count<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__decoder__s\">hal_codec_capability_decoder_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ae010977014bbf995d80c531d1371ea65\">decoder<\/a> [8]<\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a074f0ef9f232544a1f5cfba90ba67ce6\">encoder_count<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__encoder__s\">hal_codec_capability_encoder_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a09ab4cff796a4730d799e54606224ad5\">encoder<\/a> [8]<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-13\"><a href=https://samsungtizenos.com/"#content-field-documentation-13\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__decoder__s\">hal_codec_capability_decoder_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ae010977014bbf995d80c531d1371ea65\">hal_codec_capability_s::decoder<\/a>[8]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capability for decoder<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ae81853167eb22a4bfd4b7715a65c7c2d\">hal_codec_capability_s::decoder_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The count of capability for decoder<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__encoder__s\">hal_codec_capability_encoder_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a09ab4cff796a4730d799e54606224ad5\">hal_codec_capability_s::encoder<\/a>[8]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capability for encoder<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a074f0ef9f232544a1f5cfba90ba67ce6\">hal_codec_capability_s::encoder_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The count of capability for encoder<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_backend_codec_funcs<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec HAL functions.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a3f4f43390bf84ae6ce1eb3f3d863a051\">init<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaf9c111af0a9ed1baaf2bee17717b4bc8\">hal_codec_type_e<\/a> type, void **codec_handle)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ae17821c7e1b4a65b30acc3b8fe2b61d9\">deinit<\/a> )(void *codec_handle)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a2f92d7771f2008a8d8cab839e983117f\">configure<\/a> )(void *codec_handle, int width, int height, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a> in_format, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a> out_format, bool is_secure)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa6d9efdd15b861f078c610b6c4db4d97\">release<\/a> )(void *codec_handle)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa98feefa4fc26bff3f8ba4469769472d\">start<\/a> )(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga0cd7cb39b78e2a2ced30b9ac1b213440\">hal_codec_message_cb<\/a> callback, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa2c25a3213e71f916b5a5d7bdef2d24c\">stop<\/a> )(void *codec_handle)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a8fe0b6b901a2c248b8ee19e6d1564db3\">flush<\/a> )(void *codec_handle)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a8bab1cb77232fc88cb4fcdd2ad29e76b\">decode<\/a> )(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__buffer__s\">hal_codec_buffer_s<\/a> *buffer)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1bd49149df560aba1f34f161a3dc5862\">encode<\/a> )(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__buffer__s\">hal_codec_buffer_s<\/a> *buffer)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a8e8a3638969044223072f2a1255e1145\">release_output_buffer<\/a> )(void *codec_handle, int buffer_index)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#abe5b8fc898c77295e3ca9340c1977006\">get_state<\/a> )(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga08eee744ebd9ffff0cfd6d2d5d3d2125\">hal_codec_state_e<\/a> *state)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a9dc6e51969325bdc5298dd25e6dc72e5\">set_command<\/a> )(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga848c5e902ffa3825438b8c345d78990b\">hal_codec_command_e<\/a> command, void *value)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#af188047534e544411c211dd9c963ad71\">get_command<\/a> )(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga848c5e902ffa3825438b8c345d78990b\">hal_codec_command_e<\/a> command, void **value)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a97c5a4bb711dd04522bf5189c0d6ed26\">set_batch_command<\/a> )(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__batch__command__control__s\">hal_codec_batch_command_control_s<\/a> *batch_command, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga848c5e902ffa3825438b8c345d78990b\">hal_codec_command_e<\/a> *error_command)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a8a8d6df44e0bce08263b798cd72318e0\">get_capability<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__s\">hal_codec_capability_s<\/a> *capability)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-14\"><a href=https://samsungtizenos.com/"#content-field-documentation-14\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a2f92d7771f2008a8d8cab839e983117f\">_hal_backend_codec_funcs::configure<\/a>)(void *codec_handle, int width, int height, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a> in_format, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a> out_format, bool is_secure)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Configure codec<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a8bab1cb77232fc88cb4fcdd2ad29e76b\">_hal_backend_codec_funcs::decode<\/a>)(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__buffer__s\">hal_codec_buffer_s<\/a> *buffer)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Decode data<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ae17821c7e1b4a65b30acc3b8fe2b61d9\">_hal_backend_codec_funcs::deinit<\/a>)(void *codec_handle)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Deinitialize HAL backend handle<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a1bd49149df560aba1f34f161a3dc5862\">_hal_backend_codec_funcs::encode<\/a>)(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__buffer__s\">hal_codec_buffer_s<\/a> *buffer)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Encode data<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a8fe0b6b901a2c248b8ee19e6d1564db3\">_hal_backend_codec_funcs::flush<\/a>)(void *codec_handle)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Flush codec<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a8a8d6df44e0bce08263b798cd72318e0\">_hal_backend_codec_funcs::get_capability<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__capability__s\">hal_codec_capability_s<\/a> *capability)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get capability of codec (Since 1.2)<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#af188047534e544411c211dd9c963ad71\">_hal_backend_codec_funcs::get_command<\/a>)(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga848c5e902ffa3825438b8c345d78990b\">hal_codec_command_e<\/a> command, void **value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get command for various settings<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#abe5b8fc898c77295e3ca9340c1977006\">_hal_backend_codec_funcs::get_state<\/a>)(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga08eee744ebd9ffff0cfd6d2d5d3d2125\">hal_codec_state_e<\/a> *state)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get state of codec<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a3f4f43390bf84ae6ce1eb3f3d863a051\">_hal_backend_codec_funcs::init<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaf9c111af0a9ed1baaf2bee17717b4bc8\">hal_codec_type_e<\/a> type, void **codec_handle)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Initialize HAL backend handle<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa6d9efdd15b861f078c610b6c4db4d97\">_hal_backend_codec_funcs::release<\/a>)(void *codec_handle)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Release codec<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a8e8a3638969044223072f2a1255e1145\">_hal_backend_codec_funcs::release_output_buffer<\/a>)(void *codec_handle, int buffer_index)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Release output buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a97c5a4bb711dd04522bf5189c0d6ed26\">_hal_backend_codec_funcs::set_batch_command<\/a>)(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__batch__command__control__s\">hal_codec_batch_command_control_s<\/a> *batch_command, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga848c5e902ffa3825438b8c345d78990b\">hal_codec_command_e<\/a> *error_command)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set batch command for multiple settings<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#a9dc6e51969325bdc5298dd25e6dc72e5\">_hal_backend_codec_funcs::set_command<\/a>)(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga848c5e902ffa3825438b8c345d78990b\">hal_codec_command_e<\/a> command, void *value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set command for various settings<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa98feefa4fc26bff3f8ba4469769472d\">_hal_backend_codec_funcs::start<\/a>)(void *codec_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga0cd7cb39b78e2a2ced30b9ac1b213440\">hal_codec_message_cb<\/a> callback, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Start codec<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#aa2c25a3213e71f916b5a5d7bdef2d24c\">_hal_backend_codec_funcs::stop<\/a>)(void *codec_handle)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Stop codec<\/p>\n<hr \/>\n<h2 id=\"content-define-documentation\"><a href=https://samsungtizenos.com/"#content-define-documentation\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Define Documentation<\/h2>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>#define <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga429fc69ec404b25ee3e3d897b52fb2f5\">HAL_CODEC_BUFFER_PLANE_MAX<\/a>\u00a0\u00a0\u00a04<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum number of planes in buffer.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>#define <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga40958229c91ffd46856825b24ae1563a\">HAL_CODEC_CAPABILITY_FEATURE_MAX<\/a>\u00a0\u00a0\u00a016<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum number of codec capability feature.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.2<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>#define <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga3a606667ae1b8f6ce7d84971b2cb1f95\">HAL_CODEC_CAPABILITY_FORMAT_MAX<\/a>\u00a0\u00a0\u00a04<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum number of codec capability format.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.2<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>#define <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga2c3f61315b29d141a054493302765290\">HAL_CODEC_CAPABILITY_MAX<\/a>\u00a0\u00a0\u00a08<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum number of codec capability.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.2<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>#define <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaa9ff6c2f1f958c59999080f226f3cb2f\">HAL_CODEC_FEATURE_LENGTH<\/a>\u00a0\u00a0\u00a016<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The length of codec capability feature.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.2<\/p>\n<hr \/>\n<h2 id=\"content-typedef-documentation\"><a href=https://samsungtizenos.com/"#content-typedef-documentation\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Typedef Documentation<\/h2>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#struct__hal__backend__codec__funcs\">_hal_backend_codec_funcs<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gacdd5722849f00c3f6cb7be9b79a45381\">hal_backend_codec_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the codec HAL functions.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga0cd7cb39b78e2a2ced30b9ac1b213440\">hal_codec_message_cb<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#structhal__codec__message__s\">hal_codec_message_s<\/a> *message, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Callback function for notification from codec HAL.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | message | The message from codec HAL |\n| --- | --- | --- |\n| [in] | user_data | The user data for callback |<\/p>\n<p><strong>See also:<\/strong>\n: hal_codec_add_message_callback()\n: hal_codec_remove_message_callback()<\/p>\n<hr \/>\n<h2 id=\"content-enumeration-type-documentation\"><a href=https://samsungtizenos.com/"#content-enumeration-type-documentation\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Enumeration Type Documentation<\/h2>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga9dd084ad1a1384699362eb9ec342870e\">hal_codec_buffer_flag_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the buffer flag.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_CODEC_BUFFER_FLAG_NONE<\/em> | None flag |\n| --- | --- |\n| <em>HAL_CODEC_BUFFER_FLAG_CODECCONFIG<\/em> | Codec config flag |\n| <em>HAL_CODEC_BUFFER_FLAG_SYNCFRAME<\/em> | Sync frame flag |\n| <em>HAL_CODEC_BUFFER_FLAG_EOS<\/em> | EOS(End of stream) flag |\n| <em>HAL_CODEC_BUFFER_FLAG_ROTATED<\/em> | Rotated flag |\n| <em>HAL_CODEC_BUFFER_FLAG_SECURE<\/em> | Secure flag |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga848c5e902ffa3825438b8c345d78990b\">hal_codec_command_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the codec HAL command.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_CODEC_COMMAND_BASE<\/em> | Base of command |\n| --- | --- |\n| <em>HAL_CODEC_COMMAND_BITRATE<\/em> | Bitrate |\n| <em>HAL_CODEC_COMMAND_REQUEST_CODECDATA<\/em> | Request codec data |\n| <em>HAL_CODEC_COMMAND_REQUEST_SYNCFRAME<\/em> | Request syncframe |\n| <em>HAL_CODEC_COMMAND_CUSTOM<\/em> | Custom |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaf5dfc87ebac67edfb8c4e1ee25b4399f\">hal_codec_error_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the codec HAL error.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_CODEC_ERROR_NONE<\/em> | Error none |\n| --- | --- |\n| <em>HAL_CODEC_ERROR_NOT_SUPPORTED<\/em> | Not supported |\n| <em>HAL_CODEC_ERROR_PERMISSION_DENIED<\/em> | Permission denied |\n| <em>HAL_CODEC_ERROR_INVALID_PARAMETER<\/em> | Invalid parameter |\n| <em>HAL_CODEC_ERROR_INVALID_STATE<\/em> | Invalid state |\n| <em>HAL_CODEC_ERROR_OUT_OF_MEMORY<\/em> | Out of memory |\n| <em>HAL_CODEC_ERROR_DEVICE_OPEN<\/em> | Device open |\n| <em>HAL_CODEC_ERROR_DEVICE_NOT_FOUND<\/em> | Device not found |\n| <em>HAL_CODEC_ERROR_DEVICE_UNAVAILABLE<\/em> | Device unavailable |\n| <em>HAL_CODEC_ERROR_DEVICE_READ<\/em> | Device read |\n| <em>HAL_CODEC_ERROR_DEVICE_WRITE<\/em> | Device write |\n| <em>HAL_CODEC_ERROR_DEVICE_BUSY<\/em> | Device busy |\n| <em>HAL_CODEC_ERROR_DEVICE_TIME_OUT<\/em> | Device time out |\n| <em>HAL_CODEC_ERROR_INTERNAL<\/em> | Internal |\n| <em>HAL_CODEC_ERROR_NOT_IMPLEMENTED<\/em> | Not implemented |\n| <em>HAL_CODEC_ERROR_UNKNOWN<\/em> | Unknown |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga564597bce1641194a2554a962fb145c4\">hal_codec_format_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the codec HAL format.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_CODEC_FORMAT_H264<\/em> | Encoded - H.264 |\n| --- | --- |\n| <em>HAL_CODEC_FORMAT_H265<\/em> | Encoded - H.265 |\n| <em>HAL_CODEC_FORMAT_H266<\/em> | Encoded - H.266 |\n| <em>HAL_CODEC_FORMAT_VP8<\/em> | Encoded - VP8 |\n| <em>HAL_CODEC_FORMAT_VP9<\/em> | Encoded - VP9 |\n| <em>HAL_CODEC_FORMAT_AV1<\/em> | Encoded - AV1 |\n| <em>HAL_CODEC_FORMAT_MJPEG<\/em> | Encoded - MotionJPEG (Since 1.1) |\n| <em>HAL_CODEC_FORMAT_NV12<\/em> | RAW - NV12 |\n| <em>HAL_CODEC_FORMAT_NV12T<\/em> | RAW - NV12 Tiled |\n| <em>HAL_CODEC_FORMAT_NV21<\/em> | RAW - NV21 |\n| <em>HAL_CODEC_FORMAT_I420<\/em> | RAW - I420(YU12) |\n| <em>HAL_CODEC_FORMAT_YV12<\/em> | RAW - YV12 |\n| <em>HAL_CODEC_FORMAT_YUYV<\/em> | RAW - YUYV |\n| <em>HAL_CODEC_FORMAT_UYVY<\/em> | RAW - UYVY |\n| <em>HAL_CODEC_FORMAT_BGRA8888<\/em> | RAW - BGRA8888 |\n| <em>HAL_CODEC_FORMAT_ARGB8888<\/em> | RAW - ARGB8888 |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gac3a0f3ae2286cf7c48708866b4072f1b\">hal_codec_format_type_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for codec HAL format type.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_CODEC_FORMAT_TYPE_ENCODED<\/em> | Encoded format type |\n| --- | --- |\n| <em>HAL_CODEC_FORMAT_TYPE_RAW<\/em> | RAW format type |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaba9af87f26b2e3444559eca629cf5bd6\">hal_codec_message_type_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the codec HAL message type.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_CODEC_MESSAGE_TYPE_INPUT_BUFFER_USED<\/em> | Input buffer is used |\n| --- | --- |\n| <em>HAL_CODEC_MESSAGE_TYPE_OUTPUT_BUFFER<\/em> | Output buffer is delivered |\n| <em>HAL_CODEC_MESSAGE_TYPE_RESOLUTION_CHANGED<\/em> | Resolution is changed |\n| <em>HAL_CODEC_MESSAGE_TYPE_INVALID_INPUT_BUFFER<\/em> | Invalid input buffer (Since 1.3) |\n| <em>HAL_CODEC_MESSAGE_TYPE_ERROR<\/em> | Error is occurred |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gae72217a4210d097abf41cde550ead051\">hal_codec_rotation_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the buffer rotation.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_CODEC_ROTATION_NONE<\/em> | None rotation |\n| --- | --- |\n| <em>HAL_CODEC_ROTATION_90<\/em> | 90 degree rotation |\n| <em>HAL_CODEC_ROTATION_180<\/em> | 180 degree rotation |\n| <em>HAL_CODEC_ROTATION_270<\/em> | 270 degree rotation |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#ga08eee744ebd9ffff0cfd6d2d5d3d2125\">hal_codec_state_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the codec HAL state.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_CODEC_STATE_INITIALIZED<\/em> | Initialized state |\n| --- | --- |\n| <em>HAL_CODEC_STATE_CONFIGURED<\/em> | Configured state |\n| <em>HAL_CODEC_STATE_STARTED<\/em> | Started state |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__CODEC__MODULE.md#gaf9c111af0a9ed1baaf2bee17717b4bc8\">hal_codec_type_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the codec HAL type.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_CODEC 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_CODEC_TYPE_DECODER<\/em> | Decoder type |\n| --- | --- |\n| <em>HAL_CODEC_TYPE_ENCODER<\/em> | Encoder type |<\/p>\n<hr \/>\n<p>Except as noted, this content - excluding the Code Examples - is licensed under <a href=https://samsungtizenos.com/"http:////creativecommons.org//licenses//by//3.0//legalcode/">Creative Commons Attribution 3.0<\/a>\nand all of the Code Examples contained herein are licensed under <a href=https://samsungtizenos.com/"https:////www.tizen.org//bsd-3-clause-license/">BSD-3-Clause/a>.
Content License<\/a>.<\/p>\n","table_of_content":"<ul class=\"table-of-contents\">\n<li><a href=https://samsungtizenos.com/"#content-required-header\">Required Header<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-overview\">Overview<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-state-diagram\">State Diagram<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-state-transitions\">State Transitions<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-data-structure-documentation\">Data Structure Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-1\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-2\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-3\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-4\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-5\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-6\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-7\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-8\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-9\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-10\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-11\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-12\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-13\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-14\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-define-documentation\">Define Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-typedef-documentation\">Typedef Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-enumeration-type-documentation\">Enumeration Type Documentation<\/a><\/li>\n<\/ul>\n","title":"Tizen HAL API: Codec","raw":null},{"class":"App\\Services\\Documentation\\Data\\RenderedMarkdown","s":"wrbl"}]},"memo":{"id":"dibSnKcugWRpmMiN4KUm","name":"documentation::article","path":"docs\/platform\/hal\/api\/1.0.0\/group__HALAPI__HAL__CODEC__MODULE","method":"GET","release":"a-a-a","children":[],"scripts":[],"assets":[],"lazyLoaded":false,"lazyIsolated":true,"errors":[],"locale":"en","islands":[]},"checksum":"d212eaaf1a049524e07d7844d7b93872b49ac619057b69ff409007cb0b5be1cd"}" wire:effects="[]" wire:id="dibSnKcugWRpmMiN4KUm" wire:name="documentation::article" x-init="$wire.__lazyLoad('eyJkYXRhIjp7ImZvck1vdW50IjpbeyJtYXJrZG93biI6W3siYm9keSI6IjxoMSBpZD1cImNvbnRlbnQtdGl6ZW4taGFsLWFwaS1jb2RlY1wiPjxhIGhyZWY9XCIjY29udGVudC10aXplbi1oYWwtYXBpLWNvZGVjXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5UaXplbiBIQUwgQVBJOiBDb2RlYzxcL2gxPjxkaXYgZGF0YS1rbm93bGVkZ2UtYmFzZS1tZXRhZGF0YT48XC9kaXY+XG48aHIgXC8+XG48cD5UaGUgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZFwiPkNvZGVjPFwvYT4gcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBjb2RlYyBkZXZpY2VzLjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXJlcXVpcmVkLWhlYWRlclwiPjxhIGhyZWY9XCIjY29udGVudC1yZXF1aXJlZC1oZWFkZXJcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlJlcXVpcmVkIEhlYWRlcjxcL2gyPlxuPHA+I2luY2x1ZGUgJmx0O2hhbC1jb2RlYy5oJmd0OzxcL3A+XG48aDIgaWQ9XCJjb250ZW50LW92ZXJ2aWV3XCI+PGEgaHJlZj1cIiNjb250ZW50LW92ZXJ2aWV3XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5PdmVydmlldzxcL2gyPlxuPHA+VGhlIGNvZGVjIGRldmljZXMgaGF2ZSB2YXJpb3VzIHNwZWNpZmljYXRpb25zIGFuZCBiYWNrZW5kIGludGVyZmFjZXMsIHNvIGl0J3MgaGFyZCB0byBjb250cm9sIHRoZW0gdXNpbmcgc2luZ2xlIGNvZGUuIFRoZSBjb2RlYyBIQUwgcHJvdmlkZXMgY29tbW9uIGFic3RyYWN0aW9uIGludGVyZmFjZXMgdG8gY29udHJvbCBjb2RlYyBkZXZpY2VzIHdoaWNoIGFyZSBkaWZmZXJlbnQuPFwvcD5cbjxwPktleSBmdW5jdGlvbmFsaXRpZXMgaW5jbHVkZTo8XC9wPlxuPHVsPlxuPGxpPkNvbmZpZ3VyZSBhbmQgcmVsZWFzZSBjb2RlYyBkZXZpY2VzPFwvbGk+XG48bGk+RGVjb2RlIG9yIGVuY29kZSBpbWFnZTxcL2xpPlxuPFwvdWw+XG48aDMgaWQ9XCJjb250ZW50LXN0YXRlLWRpYWdyYW1cIj48YSBocmVmPVwiI2NvbnRlbnQtc3RhdGUtZGlhZ3JhbVwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+U3RhdGUgRGlhZ3JhbTxcL2gzPlxuPHA+PGltZyBzcmM9XCJtZWRpYVwvaGFsX2NvZGVjX3N0YXRlX2RpYWdyYW0ucG5nXCIgYWx0PVwiaGFsX2NvZGVjX3N0YXRlX2RpYWdyYW0ucG5nXCIgXC8+PFwvcD5cbjxoMyBpZD1cImNvbnRlbnQtc3RhdGUtdHJhbnNpdGlvbnNcIj48YSBocmVmPVwiI2NvbnRlbnQtc3RhdGUtdHJhbnNpdGlvbnNcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlN0YXRlIFRyYW5zaXRpb25zPFwvaDM+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48c3Ryb25nPkZVTkNUSU9OPFwvc3Ryb25nPjxcL3RoPlxuPHRoPjxzdHJvbmc+UFJFLVNUQVRFPFwvc3Ryb25nPjxcL3RoPlxuPHRoPjxzdHJvbmc+UE9TVC1TVEFURTxcL3N0cm9uZz48XC90aD5cbjx0aD48c3Ryb25nPlNZTkMgVFlQRTxcL3N0cm9uZz48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+aGFsX2NvZGVjX2luaXQoKTxcL3RkPlxuPHRkPk5cL0E8XC90ZD5cbjx0ZD5JTklUSUFMSVpFRDxcL3RkPlxuPHRkPlNZTkM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmhhbF9jb2RlY19kZWluaXQoKTxcL3RkPlxuPHRkPklOSVRJQUxJWkVEPFwvdGQ+XG48dGQ+TlwvQTxcL3RkPlxuPHRkPlNZTkM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmhhbF9jb2RlY19jb25maWd1cmUoKTxcL3RkPlxuPHRkPklOSVRJQUxJWkVEPFwvdGQ+XG48dGQ+Q09ORklHVVJFRDxcL3RkPlxuPHRkPlNZTkM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmhhbF9jb2RlY19yZWxlYXNlKCk8XC90ZD5cbjx0ZD5DT05GSUdVUkVEPFwvdGQ+XG48dGQ+SU5JVElBTElaRUQ8XC90ZD5cbjx0ZD5TWU5DPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5oYWxfY29kZWNfc3RhcnQoKTxcL3RkPlxuPHRkPkNPTkZJR1VSRUQ8XC90ZD5cbjx0ZD5TVEFSVEVEPFwvdGQ+XG48dGQ+U1lOQzxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aGFsX2NvZGVjX3N0b3AoKTxcL3RkPlxuPHRkPlNUQVJURUQ8XC90ZD5cbjx0ZD5DT05GSUdVUkVEPFwvdGQ+XG48dGQ+U1lOQzxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDb2RlYyBmZWF0dXJlcyBhbmQgdGhlIG1hY3Jvcywgc2VlIEhBTCBDb2RlYyBwcm9ncmFtbWluZyBndWlkZXMgYW5kIHR1dG9yaWFscy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+VHlwZWRlZnM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dHlwZWRlZiBpbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EwY2Q3Y2IzOWI3OGUyYTJjZWQzMGI5YWMxYjIxMzQ0MFwiPmhhbF9jb2RlY19tZXNzYWdlX2NiPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX21lc3NhZ2VfX3NcIj5oYWxfY29kZWNfbWVzc2FnZV9zPFwvYT4gKm1lc3NhZ2UsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPkNhbGxiYWNrIGZ1bmN0aW9uIGZvciBub3RpZmljYXRpb24gZnJvbSBjb2RlYyBIQUwuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0X19oYWxfX2JhY2tlbmRfX2NvZGVjX19mdW5jc1wiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWNkZDU3MjI4NDlmMDBjM2Y2Y2I3YmU5Yjc5YTQ1MzgxXCI+aGFsX2JhY2tlbmRfY29kZWNfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBIQUwgZnVuY3Rpb25zLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+RGVmaW5lczxcL3RkPlxuPHRkPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+I2RlZmluZTxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E0MjlmYzY5ZWM0MDRiMjVlZTNlM2Q4OTdiNTJmYjJmNVwiPkhBTF9DT0RFQ19CVUZGRVJfUExBTkVfTUFYPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA0PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgbWF4aW11bSBudW1iZXIgb2YgcGxhbmVzIGluIGJ1ZmZlci48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPiNkZWZpbmU8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhMmMzZjYxMzE1YjI5ZDE0MWEwNTQ0OTMzMDI3NjUyOTBcIj5IQUxfQ09ERUNfQ0FQQUJJTElUWV9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDg8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2RlYyBjYXBhYmlsaXR5LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+I2RlZmluZTxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EzYTYwNjY2N2FlMWI4ZjZjZTdkODQ5NzFiMmNiMWY5NVwiPkhBTF9DT0RFQ19DQVBBQklMSVRZX0ZPUk1BVF9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDQ8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2RlYyBjYXBhYmlsaXR5IGZvcm1hdC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPiNkZWZpbmU8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhNDA5NTgyMjljOTFmZmQ0Njg1NjgyNWIyNGFlMTU2M2FcIj5IQUxfQ09ERUNfQ0FQQUJJTElUWV9GRUFUVVJFX01BWDxcL2E+XHUwMGEwXHUwMGEwXHUwMGEwMTY8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2RlYyBjYXBhYmlsaXR5IGZlYXR1cmUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD4jZGVmaW5lPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWE5ZmY2YzJmMWY5NThjNTk5OTkwODBmMjI2ZjNjYjJmXCI+SEFMX0NPREVDX0ZFQVRVUkVfTEVOR1RIPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTAxNjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGxlbmd0aCBvZiBjb2RlYyBjYXBhYmlsaXR5IGZlYXR1cmUuPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGgyIGlkPVwiY29udGVudC1kYXRhLXN0cnVjdHVyZS1kb2N1bWVudGF0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LWRhdGEtc3RydWN0dXJlLWRvY3VtZW50YXRpb25cIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkRhdGEgU3RydWN0dXJlIERvY3VtZW50YXRpb248XC9oMj5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSByZXNvbHV0aW9uLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExNjI1YTY1MTFlZTI1Y2YyZjFiMTBiZWZkYzM1ZTEyMFwiPndpZHRoPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTVjMGZjMTAyNGY5NDk5NmM3NjgwY2UyYjE4NTE5MzBkXCI+aGVpZ2h0PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTVjMGZjMTAyNGY5NDk5NmM3NjgwY2UyYjE4NTE5MzBkXCI+aGFsX2NvZGVjX3Jlc29sdXRpb25fczo6aGVpZ2h0PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaGVpZ2h0IG9mIHJlc29sdXRpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTE2MjVhNjUxMWVlMjVjZjJmMWIxMGJlZmRjMzVlMTIwXCI+aGFsX2NvZGVjX3Jlc29sdXRpb25fczo6d2lkdGg8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB3aWR0aCBvZiByZXNvbHV0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfcGxhbmVfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgYnVmZmVyIHBsYW5lLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD51bnNpZ25lZCBjaGFyICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EwNDczNGNkMjhiYjdkNDVmOWQyZjkxNTFmZGNiODFmMVwiPmRhdGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5NDY5ZDI5M2U5MDc2OGNiOWUyZDhlMDBjOGI4MzI1MVwiPnN0cmlkZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTU0NDA2N2M0YzQzNThlYWE4NzNmYTI5OGYwMjUxYTY2XCI+c2l6ZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTE2OTNhYzBlNWM0MjNhNjQ2OWRjYTQ0MTYwYjNiODViXCI+Ynl0ZXN1c2VkPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTFcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTE2OTNhYzBlNWM0MjNhNjQ2OWRjYTQ0MTYwYjNiODViXCI+aGFsX2NvZGVjX3BsYW5lX3M6OmJ5dGVzdXNlZDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGFjdHVhbCBkYXRhIHNpemUgb2YgcGxhbmU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgY2hhciogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMDQ3MzRjZDI4YmI3ZDQ1ZjlkMmY5MTUxZmRjYjgxZjFcIj5oYWxfY29kZWNfcGxhbmVfczo6ZGF0YTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGRhdGEgcG9pbnRlciBvZiBwbGFuZSwgaXQgY291bGQgYmUgTlVMTCB3aGVuIGl0J3Mgc2VjdXJlIGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50MzJfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E1NDQwNjdjNGM0MzU4ZWFhODczZmEyOThmMDI1MWE2NlwiPmhhbF9jb2RlY19wbGFuZV9zOjpzaXplPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc2l6ZSBvZiBwbGFuZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50MzJfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5NDY5ZDI5M2U5MDc2OGNiOWUyZDhlMDBjOGI4MzI1MVwiPmhhbF9jb2RlY19wbGFuZV9zOjpzdHJpZGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJpZGUgb2YgcGxhbmU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19wbGFuZXNfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgYnVmZmVyIHBsYW5lcy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FkN2YxOTJmNGJkMDJjYTUxMjdiNDUyYWY2NDdjMGVmMFwiPm51bV9wbGFuZXM8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19wbGFuZV9fc1wiPmhhbF9jb2RlY19wbGFuZV9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E1NTk3Njg1YWVhYTgzMDQwODFkYjM0NTA4YWY3Y2ZlNFwiPnBsYW5lPFwvYT4gWzRdPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTJcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50MzJfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FkN2YxOTJmNGJkMDJjYTUxMjdiNDUyYWY2NDdjMGVmMFwiPmhhbF9jb2RlY19wbGFuZXNfczo6bnVtX3BsYW5lczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG51bWJlciBvZiBwbGFuZXM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19wbGFuZV9fc1wiPmhhbF9jb2RlY19wbGFuZV9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNTU5NzY4NWFlYWE4MzA0MDgxZGIzNDUwOGFmN2NmZTRcIj5oYWxfY29kZWNfcGxhbmVzX3M6OnBsYW5lPFwvYT5bNF08XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgYXJyYXkgb2YgcGxhbmVzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfbWVtb3J5X3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIGJ1ZmZlciBtZW1vcnkuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPnVpbnQzMl90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZGYzNjdjMTBiZGIwZTQwM2Y4NDUxMDQ5MjcwMmUzZDVcIj5udW1fZmQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMTUwZDE0YTlhNTIzYTBhY2I2YTg2ZWM4NzkyODk3Y2RcIj5mZDxcL2E+IFs0XTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0zXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tM1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTE1MGQxNGE5YTUyM2EwYWNiNmE4NmVjODc5Mjg5N2NkXCI+aGFsX2NvZGVjX21lbW9yeV9zOjpmZDxcL2E+WzRdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGZkPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWRmMzY3YzEwYmRiMGU0MDNmODQ1MTA0OTI3MDJlM2Q1XCI+aGFsX2NvZGVjX21lbW9yeV9zOjpudW1fZmQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBudW1iZXIgb2YgZmQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19tZXRhX3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIGJ1ZmZlciBtZXRhLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhNTY0NTk3YmNlMTY0MTE5NGEyNTU0YTk2MmZiMTQ1YzRcIj5oYWxfY29kZWNfZm9ybWF0X2U8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTFiMDIyNTMzMDgwMjkzN2QzYjFjNTZkMGZhMGY1NjIyXCI+Zm9ybWF0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fcmVzb2x1dGlvbl9fc1wiPmhhbF9jb2RlY19yZXNvbHV0aW9uX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTYwYTZjYmFmNjE4OGU0ZjY3NGNhMWFmYWI1N2E5Mzg2XCI+cmVzb2x1dGlvbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhZTcyMjE3YTQyMTBkMDk3YWJmNDFjZGU1NTBlYWQwNTFcIj5oYWxfY29kZWNfcm90YXRpb25fZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYzk0ZTU2NGJkYzQ5MzI5ZjVkNjM0NTE0MTRjMjY5NTRcIj5yb3RhdGlvbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50NjRfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTk5YjExZmU4ZGEyYWQ0ZmVjZTVhNDI0MjUxNTE2NDM1XCI+dGltZXN0YW1wPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQzMl90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZDU0N2ZlZjFjMjVlOTBiYWY1Njk1Yzk3ZWE2MTI2YmFcIj5kdXJhdGlvbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTM0ZjBjZTkyNTBkYjA1NjM4NGQzNzMzOTViOTgwYTJhXCI+ZmxhZ3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi00XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNFwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dWludDMyX3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZDU0N2ZlZjFjMjVlOTBiYWY1Njk1Yzk3ZWE2MTI2YmFcIj5oYWxfY29kZWNfbWV0YV9zOjpkdXJhdGlvbjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGR1cmF0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTM0ZjBjZTkyNTBkYjA1NjM4NGQzNzMzOTViOTgwYTJhXCI+aGFsX2NvZGVjX21ldGFfczo6ZmxhZ3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBmbGFnczxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhNTY0NTk3YmNlMTY0MTE5NGEyNTU0YTk2MmZiMTQ1YzRcIj5oYWxfY29kZWNfZm9ybWF0X2U8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExYjAyMjUzMzA4MDI5MzdkM2IxYzU2ZDBmYTBmNTYyMlwiPmhhbF9jb2RlY19tZXRhX3M6OmZvcm1hdDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGZvcm1hdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3Jlc29sdXRpb25fX3NcIj5oYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNjBhNmNiYWY2MTg4ZTRmNjc0Y2ExYWZhYjU3YTkzODZcIj5oYWxfY29kZWNfbWV0YV9zOjpyZXNvbHV0aW9uPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcmVzb2x1dGlvbiBvZiBmcmFtZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhZTcyMjE3YTQyMTBkMDk3YWJmNDFjZGU1NTBlYWQwNTFcIj5oYWxfY29kZWNfcm90YXRpb25fZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWM5NGU1NjRiZGM0OTMyOWY1ZDYzNDUxNDE0YzI2OTU0XCI+aGFsX2NvZGVjX21ldGFfczo6cm90YXRpb248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSByb3RhdGlvbiBvZiBmcmFtZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50NjRfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5OWIxMWZlOGRhMmFkNGZlY2U1YTQyNDI1MTUxNjQzNVwiPmhhbF9jb2RlY19tZXRhX3M6OnRpbWVzdGFtcDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRpbWVzdGFtcDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgaGFsX2NvZGVjX2J1ZmZlcl9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBidWZmZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWQyMTI1ZmYxMTExMWZmNjU5MzNiN2Y4ZmViNDE3NTExXCI+aW5kZXg8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjMGI3ODEzZGM1MTA1YWQyMzNiNTgwZTVjZTU5YTMzYlwiPnNpemU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19wbGFuZXNfX3NcIj5oYWxfY29kZWNfcGxhbmVzX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTIzNGVhYjdlZDU1NTZlNjRiNzdjNmYyYjhjNzk0MjQ0XCI+cGxhbmVzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fbWVtb3J5X19zXCI+aGFsX2NvZGVjX21lbW9yeV9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E3ZjhjNDk3ZDMzMDRiY2RhN2I1ZmQxNmM2YWZlMzUxZFwiPm1lbW9yeTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX21ldGFfX3NcIj5oYWxfY29kZWNfbWV0YV9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E0MTYwYWExNDA2NWUxNDZhOGRjNzI3YzI4ZGFiODk0N1wiPm1ldGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi01XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNVwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWQyMTI1ZmYxMTExMWZmNjU5MzNiN2Y4ZmViNDE3NTExXCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjppbmRleDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGluZGV4IG9mIGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX21lbW9yeV9fc1wiPmhhbF9jb2RlY19tZW1vcnlfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTdmOGM0OTdkMzMwNGJjZGE3YjVmZDE2YzZhZmUzNTFkXCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjptZW1vcnk8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtZW1vcnkgb2YgYnVmZmVyIGZvciB6ZXJvIGNvcHk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19tZXRhX19zXCI+aGFsX2NvZGVjX21ldGFfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTQxNjBhYTE0MDY1ZTE0NmE4ZGM3MjdjMjhkYWI4OTQ3XCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjptZXRhPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWV0YSBkYXRhIG9mIGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3BsYW5lc19fc1wiPmhhbF9jb2RlY19wbGFuZXNfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTIzNGVhYjdlZDU1NTZlNjRiNzdjNmYyYjhjNzk0MjQ0XCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjpwbGFuZXM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwbGFuZXMgb2YgYnVmZmVyIC0gbG9naWNhbCBwbGFuZSBkYXRhPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWMwYjc4MTNkYzUxMDVhZDIzM2I1ODBlNWNlNTlhMzNiXCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjpzaXplPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc2l6ZSBvZiBidWZmZXI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19jdXN0b21fY29tbWFuZF9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBIQUwgY3VzdG9tIGNvbW1hbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPmNvbnN0IGNoYXIgKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTFhOTRhYTE3ZDVhODc3ZTYxZmEzYjg4NDc1ZmVmYjk1XCI+bmFtZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD52b2lkICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FiMjgwYWMxNzIzZDdlYjk4ZmJmNmIyNjM5NGFhZDZmNVwiPnZhbHVlPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNlwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTZcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmNvbnN0IGNoYXIqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTFhOTRhYTE3ZDVhODc3ZTYxZmEzYjg4NDc1ZmVmYjk1XCI+aGFsX2NvZGVjX2N1c3RvbV9jb21tYW5kX3M6Om5hbWU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBuYW1lIG9mIGN1c3RvbSBjb21tYW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWIyODBhYzE3MjNkN2ViOThmYmY2YjI2Mzk0YWFkNmY1XCI+aGFsX2NvZGVjX2N1c3RvbV9jb21tYW5kX3M6OnZhbHVlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmFsdWUgb2YgY3VzdG9tIGNvbW1hbmQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19iYXRjaF9jb21tYW5kX2NvbnRyb2xfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgY29kZWMgSEFMIGJhdGNoIGNvbW1hbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPnVpbnQ2NF90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhODM0YjkzYjY3NmYzZDQ5OTg5YTg2ZDdkMDQ5ZmQyMTBcIj5jb21tYW5kX3NldF9mbGFnPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQ2NF90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMzMzYzQ4ZWRiMTk5YTA5ZmM2OWM4MGMwMzE0MWEzMmZcIj5iaXRyYXRlPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY3VzdG9tX19jb21tYW5kX19zXCI+aGFsX2NvZGVjX2N1c3RvbV9jb21tYW5kX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTdhY2NjMDBjNTBkYmMzYmU2MjYxYjdhODI0Y2QyMzUzXCI+Y3VzdG9tPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tN1wiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTdcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQ2NF90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTMzM2M0OGVkYjE5OWEwOWZjNjljODBjMDMxNDFhMzJmXCI+aGFsX2NvZGVjX2JhdGNoX2NvbW1hbmRfY29udHJvbF9zOjpiaXRyYXRlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmFsdWUgZm9yIGJpdHJhdGUgY29tbWFuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50NjRfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E4MzRiOTNiNjc2ZjNkNDk5ODlhODZkN2QwNDlmZDIxMFwiPmhhbF9jb2RlY19iYXRjaF9jb21tYW5kX2NvbnRyb2xfczo6Y29tbWFuZF9zZXRfZmxhZzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGZsYWcgZm9yIHVwZGF0aW5nIGNvbW1hbmRzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY3VzdG9tX19jb21tYW5kX19zXCI+aGFsX2NvZGVjX2N1c3RvbV9jb21tYW5kX3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E3YWNjYzAwYzUwZGJjM2JlNjI2MWI3YTgyNGNkMjM1M1wiPmhhbF9jb2RlY19iYXRjaF9jb21tYW5kX2NvbnRyb2xfczo6Y3VzdG9tPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmFsdWUgZm9yIGN1c3RvbSBjb21tYW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfbWVzc2FnZV9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBIQUwgbWVzc2FnZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWJhOWFmODdmMjZiMmUzNDQ0NTU5ZWNhNjI5Y2Y1YmQ2XCI+aGFsX2NvZGVjX21lc3NhZ2VfdHlwZV9lPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExODgzZDM1OTE0ZWZkYThjYWVjNjA1MDk2ZTY0ZTVjN1wiPnR5cGU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWY1ZGZjODdlYmFjNjdlZGZiOGM0ZTFlZTI1YjQzOTlmXCI+aGFsX2NvZGVjX2Vycm9yX2U8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTg1ZTJkNDljZmY1ZWY5ZTQyNTZjNzA0MWMzMmI5YWIwXCI+ZXJyb3JfY29kZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2J1ZmZlcl9fc1wiPmhhbF9jb2RlY19idWZmZXJfczxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EzNTI2MmU4Y2JhOTc1YzJiYjczOGEyMGNmYjc0NmFkN1wiPmJ1ZmZlcjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3Jlc29sdXRpb25fX3NcIj5oYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjMzJkYWJiNTc2YmQwODc2NTkyZTAxNTExYmI1MTJhOFwiPnJlc29sdXRpb248XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dWludDY0X3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5OGQwNDZhNTIxOTQxNzA0YjYxZDIzNThjYjY0NjBkYlwiPnRpbWVzdGFtcDxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLThcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi04XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2J1ZmZlcl9fc1wiPmhhbF9jb2RlY19idWZmZXJfczxcL2E+KiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EzNTI2MmU4Y2JhOTc1YzJiYjczOGEyMGNmYjc0NmFkN1wiPmhhbF9jb2RlY19tZXNzYWdlX3M6OmJ1ZmZlcjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGJ1ZmZlciBmb3IgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnZ2FiYTlhZjg3ZjI2YjJlMzQ0NDU1OWVjYTYyOWNmNWJkNmFhNDY5NjJkZjlmYmQxOTc0NzI2NGNmNjg3ODhkNDM0YlwiPkhBTF9DT0RFQ19NRVNTQUdFX1RZUEVfSU5QVVRfQlVGRkVSX1VTRUQ8XC9hPiBvciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dnYWJhOWFmODdmMjZiMmUzNDQ0NTU5ZWNhNjI5Y2Y1YmQ2YWQ1YTQ4ZjczMjIwZDk5Y2MyYjdkYTM5MjRhM2NjOWI4XCI+SEFMX0NPREVDX01FU1NBR0VfVFlQRV9PVVRQVVRfQlVGRkVSPFwvYT48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWY1ZGZjODdlYmFjNjdlZGZiOGM0ZTFlZTI1YjQzOTlmXCI+aGFsX2NvZGVjX2Vycm9yX2U8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E4NWUyZDQ5Y2ZmNWVmOWU0MjU2YzcwNDFjMzJiOWFiMFwiPmhhbF9jb2RlY19tZXNzYWdlX3M6OmVycm9yX2NvZGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBlcnJvciBjb2RlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fcmVzb2x1dGlvbl9fc1wiPmhhbF9jb2RlY19yZXNvbHV0aW9uX3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjMzJkYWJiNTc2YmQwODc2NTkyZTAxNTExYmI1MTJhOFwiPmhhbF9jb2RlY19tZXNzYWdlX3M6OnJlc29sdXRpb248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjaGFuZ2VkIHJlc29sdXRpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dWludDY0X3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhOThkMDQ2YTUyMTk0MTcwNGI2MWQyMzU4Y2I2NDYwZGJcIj5oYWxfY29kZWNfbWVzc2FnZV9zOjp0aW1lc3RhbXA8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0aW1lc3RhbXAgb2YgaW52YWxpZCBpbnB1dCBidWZmZXIgKFNpbmNlIDEuMyk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWJhOWFmODdmMjZiMmUzNDQ0NTU5ZWNhNjI5Y2Y1YmQ2XCI+aGFsX2NvZGVjX21lc3NhZ2VfdHlwZV9lPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMTg4M2QzNTkxNGVmZGE4Y2FlYzYwNTA5NmU2NGU1YzdcIj5oYWxfY29kZWNfbWVzc2FnZV9zOjp0eXBlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdHlwZSBvZiBtZXNzYWdlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfY2FwYWJpbGl0eV9mZWF0dXJlX3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIGNvZGVjIGNhcGFiaWxpdHkgZmVhdHVyZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E0ZjdhNTZlMjE3NWMyYWY2YWQyZDZiNzY2MTQ4MDM5MFwiPmNvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmNoYXI8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjN2ZmNjA5NjMwNTcyOWY0ZDM5YzE2MDM4MzI5M2FjNFwiPnZhbHVlPFwvYT4gWzE2XVsxNl08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tOVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTlcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTRmN2E1NmUyMTc1YzJhZjZhZDJkNmI3NjYxNDgwMzkwXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZmVhdHVyZV9zOjpjb3VudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNvdW50IG9mIGZlYXR1cmU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+Y2hhciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjN2ZmNjA5NjMwNTcyOWY0ZDM5YzE2MDM4MzI5M2FjNFwiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2ZlYXR1cmVfczo6dmFsdWU8XC9hPlsxNl1bMTZdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZhbHVlIG9mIGZlYXR1cmU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19jYXBhYmlsaXR5X2Jhc2VfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgY29kZWMgY2FwYWJpbGl0eSBiYXNlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2ZlYXR1cmVfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9mZWF0dXJlX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWIzM2YyOGI5YjE1MjViYjUyNDZkZjdiNzNlODllNmY5XCI+YWxpZ25tZW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZmVhdHVyZV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2ZlYXR1cmVfczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZWE0N2VmM2UwMTQwYjIwMGRmMmU1MjAzMmE4NGJhMGZcIj5zdHJlYW1fZm9ybWF0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZmVhdHVyZV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2ZlYXR1cmVfczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNWE2ZjhjZTFjZDEyNDEzZGI1ZTc5Yjk1ZWFmNWM4MGZcIj5sZXZlbDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2ZlYXR1cmVfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9mZWF0dXJlX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTg0MGIxMTQ3NzAwMzE2MWQ5MGYxMGIxZGE0YTVmZjg1XCI+cHJvZmlsZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3Jlc29sdXRpb25fX3NcIj5oYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FhYjY0MzExN2E0MmY3M2VlOTY0MWJlNWUzOTRhMGEwNVwiPm1heF9yZXNvbHV0aW9uPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTBcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMFwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19jYXBhYmlsaXR5X19mZWF0dXJlX19zXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZmVhdHVyZV9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYjMzZjI4YjliMTUyNWJiNTI0NmRmN2I3M2U4OWU2ZjlcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M6OmFsaWdubWVudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGFsaWdubWVudDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2ZlYXR1cmVfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9mZWF0dXJlX3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E1YTZmOGNlMWNkMTI0MTNkYjVlNzliOTVlYWY1YzgwZlwiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2Jhc2Vfczo6bGV2ZWw8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBsZXZlbDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3Jlc29sdXRpb25fX3NcIj5oYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYWI2NDMxMTdhNDJmNzNlZTk2NDFiZTVlMzk0YTBhMDVcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M6Om1heF9yZXNvbHV0aW9uPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4IHJlc29sdXRpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19jYXBhYmlsaXR5X19mZWF0dXJlX19zXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZmVhdHVyZV9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhODQwYjExNDc3MDAzMTYxZDkwZjEwYjFkYTRhNWZmODVcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M6OnByb2ZpbGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwcm9maWxlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZmVhdHVyZV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2ZlYXR1cmVfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWVhNDdlZjNlMDE0MGIyMDBkZjJlNTIwMzJhODRiYTBmXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfYmFzZV9zOjpzdHJlYW1fZm9ybWF0PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RyZWFtIGZvcm1hdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgaGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBjYXBhYmlsaXR5IGZvciBkZWNvZGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2Jhc2VfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWUwN2MxYzU2ZjUwOTk1NDNiZTY0YjUwYzRiNDMzNjNlXCI+YmFzZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhNTY0NTk3YmNlMTY0MTE5NGEyNTU0YTk2MmZiMTQ1YzRcIj5oYWxfY29kZWNfZm9ybWF0X2U8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWRkMzM1YzQ2ZGMwYTNhMDJhY2YzOTIwMGFkMzBlMjU5XCI+aW5fZm9ybWF0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQzMl90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNWU4ZDBkZjY2ZTliMDVmYmIxMTI0ZDJiOWI1MGEwZDlcIj5vdXRfZm9ybWF0X2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNDAyYjkxYjExYTI1ZTcxZWZjNWY3ZmVkZDllMGFhODFcIj5vdXRfZm9ybWF0PFwvYT4gWzRdPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTExXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTFcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fYmFzZV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2Jhc2VfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWUwN2MxYzU2ZjUwOTk1NDNiZTY0YjUwYzRiNDMzNjNlXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zOjpiYXNlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgYmFzZSBjYXBhYmlsaXR5PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWRkMzM1YzQ2ZGMwYTNhMDJhY2YzOTIwMGFkMzBlMjU5XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zOjppbl9mb3JtYXQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBpbnB1dCBmb3JtYXQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNDAyYjkxYjExYTI1ZTcxZWZjNWY3ZmVkZDllMGFhODFcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9kZWNvZGVyX3M6Om91dF9mb3JtYXQ8XC9hPls0XTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgZm9ybWF0IGFycmF5PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTVlOGQwZGY2NmU5YjA1ZmJiMTEyNGQyYjliNTBhMGQ5XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zOjpvdXRfZm9ybWF0X2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IGZvcm1hdCBjb3VudDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgaGFsX2NvZGVjX2NhcGFiaWxpdHlfZW5jb2Rlcl9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBjYXBhYmlsaXR5IGZvciBlbmNvZGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2Jhc2VfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWE4OWY5NzcxZGZmYzhkMzk2NTg3YWY5ODdlOTZlMGFlXCI+YmFzZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWE5ODM4Mzc2YzQzMTUyMDFhNGIwYzA2ZDUwZTIyNTQ3XCI+aW5fZm9ybWF0X2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNjQ4YzljODBjYzMwOWVjMWM5MWY1OTQ5ZjAzYzhmYjJcIj5pbl9mb3JtYXQ8XC9hPiBbNF08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMGJkYzA1ZmIzODE2Zjk5NWVmMTE5YzQyNTlhYWVlZjdcIj5vdXRfZm9ybWF0PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTJcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMlwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19jYXBhYmlsaXR5X19iYXNlX19zXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfYmFzZV9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYTg5Zjk3NzFkZmZjOGQzOTY1ODdhZjk4N2U5NmUwYWVcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9lbmNvZGVyX3M6OmJhc2U8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBiYXNlIGNhcGFiaWxpdHk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNjQ4YzljODBjYzMwOWVjMWM5MWY1OTQ5ZjAzYzhmYjJcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9lbmNvZGVyX3M6OmluX2Zvcm1hdDxcL2E+WzRdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGlucHV0IGZvcm1hdCBhcnJheTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50MzJfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FhOTgzODM3NmM0MzE1MjAxYTRiMGMwNmQ1MGUyMjU0N1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2VuY29kZXJfczo6aW5fZm9ybWF0X2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaW5wdXQgZm9ybWF0IGNvdW50PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTBiZGMwNWZiMzgxNmY5OTVlZjExOWM0MjU5YWFlZWY3XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZW5jb2Rlcl9zOjpvdXRfZm9ybWF0PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IGZvcm1hdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgaGFsX2NvZGVjX2NhcGFiaWxpdHlfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgY29kZWMgY2FwYWJpbGl0eS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FlODE4NTMxNjdlYjIyYTRiZmQ0Yjc3MTVhNjVjN2MyZFwiPmRlY29kZXJfY291bnQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19jYXBhYmlsaXR5X19kZWNvZGVyX19zXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FlMDEwOTc3MDE0YmJmOTk1ZDgwYzUzMWQxMzcxZWE2NVwiPmRlY29kZXI8XC9hPiBbOF08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQzMl90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMDc0ZjBlZjlmMjMyNTQ0YTFmNWNmYmE5MGJhNjdjZTZcIj5lbmNvZGVyX2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZW5jb2Rlcl9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2VuY29kZXJfczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMDlhYjRjZmY3OTZhNDczMGQ3OTllNTQ2MDYyMjRhZDVcIj5lbmNvZGVyPFwvYT4gWzhdPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEzXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTNcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZGVjb2Rlcl9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2RlY29kZXJfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWUwMTA5NzcwMTRiYmY5OTVkODBjNTMxZDEzNzFlYTY1XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfczo6ZGVjb2RlcjxcL2E+WzhdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNhcGFiaWxpdHkgZm9yIGRlY29kZXI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dWludDMyX3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZTgxODUzMTY3ZWIyMmE0YmZkNGI3NzE1YTY1YzdjMmRcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9zOjpkZWNvZGVyX2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgY291bnQgb2YgY2FwYWJpbGl0eSBmb3IgZGVjb2RlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2VuY29kZXJfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9lbmNvZGVyX3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EwOWFiNGNmZjc5NmE0NzMwZDc5OWU1NDYwNjIyNGFkNVwiPmhhbF9jb2RlY19jYXBhYmlsaXR5X3M6OmVuY29kZXI8XC9hPls4XTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXBhYmlsaXR5IGZvciBlbmNvZGVyPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTA3NGYwZWY5ZjIzMjU0NGExZjVjZmJhOTBiYTY3Y2U2XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfczo6ZW5jb2Rlcl9jb3VudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNvdW50IG9mIGNhcGFiaWxpdHkgZm9yIGVuY29kZXI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfYmFja2VuZF9jb2RlY19mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgY29kZWMgSEFMIGZ1bmN0aW9ucy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EzZjRmNDMzOTBiZjg0YWU2Y2UxZWIzZjNkODYzYTA1MVwiPmluaXQ8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2FmOWMxMTFhZjBhOWVkMWJhYWYyYmVlMTc3MTdiNGJjOFwiPmhhbF9jb2RlY190eXBlX2U8XC9hPiB0eXBlLCB2b2lkICoqY29kZWNfaGFuZGxlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FlMTc4MjFjN2UxYjRhNjViMzBhY2MzYjhmZTJiNjFkOVwiPmRlaW5pdDxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EyZjkyZDc3NzFmMjAwOGE4ZDhjYWI4MzllOTgzMTE3ZlwiPmNvbmZpZ3VyZTxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+IGluX2Zvcm1hdCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT4gb3V0X2Zvcm1hdCwgYm9vbCBpc19zZWN1cmUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWE2ZDllZmRkMTViODYxZjA3OGM2MTBiNmM0ZGI0ZDk3XCI+cmVsZWFzZTxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FhOThmZWVmYTRmYzI2YmZmM2Y4YmE0NDY5NzY5NDcyZFwiPnN0YXJ0PFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EwY2Q3Y2IzOWI3OGUyYTJjZWQzMGI5YWMxYjIxMzQ0MFwiPmhhbF9jb2RlY19tZXNzYWdlX2NiPFwvYT4gY2FsbGJhY2ssIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYTJjMjVhMzIxM2U3MWY5MTZiNWE1ZDdiZGVmMmQyNGNcIj5zdG9wPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYThmZTBiNmI5MDFhMmMyNDhiOGVlMTllNmQxNTY0ZGIzXCI+Zmx1c2g8XC9hPiApKHZvaWQgKmNvZGVjX2hhbmRsZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhOGJhYjFjYjc3MjMyZmM4OGNiNGZjZGQyYWQyOWU3NmJcIj5kZWNvZGU8XC9hPiApKHZvaWQgKmNvZGVjX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19idWZmZXJfX3NcIj5oYWxfY29kZWNfYnVmZmVyX3M8XC9hPiAqYnVmZmVyKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExYmQ0OTE0OWRmNTYwYWJhMWYzNGYxNjFhM2RjNTg2MlwiPmVuY29kZTxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2J1ZmZlcl9fc1wiPmhhbF9jb2RlY19idWZmZXJfczxcL2E+ICpidWZmZXIpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYThlOGEzNjM4OTY5MDQ0MjIzMDcyZjJhMTI1NWUxMTQ1XCI+cmVsZWFzZV9vdXRwdXRfYnVmZmVyPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIGludCBidWZmZXJfaW5kZXgpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWJlNWI4ZmM4OThjNzcyOTVlM2NhOTM0MGMxOTc3MDA2XCI+Z2V0X3N0YXRlPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EwOGVlZTc0NGViZDlmZmZmMGNmZDZkMmQ1ZDNkMjEyNVwiPmhhbF9jb2RlY19zdGF0ZV9lPFwvYT4gKnN0YXRlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5ZGM2ZTUxOTY5MzI1YmRjNTI5OGRkMjVlNmRjNzJlNVwiPnNldF9jb21tYW5kPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E4NDhjNWU5MDJmZmEzODI1NDM4YjhjMzQ1ZDc4OTkwYlwiPmhhbF9jb2RlY19jb21tYW5kX2U8XC9hPiBjb21tYW5kLCB2b2lkICp2YWx1ZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZjE4ODA0NzUzNGU1NDQ0MTFjMjExZGQ5Yzk2M2FkNzFcIj5nZXRfY29tbWFuZDxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhODQ4YzVlOTAyZmZhMzgyNTQzOGI4YzM0NWQ3ODk5MGJcIj5oYWxfY29kZWNfY29tbWFuZF9lPFwvYT4gY29tbWFuZCwgdm9pZCAqKnZhbHVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5N2M1YTRiYjcxMWRkMDQ1MjJiZjUxODljMGQ2ZWQyNlwiPnNldF9iYXRjaF9jb21tYW5kPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fYmF0Y2hfX2NvbW1hbmRfX2NvbnRyb2xfX3NcIj5oYWxfY29kZWNfYmF0Y2hfY29tbWFuZF9jb250cm9sX3M8XC9hPiAqYmF0Y2hfY29tbWFuZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTg0OGM1ZTkwMmZmYTM4MjU0MzhiOGMzNDVkNzg5OTBiXCI+aGFsX2NvZGVjX2NvbW1hbmRfZTxcL2E+ICplcnJvcl9jb21tYW5kKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E4YThkNmRmNDRlMGJjZTA4MjYzYjc5OGNkNzIzMThlMFwiPmdldF9jYXBhYmlsaXR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9zPFwvYT4gKmNhcGFiaWxpdHkpPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE0XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTRcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTJmOTJkNzc3MWYyMDA4YThkOGNhYjgzOWU5ODMxMTdmXCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpjb25maWd1cmU8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+IGluX2Zvcm1hdCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT4gb3V0X2Zvcm1hdCwgYm9vbCBpc19zZWN1cmUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q29uZmlndXJlIGNvZGVjPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYThiYWIxY2I3NzIzMmZjODhjYjRmY2RkMmFkMjllNzZiXCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpkZWNvZGU8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2J1ZmZlcl9fc1wiPmhhbF9jb2RlY19idWZmZXJfczxcL2E+ICpidWZmZXIpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RGVjb2RlIGRhdGE8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZTE3ODIxYzdlMWI0YTY1YjMwYWNjM2I4ZmUyYjYxZDlcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OmRlaW5pdDxcL2E+KSh2b2lkICpjb2RlY19oYW5kbGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RGVpbml0aWFsaXplIEhBTCBiYWNrZW5kIGhhbmRsZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExYmQ0OTE0OWRmNTYwYWJhMWYzNGYxNjFhM2RjNTg2MlwiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczo6ZW5jb2RlPFwvYT4pKHZvaWQgKmNvZGVjX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19idWZmZXJfX3NcIj5oYWxfY29kZWNfYnVmZmVyX3M8XC9hPiAqYnVmZmVyKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkVuY29kZSBkYXRhPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYThmZTBiNmI5MDFhMmMyNDhiOGVlMTllNmQxNTY0ZGIzXCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpmbHVzaDxcL2E+KSh2b2lkICpjb2RlY19oYW5kbGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Rmx1c2ggY29kZWM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhOGE4ZDZkZjQ0ZTBiY2UwODI2M2I3OThjZDcyMzE4ZTBcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OmdldF9jYXBhYmlsaXR5PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X3M8XC9hPiAqY2FwYWJpbGl0eSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgY2FwYWJpbGl0eSBvZiBjb2RlYyAoU2luY2UgMS4yKTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FmMTg4MDQ3NTM0ZTU0NDQxMWMyMTFkZDljOTYzYWQ3MVwiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczo6Z2V0X2NvbW1hbmQ8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhODQ4YzVlOTAyZmZhMzgyNTQzOGI4YzM0NWQ3ODk5MGJcIj5oYWxfY29kZWNfY29tbWFuZF9lPFwvYT4gY29tbWFuZCwgdm9pZCAqKnZhbHVlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCBjb21tYW5kIGZvciB2YXJpb3VzIHNldHRpbmdzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWJlNWI4ZmM4OThjNzcyOTVlM2NhOTM0MGMxOTc3MDA2XCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpnZXRfc3RhdGU8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhMDhlZWU3NDRlYmQ5ZmZmZjBjZmQ2ZDJkNWQzZDIxMjVcIj5oYWxfY29kZWNfc3RhdGVfZTxcL2E+ICpzdGF0ZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgc3RhdGUgb2YgY29kZWM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhM2Y0ZjQzMzkwYmY4NGFlNmNlMWViM2YzZDg2M2EwNTFcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OmluaXQ8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWY5YzExMWFmMGE5ZWQxYmFhZjJiZWUxNzcxN2I0YmM4XCI+aGFsX2NvZGVjX3R5cGVfZTxcL2E+IHR5cGUsIHZvaWQgKipjb2RlY19oYW5kbGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+SW5pdGlhbGl6ZSBIQUwgYmFja2VuZCBoYW5kbGU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYTZkOWVmZGQxNWI4NjFmMDc4YzYxMGI2YzRkYjRkOTdcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OnJlbGVhc2U8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlJlbGVhc2UgY29kZWM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhOGU4YTM2Mzg5NjkwNDQyMjMwNzJmMmExMjU1ZTExNDVcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OnJlbGVhc2Vfb3V0cHV0X2J1ZmZlcjxcL2E+KSh2b2lkICpjb2RlY19oYW5kbGUsIGludCBidWZmZXJfaW5kZXgpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+UmVsZWFzZSBvdXRwdXQgYnVmZmVyPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTk3YzVhNGJiNzExZGQwNDUyMmJmNTE4OWMwZDZlZDI2XCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpzZXRfYmF0Y2hfY29tbWFuZDxcL2E+KSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fYmF0Y2hfX2NvbW1hbmRfX2NvbnRyb2xfX3NcIj5oYWxfY29kZWNfYmF0Y2hfY29tbWFuZF9jb250cm9sX3M8XC9hPiAqYmF0Y2hfY29tbWFuZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTg0OGM1ZTkwMmZmYTM4MjU0MzhiOGMzNDVkNzg5OTBiXCI+aGFsX2NvZGVjX2NvbW1hbmRfZTxcL2E+ICplcnJvcl9jb21tYW5kKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCBiYXRjaCBjb21tYW5kIGZvciBtdWx0aXBsZSBzZXR0aW5nczxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5ZGM2ZTUxOTY5MzI1YmRjNTI5OGRkMjVlNmRjNzJlNVwiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczo6c2V0X2NvbW1hbmQ8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhODQ4YzVlOTAyZmZhMzgyNTQzOGI4YzM0NWQ3ODk5MGJcIj5oYWxfY29kZWNfY29tbWFuZF9lPFwvYT4gY29tbWFuZCwgdm9pZCAqdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IGNvbW1hbmQgZm9yIHZhcmlvdXMgc2V0dGluZ3M8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYTk4ZmVlZmE0ZmMyNmJmZjNmOGJhNDQ2OTc2OTQ3MmRcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OnN0YXJ0PFwvYT4pKHZvaWQgKmNvZGVjX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTBjZDdjYjM5Yjc4ZTJhMmNlZDMwYjlhYzFiMjEzNDQwXCI+aGFsX2NvZGVjX21lc3NhZ2VfY2I8XC9hPiBjYWxsYmFjaywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlN0YXJ0IGNvZGVjPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWEyYzI1YTMyMTNlNzFmOTE2YjVhNWQ3YmRlZjJkMjRjXCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpzdG9wPFwvYT4pKHZvaWQgKmNvZGVjX2hhbmRsZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TdG9wIGNvZGVjPFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkRlZmluZSBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E0MjlmYzY5ZWM0MDRiMjVlZTNlM2Q4OTdiNTJmYjJmNVwiPkhBTF9DT0RFQ19CVUZGRVJfUExBTkVfTUFYPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gbnVtYmVyIG9mIHBsYW5lcyBpbiBidWZmZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPiNkZWZpbmUgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTQwOTU4MjI5YzkxZmZkNDY4NTY4MjViMjRhZTE1NjNhXCI+SEFMX0NPREVDX0NBUEFCSUxJVFlfRkVBVFVSRV9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDE2PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gbnVtYmVyIG9mIGNvZGVjIGNhcGFiaWxpdHkgZmVhdHVyZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+I2RlZmluZSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhM2E2MDY2NjdhZTFiOGY2Y2U3ZDg0OTcxYjJjYjFmOTVcIj5IQUxfQ09ERUNfQ0FQQUJJTElUWV9GT1JNQVRfTUFYPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gbnVtYmVyIG9mIGNvZGVjIGNhcGFiaWxpdHkgZm9ybWF0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EyYzNmNjEzMTViMjlkMTQxYTA1NDQ5MzMwMjc2NTI5MFwiPkhBTF9DT0RFQ19DQVBBQklMSVRZX01BWDxcL2E+XHUwMGEwXHUwMGEwXHUwMGEwODxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2RlYyBjYXBhYmlsaXR5LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2FhOWZmNmMyZjFmOTU4YzU5OTk5MDgwZjIyNmYzY2IyZlwiPkhBTF9DT0RFQ19GRUFUVVJFX0xFTkdUSDxcL2E+XHUwMGEwXHUwMGEwXHUwMGEwMTY8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbGVuZ3RoIG9mIGNvZGVjIGNhcGFiaWxpdHkgZmVhdHVyZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjI8XC9wPlxuPGhyIFwvPlxuPGgyIGlkPVwiY29udGVudC10eXBlZGVmLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtdHlwZWRlZi1kb2N1bWVudGF0aW9uXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5UeXBlZGVmIERvY3VtZW50YXRpb248XC9oMj5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0X19oYWxfX2JhY2tlbmRfX2NvZGVjX19mdW5jc1wiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2FjZGQ1NzIyODQ5ZjAwYzNmNmNiN2JlOWI3OWE0NTM4MVwiPmhhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIGNvZGVjIEhBTCBmdW5jdGlvbnMuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgaW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTBjZDdjYjM5Yjc4ZTJhMmNlZDMwYjlhYzFiMjEzNDQwXCI+aGFsX2NvZGVjX21lc3NhZ2VfY2I8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19tZXNzYWdlX19zXCI+aGFsX2NvZGVjX21lc3NhZ2VfczxcL2E+ICptZXNzYWdlLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q2FsbGJhY2sgZnVuY3Rpb24gZm9yIG5vdGlmaWNhdGlvbiBmcm9tIGNvZGVjIEhBTC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBtZXNzYWdlIHwgVGhlIG1lc3NhZ2UgZnJvbSBjb2RlYyBIQUwgfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YSBmb3IgY2FsbGJhY2sgfDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICBoYWxfY29kZWNfYWRkX21lc3NhZ2VfY2FsbGJhY2soKVxuOiAgIGhhbF9jb2RlY19yZW1vdmVfbWVzc2FnZV9jYWxsYmFjaygpPFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtZW51bWVyYXRpb24tdHlwZS1kb2N1bWVudGF0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LWVudW1lcmF0aW9uLXR5cGUtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RW51bWVyYXRpb24gVHlwZSBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E5ZGQwODRhZDFhMTM4NDY5OTM2MmViOWVjMzQyODcwZVwiPmhhbF9jb2RlY19idWZmZXJfZmxhZ19lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIGJ1ZmZlciBmbGFnLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19OT05FPFwvZW0+IHwgTm9uZSBmbGFnIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19DT0RFQ0NPTkZJRzxcL2VtPiB8IENvZGVjIGNvbmZpZyBmbGFnIHxcbnwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19TWU5DRlJBTUU8XC9lbT4gfCBTeW5jIGZyYW1lIGZsYWcgfFxufCA8ZW0+SEFMX0NPREVDX0JVRkZFUl9GTEFHX0VPUzxcL2VtPiB8IEVPUyhFbmQgb2Ygc3RyZWFtKSBmbGFnIHxcbnwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19ST1RBVEVEPFwvZW0+IHwgUm90YXRlZCBmbGFnIHxcbnwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19TRUNVUkU8XC9lbT4gfCBTZWN1cmUgZmxhZyB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTg0OGM1ZTkwMmZmYTM4MjU0MzhiOGMzNDVkNzg5OTBiXCI+aGFsX2NvZGVjX2NvbW1hbmRfZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RW51bWVyYXRpb24gZm9yIHRoZSBjb2RlYyBIQUwgY29tbWFuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfQ09ERUNfQ09NTUFORF9CQVNFPFwvZW0+IHwgQmFzZSBvZiBjb21tYW5kIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9DT0RFQ19DT01NQU5EX0JJVFJBVEU8XC9lbT4gfCBCaXRyYXRlIHxcbnwgPGVtPkhBTF9DT0RFQ19DT01NQU5EX1JFUVVFU1RfQ09ERUNEQVRBPFwvZW0+IHwgUmVxdWVzdCBjb2RlYyBkYXRhIHxcbnwgPGVtPkhBTF9DT0RFQ19DT01NQU5EX1JFUVVFU1RfU1lOQ0ZSQU1FPFwvZW0+IHwgUmVxdWVzdCBzeW5jZnJhbWUgfFxufCA8ZW0+SEFMX0NPREVDX0NPTU1BTkRfQ1VTVE9NPFwvZW0+IHwgQ3VzdG9tIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhZjVkZmM4N2ViYWM2N2VkZmI4YzRlMWVlMjViNDM5OWZcIj5oYWxfY29kZWNfZXJyb3JfZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RW51bWVyYXRpb24gZm9yIHRoZSBjb2RlYyBIQUwgZXJyb3IuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX0NPREVDX0VSUk9SX05PTkU8XC9lbT4gfCBFcnJvciBub25lIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9OT1RfU1VQUE9SVEVEPFwvZW0+IHwgTm90IHN1cHBvcnRlZCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfUEVSTUlTU0lPTl9ERU5JRUQ8XC9lbT4gfCBQZXJtaXNzaW9uIGRlbmllZCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfSU5WQUxJRF9QQVJBTUVURVI8XC9lbT4gfCBJbnZhbGlkIHBhcmFtZXRlciB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfSU5WQUxJRF9TVEFURTxcL2VtPiB8IEludmFsaWQgc3RhdGUgfFxufCA8ZW0+SEFMX0NPREVDX0VSUk9SX09VVF9PRl9NRU1PUlk8XC9lbT4gfCBPdXQgb2YgbWVtb3J5IHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9ERVZJQ0VfT1BFTjxcL2VtPiB8IERldmljZSBvcGVuIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9ERVZJQ0VfTk9UX0ZPVU5EPFwvZW0+IHwgRGV2aWNlIG5vdCBmb3VuZCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfREVWSUNFX1VOQVZBSUxBQkxFPFwvZW0+IHwgRGV2aWNlIHVuYXZhaWxhYmxlIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9ERVZJQ0VfUkVBRDxcL2VtPiB8IERldmljZSByZWFkIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9ERVZJQ0VfV1JJVEU8XC9lbT4gfCBEZXZpY2Ugd3JpdGUgfFxufCA8ZW0+SEFMX0NPREVDX0VSUk9SX0RFVklDRV9CVVNZPFwvZW0+IHwgRGV2aWNlIGJ1c3kgfFxufCA8ZW0+SEFMX0NPREVDX0VSUk9SX0RFVklDRV9USU1FX09VVDxcL2VtPiB8IERldmljZSB0aW1lIG91dCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfSU5URVJOQUw8XC9lbT4gfCBJbnRlcm5hbCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfTk9UX0lNUExFTUVOVEVEPFwvZW0+IHwgTm90IGltcGxlbWVudGVkIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9VTktOT1dOPFwvZW0+IHwgVW5rbm93biB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIGNvZGVjIEhBTCBmb3JtYXQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9IMjY0PFwvZW0+IHwgRW5jb2RlZCAtIEguMjY0IHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfSDI2NTxcL2VtPiB8IEVuY29kZWQgLSBILjI2NSB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX0gyNjY8XC9lbT4gfCBFbmNvZGVkIC0gSC4yNjYgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9WUDg8XC9lbT4gfCBFbmNvZGVkIC0gVlA4IHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfVlA5PFwvZW0+IHwgRW5jb2RlZCAtIFZQOSB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX0FWMTxcL2VtPiB8IEVuY29kZWQgLSBBVjEgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9NSlBFRzxcL2VtPiB8IEVuY29kZWQgLSBNb3Rpb25KUEVHIChTaW5jZSAxLjEpIHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfTlYxMjxcL2VtPiB8IFJBVyAtIE5WMTIgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9OVjEyVDxcL2VtPiB8IFJBVyAtIE5WMTIgVGlsZWQgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9OVjIxPFwvZW0+IHwgUkFXIC0gTlYyMSB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX0k0MjA8XC9lbT4gfCBSQVcgLSBJNDIwKFlVMTIpIHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfWVYxMjxcL2VtPiB8IFJBVyAtIFlWMTIgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9ZVVlWPFwvZW0+IHwgUkFXIC0gWVVZViB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX1VZVlk8XC9lbT4gfCBSQVcgLSBVWVZZIHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfQkdSQTg4ODg8XC9lbT4gfCBSQVcgLSBCR1JBODg4OCB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX0FSR0I4ODg4PFwvZW0+IHwgUkFXIC0gQVJHQjg4ODggfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2FjM2EwZjNhZTIyODZjZjdjNDg3MDg4NjZiNDA3MmYxYlwiPmhhbF9jb2RlY19mb3JtYXRfdHlwZV9lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgY29kZWMgSEFMIGZvcm1hdCB0eXBlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfVFlQRV9FTkNPREVEPFwvZW0+IHwgRW5jb2RlZCBmb3JtYXQgdHlwZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX1RZUEVfUkFXPFwvZW0+IHwgUkFXIGZvcm1hdCB0eXBlIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhYmE5YWY4N2YyNmIyZTM0NDQ1NTllY2E2MjljZjViZDZcIj5oYWxfY29kZWNfbWVzc2FnZV90eXBlX2U8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkVudW1lcmF0aW9uIGZvciB0aGUgY29kZWMgSEFMIG1lc3NhZ2UgdHlwZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfQ09ERUNfTUVTU0FHRV9UWVBFX0lOUFVUX0JVRkZFUl9VU0VEPFwvZW0+IHwgSW5wdXQgYnVmZmVyIGlzIHVzZWQgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX0NPREVDX01FU1NBR0VfVFlQRV9PVVRQVVRfQlVGRkVSPFwvZW0+IHwgT3V0cHV0IGJ1ZmZlciBpcyBkZWxpdmVyZWQgfFxufCA8ZW0+SEFMX0NPREVDX01FU1NBR0VfVFlQRV9SRVNPTFVUSU9OX0NIQU5HRUQ8XC9lbT4gfCBSZXNvbHV0aW9uIGlzIGNoYW5nZWQgfFxufCA8ZW0+SEFMX0NPREVDX01FU1NBR0VfVFlQRV9JTlZBTElEX0lOUFVUX0JVRkZFUjxcL2VtPiB8IEludmFsaWQgaW5wdXQgYnVmZmVyIChTaW5jZSAxLjMpIHxcbnwgPGVtPkhBTF9DT0RFQ19NRVNTQUdFX1RZUEVfRVJST1I8XC9lbT4gfCBFcnJvciBpcyBvY2N1cnJlZCB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWU3MjIxN2E0MjEwZDA5N2FiZjQxY2RlNTUwZWFkMDUxXCI+aGFsX2NvZGVjX3JvdGF0aW9uX2U8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkVudW1lcmF0aW9uIGZvciB0aGUgYnVmZmVyIHJvdGF0aW9uLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9DT0RFQ19ST1RBVElPTl9OT05FPFwvZW0+IHwgTm9uZSByb3RhdGlvbiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfQ09ERUNfUk9UQVRJT05fOTA8XC9lbT4gfCA5MCBkZWdyZWUgcm90YXRpb24gfFxufCA8ZW0+SEFMX0NPREVDX1JPVEFUSU9OXzE4MDxcL2VtPiB8IDE4MCBkZWdyZWUgcm90YXRpb24gfFxufCA8ZW0+SEFMX0NPREVDX1JPVEFUSU9OXzI3MDxcL2VtPiB8IDI3MCBkZWdyZWUgcm90YXRpb24gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EwOGVlZTc0NGViZDlmZmZmMGNmZDZkMmQ1ZDNkMjEyNVwiPmhhbF9jb2RlY19zdGF0ZV9lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIGNvZGVjIEhBTCBzdGF0ZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfQ09ERUNfU1RBVEVfSU5JVElBTElaRUQ8XC9lbT4gfCBJbml0aWFsaXplZCBzdGF0ZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfQ09ERUNfU1RBVEVfQ09ORklHVVJFRDxcL2VtPiB8IENvbmZpZ3VyZWQgc3RhdGUgfFxufCA8ZW0+SEFMX0NPREVDX1NUQVRFX1NUQVJURUQ8XC9lbT4gfCBTdGFydGVkIHN0YXRlIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhZjljMTExYWYwYTllZDFiYWFmMmJlZTE3NzE3YjRiYzhcIj5oYWxfY29kZWNfdHlwZV9lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIGNvZGVjIEhBTCB0eXBlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9DT0RFQ19UWVBFX0RFQ09ERVI8XC9lbT4gfCBEZWNvZGVyIHR5cGUgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX0NPREVDX1RZUEVfRU5DT0RFUjxcL2VtPiB8IEVuY29kZXIgdHlwZSB8PFwvcD5cbjxociBcLz5cbjxwPkV4Y2VwdCBhcyBub3RlZCwgdGhpcyBjb250ZW50IC0gZXhjbHVkaW5nIHRoZSBDb2RlIEV4YW1wbGVzIC0gaXMgbGljZW5zZWQgdW5kZXIgPGEgaHJlZj1cImh0dHA6XC9cL2NyZWF0aXZlY29tbW9ucy5vcmdcL2xpY2Vuc2VzXC9ieVwvMy4wXC9sZWdhbGNvZGVcIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMDxcL2E+XG5hbmQgYWxsIG9mIHRoZSBDb2RlIEV4YW1wbGVzIGNvbnRhaW5lZCBoZXJlaW4gYXJlIGxpY2Vuc2VkIHVuZGVyIDxhIGhyZWY9XCJodHRwczpcL1wvd3d3LnRpemVuLm9yZ1wvYnNkLTMtY2xhdXNlLWxpY2Vuc2VcIj5CU0QtMy1DbGF1c2U8XC9hPi48YnIgXC8+XG5Gb3IgZGV0YWlscywgc2VlIHRoZSA8YSBocmVmPVwiaHR0cHM6XC9cL3d3dy50aXplbi5vcmdcL2NvbnRlbnQtbGljZW5zZVwiPkNvbnRlbnQgTGljZW5zZTxcL2E+LjxcL3A+XG4iLCJ0YWJsZV9vZl9jb250ZW50IjoiPHVsIGNsYXNzPVwidGFibGUtb2YtY29udGVudHNcIj5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtcmVxdWlyZWQtaGVhZGVyXCI+UmVxdWlyZWQgSGVhZGVyPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtb3ZlcnZpZXdcIj5PdmVydmlldzxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXN0YXRlLWRpYWdyYW1cIj5TdGF0ZSBEaWFncmFtPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtc3RhdGUtdHJhbnNpdGlvbnNcIj5TdGF0ZSBUcmFuc2l0aW9uczxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWRhdGEtc3RydWN0dXJlLWRvY3VtZW50YXRpb25cIj5EYXRhIFN0cnVjdHVyZSBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvblwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTFcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tM1wiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTRcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi01XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNlwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTdcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi04XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tOVwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEwXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTFcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMlwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEzXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTRcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIj5EZWZpbmUgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXR5cGVkZWYtZG9jdW1lbnRhdGlvblwiPlR5cGVkZWYgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWVudW1lcmF0aW9uLXR5cGUtZG9jdW1lbnRhdGlvblwiPkVudW1lcmF0aW9uIFR5cGUgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48XC91bD5cbiIsInRpdGxlIjoiVGl6ZW4gSEFMIEFQSTogQ29kZWMiLCJyYXciOm51bGx9LHsiY2xhc3MiOiJBcHBcXFNlcnZpY2VzXFxEb2N1bWVudGF0aW9uXFxEYXRhXFxSZW5kZXJlZE1hcmtkb3duIiwicyI6IndyYmwifV19LHsicyI6ImFyciJ9XX0sIm1lbW8iOnsiaWQiOiI2dzFBWHQ5OThLejFWbGE0VEhQNCIsIm5hbWUiOiJfX21vdW50UGFyYW1zQ29udGFpbmVyIiwicGF0aCI6ImRvY3NcL3BsYXRmb3JtXC9oYWxcL2FwaVwvMS4wLjBcL2dyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRSIsIm1ldGhvZCI6IkdFVCIsInJlbGVhc2UiOiJhLWEtYSJ9LCJjaGVja3N1bSI6ImQ1NjEwZTEyOTQ3NjU3Y2FjOWE4MDlkMjUxYzA2NjAxOGNmOTFkZWE3YjRiZGZhMTgzNGQzNDgzY2RiMWNiZDgifQ==')" >
Content License<\/a>.<\/p>\n","table_of_content":"<ul class=\"table-of-contents\">\n<li><a href=https://samsungtizenos.com/"#content-required-header\">Required Header<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-overview\">Overview<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-state-diagram\">State Diagram<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-state-transitions\">State Transitions<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-data-structure-documentation\">Data Structure Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-1\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-2\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-3\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-4\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-5\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-6\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-7\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-8\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-9\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-10\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-11\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-12\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-13\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-14\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-define-documentation\">Define Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-typedef-documentation\">Typedef Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-enumeration-type-documentation\">Enumeration Type Documentation<\/a><\/li>\n<\/ul>\n","title":"Tizen HAL API: Codec","raw":null},{"class":"App\\Services\\Documentation\\Data\\RenderedMarkdown","s":"wrbl"}]},"memo":{"id":"dibSnKcugWRpmMiN4KUm","name":"documentation::article","path":"docs\/platform\/hal\/api\/1.0.0\/group__HALAPI__HAL__CODEC__MODULE","method":"GET","release":"a-a-a","children":[],"scripts":[],"assets":[],"lazyLoaded":false,"lazyIsolated":true,"errors":[],"locale":"en","islands":[]},"checksum":"d212eaaf1a049524e07d7844d7b93872b49ac619057b69ff409007cb0b5be1cd"}" wire:effects="[]" wire:id="dibSnKcugWRpmMiN4KUm" wire:name="documentation::article" x-init="$wire.__lazyLoad('eyJkYXRhIjp7ImZvck1vdW50IjpbeyJtYXJrZG93biI6W3siYm9keSI6IjxoMSBpZD1cImNvbnRlbnQtdGl6ZW4taGFsLWFwaS1jb2RlY1wiPjxhIGhyZWY9XCIjY29udGVudC10aXplbi1oYWwtYXBpLWNvZGVjXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5UaXplbiBIQUwgQVBJOiBDb2RlYzxcL2gxPjxkaXYgZGF0YS1rbm93bGVkZ2UtYmFzZS1tZXRhZGF0YT48XC9kaXY+XG48aHIgXC8+XG48cD5UaGUgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZFwiPkNvZGVjPFwvYT4gcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBjb2RlYyBkZXZpY2VzLjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXJlcXVpcmVkLWhlYWRlclwiPjxhIGhyZWY9XCIjY29udGVudC1yZXF1aXJlZC1oZWFkZXJcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlJlcXVpcmVkIEhlYWRlcjxcL2gyPlxuPHA+I2luY2x1ZGUgJmx0O2hhbC1jb2RlYy5oJmd0OzxcL3A+XG48aDIgaWQ9XCJjb250ZW50LW92ZXJ2aWV3XCI+PGEgaHJlZj1cIiNjb250ZW50LW92ZXJ2aWV3XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5PdmVydmlldzxcL2gyPlxuPHA+VGhlIGNvZGVjIGRldmljZXMgaGF2ZSB2YXJpb3VzIHNwZWNpZmljYXRpb25zIGFuZCBiYWNrZW5kIGludGVyZmFjZXMsIHNvIGl0J3MgaGFyZCB0byBjb250cm9sIHRoZW0gdXNpbmcgc2luZ2xlIGNvZGUuIFRoZSBjb2RlYyBIQUwgcHJvdmlkZXMgY29tbW9uIGFic3RyYWN0aW9uIGludGVyZmFjZXMgdG8gY29udHJvbCBjb2RlYyBkZXZpY2VzIHdoaWNoIGFyZSBkaWZmZXJlbnQuPFwvcD5cbjxwPktleSBmdW5jdGlvbmFsaXRpZXMgaW5jbHVkZTo8XC9wPlxuPHVsPlxuPGxpPkNvbmZpZ3VyZSBhbmQgcmVsZWFzZSBjb2RlYyBkZXZpY2VzPFwvbGk+XG48bGk+RGVjb2RlIG9yIGVuY29kZSBpbWFnZTxcL2xpPlxuPFwvdWw+XG48aDMgaWQ9XCJjb250ZW50LXN0YXRlLWRpYWdyYW1cIj48YSBocmVmPVwiI2NvbnRlbnQtc3RhdGUtZGlhZ3JhbVwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+U3RhdGUgRGlhZ3JhbTxcL2gzPlxuPHA+PGltZyBzcmM9XCJtZWRpYVwvaGFsX2NvZGVjX3N0YXRlX2RpYWdyYW0ucG5nXCIgYWx0PVwiaGFsX2NvZGVjX3N0YXRlX2RpYWdyYW0ucG5nXCIgXC8+PFwvcD5cbjxoMyBpZD1cImNvbnRlbnQtc3RhdGUtdHJhbnNpdGlvbnNcIj48YSBocmVmPVwiI2NvbnRlbnQtc3RhdGUtdHJhbnNpdGlvbnNcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlN0YXRlIFRyYW5zaXRpb25zPFwvaDM+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48c3Ryb25nPkZVTkNUSU9OPFwvc3Ryb25nPjxcL3RoPlxuPHRoPjxzdHJvbmc+UFJFLVNUQVRFPFwvc3Ryb25nPjxcL3RoPlxuPHRoPjxzdHJvbmc+UE9TVC1TVEFURTxcL3N0cm9uZz48XC90aD5cbjx0aD48c3Ryb25nPlNZTkMgVFlQRTxcL3N0cm9uZz48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+aGFsX2NvZGVjX2luaXQoKTxcL3RkPlxuPHRkPk5cL0E8XC90ZD5cbjx0ZD5JTklUSUFMSVpFRDxcL3RkPlxuPHRkPlNZTkM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmhhbF9jb2RlY19kZWluaXQoKTxcL3RkPlxuPHRkPklOSVRJQUxJWkVEPFwvdGQ+XG48dGQ+TlwvQTxcL3RkPlxuPHRkPlNZTkM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmhhbF9jb2RlY19jb25maWd1cmUoKTxcL3RkPlxuPHRkPklOSVRJQUxJWkVEPFwvdGQ+XG48dGQ+Q09ORklHVVJFRDxcL3RkPlxuPHRkPlNZTkM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmhhbF9jb2RlY19yZWxlYXNlKCk8XC90ZD5cbjx0ZD5DT05GSUdVUkVEPFwvdGQ+XG48dGQ+SU5JVElBTElaRUQ8XC90ZD5cbjx0ZD5TWU5DPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5oYWxfY29kZWNfc3RhcnQoKTxcL3RkPlxuPHRkPkNPTkZJR1VSRUQ8XC90ZD5cbjx0ZD5TVEFSVEVEPFwvdGQ+XG48dGQ+U1lOQzxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aGFsX2NvZGVjX3N0b3AoKTxcL3RkPlxuPHRkPlNUQVJURUQ8XC90ZD5cbjx0ZD5DT05GSUdVUkVEPFwvdGQ+XG48dGQ+U1lOQzxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDb2RlYyBmZWF0dXJlcyBhbmQgdGhlIG1hY3Jvcywgc2VlIEhBTCBDb2RlYyBwcm9ncmFtbWluZyBndWlkZXMgYW5kIHR1dG9yaWFscy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+VHlwZWRlZnM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dHlwZWRlZiBpbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EwY2Q3Y2IzOWI3OGUyYTJjZWQzMGI5YWMxYjIxMzQ0MFwiPmhhbF9jb2RlY19tZXNzYWdlX2NiPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX21lc3NhZ2VfX3NcIj5oYWxfY29kZWNfbWVzc2FnZV9zPFwvYT4gKm1lc3NhZ2UsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPkNhbGxiYWNrIGZ1bmN0aW9uIGZvciBub3RpZmljYXRpb24gZnJvbSBjb2RlYyBIQUwuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0X19oYWxfX2JhY2tlbmRfX2NvZGVjX19mdW5jc1wiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWNkZDU3MjI4NDlmMDBjM2Y2Y2I3YmU5Yjc5YTQ1MzgxXCI+aGFsX2JhY2tlbmRfY29kZWNfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBIQUwgZnVuY3Rpb25zLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+RGVmaW5lczxcL3RkPlxuPHRkPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+I2RlZmluZTxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E0MjlmYzY5ZWM0MDRiMjVlZTNlM2Q4OTdiNTJmYjJmNVwiPkhBTF9DT0RFQ19CVUZGRVJfUExBTkVfTUFYPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA0PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgbWF4aW11bSBudW1iZXIgb2YgcGxhbmVzIGluIGJ1ZmZlci48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPiNkZWZpbmU8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhMmMzZjYxMzE1YjI5ZDE0MWEwNTQ0OTMzMDI3NjUyOTBcIj5IQUxfQ09ERUNfQ0FQQUJJTElUWV9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDg8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2RlYyBjYXBhYmlsaXR5LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+I2RlZmluZTxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EzYTYwNjY2N2FlMWI4ZjZjZTdkODQ5NzFiMmNiMWY5NVwiPkhBTF9DT0RFQ19DQVBBQklMSVRZX0ZPUk1BVF9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDQ8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2RlYyBjYXBhYmlsaXR5IGZvcm1hdC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPiNkZWZpbmU8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhNDA5NTgyMjljOTFmZmQ0Njg1NjgyNWIyNGFlMTU2M2FcIj5IQUxfQ09ERUNfQ0FQQUJJTElUWV9GRUFUVVJFX01BWDxcL2E+XHUwMGEwXHUwMGEwXHUwMGEwMTY8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2RlYyBjYXBhYmlsaXR5IGZlYXR1cmUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD4jZGVmaW5lPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWE5ZmY2YzJmMWY5NThjNTk5OTkwODBmMjI2ZjNjYjJmXCI+SEFMX0NPREVDX0ZFQVRVUkVfTEVOR1RIPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTAxNjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGxlbmd0aCBvZiBjb2RlYyBjYXBhYmlsaXR5IGZlYXR1cmUuPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGgyIGlkPVwiY29udGVudC1kYXRhLXN0cnVjdHVyZS1kb2N1bWVudGF0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LWRhdGEtc3RydWN0dXJlLWRvY3VtZW50YXRpb25cIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkRhdGEgU3RydWN0dXJlIERvY3VtZW50YXRpb248XC9oMj5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSByZXNvbHV0aW9uLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExNjI1YTY1MTFlZTI1Y2YyZjFiMTBiZWZkYzM1ZTEyMFwiPndpZHRoPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTVjMGZjMTAyNGY5NDk5NmM3NjgwY2UyYjE4NTE5MzBkXCI+aGVpZ2h0PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTVjMGZjMTAyNGY5NDk5NmM3NjgwY2UyYjE4NTE5MzBkXCI+aGFsX2NvZGVjX3Jlc29sdXRpb25fczo6aGVpZ2h0PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaGVpZ2h0IG9mIHJlc29sdXRpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTE2MjVhNjUxMWVlMjVjZjJmMWIxMGJlZmRjMzVlMTIwXCI+aGFsX2NvZGVjX3Jlc29sdXRpb25fczo6d2lkdGg8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB3aWR0aCBvZiByZXNvbHV0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfcGxhbmVfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgYnVmZmVyIHBsYW5lLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD51bnNpZ25lZCBjaGFyICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EwNDczNGNkMjhiYjdkNDVmOWQyZjkxNTFmZGNiODFmMVwiPmRhdGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5NDY5ZDI5M2U5MDc2OGNiOWUyZDhlMDBjOGI4MzI1MVwiPnN0cmlkZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTU0NDA2N2M0YzQzNThlYWE4NzNmYTI5OGYwMjUxYTY2XCI+c2l6ZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTE2OTNhYzBlNWM0MjNhNjQ2OWRjYTQ0MTYwYjNiODViXCI+Ynl0ZXN1c2VkPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTFcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTE2OTNhYzBlNWM0MjNhNjQ2OWRjYTQ0MTYwYjNiODViXCI+aGFsX2NvZGVjX3BsYW5lX3M6OmJ5dGVzdXNlZDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGFjdHVhbCBkYXRhIHNpemUgb2YgcGxhbmU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgY2hhciogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMDQ3MzRjZDI4YmI3ZDQ1ZjlkMmY5MTUxZmRjYjgxZjFcIj5oYWxfY29kZWNfcGxhbmVfczo6ZGF0YTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGRhdGEgcG9pbnRlciBvZiBwbGFuZSwgaXQgY291bGQgYmUgTlVMTCB3aGVuIGl0J3Mgc2VjdXJlIGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50MzJfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E1NDQwNjdjNGM0MzU4ZWFhODczZmEyOThmMDI1MWE2NlwiPmhhbF9jb2RlY19wbGFuZV9zOjpzaXplPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc2l6ZSBvZiBwbGFuZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50MzJfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5NDY5ZDI5M2U5MDc2OGNiOWUyZDhlMDBjOGI4MzI1MVwiPmhhbF9jb2RlY19wbGFuZV9zOjpzdHJpZGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJpZGUgb2YgcGxhbmU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19wbGFuZXNfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgYnVmZmVyIHBsYW5lcy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FkN2YxOTJmNGJkMDJjYTUxMjdiNDUyYWY2NDdjMGVmMFwiPm51bV9wbGFuZXM8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19wbGFuZV9fc1wiPmhhbF9jb2RlY19wbGFuZV9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E1NTk3Njg1YWVhYTgzMDQwODFkYjM0NTA4YWY3Y2ZlNFwiPnBsYW5lPFwvYT4gWzRdPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTJcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50MzJfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FkN2YxOTJmNGJkMDJjYTUxMjdiNDUyYWY2NDdjMGVmMFwiPmhhbF9jb2RlY19wbGFuZXNfczo6bnVtX3BsYW5lczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG51bWJlciBvZiBwbGFuZXM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19wbGFuZV9fc1wiPmhhbF9jb2RlY19wbGFuZV9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNTU5NzY4NWFlYWE4MzA0MDgxZGIzNDUwOGFmN2NmZTRcIj5oYWxfY29kZWNfcGxhbmVzX3M6OnBsYW5lPFwvYT5bNF08XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgYXJyYXkgb2YgcGxhbmVzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfbWVtb3J5X3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIGJ1ZmZlciBtZW1vcnkuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPnVpbnQzMl90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZGYzNjdjMTBiZGIwZTQwM2Y4NDUxMDQ5MjcwMmUzZDVcIj5udW1fZmQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMTUwZDE0YTlhNTIzYTBhY2I2YTg2ZWM4NzkyODk3Y2RcIj5mZDxcL2E+IFs0XTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0zXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tM1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTE1MGQxNGE5YTUyM2EwYWNiNmE4NmVjODc5Mjg5N2NkXCI+aGFsX2NvZGVjX21lbW9yeV9zOjpmZDxcL2E+WzRdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGZkPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWRmMzY3YzEwYmRiMGU0MDNmODQ1MTA0OTI3MDJlM2Q1XCI+aGFsX2NvZGVjX21lbW9yeV9zOjpudW1fZmQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBudW1iZXIgb2YgZmQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19tZXRhX3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIGJ1ZmZlciBtZXRhLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhNTY0NTk3YmNlMTY0MTE5NGEyNTU0YTk2MmZiMTQ1YzRcIj5oYWxfY29kZWNfZm9ybWF0X2U8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTFiMDIyNTMzMDgwMjkzN2QzYjFjNTZkMGZhMGY1NjIyXCI+Zm9ybWF0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fcmVzb2x1dGlvbl9fc1wiPmhhbF9jb2RlY19yZXNvbHV0aW9uX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTYwYTZjYmFmNjE4OGU0ZjY3NGNhMWFmYWI1N2E5Mzg2XCI+cmVzb2x1dGlvbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhZTcyMjE3YTQyMTBkMDk3YWJmNDFjZGU1NTBlYWQwNTFcIj5oYWxfY29kZWNfcm90YXRpb25fZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYzk0ZTU2NGJkYzQ5MzI5ZjVkNjM0NTE0MTRjMjY5NTRcIj5yb3RhdGlvbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50NjRfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTk5YjExZmU4ZGEyYWQ0ZmVjZTVhNDI0MjUxNTE2NDM1XCI+dGltZXN0YW1wPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQzMl90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZDU0N2ZlZjFjMjVlOTBiYWY1Njk1Yzk3ZWE2MTI2YmFcIj5kdXJhdGlvbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTM0ZjBjZTkyNTBkYjA1NjM4NGQzNzMzOTViOTgwYTJhXCI+ZmxhZ3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi00XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNFwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dWludDMyX3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZDU0N2ZlZjFjMjVlOTBiYWY1Njk1Yzk3ZWE2MTI2YmFcIj5oYWxfY29kZWNfbWV0YV9zOjpkdXJhdGlvbjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGR1cmF0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTM0ZjBjZTkyNTBkYjA1NjM4NGQzNzMzOTViOTgwYTJhXCI+aGFsX2NvZGVjX21ldGFfczo6ZmxhZ3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBmbGFnczxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhNTY0NTk3YmNlMTY0MTE5NGEyNTU0YTk2MmZiMTQ1YzRcIj5oYWxfY29kZWNfZm9ybWF0X2U8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExYjAyMjUzMzA4MDI5MzdkM2IxYzU2ZDBmYTBmNTYyMlwiPmhhbF9jb2RlY19tZXRhX3M6OmZvcm1hdDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGZvcm1hdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3Jlc29sdXRpb25fX3NcIj5oYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNjBhNmNiYWY2MTg4ZTRmNjc0Y2ExYWZhYjU3YTkzODZcIj5oYWxfY29kZWNfbWV0YV9zOjpyZXNvbHV0aW9uPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcmVzb2x1dGlvbiBvZiBmcmFtZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhZTcyMjE3YTQyMTBkMDk3YWJmNDFjZGU1NTBlYWQwNTFcIj5oYWxfY29kZWNfcm90YXRpb25fZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWM5NGU1NjRiZGM0OTMyOWY1ZDYzNDUxNDE0YzI2OTU0XCI+aGFsX2NvZGVjX21ldGFfczo6cm90YXRpb248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSByb3RhdGlvbiBvZiBmcmFtZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50NjRfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5OWIxMWZlOGRhMmFkNGZlY2U1YTQyNDI1MTUxNjQzNVwiPmhhbF9jb2RlY19tZXRhX3M6OnRpbWVzdGFtcDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRpbWVzdGFtcDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgaGFsX2NvZGVjX2J1ZmZlcl9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBidWZmZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWQyMTI1ZmYxMTExMWZmNjU5MzNiN2Y4ZmViNDE3NTExXCI+aW5kZXg8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjMGI3ODEzZGM1MTA1YWQyMzNiNTgwZTVjZTU5YTMzYlwiPnNpemU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19wbGFuZXNfX3NcIj5oYWxfY29kZWNfcGxhbmVzX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTIzNGVhYjdlZDU1NTZlNjRiNzdjNmYyYjhjNzk0MjQ0XCI+cGxhbmVzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fbWVtb3J5X19zXCI+aGFsX2NvZGVjX21lbW9yeV9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E3ZjhjNDk3ZDMzMDRiY2RhN2I1ZmQxNmM2YWZlMzUxZFwiPm1lbW9yeTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX21ldGFfX3NcIj5oYWxfY29kZWNfbWV0YV9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E0MTYwYWExNDA2NWUxNDZhOGRjNzI3YzI4ZGFiODk0N1wiPm1ldGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi01XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNVwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWQyMTI1ZmYxMTExMWZmNjU5MzNiN2Y4ZmViNDE3NTExXCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjppbmRleDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGluZGV4IG9mIGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX21lbW9yeV9fc1wiPmhhbF9jb2RlY19tZW1vcnlfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTdmOGM0OTdkMzMwNGJjZGE3YjVmZDE2YzZhZmUzNTFkXCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjptZW1vcnk8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtZW1vcnkgb2YgYnVmZmVyIGZvciB6ZXJvIGNvcHk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19tZXRhX19zXCI+aGFsX2NvZGVjX21ldGFfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTQxNjBhYTE0MDY1ZTE0NmE4ZGM3MjdjMjhkYWI4OTQ3XCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjptZXRhPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWV0YSBkYXRhIG9mIGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3BsYW5lc19fc1wiPmhhbF9jb2RlY19wbGFuZXNfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTIzNGVhYjdlZDU1NTZlNjRiNzdjNmYyYjhjNzk0MjQ0XCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjpwbGFuZXM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwbGFuZXMgb2YgYnVmZmVyIC0gbG9naWNhbCBwbGFuZSBkYXRhPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWMwYjc4MTNkYzUxMDVhZDIzM2I1ODBlNWNlNTlhMzNiXCI+aGFsX2NvZGVjX2J1ZmZlcl9zOjpzaXplPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc2l6ZSBvZiBidWZmZXI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19jdXN0b21fY29tbWFuZF9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBIQUwgY3VzdG9tIGNvbW1hbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPmNvbnN0IGNoYXIgKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTFhOTRhYTE3ZDVhODc3ZTYxZmEzYjg4NDc1ZmVmYjk1XCI+bmFtZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD52b2lkICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FiMjgwYWMxNzIzZDdlYjk4ZmJmNmIyNjM5NGFhZDZmNVwiPnZhbHVlPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNlwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTZcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmNvbnN0IGNoYXIqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTFhOTRhYTE3ZDVhODc3ZTYxZmEzYjg4NDc1ZmVmYjk1XCI+aGFsX2NvZGVjX2N1c3RvbV9jb21tYW5kX3M6Om5hbWU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBuYW1lIG9mIGN1c3RvbSBjb21tYW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWIyODBhYzE3MjNkN2ViOThmYmY2YjI2Mzk0YWFkNmY1XCI+aGFsX2NvZGVjX2N1c3RvbV9jb21tYW5kX3M6OnZhbHVlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmFsdWUgb2YgY3VzdG9tIGNvbW1hbmQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19iYXRjaF9jb21tYW5kX2NvbnRyb2xfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgY29kZWMgSEFMIGJhdGNoIGNvbW1hbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPnVpbnQ2NF90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhODM0YjkzYjY3NmYzZDQ5OTg5YTg2ZDdkMDQ5ZmQyMTBcIj5jb21tYW5kX3NldF9mbGFnPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQ2NF90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMzMzYzQ4ZWRiMTk5YTA5ZmM2OWM4MGMwMzE0MWEzMmZcIj5iaXRyYXRlPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY3VzdG9tX19jb21tYW5kX19zXCI+aGFsX2NvZGVjX2N1c3RvbV9jb21tYW5kX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTdhY2NjMDBjNTBkYmMzYmU2MjYxYjdhODI0Y2QyMzUzXCI+Y3VzdG9tPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tN1wiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTdcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQ2NF90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTMzM2M0OGVkYjE5OWEwOWZjNjljODBjMDMxNDFhMzJmXCI+aGFsX2NvZGVjX2JhdGNoX2NvbW1hbmRfY29udHJvbF9zOjpiaXRyYXRlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmFsdWUgZm9yIGJpdHJhdGUgY29tbWFuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50NjRfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E4MzRiOTNiNjc2ZjNkNDk5ODlhODZkN2QwNDlmZDIxMFwiPmhhbF9jb2RlY19iYXRjaF9jb21tYW5kX2NvbnRyb2xfczo6Y29tbWFuZF9zZXRfZmxhZzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGZsYWcgZm9yIHVwZGF0aW5nIGNvbW1hbmRzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY3VzdG9tX19jb21tYW5kX19zXCI+aGFsX2NvZGVjX2N1c3RvbV9jb21tYW5kX3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E3YWNjYzAwYzUwZGJjM2JlNjI2MWI3YTgyNGNkMjM1M1wiPmhhbF9jb2RlY19iYXRjaF9jb21tYW5kX2NvbnRyb2xfczo6Y3VzdG9tPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmFsdWUgZm9yIGN1c3RvbSBjb21tYW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfbWVzc2FnZV9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBIQUwgbWVzc2FnZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWJhOWFmODdmMjZiMmUzNDQ0NTU5ZWNhNjI5Y2Y1YmQ2XCI+aGFsX2NvZGVjX21lc3NhZ2VfdHlwZV9lPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExODgzZDM1OTE0ZWZkYThjYWVjNjA1MDk2ZTY0ZTVjN1wiPnR5cGU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWY1ZGZjODdlYmFjNjdlZGZiOGM0ZTFlZTI1YjQzOTlmXCI+aGFsX2NvZGVjX2Vycm9yX2U8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTg1ZTJkNDljZmY1ZWY5ZTQyNTZjNzA0MWMzMmI5YWIwXCI+ZXJyb3JfY29kZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2J1ZmZlcl9fc1wiPmhhbF9jb2RlY19idWZmZXJfczxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EzNTI2MmU4Y2JhOTc1YzJiYjczOGEyMGNmYjc0NmFkN1wiPmJ1ZmZlcjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3Jlc29sdXRpb25fX3NcIj5oYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjMzJkYWJiNTc2YmQwODc2NTkyZTAxNTExYmI1MTJhOFwiPnJlc29sdXRpb248XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dWludDY0X3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5OGQwNDZhNTIxOTQxNzA0YjYxZDIzNThjYjY0NjBkYlwiPnRpbWVzdGFtcDxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLThcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi04XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2J1ZmZlcl9fc1wiPmhhbF9jb2RlY19idWZmZXJfczxcL2E+KiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EzNTI2MmU4Y2JhOTc1YzJiYjczOGEyMGNmYjc0NmFkN1wiPmhhbF9jb2RlY19tZXNzYWdlX3M6OmJ1ZmZlcjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGJ1ZmZlciBmb3IgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnZ2FiYTlhZjg3ZjI2YjJlMzQ0NDU1OWVjYTYyOWNmNWJkNmFhNDY5NjJkZjlmYmQxOTc0NzI2NGNmNjg3ODhkNDM0YlwiPkhBTF9DT0RFQ19NRVNTQUdFX1RZUEVfSU5QVVRfQlVGRkVSX1VTRUQ8XC9hPiBvciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dnYWJhOWFmODdmMjZiMmUzNDQ0NTU5ZWNhNjI5Y2Y1YmQ2YWQ1YTQ4ZjczMjIwZDk5Y2MyYjdkYTM5MjRhM2NjOWI4XCI+SEFMX0NPREVDX01FU1NBR0VfVFlQRV9PVVRQVVRfQlVGRkVSPFwvYT48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWY1ZGZjODdlYmFjNjdlZGZiOGM0ZTFlZTI1YjQzOTlmXCI+aGFsX2NvZGVjX2Vycm9yX2U8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E4NWUyZDQ5Y2ZmNWVmOWU0MjU2YzcwNDFjMzJiOWFiMFwiPmhhbF9jb2RlY19tZXNzYWdlX3M6OmVycm9yX2NvZGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBlcnJvciBjb2RlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fcmVzb2x1dGlvbl9fc1wiPmhhbF9jb2RlY19yZXNvbHV0aW9uX3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjMzJkYWJiNTc2YmQwODc2NTkyZTAxNTExYmI1MTJhOFwiPmhhbF9jb2RlY19tZXNzYWdlX3M6OnJlc29sdXRpb248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjaGFuZ2VkIHJlc29sdXRpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dWludDY0X3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhOThkMDQ2YTUyMTk0MTcwNGI2MWQyMzU4Y2I2NDYwZGJcIj5oYWxfY29kZWNfbWVzc2FnZV9zOjp0aW1lc3RhbXA8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0aW1lc3RhbXAgb2YgaW52YWxpZCBpbnB1dCBidWZmZXIgKFNpbmNlIDEuMyk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWJhOWFmODdmMjZiMmUzNDQ0NTU5ZWNhNjI5Y2Y1YmQ2XCI+aGFsX2NvZGVjX21lc3NhZ2VfdHlwZV9lPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMTg4M2QzNTkxNGVmZGE4Y2FlYzYwNTA5NmU2NGU1YzdcIj5oYWxfY29kZWNfbWVzc2FnZV9zOjp0eXBlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdHlwZSBvZiBtZXNzYWdlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfY29kZWNfY2FwYWJpbGl0eV9mZWF0dXJlX3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIGNvZGVjIGNhcGFiaWxpdHkgZmVhdHVyZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E0ZjdhNTZlMjE3NWMyYWY2YWQyZDZiNzY2MTQ4MDM5MFwiPmNvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmNoYXI8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjN2ZmNjA5NjMwNTcyOWY0ZDM5YzE2MDM4MzI5M2FjNFwiPnZhbHVlPFwvYT4gWzE2XVsxNl08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tOVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTlcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTRmN2E1NmUyMTc1YzJhZjZhZDJkNmI3NjYxNDgwMzkwXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZmVhdHVyZV9zOjpjb3VudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNvdW50IG9mIGZlYXR1cmU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+Y2hhciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FjN2ZmNjA5NjMwNTcyOWY0ZDM5YzE2MDM4MzI5M2FjNFwiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2ZlYXR1cmVfczo6dmFsdWU8XC9hPlsxNl1bMTZdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZhbHVlIG9mIGZlYXR1cmU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9jb2RlY19jYXBhYmlsaXR5X2Jhc2VfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgY29kZWMgY2FwYWJpbGl0eSBiYXNlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2ZlYXR1cmVfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9mZWF0dXJlX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWIzM2YyOGI5YjE1MjViYjUyNDZkZjdiNzNlODllNmY5XCI+YWxpZ25tZW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZmVhdHVyZV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2ZlYXR1cmVfczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZWE0N2VmM2UwMTQwYjIwMGRmMmU1MjAzMmE4NGJhMGZcIj5zdHJlYW1fZm9ybWF0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZmVhdHVyZV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2ZlYXR1cmVfczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNWE2ZjhjZTFjZDEyNDEzZGI1ZTc5Yjk1ZWFmNWM4MGZcIj5sZXZlbDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2ZlYXR1cmVfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9mZWF0dXJlX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTg0MGIxMTQ3NzAwMzE2MWQ5MGYxMGIxZGE0YTVmZjg1XCI+cHJvZmlsZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3Jlc29sdXRpb25fX3NcIj5oYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FhYjY0MzExN2E0MmY3M2VlOTY0MWJlNWUzOTRhMGEwNVwiPm1heF9yZXNvbHV0aW9uPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTBcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMFwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19jYXBhYmlsaXR5X19mZWF0dXJlX19zXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZmVhdHVyZV9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYjMzZjI4YjliMTUyNWJiNTI0NmRmN2I3M2U4OWU2ZjlcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M6OmFsaWdubWVudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGFsaWdubWVudDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2ZlYXR1cmVfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9mZWF0dXJlX3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E1YTZmOGNlMWNkMTI0MTNkYjVlNzliOTVlYWY1YzgwZlwiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2Jhc2Vfczo6bGV2ZWw8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBsZXZlbDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX3Jlc29sdXRpb25fX3NcIj5oYWxfY29kZWNfcmVzb2x1dGlvbl9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYWI2NDMxMTdhNDJmNzNlZTk2NDFiZTVlMzk0YTBhMDVcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M6Om1heF9yZXNvbHV0aW9uPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4IHJlc29sdXRpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19jYXBhYmlsaXR5X19mZWF0dXJlX19zXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZmVhdHVyZV9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhODQwYjExNDc3MDAzMTYxZDkwZjEwYjFkYTRhNWZmODVcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M6OnByb2ZpbGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwcm9maWxlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZmVhdHVyZV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2ZlYXR1cmVfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWVhNDdlZjNlMDE0MGIyMDBkZjJlNTIwMzJhODRiYTBmXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfYmFzZV9zOjpzdHJlYW1fZm9ybWF0PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RyZWFtIGZvcm1hdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgaGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBjYXBhYmlsaXR5IGZvciBkZWNvZGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2Jhc2VfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWUwN2MxYzU2ZjUwOTk1NDNiZTY0YjUwYzRiNDMzNjNlXCI+YmFzZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhNTY0NTk3YmNlMTY0MTE5NGEyNTU0YTk2MmZiMTQ1YzRcIj5oYWxfY29kZWNfZm9ybWF0X2U8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWRkMzM1YzQ2ZGMwYTNhMDJhY2YzOTIwMGFkMzBlMjU5XCI+aW5fZm9ybWF0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQzMl90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNWU4ZDBkZjY2ZTliMDVmYmIxMTI0ZDJiOWI1MGEwZDlcIj5vdXRfZm9ybWF0X2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNDAyYjkxYjExYTI1ZTcxZWZjNWY3ZmVkZDllMGFhODFcIj5vdXRfZm9ybWF0PFwvYT4gWzRdPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTExXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTFcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fYmFzZV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2Jhc2VfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWUwN2MxYzU2ZjUwOTk1NDNiZTY0YjUwYzRiNDMzNjNlXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zOjpiYXNlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgYmFzZSBjYXBhYmlsaXR5PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWRkMzM1YzQ2ZGMwYTNhMDJhY2YzOTIwMGFkMzBlMjU5XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zOjppbl9mb3JtYXQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBpbnB1dCBmb3JtYXQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNDAyYjkxYjExYTI1ZTcxZWZjNWY3ZmVkZDllMGFhODFcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9kZWNvZGVyX3M6Om91dF9mb3JtYXQ8XC9hPls0XTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgZm9ybWF0IGFycmF5PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTVlOGQwZGY2NmU5YjA1ZmJiMTEyNGQyYjliNTBhMGQ5XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zOjpvdXRfZm9ybWF0X2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IGZvcm1hdCBjb3VudDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgaGFsX2NvZGVjX2NhcGFiaWxpdHlfZW5jb2Rlcl9zPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBjb2RlYyBjYXBhYmlsaXR5IGZvciBlbmNvZGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2Jhc2VfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9iYXNlX3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWE4OWY5NzcxZGZmYzhkMzk2NTg3YWY5ODdlOTZlMGFlXCI+YmFzZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWE5ODM4Mzc2YzQzMTUyMDFhNGIwYzA2ZDUwZTIyNTQ3XCI+aW5fZm9ybWF0X2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNjQ4YzljODBjYzMwOWVjMWM5MWY1OTQ5ZjAzYzhmYjJcIj5pbl9mb3JtYXQ8XC9hPiBbNF08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMGJkYzA1ZmIzODE2Zjk5NWVmMTE5YzQyNTlhYWVlZjdcIj5vdXRfZm9ybWF0PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTJcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMlwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19jYXBhYmlsaXR5X19iYXNlX19zXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfYmFzZV9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYTg5Zjk3NzFkZmZjOGQzOTY1ODdhZjk4N2U5NmUwYWVcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9lbmNvZGVyX3M6OmJhc2U8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBiYXNlIGNhcGFiaWxpdHk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhNjQ4YzljODBjYzMwOWVjMWM5MWY1OTQ5ZjAzYzhmYjJcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9lbmNvZGVyX3M6OmluX2Zvcm1hdDxcL2E+WzRdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGlucHV0IGZvcm1hdCBhcnJheTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50MzJfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FhOTgzODM3NmM0MzE1MjAxYTRiMGMwNmQ1MGUyMjU0N1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2VuY29kZXJfczo6aW5fZm9ybWF0X2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaW5wdXQgZm9ybWF0IGNvdW50PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTBiZGMwNWZiMzgxNmY5OTVlZjExOWM0MjU5YWFlZWY3XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZW5jb2Rlcl9zOjpvdXRfZm9ybWF0PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IGZvcm1hdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgaGFsX2NvZGVjX2NhcGFiaWxpdHlfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgY29kZWMgY2FwYWJpbGl0eS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FlODE4NTMxNjdlYjIyYTRiZmQ0Yjc3MTVhNjVjN2MyZFwiPmRlY29kZXJfY291bnQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19jYXBhYmlsaXR5X19kZWNvZGVyX19zXCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfZGVjb2Rlcl9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FlMDEwOTc3MDE0YmJmOTk1ZDgwYzUzMWQxMzcxZWE2NVwiPmRlY29kZXI8XC9hPiBbOF08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQzMl90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMDc0ZjBlZjlmMjMyNTQ0YTFmNWNmYmE5MGJhNjdjZTZcIj5lbmNvZGVyX2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZW5jb2Rlcl9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2VuY29kZXJfczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhMDlhYjRjZmY3OTZhNDczMGQ3OTllNTQ2MDYyMjRhZDVcIj5lbmNvZGVyPFwvYT4gWzhdPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEzXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTNcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fZGVjb2Rlcl9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X2RlY29kZXJfczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWUwMTA5NzcwMTRiYmY5OTVkODBjNTMxZDEzNzFlYTY1XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfczo6ZGVjb2RlcjxcL2E+WzhdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNhcGFiaWxpdHkgZm9yIGRlY29kZXI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dWludDMyX3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZTgxODUzMTY3ZWIyMmE0YmZkNGI3NzE1YTY1YzdjMmRcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9zOjpkZWNvZGVyX2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgY291bnQgb2YgY2FwYWJpbGl0eSBmb3IgZGVjb2RlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX2VuY29kZXJfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9lbmNvZGVyX3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EwOWFiNGNmZjc5NmE0NzMwZDc5OWU1NDYwNjIyNGFkNVwiPmhhbF9jb2RlY19jYXBhYmlsaXR5X3M6OmVuY29kZXI8XC9hPls4XTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXBhYmlsaXR5IGZvciBlbmNvZGVyPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTA3NGYwZWY5ZjIzMjU0NGExZjVjZmJhOTBiYTY3Y2U2XCI+aGFsX2NvZGVjX2NhcGFiaWxpdHlfczo6ZW5jb2Rlcl9jb3VudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNvdW50IG9mIGNhcGFiaWxpdHkgZm9yIGVuY29kZXI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfYmFja2VuZF9jb2RlY19mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgY29kZWMgSEFMIGZ1bmN0aW9ucy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EzZjRmNDMzOTBiZjg0YWU2Y2UxZWIzZjNkODYzYTA1MVwiPmluaXQ8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2FmOWMxMTFhZjBhOWVkMWJhYWYyYmVlMTc3MTdiNGJjOFwiPmhhbF9jb2RlY190eXBlX2U8XC9hPiB0eXBlLCB2b2lkICoqY29kZWNfaGFuZGxlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FlMTc4MjFjN2UxYjRhNjViMzBhY2MzYjhmZTJiNjFkOVwiPmRlaW5pdDxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2EyZjkyZDc3NzFmMjAwOGE4ZDhjYWI4MzllOTgzMTE3ZlwiPmNvbmZpZ3VyZTxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+IGluX2Zvcm1hdCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT4gb3V0X2Zvcm1hdCwgYm9vbCBpc19zZWN1cmUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWE2ZDllZmRkMTViODYxZjA3OGM2MTBiNmM0ZGI0ZDk3XCI+cmVsZWFzZTxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FhOThmZWVmYTRmYzI2YmZmM2Y4YmE0NDY5NzY5NDcyZFwiPnN0YXJ0PFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EwY2Q3Y2IzOWI3OGUyYTJjZWQzMGI5YWMxYjIxMzQ0MFwiPmhhbF9jb2RlY19tZXNzYWdlX2NiPFwvYT4gY2FsbGJhY2ssIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYTJjMjVhMzIxM2U3MWY5MTZiNWE1ZDdiZGVmMmQyNGNcIj5zdG9wPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYThmZTBiNmI5MDFhMmMyNDhiOGVlMTllNmQxNTY0ZGIzXCI+Zmx1c2g8XC9hPiApKHZvaWQgKmNvZGVjX2hhbmRsZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhOGJhYjFjYjc3MjMyZmM4OGNiNGZjZGQyYWQyOWU3NmJcIj5kZWNvZGU8XC9hPiApKHZvaWQgKmNvZGVjX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19idWZmZXJfX3NcIj5oYWxfY29kZWNfYnVmZmVyX3M8XC9hPiAqYnVmZmVyKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExYmQ0OTE0OWRmNTYwYWJhMWYzNGYxNjFhM2RjNTg2MlwiPmVuY29kZTxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2J1ZmZlcl9fc1wiPmhhbF9jb2RlY19idWZmZXJfczxcL2E+ICpidWZmZXIpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYThlOGEzNjM4OTY5MDQ0MjIzMDcyZjJhMTI1NWUxMTQ1XCI+cmVsZWFzZV9vdXRwdXRfYnVmZmVyPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIGludCBidWZmZXJfaW5kZXgpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWJlNWI4ZmM4OThjNzcyOTVlM2NhOTM0MGMxOTc3MDA2XCI+Z2V0X3N0YXRlPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EwOGVlZTc0NGViZDlmZmZmMGNmZDZkMmQ1ZDNkMjEyNVwiPmhhbF9jb2RlY19zdGF0ZV9lPFwvYT4gKnN0YXRlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5ZGM2ZTUxOTY5MzI1YmRjNTI5OGRkMjVlNmRjNzJlNVwiPnNldF9jb21tYW5kPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E4NDhjNWU5MDJmZmEzODI1NDM4YjhjMzQ1ZDc4OTkwYlwiPmhhbF9jb2RlY19jb21tYW5kX2U8XC9hPiBjb21tYW5kLCB2b2lkICp2YWx1ZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZjE4ODA0NzUzNGU1NDQ0MTFjMjExZGQ5Yzk2M2FkNzFcIj5nZXRfY29tbWFuZDxcL2E+ICkodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhODQ4YzVlOTAyZmZhMzgyNTQzOGI4YzM0NWQ3ODk5MGJcIj5oYWxfY29kZWNfY29tbWFuZF9lPFwvYT4gY29tbWFuZCwgdm9pZCAqKnZhbHVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5N2M1YTRiYjcxMWRkMDQ1MjJiZjUxODljMGQ2ZWQyNlwiPnNldF9iYXRjaF9jb21tYW5kPFwvYT4gKSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fYmF0Y2hfX2NvbW1hbmRfX2NvbnRyb2xfX3NcIj5oYWxfY29kZWNfYmF0Y2hfY29tbWFuZF9jb250cm9sX3M8XC9hPiAqYmF0Y2hfY29tbWFuZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTg0OGM1ZTkwMmZmYTM4MjU0MzhiOGMzNDVkNzg5OTBiXCI+aGFsX2NvZGVjX2NvbW1hbmRfZTxcL2E+ICplcnJvcl9jb21tYW5kKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E4YThkNmRmNDRlMGJjZTA4MjYzYjc5OGNkNzIzMThlMFwiPmdldF9jYXBhYmlsaXR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2NhcGFiaWxpdHlfX3NcIj5oYWxfY29kZWNfY2FwYWJpbGl0eV9zPFwvYT4gKmNhcGFiaWxpdHkpPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE0XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTRcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTJmOTJkNzc3MWYyMDA4YThkOGNhYjgzOWU5ODMxMTdmXCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpjb25maWd1cmU8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E1NjQ1OTdiY2UxNjQxMTk0YTI1NTRhOTYyZmIxNDVjNFwiPmhhbF9jb2RlY19mb3JtYXRfZTxcL2E+IGluX2Zvcm1hdCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT4gb3V0X2Zvcm1hdCwgYm9vbCBpc19zZWN1cmUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q29uZmlndXJlIGNvZGVjPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYThiYWIxY2I3NzIzMmZjODhjYjRmY2RkMmFkMjllNzZiXCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpkZWNvZGU8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI3N0cnVjdGhhbF9fY29kZWNfX2J1ZmZlcl9fc1wiPmhhbF9jb2RlY19idWZmZXJfczxcL2E+ICpidWZmZXIpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RGVjb2RlIGRhdGE8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhZTE3ODIxYzdlMWI0YTY1YjMwYWNjM2I4ZmUyYjYxZDlcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OmRlaW5pdDxcL2E+KSh2b2lkICpjb2RlY19oYW5kbGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RGVpbml0aWFsaXplIEhBTCBiYWNrZW5kIGhhbmRsZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2ExYmQ0OTE0OWRmNTYwYWJhMWYzNGYxNjFhM2RjNTg2MlwiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczo6ZW5jb2RlPFwvYT4pKHZvaWQgKmNvZGVjX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19idWZmZXJfX3NcIj5oYWxfY29kZWNfYnVmZmVyX3M8XC9hPiAqYnVmZmVyKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkVuY29kZSBkYXRhPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYThmZTBiNmI5MDFhMmMyNDhiOGVlMTllNmQxNTY0ZGIzXCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpmbHVzaDxcL2E+KSh2b2lkICpjb2RlY19oYW5kbGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Rmx1c2ggY29kZWM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhOGE4ZDZkZjQ0ZTBiY2UwODI2M2I3OThjZDcyMzE4ZTBcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OmdldF9jYXBhYmlsaXR5PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fY2FwYWJpbGl0eV9fc1wiPmhhbF9jb2RlY19jYXBhYmlsaXR5X3M8XC9hPiAqY2FwYWJpbGl0eSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgY2FwYWJpbGl0eSBvZiBjb2RlYyAoU2luY2UgMS4yKTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2FmMTg4MDQ3NTM0ZTU0NDQxMWMyMTFkZDljOTYzYWQ3MVwiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczo6Z2V0X2NvbW1hbmQ8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhODQ4YzVlOTAyZmZhMzgyNTQzOGI4YzM0NWQ3ODk5MGJcIj5oYWxfY29kZWNfY29tbWFuZF9lPFwvYT4gY29tbWFuZCwgdm9pZCAqKnZhbHVlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCBjb21tYW5kIGZvciB2YXJpb3VzIHNldHRpbmdzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWJlNWI4ZmM4OThjNzcyOTVlM2NhOTM0MGMxOTc3MDA2XCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpnZXRfc3RhdGU8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhMDhlZWU3NDRlYmQ5ZmZmZjBjZmQ2ZDJkNWQzZDIxMjVcIj5oYWxfY29kZWNfc3RhdGVfZTxcL2E+ICpzdGF0ZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgc3RhdGUgb2YgY29kZWM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhM2Y0ZjQzMzkwYmY4NGFlNmNlMWViM2YzZDg2M2EwNTFcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OmluaXQ8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWY5YzExMWFmMGE5ZWQxYmFhZjJiZWUxNzcxN2I0YmM4XCI+aGFsX2NvZGVjX3R5cGVfZTxcL2E+IHR5cGUsIHZvaWQgKipjb2RlY19oYW5kbGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+SW5pdGlhbGl6ZSBIQUwgYmFja2VuZCBoYW5kbGU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYTZkOWVmZGQxNWI4NjFmMDc4YzYxMGI2YzRkYjRkOTdcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OnJlbGVhc2U8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlJlbGVhc2UgY29kZWM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhOGU4YTM2Mzg5NjkwNDQyMjMwNzJmMmExMjU1ZTExNDVcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OnJlbGVhc2Vfb3V0cHV0X2J1ZmZlcjxcL2E+KSh2b2lkICpjb2RlY19oYW5kbGUsIGludCBidWZmZXJfaW5kZXgpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+UmVsZWFzZSBvdXRwdXQgYnVmZmVyPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYTk3YzVhNGJiNzExZGQwNDUyMmJmNTE4OWMwZDZlZDI2XCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpzZXRfYmF0Y2hfY29tbWFuZDxcL2E+KSh2b2lkICpjb2RlY19oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0aGFsX19jb2RlY19fYmF0Y2hfX2NvbW1hbmRfX2NvbnRyb2xfX3NcIj5oYWxfY29kZWNfYmF0Y2hfY29tbWFuZF9jb250cm9sX3M8XC9hPiAqYmF0Y2hfY29tbWFuZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTg0OGM1ZTkwMmZmYTM4MjU0MzhiOGMzNDVkNzg5OTBiXCI+aGFsX2NvZGVjX2NvbW1hbmRfZTxcL2E+ICplcnJvcl9jb21tYW5kKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCBiYXRjaCBjb21tYW5kIGZvciBtdWx0aXBsZSBzZXR0aW5nczxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2E5ZGM2ZTUxOTY5MzI1YmRjNTI5OGRkMjVlNmRjNzJlNVwiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczo6c2V0X2NvbW1hbmQ8XC9hPikodm9pZCAqY29kZWNfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhODQ4YzVlOTAyZmZhMzgyNTQzOGI4YzM0NWQ3ODk5MGJcIj5oYWxfY29kZWNfY29tbWFuZF9lPFwvYT4gY29tbWFuZCwgdm9pZCAqdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IGNvbW1hbmQgZm9yIHZhcmlvdXMgc2V0dGluZ3M8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNhYTk4ZmVlZmE0ZmMyNmJmZjNmOGJhNDQ2OTc2OTQ3MmRcIj5faGFsX2JhY2tlbmRfY29kZWNfZnVuY3M6OnN0YXJ0PFwvYT4pKHZvaWQgKmNvZGVjX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTBjZDdjYjM5Yjc4ZTJhMmNlZDMwYjlhYzFiMjEzNDQwXCI+aGFsX2NvZGVjX21lc3NhZ2VfY2I8XC9hPiBjYWxsYmFjaywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlN0YXJ0IGNvZGVjPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjYWEyYzI1YTMyMTNlNzFmOTE2YjVhNWQ3YmRlZjJkMjRjXCI+X2hhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzOjpzdG9wPFwvYT4pKHZvaWQgKmNvZGVjX2hhbmRsZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TdG9wIGNvZGVjPFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkRlZmluZSBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E0MjlmYzY5ZWM0MDRiMjVlZTNlM2Q4OTdiNTJmYjJmNVwiPkhBTF9DT0RFQ19CVUZGRVJfUExBTkVfTUFYPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gbnVtYmVyIG9mIHBsYW5lcyBpbiBidWZmZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPiNkZWZpbmUgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTQwOTU4MjI5YzkxZmZkNDY4NTY4MjViMjRhZTE1NjNhXCI+SEFMX0NPREVDX0NBUEFCSUxJVFlfRkVBVFVSRV9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDE2PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gbnVtYmVyIG9mIGNvZGVjIGNhcGFiaWxpdHkgZmVhdHVyZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjI8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+I2RlZmluZSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhM2E2MDY2NjdhZTFiOGY2Y2U3ZDg0OTcxYjJjYjFmOTVcIj5IQUxfQ09ERUNfQ0FQQUJJTElUWV9GT1JNQVRfTUFYPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gbnVtYmVyIG9mIGNvZGVjIGNhcGFiaWxpdHkgZm9ybWF0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EyYzNmNjEzMTViMjlkMTQxYTA1NDQ5MzMwMjc2NTI5MFwiPkhBTF9DT0RFQ19DQVBBQklMSVRZX01BWDxcL2E+XHUwMGEwXHUwMGEwXHUwMGEwODxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2RlYyBjYXBhYmlsaXR5LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2FhOWZmNmMyZjFmOTU4YzU5OTk5MDgwZjIyNmYzY2IyZlwiPkhBTF9DT0RFQ19GRUFUVVJFX0xFTkdUSDxcL2E+XHUwMGEwXHUwMGEwXHUwMGEwMTY8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbGVuZ3RoIG9mIGNvZGVjIGNhcGFiaWxpdHkgZmVhdHVyZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjI8XC9wPlxuPGhyIFwvPlxuPGgyIGlkPVwiY29udGVudC10eXBlZGVmLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtdHlwZWRlZi1kb2N1bWVudGF0aW9uXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5UeXBlZGVmIERvY3VtZW50YXRpb248XC9oMj5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjc3RydWN0X19oYWxfX2JhY2tlbmRfX2NvZGVjX19mdW5jc1wiPl9oYWxfYmFja2VuZF9jb2RlY19mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2FjZGQ1NzIyODQ5ZjAwYzNmNmNiN2JlOWI3OWE0NTM4MVwiPmhhbF9iYWNrZW5kX2NvZGVjX2Z1bmNzPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIGNvZGVjIEhBTCBmdW5jdGlvbnMuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgaW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTBjZDdjYjM5Yjc4ZTJhMmNlZDMwYjlhYzFiMjEzNDQwXCI+aGFsX2NvZGVjX21lc3NhZ2VfY2I8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2NvZGVjX19tZXNzYWdlX19zXCI+aGFsX2NvZGVjX21lc3NhZ2VfczxcL2E+ICptZXNzYWdlLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q2FsbGJhY2sgZnVuY3Rpb24gZm9yIG5vdGlmaWNhdGlvbiBmcm9tIGNvZGVjIEhBTC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBtZXNzYWdlIHwgVGhlIG1lc3NhZ2UgZnJvbSBjb2RlYyBIQUwgfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YSBmb3IgY2FsbGJhY2sgfDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICBoYWxfY29kZWNfYWRkX21lc3NhZ2VfY2FsbGJhY2soKVxuOiAgIGhhbF9jb2RlY19yZW1vdmVfbWVzc2FnZV9jYWxsYmFjaygpPFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtZW51bWVyYXRpb24tdHlwZS1kb2N1bWVudGF0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LWVudW1lcmF0aW9uLXR5cGUtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RW51bWVyYXRpb24gVHlwZSBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2E5ZGQwODRhZDFhMTM4NDY5OTM2MmViOWVjMzQyODcwZVwiPmhhbF9jb2RlY19idWZmZXJfZmxhZ19lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIGJ1ZmZlciBmbGFnLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19OT05FPFwvZW0+IHwgTm9uZSBmbGFnIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19DT0RFQ0NPTkZJRzxcL2VtPiB8IENvZGVjIGNvbmZpZyBmbGFnIHxcbnwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19TWU5DRlJBTUU8XC9lbT4gfCBTeW5jIGZyYW1lIGZsYWcgfFxufCA8ZW0+SEFMX0NPREVDX0JVRkZFUl9GTEFHX0VPUzxcL2VtPiB8IEVPUyhFbmQgb2Ygc3RyZWFtKSBmbGFnIHxcbnwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19ST1RBVEVEPFwvZW0+IHwgUm90YXRlZCBmbGFnIHxcbnwgPGVtPkhBTF9DT0RFQ19CVUZGRVJfRkxBR19TRUNVUkU8XC9lbT4gfCBTZWN1cmUgZmxhZyB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTg0OGM1ZTkwMmZmYTM4MjU0MzhiOGMzNDVkNzg5OTBiXCI+aGFsX2NvZGVjX2NvbW1hbmRfZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RW51bWVyYXRpb24gZm9yIHRoZSBjb2RlYyBIQUwgY29tbWFuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfQ09ERUNfQ09NTUFORF9CQVNFPFwvZW0+IHwgQmFzZSBvZiBjb21tYW5kIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9DT0RFQ19DT01NQU5EX0JJVFJBVEU8XC9lbT4gfCBCaXRyYXRlIHxcbnwgPGVtPkhBTF9DT0RFQ19DT01NQU5EX1JFUVVFU1RfQ09ERUNEQVRBPFwvZW0+IHwgUmVxdWVzdCBjb2RlYyBkYXRhIHxcbnwgPGVtPkhBTF9DT0RFQ19DT01NQU5EX1JFUVVFU1RfU1lOQ0ZSQU1FPFwvZW0+IHwgUmVxdWVzdCBzeW5jZnJhbWUgfFxufCA8ZW0+SEFMX0NPREVDX0NPTU1BTkRfQ1VTVE9NPFwvZW0+IHwgQ3VzdG9tIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhZjVkZmM4N2ViYWM2N2VkZmI4YzRlMWVlMjViNDM5OWZcIj5oYWxfY29kZWNfZXJyb3JfZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RW51bWVyYXRpb24gZm9yIHRoZSBjb2RlYyBIQUwgZXJyb3IuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX0NPREVDX0VSUk9SX05PTkU8XC9lbT4gfCBFcnJvciBub25lIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9OT1RfU1VQUE9SVEVEPFwvZW0+IHwgTm90IHN1cHBvcnRlZCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfUEVSTUlTU0lPTl9ERU5JRUQ8XC9lbT4gfCBQZXJtaXNzaW9uIGRlbmllZCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfSU5WQUxJRF9QQVJBTUVURVI8XC9lbT4gfCBJbnZhbGlkIHBhcmFtZXRlciB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfSU5WQUxJRF9TVEFURTxcL2VtPiB8IEludmFsaWQgc3RhdGUgfFxufCA8ZW0+SEFMX0NPREVDX0VSUk9SX09VVF9PRl9NRU1PUlk8XC9lbT4gfCBPdXQgb2YgbWVtb3J5IHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9ERVZJQ0VfT1BFTjxcL2VtPiB8IERldmljZSBvcGVuIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9ERVZJQ0VfTk9UX0ZPVU5EPFwvZW0+IHwgRGV2aWNlIG5vdCBmb3VuZCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfREVWSUNFX1VOQVZBSUxBQkxFPFwvZW0+IHwgRGV2aWNlIHVuYXZhaWxhYmxlIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9ERVZJQ0VfUkVBRDxcL2VtPiB8IERldmljZSByZWFkIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9ERVZJQ0VfV1JJVEU8XC9lbT4gfCBEZXZpY2Ugd3JpdGUgfFxufCA8ZW0+SEFMX0NPREVDX0VSUk9SX0RFVklDRV9CVVNZPFwvZW0+IHwgRGV2aWNlIGJ1c3kgfFxufCA8ZW0+SEFMX0NPREVDX0VSUk9SX0RFVklDRV9USU1FX09VVDxcL2VtPiB8IERldmljZSB0aW1lIG91dCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfSU5URVJOQUw8XC9lbT4gfCBJbnRlcm5hbCB8XG58IDxlbT5IQUxfQ09ERUNfRVJST1JfTk9UX0lNUExFTUVOVEVEPFwvZW0+IHwgTm90IGltcGxlbWVudGVkIHxcbnwgPGVtPkhBTF9DT0RFQ19FUlJPUl9VTktOT1dOPFwvZW0+IHwgVW5rbm93biB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYTU2NDU5N2JjZTE2NDExOTRhMjU1NGE5NjJmYjE0NWM0XCI+aGFsX2NvZGVjX2Zvcm1hdF9lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIGNvZGVjIEhBTCBmb3JtYXQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfQ09ERUMgMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9IMjY0PFwvZW0+IHwgRW5jb2RlZCAtIEguMjY0IHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfSDI2NTxcL2VtPiB8IEVuY29kZWQgLSBILjI2NSB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX0gyNjY8XC9lbT4gfCBFbmNvZGVkIC0gSC4yNjYgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9WUDg8XC9lbT4gfCBFbmNvZGVkIC0gVlA4IHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfVlA5PFwvZW0+IHwgRW5jb2RlZCAtIFZQOSB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX0FWMTxcL2VtPiB8IEVuY29kZWQgLSBBVjEgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9NSlBFRzxcL2VtPiB8IEVuY29kZWQgLSBNb3Rpb25KUEVHIChTaW5jZSAxLjEpIHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfTlYxMjxcL2VtPiB8IFJBVyAtIE5WMTIgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9OVjEyVDxcL2VtPiB8IFJBVyAtIE5WMTIgVGlsZWQgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9OVjIxPFwvZW0+IHwgUkFXIC0gTlYyMSB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX0k0MjA8XC9lbT4gfCBSQVcgLSBJNDIwKFlVMTIpIHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfWVYxMjxcL2VtPiB8IFJBVyAtIFlWMTIgfFxufCA8ZW0+SEFMX0NPREVDX0ZPUk1BVF9ZVVlWPFwvZW0+IHwgUkFXIC0gWVVZViB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX1VZVlk8XC9lbT4gfCBSQVcgLSBVWVZZIHxcbnwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfQkdSQTg4ODg8XC9lbT4gfCBSQVcgLSBCR1JBODg4OCB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX0FSR0I4ODg4PFwvZW0+IHwgUkFXIC0gQVJHQjg4ODggfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2FjM2EwZjNhZTIyODZjZjdjNDg3MDg4NjZiNDA3MmYxYlwiPmhhbF9jb2RlY19mb3JtYXRfdHlwZV9lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgY29kZWMgSEFMIGZvcm1hdCB0eXBlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9DT0RFQ19GT1JNQVRfVFlQRV9FTkNPREVEPFwvZW0+IHwgRW5jb2RlZCBmb3JtYXQgdHlwZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfQ09ERUNfRk9STUFUX1RZUEVfUkFXPFwvZW0+IHwgUkFXIGZvcm1hdCB0eXBlIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhYmE5YWY4N2YyNmIyZTM0NDQ1NTllY2E2MjljZjViZDZcIj5oYWxfY29kZWNfbWVzc2FnZV90eXBlX2U8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkVudW1lcmF0aW9uIGZvciB0aGUgY29kZWMgSEFMIG1lc3NhZ2UgdHlwZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfQ09ERUNfTUVTU0FHRV9UWVBFX0lOUFVUX0JVRkZFUl9VU0VEPFwvZW0+IHwgSW5wdXQgYnVmZmVyIGlzIHVzZWQgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX0NPREVDX01FU1NBR0VfVFlQRV9PVVRQVVRfQlVGRkVSPFwvZW0+IHwgT3V0cHV0IGJ1ZmZlciBpcyBkZWxpdmVyZWQgfFxufCA8ZW0+SEFMX0NPREVDX01FU1NBR0VfVFlQRV9SRVNPTFVUSU9OX0NIQU5HRUQ8XC9lbT4gfCBSZXNvbHV0aW9uIGlzIGNoYW5nZWQgfFxufCA8ZW0+SEFMX0NPREVDX01FU1NBR0VfVFlQRV9JTlZBTElEX0lOUFVUX0JVRkZFUjxcL2VtPiB8IEludmFsaWQgaW5wdXQgYnVmZmVyIChTaW5jZSAxLjMpIHxcbnwgPGVtPkhBTF9DT0RFQ19NRVNTQUdFX1RZUEVfRVJST1I8XC9lbT4gfCBFcnJvciBpcyBvY2N1cnJlZCB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRS5tZCNnYWU3MjIxN2E0MjEwZDA5N2FiZjQxY2RlNTUwZWFkMDUxXCI+aGFsX2NvZGVjX3JvdGF0aW9uX2U8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkVudW1lcmF0aW9uIGZvciB0aGUgYnVmZmVyIHJvdGF0aW9uLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9DT0RFQ19ST1RBVElPTl9OT05FPFwvZW0+IHwgTm9uZSByb3RhdGlvbiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfQ09ERUNfUk9UQVRJT05fOTA8XC9lbT4gfCA5MCBkZWdyZWUgcm90YXRpb24gfFxufCA8ZW0+SEFMX0NPREVDX1JPVEFUSU9OXzE4MDxcL2VtPiB8IDE4MCBkZWdyZWUgcm90YXRpb24gfFxufCA8ZW0+SEFMX0NPREVDX1JPVEFUSU9OXzI3MDxcL2VtPiB8IDI3MCBkZWdyZWUgcm90YXRpb24gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0NPREVDX19NT0RVTEUubWQjZ2EwOGVlZTc0NGViZDlmZmZmMGNmZDZkMmQ1ZDNkMjEyNVwiPmhhbF9jb2RlY19zdGF0ZV9lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIGNvZGVjIEhBTCBzdGF0ZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9DT0RFQyAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfQ09ERUNfU1RBVEVfSU5JVElBTElaRUQ8XC9lbT4gfCBJbml0aWFsaXplZCBzdGF0ZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfQ09ERUNfU1RBVEVfQ09ORklHVVJFRDxcL2VtPiB8IENvbmZpZ3VyZWQgc3RhdGUgfFxufCA8ZW0+SEFMX0NPREVDX1NUQVRFX1NUQVJURUQ8XC9lbT4gfCBTdGFydGVkIHN0YXRlIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19DT0RFQ19fTU9EVUxFLm1kI2dhZjljMTExYWYwYTllZDFiYWFmMmJlZTE3NzE3YjRiYzhcIj5oYWxfY29kZWNfdHlwZV9lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIGNvZGVjIEhBTCB0eXBlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0NPREVDIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9DT0RFQ19UWVBFX0RFQ09ERVI8XC9lbT4gfCBEZWNvZGVyIHR5cGUgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX0NPREVDX1RZUEVfRU5DT0RFUjxcL2VtPiB8IEVuY29kZXIgdHlwZSB8PFwvcD5cbjxociBcLz5cbjxwPkV4Y2VwdCBhcyBub3RlZCwgdGhpcyBjb250ZW50IC0gZXhjbHVkaW5nIHRoZSBDb2RlIEV4YW1wbGVzIC0gaXMgbGljZW5zZWQgdW5kZXIgPGEgaHJlZj1cImh0dHA6XC9cL2NyZWF0aXZlY29tbW9ucy5vcmdcL2xpY2Vuc2VzXC9ieVwvMy4wXC9sZWdhbGNvZGVcIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMDxcL2E+XG5hbmQgYWxsIG9mIHRoZSBDb2RlIEV4YW1wbGVzIGNvbnRhaW5lZCBoZXJlaW4gYXJlIGxpY2Vuc2VkIHVuZGVyIDxhIGhyZWY9XCJodHRwczpcL1wvd3d3LnRpemVuLm9yZ1wvYnNkLTMtY2xhdXNlLWxpY2Vuc2VcIj5CU0QtMy1DbGF1c2U8XC9hPi48YnIgXC8+XG5Gb3IgZGV0YWlscywgc2VlIHRoZSA8YSBocmVmPVwiaHR0cHM6XC9cL3d3dy50aXplbi5vcmdcL2NvbnRlbnQtbGljZW5zZVwiPkNvbnRlbnQgTGljZW5zZTxcL2E+LjxcL3A+XG4iLCJ0YWJsZV9vZl9jb250ZW50IjoiPHVsIGNsYXNzPVwidGFibGUtb2YtY29udGVudHNcIj5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtcmVxdWlyZWQtaGVhZGVyXCI+UmVxdWlyZWQgSGVhZGVyPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtb3ZlcnZpZXdcIj5PdmVydmlldzxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXN0YXRlLWRpYWdyYW1cIj5TdGF0ZSBEaWFncmFtPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtc3RhdGUtdHJhbnNpdGlvbnNcIj5TdGF0ZSBUcmFuc2l0aW9uczxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWRhdGEtc3RydWN0dXJlLWRvY3VtZW50YXRpb25cIj5EYXRhIFN0cnVjdHVyZSBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvblwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTFcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tM1wiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTRcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi01XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNlwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTdcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi04XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tOVwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEwXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTFcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMlwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEzXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTRcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIj5EZWZpbmUgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXR5cGVkZWYtZG9jdW1lbnRhdGlvblwiPlR5cGVkZWYgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWVudW1lcmF0aW9uLXR5cGUtZG9jdW1lbnRhdGlvblwiPkVudW1lcmF0aW9uIFR5cGUgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48XC91bD5cbiIsInRpdGxlIjoiVGl6ZW4gSEFMIEFQSTogQ29kZWMiLCJyYXciOm51bGx9LHsiY2xhc3MiOiJBcHBcXFNlcnZpY2VzXFxEb2N1bWVudGF0aW9uXFxEYXRhXFxSZW5kZXJlZE1hcmtkb3duIiwicyI6IndyYmwifV19LHsicyI6ImFyciJ9XX0sIm1lbW8iOnsiaWQiOiI2dzFBWHQ5OThLejFWbGE0VEhQNCIsIm5hbWUiOiJfX21vdW50UGFyYW1zQ29udGFpbmVyIiwicGF0aCI6ImRvY3NcL3BsYXRmb3JtXC9oYWxcL2FwaVwvMS4wLjBcL2dyb3VwX19IQUxBUElfX0hBTF9fQ09ERUNfX01PRFVMRSIsIm1ldGhvZCI6IkdFVCIsInJlbGVhc2UiOiJhLWEtYSJ9LCJjaGVja3N1bSI6ImQ1NjEwZTEyOTQ3NjU3Y2FjOWE4MDlkMjUxYzA2NjAxOGNmOTFkZWE3YjRiZGZhMTgzNGQzNDgzY2RiMWNiZDgifQ==')" >