TDM/a> provides functions for managing display server.<\/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-tdm.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 TDM functions provides an abstraction interface for display server including:<\/p>\n<ul>\n<li>Display server interface to user like getting display capabilities, size, format.<\/li>\n<li>Display control interface like display mode setting, dpms, capture.<\/li>\n<\/ul>\n<p>For more information on the TDM features and the macros, see HAL TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__backend__data\">_hal_tdm_backend_data<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga22ad501164b58eab03832031e33aa7cc\">hal_tdm_backend_data<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the tdm backend data.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__display__funcs\">_hal_tdm_display_funcs<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga6685bd5bfa3a36fad00f752fce944c60\">hal_tdm_display_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the TDM HAL's display functions for backend.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__output__funcs\">_hal_tdm_output_funcs<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga10bd740bb66cb260d271d65ed322db15\">hal_tdm_output_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the TDM HAL's output functions for backend.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__hwc__funcs\">_hal_tdm_hwc_funcs<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga551c2f281f6a94d131817672463c5fed\">hal_tdm_hwc_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the TDM HAL's hwc functions for backend.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__hwc__window__funcs\">_hal_tdm_hwc_window_funcs<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0ad91b989874782c53b5c3938acc76c3\">hal_tdm_hwc_window_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the TDM HAL's hwc window functions for backend.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__pp__funcs\">_hal_tdm_pp_funcs<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaeff9cc8f4d406ac212a0a94ecccc2f63\">hal_tdm_pp_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the TDM HAL's post-processing functions for backend.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__capture__funcs\">_hal_tdm_capture_funcs<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1b0033585f9dd9bde80b01238970f98e\">hal_tdm_capture_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the TDM HAL's capture functions for backend.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__voutput__funcs\">_hal_tdm_voutput_funcs<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gab3d8eccfb091f5da2f9d38dde6cccd2a\">hal_tdm_voutput_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the TDM HAL's virtual output functions for backend.<\/td>\n<\/tr>\n<tr>\n<td>typedef <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga45934c733fba619751c4524fa7e96cc6\">hal_tdm_master_drm_fd_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga9ff28c2a6992040cb7e937433df0d421\">hal_tdm_fd<\/a> master_drm_fd, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The function for setting master_drm_fd to backend.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__size\">_hal_tdm_size<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b03b1f44150880e99967bc3b0b30729\">hal_tdm_size<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The size structure.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__pos\">_hal_tdm_pos<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf7836d7e2e07f1b1eb26eb1ec693333d\">hal_tdm_pos<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The position structure.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__caps__display\">_hal_tdm_caps_display<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25d46b8c18492c250f76e9344b6a445b\">hal_tdm_caps_display<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The display capability structure for CAPTURE.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__output__mode\">_hal_tdm_output_mode<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The output mode structure compatible with drm_mode_modeinfo in drm-uapi.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__prop\">_hal_tdm_prop<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gad4053c769b1c17949d8799678b16517f\">hal_tdm_prop<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The property structure of tdm.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__info__config\">_hal_tdm_info_config<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The info config structure for window, layer.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__region\">_hal_tdm_region<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga232e46aa8c6e6836e30c919154c3165c\">hal_tdm_region<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The region structure.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__hwc__window__info\">_hal_tdm_hwc_window_info<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae157e96b7c59c5597cba19e77ddf9cea\">hal_tdm_hwc_window_info<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The hwc window info structure to composite.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__info__pp\">_hal_tdm_info_pp<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gac17e7cb9a360ce13db589260d10774c7\">hal_tdm_info_pp<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The information structure to use post-processing.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__info__capture\">_hal_tdm_info_capture<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga8d456cb4651fecad5357d5f43abc61b2\">hal_tdm_info_capture<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The capture info structure.<\/td>\n<\/tr>\n<tr>\n<td>typedef int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga9ff28c2a6992040cb7e937433df0d421\">hal_tdm_fd<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm fd.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm display object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga33515e59dc5348861f77aab674dfe074\">hal_tdm_module<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm backend object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm output object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm voutput object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm hwc object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm hwc window object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm capture object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm pp object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga29dc90c62814dcd6b11c6db48bca0c81\">hal_tdm_vblank<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm vblank object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga629bde9226ff84a64f9a0760e12189f4\">hal_tdm_backend<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The tdm backend object.<\/td>\n<\/tr>\n<tr>\n<td>typedef <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf88a08eac329064a0ffde1a38871ca06\">hal_tdm_event_loop_fd_handler<\/a> )(int event_fd, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gacd4c8a4b9b9eaf6bd28fb084bee2e833\">hal_tdm_event_loop_mask<\/a> mask, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The event_loop_fd handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga2ed7bd4001af39700906259eeacaf9d5\">hal_tdm_output_create_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *dpy, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The output create handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga52a4bec3e5e178a2a034dd6e5051c7b8\">hal_tdm_output_destroy_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The output destroy handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga9a9170121642f72afc62a20f38e92f16\">hal_tdm_output_change_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga9214a1e38cc40f3c290bbdb76143712e\">hal_tdm_output_change_type<\/a> type, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> value, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The output change handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga59fa0bbe8f2f9dc8f6ba503e615b34fa\">hal_tdm_output_vblank_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The vblank handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga38a761f466cd9707e7eb4e740aae6d79\">hal_tdm_output_commit_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The output commit handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga35f2cca7c3074059912f9745824a0b99\">hal_tdm_output_mode_change_request_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int index, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The output mode change request handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga35c50417cebbefafe17daadb79e11521\">hal_tdm_output_status_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae89f32424fc5915e44c05d6fe38db134\">hal_tdm_output_conn_status<\/a> status, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The output status handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf710b632b3d1a06c2c634191d3d5560f\">hal_tdm_output_dpms_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1c4331bf80d727c95c128521bec9236d\">hal_tdm_output_dpms<\/a> dpms, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The output dpms handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga95dd82bb3cf1b0b3303bedf421aff60f\">hal_tdm_pp_done_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp, tbm_surface_h src, tbm_surface_h dst, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The done handler of the pp object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga2d93e5cb277534a5f224dcc02f3263c4\">hal_tdm_capture_done_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture, tbm_surface_h buffer, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The done handler of the capture object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf53d741afe50f0bb9cf6d1d71e05b130\">hal_tdm_vblank_create_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga29dc90c62814dcd6b11c6db48bca0c81\">hal_tdm_vblank<\/a> *vblank, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The create handler of the vblank object.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gab6bda56b1db84ee2f20e8139ae8842ba\">hal_tdm_hwc_commit_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The hwc commit handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga80519ff48f772d8cdc71235b0a628fdb\">hal_tdm_voutput_commit_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The voutput commit handler.<\/td>\n<\/tr>\n<tr>\n<td>typedef void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae1f8d1d344922f2b4d9e10a643b3a530\">hal_tdm_voutput_commit_func<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, tbm_surface_h buffer)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The voutput commit function.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__event__source\">_hal_tdm_event_source<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae8b67f2dd27fcf40aeb4ce8d30946ba4\">hal_tdm_event_source<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure for event source information.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__caps__output\">_hal_tdm_caps_output<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga30c86ab1c8f0d4edc905552e29893155\">hal_tdm_caps_output<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure for output's capabilities.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__caps__pp\">_hal_tdm_caps_pp<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3ef2a7ff3a4bcbe9d676aa2cfb4be739\">hal_tdm_caps_pp<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure for post-processing's capabilities.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__caps__capture\">_hal_tdm_caps_capture<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga6cbb905693ec0b44a94b5fb992dc5b92\">hal_tdm_caps_capture<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure for capture's capabilities.<\/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__TDM__MODULE.md#gaf3c0d1decae65655264f1c99f6cbc61e\">HAL_TDM_NAME_LEN<\/a>\u00a0\u00a0\u00a064<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Definition of Max Name Length in HAL_TDM_MODULE.<\/td>\n<\/tr>\n<tr>\n<td>#define<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae593eae4fd5a5c91d9dcd56cbfbf52c9\">HAL_TDM_PATH_LEN<\/a>\u00a0\u00a0\u00a01024<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Definition of Max Path Length in HAL_TDM_MODULE.<\/td>\n<\/tr>\n<tr>\n<td>#define<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga06c680b3232d230221678ce8a7431747\">HAL_TDM_EVENT_SOURCE_MAX<\/a>\u00a0\u00a0\u00a03<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Definition of Max count of event source in HAL_TDM_MODULE.<\/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_tdm_backend_data<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the tdm backend data.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4a5f0235e2640abaae66c0ba32bbc8e7\">display<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ad7622eac2aea94d7515310da3684e7bb\">has_drm_device<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a049d9ed4c2e4a5edc2406bf4854982bb\">num_event_sources<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae8b67f2dd27fcf40aeb4ce8d30946ba4\">hal_tdm_event_source<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9ab7a48e133a365daffea51c7ea4576e\">event_sources<\/a> [3]<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga6685bd5bfa3a36fad00f752fce944c60\">hal_tdm_display_funcs<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab4f5f208cb69e60d255d03215aaa26bd\">display_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga10bd740bb66cb260d271d65ed322db15\">hal_tdm_output_funcs<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1c3fb68953baef8c2eac9548a3ffb82c\">output_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga551c2f281f6a94d131817672463c5fed\">hal_tdm_hwc_funcs<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab09f4e214e329f5762127dca24f6114a\">hwc_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0ad91b989874782c53b5c3938acc76c3\">hal_tdm_hwc_window_funcs<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a550732913647d13254532bd53e6fa531\">hwc_window_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaeff9cc8f4d406ac212a0a94ecccc2f63\">hal_tdm_pp_funcs<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a81746f505fa558ac30d56c1bc9656996\">pp_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1b0033585f9dd9bde80b01238970f98e\">hal_tdm_capture_funcs<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a276dbd77e2db4254f6ea27f51af6faa7\">capture_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gab3d8eccfb091f5da2f9d38dde6cccd2a\">hal_tdm_voutput_funcs<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab4b1670ce66d28f74b4982975fea91c8\">voutput_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga9ff28c2a6992040cb7e937433df0d421\">hal_tdm_fd<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a14f64a3d82ce5e6ff84e843a158aa729\">drm_fd<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1ffb38410245da568264fcb2e97537b6\">is_master<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga45934c733fba619751c4524fa7e96cc6\">hal_tdm_master_drm_fd_handler<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9288f386c954b7a4d1b9c3a51e949b0d\">master_drm_fd_func<\/a><\/td>\n<\/tr>\n<tr>\n<td>void *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af7768fefca924112731efd6913c80b64\">user_data<\/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><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1b0033585f9dd9bde80b01238970f98e\">hal_tdm_capture_funcs<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a276dbd77e2db4254f6ea27f51af6faa7\">_hal_tdm_backend_data::capture_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>capture functions of backend<\/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__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4a5f0235e2640abaae66c0ba32bbc8e7\">_hal_tdm_backend_data::display<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The handle of display<\/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__TDM__MODULE.md#ga6685bd5bfa3a36fad00f752fce944c60\">hal_tdm_display_funcs<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab4f5f208cb69e60d255d03215aaa26bd\">_hal_tdm_backend_data::display_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>display functions of backend<\/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__TDM__MODULE.md#ga9ff28c2a6992040cb7e937433df0d421\">hal_tdm_fd<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a14f64a3d82ce5e6ff84e843a158aa729\">_hal_tdm_backend_data::drm_fd<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The drm file descriptor<\/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__TDM__MODULE.md#gae8b67f2dd27fcf40aeb4ce8d30946ba4\">hal_tdm_event_source<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9ab7a48e133a365daffea51c7ea4576e\">_hal_tdm_backend_data::event_sources<\/a>[3]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The event source array<\/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__TDM__MODULE.md#ad7622eac2aea94d7515310da3684e7bb\">_hal_tdm_backend_data::has_drm_device<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The flag of having drm device or not<\/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__TDM__MODULE.md#ga551c2f281f6a94d131817672463c5fed\">hal_tdm_hwc_funcs<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab09f4e214e329f5762127dca24f6114a\">_hal_tdm_backend_data::hwc_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>hwc functions of backend<\/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__TDM__MODULE.md#ga0ad91b989874782c53b5c3938acc76c3\">hal_tdm_hwc_window_funcs<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a550732913647d13254532bd53e6fa531\">_hal_tdm_backend_data::hwc_window_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>hwc_window functions of backend<\/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__TDM__MODULE.md#a1ffb38410245da568264fcb2e97537b6\">_hal_tdm_backend_data::is_master<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The flag of master or not<\/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__TDM__MODULE.md#ga45934c733fba619751c4524fa7e96cc6\">hal_tdm_master_drm_fd_handler<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9288f386c954b7a4d1b9c3a51e949b0d\">_hal_tdm_backend_data::master_drm_fd_func<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The handler function for setting master drm file descriptor.<\/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__TDM__MODULE.md#a049d9ed4c2e4a5edc2406bf4854982bb\">_hal_tdm_backend_data::num_event_sources<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The number of event source<\/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__TDM__MODULE.md#ga10bd740bb66cb260d271d65ed322db15\">hal_tdm_output_funcs<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1c3fb68953baef8c2eac9548a3ffb82c\">_hal_tdm_backend_data::output_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>output functions of backend<\/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__TDM__MODULE.md#gaeff9cc8f4d406ac212a0a94ecccc2f63\">hal_tdm_pp_funcs<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a81746f505fa558ac30d56c1bc9656996\">_hal_tdm_backend_data::pp_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>post-processing functions of backend<\/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__TDM__MODULE.md#af7768fefca924112731efd6913c80b64\">_hal_tdm_backend_data::user_data<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The user data for callback<\/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__TDM__MODULE.md#gab3d8eccfb091f5da2f9d38dde6cccd2a\">hal_tdm_voutput_funcs<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab4b1670ce66d28f74b4982975fea91c8\">_hal_tdm_backend_data::voutput_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>voutput functions of backend<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_display_funcs<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's display functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a619e85653b4cad1792c06a52bafc8efc\">display_get_capability<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25d46b8c18492c250f76e9344b6a445b\">hal_tdm_caps_display<\/a> *caps)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2c310aeba3fdba91b9dcae81cd8133f6\">display_get_pp_capability<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3ef2a7ff3a4bcbe9d676aa2cfb4be739\">hal_tdm_caps_pp<\/a> *caps)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a3b3e3bd33e0c7e65031e2a3a7b8408ff\">display_get_capture_capability<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga6cbb905693ec0b44a94b5fb992dc5b92\">hal_tdm_caps_capture<\/a> *caps)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> **(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a642f14a57a31e0c5d68de4a43c48aa27\">display_get_outputs<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, int *count, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae64574bd7ce0ff97691d7a552997c355\">display_get_fd<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, int *fd)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a27eff0d63aeedd38801297e6858c74ba\">display_handle_events<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a88c6aa01beb2f7154b1df09570151a02\">display_create_pp<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a60c4e0724a490c93b06aa2dee116b7c4\">display_voutput_create<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, const char *name, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/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><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a>*(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a88c6aa01beb2f7154b1df09570151a02\">_hal_tdm_display_funcs::display_create_pp<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Create the post-processing object of hal_tdm_display.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a619e85653b4cad1792c06a52bafc8efc\">_hal_tdm_display_funcs::display_get_capability<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25d46b8c18492c250f76e9344b6a445b\">hal_tdm_caps_display<\/a> *caps)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the display capabilities of hal_tdm_display.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a3b3e3bd33e0c7e65031e2a3a7b8408ff\">_hal_tdm_display_funcs::display_get_capture_capability<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga6cbb905693ec0b44a94b5fb992dc5b92\">hal_tdm_caps_capture<\/a> *caps)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the capture capabilities of the hal_tdm_display.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae64574bd7ce0ff97691d7a552997c355\">_hal_tdm_display_funcs::display_get_fd<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, int *fd)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the file descriptor of hal_tdm_display.<\/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__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a>**(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a642f14a57a31e0c5d68de4a43c48aa27\">_hal_tdm_display_funcs::display_get_outputs<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, int *count, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the output array of hal_tdm_display.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2c310aeba3fdba91b9dcae81cd8133f6\">_hal_tdm_display_funcs::display_get_pp_capability<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3ef2a7ff3a4bcbe9d676aa2cfb4be739\">hal_tdm_caps_pp<\/a> *caps)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the post-processing capabilities of hal_tdm_display.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a27eff0d63aeedd38801297e6858c74ba\">_hal_tdm_display_funcs::display_handle_events<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Handle the events which happens on the fd of hal_tdm_display.<\/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__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a>*(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a60c4e0724a490c93b06aa2dee116b7c4\">_hal_tdm_display_funcs::display_voutput_create<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *display, const char *name, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Create the virtual output object of hal_tdm_display.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_output_funcs<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's output functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2e0b6ae32017fc2fbeb0804625612842\">output_get_capability<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga30c86ab1c8f0d4edc905552e29893155\">hal_tdm_caps_output<\/a> *caps)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae10d8542fcb53aad170c71f108cce4c5\">output_set_property<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> value)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a743ada87d6f1c23445eddf8ca6106c2c\">output_get_property<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> *value)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae4e516c8a45e948dae923947bfc522f0\">output_wait_vblank<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, int interval, int sync, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a50e1c5c744d4541156323a3c4063d7c8\">output_set_vblank_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga59fa0bbe8f2f9dc8f6ba503e615b34fa\">hal_tdm_output_vblank_handler<\/a> func)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1cb8dfa34e05ea73f2335f9a1b37443e\">output_set_dpms<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1c4331bf80d727c95c128521bec9236d\">hal_tdm_output_dpms<\/a> dpms_value)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a14fe5fc76253f2ed0a0584cd6d96f95b\">output_get_dpms<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1c4331bf80d727c95c128521bec9236d\">hal_tdm_output_dpms<\/a> *dpms_value)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af14fa6cab565eede625211abcde77a81\">output_set_mode<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a> *mode)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6e896b0f5c76bf8787ccea4957c2450c\">output_get_mode<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a> **mode)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1ea4769c0fb319d2a9f05357ebe0fcd5\">output_create_capture<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a92705f5af781ea0c9e704c7af6f1a011\">output_set_status_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga35c50417cebbefafe17daadb79e11521\">hal_tdm_output_status_handler<\/a> func, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1033ca390442fca648370daf1286fe93\">output_set_dpms_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf710b632b3d1a06c2c634191d3d5560f\">hal_tdm_output_dpms_handler<\/a> func, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae553070c8a94ebc81fd23be1810f128e\">output_set_dpms_async<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1c4331bf80d727c95c128521bec9236d\">hal_tdm_output_dpms<\/a> dpms_value, int *sync)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a45bfce3336d1cd7ebfc5d126230b3f18\">output_get_hwc<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab2a32d747c46f93add6e10a308c388ab\">output_set_mirror<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *src_output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga22cde5c32061e36550d4f201de9a642b\">hal_tdm_transform<\/a> transform)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a46a565ca80b2984c5ee49bb8080009cc\">output_unset_mirror<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output)<\/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><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a>*(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1ea4769c0fb319d2a9f05357ebe0fcd5\">_hal_tdm_output_funcs::output_create_capture<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Create the capture object from the output object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2e0b6ae32017fc2fbeb0804625612842\">_hal_tdm_output_funcs::output_get_capability<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga30c86ab1c8f0d4edc905552e29893155\">hal_tdm_caps_output<\/a> *caps)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the capabilities of the hal_tdm_output object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a14fe5fc76253f2ed0a0584cd6d96f95b\">_hal_tdm_output_funcs::output_get_dpms<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1c4331bf80d727c95c128521bec9236d\">hal_tdm_output_dpms<\/a> *dpms_value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get DPMS of the output object.<\/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__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a>*(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a45bfce3336d1cd7ebfc5d126230b3f18\">_hal_tdm_output_funcs::output_get_hwc<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the hwc object of the output object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6e896b0f5c76bf8787ccea4957c2450c\">_hal_tdm_output_funcs::output_get_mode<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a> **mode)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the mode of the output object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a743ada87d6f1c23445eddf8ca6106c2c\">_hal_tdm_output_funcs::output_get_property<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> *value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the output's property which has the given id.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1cb8dfa34e05ea73f2335f9a1b37443e\">_hal_tdm_output_funcs::output_set_dpms<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1c4331bf80d727c95c128521bec9236d\">hal_tdm_output_dpms<\/a> dpms_value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set DPMS of the output object synchronously.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae553070c8a94ebc81fd23be1810f128e\">_hal_tdm_output_funcs::output_set_dpms_async<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1c4331bf80d727c95c128521bec9236d\">hal_tdm_output_dpms<\/a> dpms_value, int *sync)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set DPMS of the output object asynchronously.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1033ca390442fca648370daf1286fe93\">_hal_tdm_output_funcs::output_set_dpms_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf710b632b3d1a06c2c634191d3d5560f\">hal_tdm_output_dpms_handler<\/a> func, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the output's dpms handler.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab2a32d747c46f93add6e10a308c388ab\">_hal_tdm_output_funcs::output_set_mirror<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *src_output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga22cde5c32061e36550d4f201de9a642b\">hal_tdm_transform<\/a> transform)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the mirror image of the src_output to the output.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af14fa6cab565eede625211abcde77a81\">_hal_tdm_output_funcs::output_set_mode<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a> *mode)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set one of available modes of the output object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae10d8542fcb53aad170c71f108cce4c5\">_hal_tdm_output_funcs::output_set_property<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the output's property which has the given id.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a92705f5af781ea0c9e704c7af6f1a011\">_hal_tdm_output_funcs::output_set_status_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga35c50417cebbefafe17daadb79e11521\">hal_tdm_output_status_handler<\/a> func, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the output connection status handler.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a50e1c5c744d4541156323a3c4063d7c8\">_hal_tdm_output_funcs::output_set_vblank_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga59fa0bbe8f2f9dc8f6ba503e615b34fa\">hal_tdm_output_vblank_handler<\/a> func)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the handler of vblank.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a46a565ca80b2984c5ee49bb8080009cc\">_hal_tdm_output_funcs::output_unset_mirror<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Unset the mirror image.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae4e516c8a45e948dae923947bfc522f0\">_hal_tdm_output_funcs::output_wait_vblank<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, int interval, int sync, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Wait for VBLANK of output.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_voutput_funcs<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's virtual output functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af4d24818376d33f5807df315fd2db98b\">voutput_destroy<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9ea756d5e3aaf5260fbad9d146963ca3\">voutput_set_available_mode<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a> *modes, int count)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aec8353282d9b01a4c8e5cc168fd82225\">voutput_set_physical_size<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, unsigned int mmwidth, unsigned int mmheight)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ace7e477aedf5c46b6b6d034811b67cdc\">voutput_connect<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9635091f2b2256a695880499c0c6f520\">voutput_disconnect<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae9e383474cbbcf6e2b9a04d7df8fd681\">voutput_get_output<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af7fe0329f40a6355c7ec6b927896c466\">voutput_set_commit_func<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga80519ff48f772d8cdc71235b0a628fdb\">hal_tdm_voutput_commit_handler<\/a> commit_func)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aea0bc8b8b5060a605bc7f79071a22f59\">voutput_commit_done<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9a511792e3658fc3eb9223620e1ed7b9\">voutput_set_target_buffer_queue_flag<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, int flags)<\/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><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aea0bc8b8b5060a605bc7f79071a22f59\">_hal_tdm_voutput_funcs::voutput_commit_done<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Notify commit done to backend.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ace7e477aedf5c46b6b6d034811b67cdc\">_hal_tdm_voutput_funcs::voutput_connect<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set connect status of the virtual output object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af4d24818376d33f5807df315fd2db98b\">_hal_tdm_voutput_funcs::voutput_destroy<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Destroy the virtual output object of the backend module.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9635091f2b2256a695880499c0c6f520\">_hal_tdm_voutput_funcs::voutput_disconnect<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set disconnect status of the virtual output object.<\/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__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a>*(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae9e383474cbbcf6e2b9a04d7df8fd681\">_hal_tdm_voutput_funcs::voutput_get_output<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get output object from virtual output object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9ea756d5e3aaf5260fbad9d146963ca3\">_hal_tdm_voutput_funcs::voutput_set_available_mode<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a> *modes, int count)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set available modes of the virtual output object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af7fe0329f40a6355c7ec6b927896c466\">_hal_tdm_voutput_funcs::voutput_set_commit_func<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga80519ff48f772d8cdc71235b0a628fdb\">hal_tdm_voutput_commit_handler<\/a> commit_func)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the user commit function<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aec8353282d9b01a4c8e5cc168fd82225\">_hal_tdm_voutput_funcs::voutput_set_physical_size<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, unsigned int mmwidth, unsigned int mmheight)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set physical size(mm) of the virtual output object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9a511792e3658fc3eb9223620e1ed7b9\">_hal_tdm_voutput_funcs::voutput_set_target_buffer_queue_flag<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, int flags)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set target buffer queue flag of the virtual output's hwc object<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_hwc_funcs<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's hwc functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a82d839ec10295bb43af6520588804c0a\">hwc_create_window<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aef23c89bc0e1e9fb4b3859790fed6b02\">hwc_get_video_supported_formats<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, const tbm_format **formats, int *count)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae6da64c3caa0782da25b8b1abd7aced3\">hwc_get_video_available_properties<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gad4053c769b1c17949d8799678b16517f\">hal_tdm_prop<\/a> **props, int *count)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a40cc045c9483c2974473c6a2c7a8fb23\">hwc_get_capabilities<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga92d84c3a607ae402c84430fc6aed87bf\">hal_tdm_hwc_capability<\/a> *capabilities)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab73e545290010fe933e4bc9441f8c244\">hwc_get_available_properties<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gad4053c769b1c17949d8799678b16517f\">hal_tdm_prop<\/a> **props, int *count)<\/td>\n<\/tr>\n<tr>\n<td>tbm_surface_queue_h(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af8ba8bea586591bf1ffe6ec07da209df\">hwc_get_client_target_buffer_queue<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aaffd704a0970eefeb87041f37413034b\">hwc_set_client_target_buffer<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, tbm_surface_h target_buffer, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga232e46aa8c6e6836e30c919154c3165c\">hal_tdm_region<\/a> damage)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aaea6d9d5e5e9bc4a7519135eb9ba10d3\">hwc_set_client_target_acquire_fence<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, int acquire_fence)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6f35f611dc4c43f0ef2aef246ea40a8b\">hwc_validate<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> **composited_wnds, uint32_t num_wnds, uint32_t *num_types)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#abdb6261625fe833ea036388d126a0015\">hwc_get_changed_composition_types<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, uint32_t *num_elements, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> **hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf75c8b3c74dfbf62c681c9d4e88c8396\">hal_tdm_hwc_window_composition<\/a> *composition_types)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae08e41dc48ee3fb12b4792ac534e333e\">hwc_accept_validation<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a8f964289f8cab8a43f6bdb079e6f6339\">hwc_commit<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, int sync, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a96734a88915c3dc0af036b785543cd76\">hwc_set_commit_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gab6bda56b1db84ee2f20e8139ae8842ba\">hal_tdm_hwc_commit_handler<\/a> func)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a342009b31bcaf90307b48ce878be97b4\">hwc_get_commit_fence<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, int *commit_fence)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a81d04926678ec3f2c73195d68e2f3f86\">hwc_get_release_fences<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, uint32_t *num_elements, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> **hwc_windows, int *release_fences)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9171c64de7c0c9d430eddd6640928b3a\">hwc_set_property<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, uint32_t id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> value)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a5f786b03f0a4a8f155aed1e2d1143826\">hwc_get_property<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, uint32_t id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> *value)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6bba78292392185a91b491aaba48f499\">hwc_get_commit_interval<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaff049053f578957d7654aa0d9475a344\">hal_tdm_hwc_commit_interval<\/a> *interval)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ac28a1d6aceb620e80d8f72cea8dc2b13\">hwc_set_client_target_buffer_info<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae157e96b7c59c5597cba19e77ddf9cea\">hal_tdm_hwc_window_info<\/a> *info)<\/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><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae08e41dc48ee3fb12b4792ac534e333e\">_hal_tdm_hwc_funcs::hwc_accept_validation<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Accepts the validation required by the backend.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a8f964289f8cab8a43f6bdb079e6f6339\">_hal_tdm_hwc_funcs::hwc_commit<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, int sync, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Commit changes for the hwc object.<\/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__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a>*(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a82d839ec10295bb43af6520588804c0a\">_hal_tdm_hwc_funcs::hwc_create_window<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Create a new window on the given hwc.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab73e545290010fe933e4bc9441f8c244\">_hal_tdm_hwc_funcs::hwc_get_available_properties<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gad4053c769b1c17949d8799678b16517f\">hal_tdm_prop<\/a> **props, int *count)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the available property array of the hwc object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a40cc045c9483c2974473c6a2c7a8fb23\">_hal_tdm_hwc_funcs::hwc_get_capabilities<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga92d84c3a607ae402c84430fc6aed87bf\">hal_tdm_hwc_capability<\/a> *capabilities)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the hwc capabilities.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#abdb6261625fe833ea036388d126a0015\">_hal_tdm_hwc_funcs::hwc_get_changed_composition_types<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, uint32_t *num_elements, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> **hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf75c8b3c74dfbf62c681c9d4e88c8396\">hal_tdm_hwc_window_composition<\/a> *composition_types)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get changed composition types.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>tbm_surface_queue_h(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af8ba8bea586591bf1ffe6ec07da209df\">_hal_tdm_hwc_funcs::hwc_get_client_target_buffer_queue<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the client target buffer queue.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a342009b31bcaf90307b48ce878be97b4\">_hal_tdm_hwc_funcs::hwc_get_commit_fence<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, int *commit_fence)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get commit fence.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6bba78292392185a91b491aaba48f499\">_hal_tdm_hwc_funcs::hwc_get_commit_interval<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaff049053f578957d7654aa0d9475a344\">hal_tdm_hwc_commit_interval<\/a> *interval)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the commit interval.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a5f786b03f0a4a8f155aed1e2d1143826\">_hal_tdm_hwc_funcs::hwc_get_property<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, uint32_t id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> *value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the property which has the given id on the hwc object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a81d04926678ec3f2c73195d68e2f3f86\">_hal_tdm_hwc_funcs::hwc_get_release_fences<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, uint32_t *num_elements, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> **hwc_windows, int *release_fences)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get release fences.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae6da64c3caa0782da25b8b1abd7aced3\">_hal_tdm_hwc_funcs::hwc_get_video_available_properties<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, const <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gad4053c769b1c17949d8799678b16517f\">hal_tdm_prop<\/a> **props, int *count)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the available video property array of the hwc object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aef23c89bc0e1e9fb4b3859790fed6b02\">_hal_tdm_hwc_funcs::hwc_get_video_supported_formats<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, const tbm_format **formats, int *count)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get video the supported format array for the hwc windows of the hwc object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aaea6d9d5e5e9bc4a7519135eb9ba10d3\">_hal_tdm_hwc_funcs::hwc_set_client_target_acquire_fence<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, int acquire_fence)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the acquire fence of client target 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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aaffd704a0970eefeb87041f37413034b\">_hal_tdm_hwc_funcs::hwc_set_client_target_buffer<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, tbm_surface_h target_buffer, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga232e46aa8c6e6836e30c919154c3165c\">hal_tdm_region<\/a> damage)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the client target 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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ac28a1d6aceb620e80d8f72cea8dc2b13\">_hal_tdm_hwc_funcs::hwc_set_client_target_buffer_info<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae157e96b7c59c5597cba19e77ddf9cea\">hal_tdm_hwc_window_info<\/a> *info)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the information of the client target 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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a96734a88915c3dc0af036b785543cd76\">_hal_tdm_hwc_funcs::hwc_set_commit_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gab6bda56b1db84ee2f20e8139ae8842ba\">hal_tdm_hwc_commit_handler<\/a> func)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the user commit handler.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9171c64de7c0c9d430eddd6640928b3a\">_hal_tdm_hwc_funcs::hwc_set_property<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, uint32_t id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the property which has the given id on the hwc object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6f35f611dc4c43f0ef2aef246ea40a8b\">_hal_tdm_hwc_funcs::hwc_validate<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> **composited_wnds, uint32_t num_wnds, uint32_t *num_types)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Validate the hwc.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_hwc_window_funcs<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's hwc window functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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>void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae228fd88128782789b14b9991d2cead0\">hwc_window_destroy<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window)<\/td>\n<\/tr>\n<tr>\n<td>tbm_surface_queue_h(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#adf1e0e7ef0184fe292be4a2c61fe199e\">hwc_window_acquire_buffer_queue<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/td>\n<\/tr>\n<tr>\n<td>void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a288a4ec1e90e5ba647ec55e155bb3494\">hwc_window_release_buffer_queue<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, tbm_surface_queue_h queue)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#afc97f552d7526fa2228dbb8b7160c4dc\">hwc_window_set_composition_type<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf75c8b3c74dfbf62c681c9d4e88c8396\">hal_tdm_hwc_window_composition<\/a> composition_type)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a627f3a4a94407c3d9207fdae1ebeb7a8\">hwc_window_set_buffer_damage<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga232e46aa8c6e6836e30c919154c3165c\">hal_tdm_region<\/a> damage)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a63911f3758f7dcf584c684f5e355f268\">hwc_window_set_info<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae157e96b7c59c5597cba19e77ddf9cea\">hal_tdm_hwc_window_info<\/a> *info)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a342bd07e3c99ad16467af6ab50cbbd57\">hwc_window_set_buffer<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, tbm_surface_h buffer)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a7089dca5cc70facae746f0eab30b98bd\">hwc_window_set_property<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, uint32_t id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> value)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a45d6424429df6e48d3e61ca4657336a1\">hwc_window_get_property<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, uint32_t id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> *value)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a8622ba92efd6b1a780243ecdeed01878\">hwc_window_get_constraints<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, int *constraints)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a40954eb8c5e27ae58b159804e1518379\">hwc_window_set_name<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, const char *name)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a0935c1519b7d81d2fe6dc605b254fbd2\">hwc_window_set_cursor_image<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, int width, int height, int stride, void *ptr)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af8f89a78d622162c2517e02f9b3b3b8c\">hwc_window_set_acquire_fence<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, int acquire_fence)<\/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>tbm_surface_queue_h(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#adf1e0e7ef0184fe292be4a2c61fe199e\">_hal_tdm_hwc_window_funcs::hwc_window_acquire_buffer_queue<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a> *error)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Acquire the buffer queue handle for the window object.<\/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__TDM__MODULE.md#ae228fd88128782789b14b9991d2cead0\">_hal_tdm_hwc_window_funcs::hwc_window_destroy<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Destroys the given window.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a8622ba92efd6b1a780243ecdeed01878\">_hal_tdm_hwc_window_funcs::hwc_window_get_constraints<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, int *constraints)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the constraints of hwc_window.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a45d6424429df6e48d3e61ca4657336a1\">_hal_tdm_hwc_window_funcs::hwc_window_get_property<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, uint32_t id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> *value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Get the property which has the given id.<\/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__TDM__MODULE.md#a288a4ec1e90e5ba647ec55e155bb3494\">_hal_tdm_hwc_window_funcs::hwc_window_release_buffer_queue<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, tbm_surface_queue_h queue)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Release the buffer queue for the window object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af8f89a78d622162c2517e02f9b3b3b8c\">_hal_tdm_hwc_window_funcs::hwc_window_set_acquire_fence<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, int acquire_fence)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the acquire fence of hwc_window.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a342bd07e3c99ad16467af6ab50cbbd57\">_hal_tdm_hwc_window_funcs::hwc_window_set_buffer<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, tbm_surface_h buffer)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the TDM buffer to the window object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a627f3a4a94407c3d9207fdae1ebeb7a8\">_hal_tdm_hwc_window_funcs::hwc_window_set_buffer_damage<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga232e46aa8c6e6836e30c919154c3165c\">hal_tdm_region<\/a> damage)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the buffer damage.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#afc97f552d7526fa2228dbb8b7160c4dc\">_hal_tdm_hwc_window_funcs::hwc_window_set_composition_type<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf75c8b3c74dfbf62c681c9d4e88c8396\">hal_tdm_hwc_window_composition<\/a> composition_type)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Sets the desired composition type of the given window.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a0935c1519b7d81d2fe6dc605b254fbd2\">_hal_tdm_hwc_window_funcs::hwc_window_set_cursor_image<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, int width, int height, int stride, void *ptr)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the cursor image to hwc_window.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a63911f3758f7dcf584c684f5e355f268\">_hal_tdm_hwc_window_funcs::hwc_window_set_info<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae157e96b7c59c5597cba19e77ddf9cea\">hal_tdm_hwc_window_info<\/a> *info)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the information to the window object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a40954eb8c5e27ae58b159804e1518379\">_hal_tdm_hwc_window_funcs::hwc_window_set_name<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, const char *name)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the name of hwc_window.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a7089dca5cc70facae746f0eab30b98bd\">_hal_tdm_hwc_window_funcs::hwc_window_set_property<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a> *hwc_window, uint32_t id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the property which has the given id.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_pp_funcs<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's post-processing functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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>void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ada0f473bf6aa3849121131e88a29330e\">pp_destroy<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a162b5cb6a849a5908879c268ef632680\">pp_set_info<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gac17e7cb9a360ce13db589260d10774c7\">hal_tdm_info_pp<\/a> *info)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a216a7f387df97cb156520905bd0dfcd3\">pp_attach<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp, tbm_surface_h src, tbm_surface_h dst)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab02cec01d3c11bfb9b6d6ea57de37d35\">pp_commit<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a547885c42cf71459b8b20784d090d449\">pp_set_done_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga95dd82bb3cf1b0b3303bedf421aff60f\">hal_tdm_pp_done_handler<\/a> func, void *user_data)<\/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><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a216a7f387df97cb156520905bd0dfcd3\">_hal_tdm_pp_funcs::pp_attach<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp, tbm_surface_h src, tbm_surface_h dst)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Attach the source buffer and the destination buffer to the post-processing object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab02cec01d3c11bfb9b6d6ea57de37d35\">_hal_tdm_pp_funcs::pp_commit<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Commit changes for the post-processing object.<\/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__TDM__MODULE.md#ada0f473bf6aa3849121131e88a29330e\">_hal_tdm_pp_funcs::pp_destroy<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Destroy the post-processing object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a547885c42cf71459b8b20784d090d449\">_hal_tdm_pp_funcs::pp_set_done_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga95dd82bb3cf1b0b3303bedf421aff60f\">hal_tdm_pp_done_handler<\/a> func, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the processing done handler to the post-processing object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a162b5cb6a849a5908879c268ef632680\">_hal_tdm_pp_funcs::pp_set_info<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gac17e7cb9a360ce13db589260d10774c7\">hal_tdm_info_pp<\/a> *info)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the geometry information to the post-processing object.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_capture_funcs<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's capture functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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>void(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af3b0e1de71c12e91b5aa01d03a82e01e\">capture_destroy<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a958ea0b49161a19c25034dd7bc3d1615\">capture_set_info<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga8d456cb4651fecad5357d5f43abc61b2\">hal_tdm_info_capture<\/a> *info)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a5751b229adb4d9f95873a0568aa70ee7\">capture_attach<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture, tbm_surface_h buffer)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a7080036f8f0efc9636680991218930d2\">capture_commit<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture)<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2c4719614ed03335931d467c28fc0efd\">capture_set_done_handler<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga2d93e5cb277534a5f224dcc02f3263c4\">hal_tdm_capture_done_handler<\/a> func, void *user_data)<\/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><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a5751b229adb4d9f95873a0568aa70ee7\">_hal_tdm_capture_funcs::capture_attach<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture, tbm_surface_h buffer)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Attach the TDM buffer to the capture object<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a7080036f8f0efc9636680991218930d2\">_hal_tdm_capture_funcs::capture_commit<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Commit changes for the capture object.<\/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__TDM__MODULE.md#af3b0e1de71c12e91b5aa01d03a82e01e\">_hal_tdm_capture_funcs::capture_destroy<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Destroy the capture object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2c4719614ed03335931d467c28fc0efd\">_hal_tdm_capture_funcs::capture_set_done_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga2d93e5cb277534a5f224dcc02f3263c4\">hal_tdm_capture_done_handler<\/a> func, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the capture done handler to the capture object.<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a958ea0b49161a19c25034dd7bc3d1615\">_hal_tdm_capture_funcs::capture_set_info<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga8d456cb4651fecad5357d5f43abc61b2\">hal_tdm_info_capture<\/a> *info)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Set the geometry information to the capture object.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_size<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The size structure.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a375003ad36f7e01dc9f43b3c973922f5\">h<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ad4ee4b01e39519ccd3a18023b027e109\">v<\/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>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a375003ad36f7e01dc9f43b3c973922f5\">_hal_tdm_size::h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The horizontal buffer size, width<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ad4ee4b01e39519ccd3a18023b027e109\">_hal_tdm_size::v<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The vertical buffer size, height<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_pos<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The position structure.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ad66fcd97afe188d90625f06bad134162\">x<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a0e46456b4517004fb9b7ee446bffe41d\">y<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#addf64d785964a4a6b5eaaec9c8862541\">w<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a99eb3f93677c94a9f6ebd0e64132ce91\">h<\/a><\/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>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a99eb3f93677c94a9f6ebd0e64132ce91\">_hal_tdm_pos::h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The height<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#addf64d785964a4a6b5eaaec9c8862541\">_hal_tdm_pos::w<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The width<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ad66fcd97afe188d90625f06bad134162\">_hal_tdm_pos::x<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The x(left) position<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a0e46456b4517004fb9b7ee446bffe41d\">_hal_tdm_pos::y<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The y(top) position<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>union hal_tdm_value<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm's union value.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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>void *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab3522c2b6cc839e29300471342ead93a\">ptr<\/a><\/td>\n<\/tr>\n<tr>\n<td>int32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a0038e8e42d12cda7a504b4c1e37b9776\">s32<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#acb2e8e117de0259117b8f7dc675c6a98\">u32<\/a><\/td>\n<\/tr>\n<tr>\n<td>int64_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a132576b4bb84b459bd5b406ccc28279e\">s64<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint64_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#abda63c3236edba6faa116b8df34d59bf\">u64<\/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>void* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ab3522c2b6cc839e29300471342ead93a\">hal_tdm_value::ptr<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The union value as pointer type<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a0038e8e42d12cda7a504b4c1e37b9776\">hal_tdm_value::s32<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The union value as 32bit integer type<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int64_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a132576b4bb84b459bd5b406ccc28279e\">hal_tdm_value::s64<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The union value as 64bit integer type<\/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__TDM__MODULE.md#acb2e8e117de0259117b8f7dc675c6a98\">hal_tdm_value::u32<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The union value as 32bit unsigned integer type<\/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__TDM__MODULE.md#abda63c3236edba6faa116b8df34d59bf\">hal_tdm_value::u64<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The union value as 64bit unsigned integer type<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_caps_display<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The display capability structure for CAPTURE.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#a272fc9fd2a95f2a39445d5ef8118da07\">max_layer_count<\/a><\/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>int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a272fc9fd2a95f2a39445d5ef8118da07\">_hal_tdm_caps_display::max_layer_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum layer 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_tdm_output_mode<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output mode structure compatible with drm_mode_modeinfo in drm-uapi.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a727660c0cad9cb8cd3af792c5cb5633c\">clock<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aba331278f0b9e349aa14b4c62005aa51\">hdisplay<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aa12fcc9595e27316770e861c1e62e37b\">hsync_start<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a8b9a0b088ff02eae147df34e0243c4f6\">hsync_end<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a36c8c727f35b0d5ff29c0a3c6301052f\">htotal<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a10eaef37a99f874f089c89bee76c5959\">hskew<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a24f37f448de991a4aad83e5f1c01b73a\">vdisplay<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a130c72703d1719aa8dec31c4af2494bb\">vsync_start<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a852bacff1046344d816d18d3408107e3\">vsync_end<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2dd4fb664a3d641807be532bf2dda95f\">vtotal<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a680040af4fd102fb8df0a04242771b11\">vscan<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a06131a70b229ff64f9716e914ae77793\">vrefresh<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a700886f864ca04c962e474524af1cbb2\">flags<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a73019883b89d399376a8b1d8835c88c2\">type<\/a><\/td>\n<\/tr>\n<tr>\n<td>char<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#acd292250c8b3819ba8bb5d6245acd724\">name<\/a> [64]<\/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>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a727660c0cad9cb8cd3af792c5cb5633c\">_hal_tdm_output_mode::clock<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The pixel clock in kHz<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a700886f864ca04c962e474524af1cbb2\">_hal_tdm_output_mode::flags<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The bitmask of misc. flags, see DRM_MODE_FLAG_* defines<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aba331278f0b9e349aa14b4c62005aa51\">_hal_tdm_output_mode::hdisplay<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The horizontal display size<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a10eaef37a99f874f089c89bee76c5959\">_hal_tdm_output_mode::hskew<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The horizontal skew<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a8b9a0b088ff02eae147df34e0243c4f6\">_hal_tdm_output_mode::hsync_end<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The horizontal sync end<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aa12fcc9595e27316770e861c1e62e37b\">_hal_tdm_output_mode::hsync_start<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The horizontal sync start<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a36c8c727f35b0d5ff29c0a3c6301052f\">_hal_tdm_output_mode::htotal<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The horizontal total size<\/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__TDM__MODULE.md#acd292250c8b3819ba8bb5d6245acd724\">_hal_tdm_output_mode::name<\/a>[64]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The string describing the mode resolution<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a73019883b89d399376a8b1d8835c88c2\">_hal_tdm_output_mode::type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The bitmask of type flags, see DRM_MODE_TYPE_* defines<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a24f37f448de991a4aad83e5f1c01b73a\">_hal_tdm_output_mode::vdisplay<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The vertical display size<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a06131a70b229ff64f9716e914ae77793\">_hal_tdm_output_mode::vrefresh<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The approximate vertical refresh rate in Hz<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a680040af4fd102fb8df0a04242771b11\">_hal_tdm_output_mode::vscan<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The vertical scan<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a852bacff1046344d816d18d3408107e3\">_hal_tdm_output_mode::vsync_end<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The vertical sync end<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a130c72703d1719aa8dec31c4af2494bb\">_hal_tdm_output_mode::vsync_start<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The vertical sync start<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2dd4fb664a3d641807be532bf2dda95f\">_hal_tdm_output_mode::vtotal<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The vertical total size<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_prop<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The property structure of tdm.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#afc602ce9db1c7c7e8c9a50faf113381d\">id<\/a><\/td>\n<\/tr>\n<tr>\n<td>char<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a3c624cddb7e0a9192746b8a032c92a76\">name<\/a> [64]<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga949993aa4e596124926516e6d9182a19\">hal_tdm_value_type<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4753d51c48a15d91ddedec3f31757152\">type<\/a><\/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>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#afc602ce9db1c7c7e8c9a50faf113381d\">_hal_tdm_prop::id<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The identifier of property<\/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__TDM__MODULE.md#a3c624cddb7e0a9192746b8a032c92a76\">_hal_tdm_prop::name<\/a>[64]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The name of property<\/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__TDM__MODULE.md#ga949993aa4e596124926516e6d9182a19\">hal_tdm_value_type<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4753d51c48a15d91ddedec3f31757152\">_hal_tdm_prop::type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The value type of property<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_info_config<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The info config structure for window, layer.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#ga3b03b1f44150880e99967bc3b0b30729\">hal_tdm_size<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a034a1a67afe80f13e8bb97dd34994743\">size<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf7836d7e2e07f1b1eb26eb1ec693333d\">hal_tdm_pos<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ade12af47186f05bcb57b6545696eb27e\">pos<\/a><\/td>\n<\/tr>\n<tr>\n<td>tbm_format<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a57cfe0e02f369e001978f5c018b2f66d\">format<\/a><\/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>tbm_format <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a57cfe0e02f369e001978f5c018b2f66d\">_hal_tdm_info_config::format<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The pixel 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__TDM__MODULE.md#gaf7836d7e2e07f1b1eb26eb1ec693333d\">hal_tdm_pos<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ade12af47186f05bcb57b6545696eb27e\">_hal_tdm_info_config::pos<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The position or logical image size<\/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__TDM__MODULE.md#ga3b03b1f44150880e99967bc3b0b30729\">hal_tdm_size<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a034a1a67afe80f13e8bb97dd34994743\">_hal_tdm_info_config::size<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The buffer size<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_region<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The region structure.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1c9542a02c750c4174b3cd703780754f\">num_rects<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf7836d7e2e07f1b1eb26eb1ec693333d\">hal_tdm_pos<\/a> const *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ac075a3ea85228c9be0562edca90aa721\">rects<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-15\"><a href=https://samsungtizenos.com/"#content-field-documentation-15\" 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>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1c9542a02c750c4174b3cd703780754f\">_hal_tdm_region::num_rects<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The number of rects<\/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__TDM__MODULE.md#gaf7836d7e2e07f1b1eb26eb1ec693333d\">hal_tdm_pos<\/a> const* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ac075a3ea85228c9be0562edca90aa721\">_hal_tdm_region::rects<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The array of rect information<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_hwc_window_info<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The hwc window info structure to composite.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aab39e6329a82bc630f6f74c09ea4e94f\">src_config<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf7836d7e2e07f1b1eb26eb1ec693333d\">hal_tdm_pos<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a3aebf24cc1de986d5fc236fbddcb29d9\">dst_pos<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga22cde5c32061e36550d4f201de9a642b\">hal_tdm_transform<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4a186c1c64ef89b5d2ee1e07eb218f64\">transform<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-16\"><a href=https://samsungtizenos.com/"#content-field-documentation-16\" 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__TDM__MODULE.md#gaf7836d7e2e07f1b1eb26eb1ec693333d\">hal_tdm_pos<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a3aebf24cc1de986d5fc236fbddcb29d9\">_hal_tdm_hwc_window_info::dst_pos<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The destination rectangular information (left, top, width, height)<\/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__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aab39e6329a82bc630f6f74c09ea4e94f\">_hal_tdm_hwc_window_info::src_config<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The hwc windows information of client<\/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__TDM__MODULE.md#ga22cde5c32061e36550d4f201de9a642b\">hal_tdm_transform<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4a186c1c64ef89b5d2ee1e07eb218f64\">_hal_tdm_hwc_window_info::transform<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The transform information (source to destination)<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_info_pp<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The information structure to use post-processing.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4f13e64969a473692ae37543538feb93\">src_config<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a8f34c1eca29aa209ca3cd1f0b38dca89\">dst_config<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga22cde5c32061e36550d4f201de9a642b\">hal_tdm_transform<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a626514109e42e71432527f8f706e7629\">transform<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a437d3c2056d41a20e738ab693e59a69d\">sync<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aa5d2640ef933ded7b04e9bc9235ee4f4\">flags<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-17\"><a href=https://samsungtizenos.com/"#content-field-documentation-17\" 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__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a8f34c1eca29aa209ca3cd1f0b38dca89\">_hal_tdm_info_pp::dst_config<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The destination window's information<\/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__TDM__MODULE.md#aa5d2640ef933ded7b04e9bc9235ee4f4\">_hal_tdm_info_pp::flags<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The Additional information to use private information.<\/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__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4f13e64969a473692ae37543538feb93\">_hal_tdm_info_pp::src_config<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The source window's information<\/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__TDM__MODULE.md#a437d3c2056d41a20e738ab693e59a69d\">_hal_tdm_info_pp::sync<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The option for synchronos return or not when post-processing is done<\/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__TDM__MODULE.md#ga22cde5c32061e36550d4f201de9a642b\">hal_tdm_transform<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a626514109e42e71432527f8f706e7629\">_hal_tdm_info_pp::transform<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The window transform information (source to destination)<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_info_capture<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capture info structure.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#acea2e944ec42ebc5f93b8faeef6a2dd6\">dst_config<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga22cde5c32061e36550d4f201de9a642b\">hal_tdm_transform<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a292b443bbb1f0846746b84211fc4a083\">transform<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga69ed97c23592595ba864aaeaa80676bf\">hal_tdm_capture_type<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2f7e83b100ad1cf13093f9ea3255e6ca\">type<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a698c072401ee5b6edfc2fd84e9520bc8\">frequency<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a8f095629102a1af22fe7eea18d83c60f\">flags<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-18\"><a href=https://samsungtizenos.com/"#content-field-documentation-18\" 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__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#acea2e944ec42ebc5f93b8faeef6a2dd6\">_hal_tdm_info_capture::dst_config<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The window's coordnate & size information to capture<\/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__TDM__MODULE.md#a8f095629102a1af22fe7eea18d83c60f\">_hal_tdm_info_capture::flags<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The Additional information to use private information.<\/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__TDM__MODULE.md#a698c072401ee5b6edfc2fd84e9520bc8\">_hal_tdm_info_capture::frequency<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The vertical refresh rate in Hz<\/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__TDM__MODULE.md#ga22cde5c32061e36550d4f201de9a642b\">hal_tdm_transform<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a292b443bbb1f0846746b84211fc4a083\">_hal_tdm_info_capture::transform<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The window's transform information to capture<\/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__TDM__MODULE.md#ga69ed97c23592595ba864aaeaa80676bf\">hal_tdm_capture_type<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a2f7e83b100ad1cf13093f9ea3255e6ca\">_hal_tdm_info_capture::type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capture type one-shot or stream<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_event_source<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure for event source information.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#aba4ffd1bbbbb4f4c77408647dbe1fcfd\">event_fd<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf88a08eac329064a0ffde1a38871ca06\">hal_tdm_event_loop_fd_handler<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1d5d18496d1fefe2c062e62d9191f479\">func<\/a><\/td>\n<\/tr>\n<tr>\n<td>void *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a0951594fdd281c1174b115b962232aef\">user_data<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-19\"><a href=https://samsungtizenos.com/"#content-field-documentation-19\" 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__TDM__MODULE.md#aba4ffd1bbbbb4f4c77408647dbe1fcfd\">_hal_tdm_event_source::event_fd<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The file descriptor of event.<\/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__TDM__MODULE.md#gaf88a08eac329064a0ffde1a38871ca06\">hal_tdm_event_loop_fd_handler<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1d5d18496d1fefe2c062e62d9191f479\">_hal_tdm_event_source::func<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The handler function of tdm_even_loop<\/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__TDM__MODULE.md#a0951594fdd281c1174b115b962232aef\">_hal_tdm_event_source::user_data<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The user data.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_caps_output<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure for output's capabilities.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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>char<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aedb991f17286a9e5034dad1e642cf86d\">maker<\/a> [64]<\/td>\n<\/tr>\n<tr>\n<td>char<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a831b1fe580753922b6fb031c2e96aef9\">model<\/a> [64]<\/td>\n<\/tr>\n<tr>\n<td>char<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aa50e94fc0d76297639728c932acae4c9\">name<\/a> [64]<\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae89f32424fc5915e44c05d6fe38db134\">hal_tdm_output_conn_status<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a275b6b0a459d5556a7099ec1929bd5c8\">status<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga547d7f99efa568c4be0adef89d5e3f44\">hal_tdm_output_type<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#abb7391623f219e72984db1002033fa10\">type<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aff67ea1cabbaac0a01fc9a2f66dd637b\">type_id<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1e0234c58551a6ab501cbb8370649caa\">mode_count<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ac745f905e8380af9726600847874a2df\">modes<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4d2eab8da9516aae34abb3423cb44910\">prop_count<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gad4053c769b1c17949d8799678b16517f\">hal_tdm_prop<\/a> *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ad5f80a677ab563cf314553327be94108\">props<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1e96a56f2888ba4f8918089dca7764c3\">mmWidth<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4bdde32550c5ac239d36a059b5c7bfd7\">mmHeight<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ad5b39a7145e7257bd16b2483bca26c7a\">subpixel<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6c1a374a1767b25c4e6fd2a7d6dcfaae\">min_w<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af28852fe33765e877fd83921cac910ff\">min_h<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ac03f8c23a1f652ebd444017eeead1ed0\">max_w<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1608c9a418d3099f0c9829eabe9e8c63\">max_h<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a5db57435a573be2dc528f685581d324d\">preferred_align<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga7904b6c0840afdb498e65d466b92c21a\">hal_tdm_output_capability<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9a624c46a4cb34bb7cc892ced13c0f33\">capabilities<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4f08065fb54db5123adcd65b6fdb2987\">cursor_min_w<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae064d12275478bc6e1704444dbd30c1c\">cursor_min_h<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a55b5ac6a0e31f0c6a302e6389dc1a2e5\">cursor_max_w<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a7f7d6fa9a2efe700e9aa2b0f3d47a956\">cursor_max_h<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ae23d38bc33aa9f9b29407b6f3d97f1c8\">cursor_preferred_align<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-20\"><a href=https://samsungtizenos.com/"#content-field-documentation-20\" 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__TDM__MODULE.md#ga7904b6c0840afdb498e65d466b92c21a\">hal_tdm_output_capability<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a9a624c46a4cb34bb7cc892ced13c0f33\">_hal_tdm_caps_output::capabilities<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capabilities of output.<\/p>\n<p><strong>Since:<\/strong>\n: 1.4.1<\/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__TDM__MODULE.md#a7f7d6fa9a2efe700e9aa2b0f3d47a956\">_hal_tdm_caps_output::cursor_max_h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum height.<\/p>\n<p><strong>Since:<\/strong>\n: 1.5.0<\/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__TDM__MODULE.md#a55b5ac6a0e31f0c6a302e6389dc1a2e5\">_hal_tdm_caps_output::cursor_max_w<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum width.<\/p>\n<p><strong>Since:<\/strong>\n: 1.5.0<\/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__TDM__MODULE.md#ae064d12275478bc6e1704444dbd30c1c\">_hal_tdm_caps_output::cursor_min_h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The minimum height.<\/p>\n<p><strong>Since:<\/strong>\n: 1.5.0<\/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__TDM__MODULE.md#a4f08065fb54db5123adcd65b6fdb2987\">_hal_tdm_caps_output::cursor_min_w<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The minimum width.<\/p>\n<p><strong>Since:<\/strong>\n: 1.5.0<\/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__TDM__MODULE.md#ae23d38bc33aa9f9b29407b6f3d97f1c8\">_hal_tdm_caps_output::cursor_preferred_align<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The preferred align.<\/p>\n<p><strong>Since:<\/strong>\n: 1.5.0<\/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__TDM__MODULE.md#aedb991f17286a9e5034dad1e642cf86d\">_hal_tdm_caps_output::maker<\/a>[64]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output maker<\/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__TDM__MODULE.md#a1608c9a418d3099f0c9829eabe9e8c63\">_hal_tdm_caps_output::max_h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum height<\/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__TDM__MODULE.md#ac03f8c23a1f652ebd444017eeead1ed0\">_hal_tdm_caps_output::max_w<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum width<\/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__TDM__MODULE.md#af28852fe33765e877fd83921cac910ff\">_hal_tdm_caps_output::min_h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The minimum height<\/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__TDM__MODULE.md#a6c1a374a1767b25c4e6fd2a7d6dcfaae\">_hal_tdm_caps_output::min_w<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The minimum width<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4bdde32550c5ac239d36a059b5c7bfd7\">_hal_tdm_caps_output::mmHeight<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The physical height (millimeter)<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1e96a56f2888ba4f8918089dca7764c3\">_hal_tdm_caps_output::mmWidth<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The physical width (millimeter)<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1e0234c58551a6ab501cbb8370649caa\">_hal_tdm_caps_output::mode_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The count of available modes<\/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__TDM__MODULE.md#a831b1fe580753922b6fb031c2e96aef9\">_hal_tdm_caps_output::model<\/a>[64]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output model<\/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__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ac745f905e8380af9726600847874a2df\">_hal_tdm_caps_output::modes<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The <strong>newly-allocated<\/strong> array of modes. will be freed in frontend.<\/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__TDM__MODULE.md#aa50e94fc0d76297639728c932acae4c9\">_hal_tdm_caps_output::name<\/a>[64]<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output name<\/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__TDM__MODULE.md#a5db57435a573be2dc528f685581d324d\">_hal_tdm_caps_output::preferred_align<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The preferred align<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a4d2eab8da9516aae34abb3423cb44910\">_hal_tdm_caps_output::prop_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The count of available properties<\/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__TDM__MODULE.md#gad4053c769b1c17949d8799678b16517f\">hal_tdm_prop<\/a>* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ad5f80a677ab563cf314553327be94108\">_hal_tdm_caps_output::props<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The <strong>newly-allocated<\/strong> array of properties. will be freed in frontend.<\/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__TDM__MODULE.md#gae89f32424fc5915e44c05d6fe38db134\">hal_tdm_output_conn_status<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a275b6b0a459d5556a7099ec1929bd5c8\">_hal_tdm_caps_output::status<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The connection status<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ad5b39a7145e7257bd16b2483bca26c7a\">_hal_tdm_caps_output::subpixel<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The subpixel<\/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__TDM__MODULE.md#ga547d7f99efa568c4be0adef89d5e3f44\">hal_tdm_output_type<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#abb7391623f219e72984db1002033fa10\">_hal_tdm_caps_output::type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The connection type<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aff67ea1cabbaac0a01fc9a2f66dd637b\">_hal_tdm_caps_output::type_id<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The connection type id<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_caps_pp<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure for post-processing's capabilities.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#ga661ef21cde703b776696d42014c8db77\">hal_tdm_pp_capability<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ac363695899e82a302fe1f95ea72c07ee\">capabilities<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a73c1f13331aae31244ca9c82902f6aab\">format_count<\/a><\/td>\n<\/tr>\n<tr>\n<td>tbm_format *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a3c46d30d5467b1b00108edca52744b59\">formats<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6ec4e5e324d5055e06fdc5842c9de1df\">min_w<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a334a67b8fbe9297c90e2c9d67a3c4d9e\">min_h<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#afa39a83cbae9376275fea23b7bcbbf8c\">max_w<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a940dbba5a8b06eb4a06b0e7a34e8c987\">max_h<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#af191b874e9c9898d0ec85c726f432727\">preferred_align<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a40622f12d0ffebaac0804cb15b148141\">preferred_align_vertical<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ada71442db0be5e9c79c6d6b9ed0b3c75\">max_attach_count<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-21\"><a href=https://samsungtizenos.com/"#content-field-documentation-21\" 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__TDM__MODULE.md#ga661ef21cde703b776696d42014c8db77\">hal_tdm_pp_capability<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ac363695899e82a302fe1f95ea72c07ee\">_hal_tdm_caps_pp::capabilities<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capabilities of pp<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a73c1f13331aae31244ca9c82902f6aab\">_hal_tdm_caps_pp::format_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The count of available formats<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>tbm_format* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a3c46d30d5467b1b00108edca52744b59\">_hal_tdm_caps_pp::formats<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The <strong>newly-allocated<\/strong> array. will be freed in frontend.<\/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__TDM__MODULE.md#ada71442db0be5e9c79c6d6b9ed0b3c75\">_hal_tdm_caps_pp::max_attach_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The attach count which the PP object can 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__TDM__MODULE.md#a940dbba5a8b06eb4a06b0e7a34e8c987\">_hal_tdm_caps_pp::max_h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum height<\/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__TDM__MODULE.md#afa39a83cbae9376275fea23b7bcbbf8c\">_hal_tdm_caps_pp::max_w<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum width<\/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__TDM__MODULE.md#a334a67b8fbe9297c90e2c9d67a3c4d9e\">_hal_tdm_caps_pp::min_h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The minimum height<\/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__TDM__MODULE.md#a6ec4e5e324d5055e06fdc5842c9de1df\">_hal_tdm_caps_pp::min_w<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The minimum width<\/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__TDM__MODULE.md#af191b874e9c9898d0ec85c726f432727\">_hal_tdm_caps_pp::preferred_align<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The preferred align<\/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__TDM__MODULE.md#a40622f12d0ffebaac0804cb15b148141\">_hal_tdm_caps_pp::preferred_align_vertical<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The preferred align vertical<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_tdm_caps_capture<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure for capture's capabilities.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#gab7d11c9672aeeb705e9504f02cfb2d50\">hal_tdm_capture_capability<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a5d0f77fe70b2cd5e7705d5725b6bdb90\">capabilities<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6c67e810072f2d5fa5a994b03af03ea0\">format_count<\/a><\/td>\n<\/tr>\n<tr>\n<td>tbm_format *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a15ce7ac5fb8752023a49c94a5bc03e4b\">formats<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a25aa5e180896bc2e7663def44f0b9e7d\">min_w<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a1e81561eb514603a6a4c974d18387d69\">min_h<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a90916000446e77d7609ccdc36225117b\">max_w<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#acc392fe832add62315be30e0b66b3b99\">max_h<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#aa62c7754b8a991410121c3a0b1ce6851\">preferred_align<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a78cfac4ff6b9cbc0e5c61d262d0fe61e\">max_attach_count<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-22\"><a href=https://samsungtizenos.com/"#content-field-documentation-22\" 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__TDM__MODULE.md#gab7d11c9672aeeb705e9504f02cfb2d50\">hal_tdm_capture_capability<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a5d0f77fe70b2cd5e7705d5725b6bdb90\">_hal_tdm_caps_capture::capabilities<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capabilities of capture<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a6c67e810072f2d5fa5a994b03af03ea0\">_hal_tdm_caps_capture::format_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The count of available formats<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>tbm_format* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#a15ce7ac5fb8752023a49c94a5bc03e4b\">_hal_tdm_caps_capture::formats<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The <strong>newly-allocated<\/strong> array of formats. will be freed in frontend.<\/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__TDM__MODULE.md#a78cfac4ff6b9cbc0e5c61d262d0fe61e\">_hal_tdm_caps_capture::max_attach_count<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The attach count which the capture object can 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__TDM__MODULE.md#acc392fe832add62315be30e0b66b3b99\">_hal_tdm_caps_capture::max_h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum height<\/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__TDM__MODULE.md#a90916000446e77d7609ccdc36225117b\">_hal_tdm_caps_capture::max_w<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The maximum width<\/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__TDM__MODULE.md#a1e81561eb514603a6a4c974d18387d69\">_hal_tdm_caps_capture::min_h<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The minimum height<\/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__TDM__MODULE.md#a25aa5e180896bc2e7663def44f0b9e7d\">_hal_tdm_caps_capture::min_w<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The minimum width<\/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__TDM__MODULE.md#aa62c7754b8a991410121c3a0b1ce6851\">_hal_tdm_caps_capture::preferred_align<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The preferred align<\/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__TDM__MODULE.md#ga06c680b3232d230221678ce8a7431747\">HAL_TDM_EVENT_SOURCE_MAX<\/a>\u00a0\u00a0\u00a03<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Definition of Max count of event source in HAL_TDM_MODULE.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#gaf3c0d1decae65655264f1c99f6cbc61e\">HAL_TDM_NAME_LEN<\/a>\u00a0\u00a0\u00a064<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Definition of Max Name Length in HAL_TDM_MODULE.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#gae593eae4fd5a5c91d9dcd56cbfbf52c9\">HAL_TDM_PATH_LEN<\/a>\u00a0\u00a0\u00a01024<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Definition of Max Path Length in HAL_TDM_MODULE.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/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 void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga629bde9226ff84a64f9a0760e12189f4\">hal_tdm_backend<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm backend object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__backend__data\">_hal_tdm_backend_data<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga22ad501164b58eab03832031e33aa7cc\">hal_tdm_backend_data<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the tdm backend data.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>See also:<\/strong>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__backend__data\" title=\"The structure type of the tdm backend data.\">_hal_tdm_backend_data<\/a><\/p>\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__TDM__MODULE.md#struct__hal__tdm__caps__capture\">_hal_tdm_caps_capture<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga6cbb905693ec0b44a94b5fb992dc5b92\">hal_tdm_caps_capture<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure for capture's capabilities.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__caps__display\">_hal_tdm_caps_display<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25d46b8c18492c250f76e9344b6a445b\">hal_tdm_caps_display<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The display capability structure for CAPTURE.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__caps__output\">_hal_tdm_caps_output<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga30c86ab1c8f0d4edc905552e29893155\">hal_tdm_caps_output<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure for output's capabilities.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__caps__pp\">_hal_tdm_caps_pp<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3ef2a7ff3a4bcbe9d676aa2cfb4be739\">hal_tdm_caps_pp<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure for post-processing's capabilities.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm capture object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga2d93e5cb277534a5f224dcc02f3263c4\">hal_tdm_capture_done_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3801003ba37a7de3ca9151616d32dbac\">hal_tdm_capture<\/a> *capture, tbm_surface_h buffer, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The done handler of the capture object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | capture | The pointer of capture object. |\n| --- | --- | --- |\n| [in] | buffer | The handle of tbm_surface. |\n| [in] | user_data | The user data. |<\/p>\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__TDM__MODULE.md#struct__hal__tdm__capture__funcs\">_hal_tdm_capture_funcs<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1b0033585f9dd9bde80b01238970f98e\">hal_tdm_capture_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's capture functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>See also:<\/strong>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__capture__funcs\" title=\"The structure type of the TDM HAL's capture functions for backend.\">_hal_tdm_capture_funcs<\/a><\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm display object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__display__funcs\">_hal_tdm_display_funcs<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga6685bd5bfa3a36fad00f752fce944c60\">hal_tdm_display_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's display functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>See also:<\/strong>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__display__funcs\" title=\"The structure type of the TDM HAL's display functions for backend.\">_hal_tdm_display_funcs<\/a><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf88a08eac329064a0ffde1a38871ca06\">hal_tdm_event_loop_fd_handler<\/a>)(int event_fd, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gacd4c8a4b9b9eaf6bd28fb084bee2e833\">hal_tdm_event_loop_mask<\/a> mask, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The event_loop_fd handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>This handler will be called when the output object is created in runtime.<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | event_fd | The file descriptor of event. |\n| --- | --- | --- |\n| [in] | mask | The mask of event_fd. |\n| [in] | user_data | The user data. |<\/p>\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__TDM__MODULE.md#struct__hal__tdm__event__source\">_hal_tdm_event_source<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae8b67f2dd27fcf40aeb4ce8d30946ba4\">hal_tdm_event_source<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure for event source information.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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__TDM__MODULE.md#ga9ff28c2a6992040cb7e937433df0d421\">hal_tdm_fd<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm fd.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm hwc object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gab6bda56b1db84ee2f20e8139ae8842ba\">hal_tdm_hwc_commit_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga853d62b092249bfea126ab3470290ff6\">hal_tdm_hwc<\/a> *hwc, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The hwc commit handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | hwc | The pointer of hwc object. |\n| --- | --- | --- |\n| [in] | sequence | The number of frame used as sequence. |\n| [in] | tv_sec | The second of time when hwc's commit is occurred. |\n| [in] | tv_usec | The micro second of time when hwc's commit is occurred. |\n| [in] | user_data | The user data. |<\/p>\n<p><strong>See also:<\/strong>\n: hwc_set_commit_handler() function of <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga551c2f281f6a94d131817672463c5fed\" title=\"The structure type of the TDM HAL's hwc functions for backend.\">hal_tdm_hwc_funcs<\/a><\/p>\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__TDM__MODULE.md#struct__hal__tdm__hwc__funcs\">_hal_tdm_hwc_funcs<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga551c2f281f6a94d131817672463c5fed\">hal_tdm_hwc_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's hwc functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>See also:<\/strong>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__hwc__funcs\" title=\"The structure type of the TDM HAL's hwc functions for backend.\">_hal_tdm_hwc_funcs<\/a><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b7949a76da0d45754854bd20d489034\">hal_tdm_hwc_window<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm hwc window object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__hwc__window__funcs\">_hal_tdm_hwc_window_funcs<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0ad91b989874782c53b5c3938acc76c3\">hal_tdm_hwc_window_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's hwc window functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>See also:<\/strong>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__hwc__window__funcs\" title=\"The structure type of the TDM HAL's hwc window functions for backend.\">_hal_tdm_hwc_window_funcs<\/a><\/p>\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__TDM__MODULE.md#struct__hal__tdm__hwc__window__info\">_hal_tdm_hwc_window_info<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae157e96b7c59c5597cba19e77ddf9cea\">hal_tdm_hwc_window_info<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The hwc window info structure to composite.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__info__capture\">_hal_tdm_info_capture<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga8d456cb4651fecad5357d5f43abc61b2\">hal_tdm_info_capture<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capture info structure.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__info__config\">_hal_tdm_info_config<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf9bbe4e8ea5ba065ba91b0a4a194d0e9\">hal_tdm_info_config<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The info config structure for window, layer.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__info__pp\">_hal_tdm_info_pp<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gac17e7cb9a360ce13db589260d10774c7\">hal_tdm_info_pp<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The information structure to use post-processing.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga45934c733fba619751c4524fa7e96cc6\">hal_tdm_master_drm_fd_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga9ff28c2a6992040cb7e937433df0d421\">hal_tdm_fd<\/a> master_drm_fd, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The function for setting master_drm_fd to backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | master_drm_fd | The master drm file descriptor. |\n| --- | --- | --- |\n| [in] | user_data | The user data for handler. |<\/p>\n<p><strong>Precondition:<\/strong>\n: hal_tdm_backend_set_master_drm_fd() will invoke this handler.<\/p>\n<p><strong>See also:<\/strong>\n: hal_tdm_backend_set_master_drm_fd().\n: hal_tdm_backend_get_master_drm_fd().<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga33515e59dc5348861f77aab674dfe074\">hal_tdm_module<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm backend object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm output object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga9a9170121642f72afc62a20f38e92f16\">hal_tdm_output_change_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga9214a1e38cc40f3c290bbdb76143712e\">hal_tdm_output_change_type<\/a> type, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#unionhal__tdm__value\">hal_tdm_value<\/a> value, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output change handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>This handler will be called when the status of the output object is changed in runtime.<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | output | The pointer of output. |\n| --- | --- | --- |\n| [in] | type | The output change enumeration. |\n| [in] | value | The tdm's union value. |\n| [in] | user_data | The user data. |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga38a761f466cd9707e7eb4e740aae6d79\">hal_tdm_output_commit_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output commit handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | output | The pointer of output. |\n| --- | --- | --- |\n| [in] | sequence | The number of frame used as sequence. |\n| [in] | tv_sec | The second of time when commit is occurred. |\n| [in] | tv_usec | The micro second of time when commit is occurred. |\n| [in] | user_data | The user data. |<\/p>\n<p><strong>See also:<\/strong>\n: output_set_commit_handler() function of <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga6685bd5bfa3a36fad00f752fce944c60\" title=\"The structure type of the TDM HAL's display functions for backend.\">hal_tdm_display_funcs<\/a><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga2ed7bd4001af39700906259eeacaf9d5\">hal_tdm_output_create_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga5227c70c621b5c2589b435c56e93e019\">hal_tdm_display<\/a> *dpy, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output create handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>This handler will be called when the output object is created in runtime.<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | dpy | The pointer of hal_tdm_display. |\n| --- | --- | --- |\n| [in] | output | The pointer of output. |\n| [in] | user_data | The user data |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga52a4bec3e5e178a2a034dd6e5051c7b8\">hal_tdm_output_destroy_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output destroy handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>This handler will be called when the output object is destroyed in runtime.<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | output | The pointer of output. |\n| --- | --- | --- |\n| [in] | user_data | The user data. |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf710b632b3d1a06c2c634191d3d5560f\">hal_tdm_output_dpms_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga1c4331bf80d727c95c128521bec9236d\">hal_tdm_output_dpms<\/a> dpms, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output dpms handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | output | The pointer of output. |\n| --- | --- | --- |\n| [in] | dpms | The DPMS value |\n| [in] | user_data | The user data. |<\/p>\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__TDM__MODULE.md#struct__hal__tdm__output__funcs\">_hal_tdm_output_funcs<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga10bd740bb66cb260d271d65ed322db15\">hal_tdm_output_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's output functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>See also:<\/strong>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__output__funcs\" title=\"The structure type of the TDM HAL's output functions for backend.\">_hal_tdm_output_funcs<\/a><\/p>\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__TDM__MODULE.md#struct__hal__tdm__output__mode\">_hal_tdm_output_mode<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga4d8252ec15be8f285e9210c886ab7dc3\">hal_tdm_output_mode<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output mode structure compatible with drm_mode_modeinfo in drm-uapi.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga35f2cca7c3074059912f9745824a0b99\">hal_tdm_output_mode_change_request_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int index, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output mode change request handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | output | The pointer of output. |\n| --- | --- | --- |\n| [in] | index | The index of available modes |\n| [in] | user_data | The user data. |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga35c50417cebbefafe17daadb79e11521\">hal_tdm_output_status_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae89f32424fc5915e44c05d6fe38db134\">hal_tdm_output_conn_status<\/a> status, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output status handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | output | The pointer of output. |\n| --- | --- | --- |\n| [in] | status | The connection status |\n| [in] | user_data | The user data. |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga59fa0bbe8f2f9dc8f6ba503e615b34fa\">hal_tdm_output_vblank_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf6465053634aaf823bad96e1af13d048\">hal_tdm_output<\/a> *output, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The vblank handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | output | The pointer of output. |\n| --- | --- | --- |\n| [in] | sequence | The number of frame used as sequence. |\n| [in] | tv_sec | The second of time when vsync is occurred. |\n| [in] | tv_usec | The micro second of time when vsync is occurred. |\n| [in] | user_data | The user data. |<\/p>\n<p><strong>See also:<\/strong>\n: output_set_vblank_handler() function of <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga6685bd5bfa3a36fad00f752fce944c60\" title=\"The structure type of the TDM HAL's display functions for backend.\">hal_tdm_display_funcs<\/a><\/p>\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__TDM__MODULE.md#struct__hal__tdm__pos\">_hal_tdm_pos<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf7836d7e2e07f1b1eb26eb1ec693333d\">hal_tdm_pos<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The position structure.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm pp object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga95dd82bb3cf1b0b3303bedf421aff60f\">hal_tdm_pp_done_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga0bc767798aabb5345408517fb91097c4\">hal_tdm_pp<\/a> *pp, tbm_surface_h src, tbm_surface_h dst, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The done handler of the pp object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | pp | The pointer of post-processing object. |\n| --- | --- | --- |\n| [in] | src | The source handle of tbm_surface. |\n| [in] | dst | The destination handle of tbm_surface. |\n| [in] | user_data | The user data. |<\/p>\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__TDM__MODULE.md#struct__hal__tdm__pp__funcs\">_hal_tdm_pp_funcs<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaeff9cc8f4d406ac212a0a94ecccc2f63\">hal_tdm_pp_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's post-processing functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>See also:<\/strong>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__pp__funcs\" title=\"The structure type of the TDM HAL's post-processing functions for backend.\">_hal_tdm_pp_funcs<\/a><\/p>\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__TDM__MODULE.md#struct__hal__tdm__prop\">_hal_tdm_prop<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gad4053c769b1c17949d8799678b16517f\">hal_tdm_prop<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The property structure of tdm.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__region\">_hal_tdm_region<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga232e46aa8c6e6836e30c919154c3165c\">hal_tdm_region<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The region structure.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__size\">_hal_tdm_size<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga3b03b1f44150880e99967bc3b0b30729\">hal_tdm_size<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The size structure.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga29dc90c62814dcd6b11c6db48bca0c81\">hal_tdm_vblank<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm vblank object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf53d741afe50f0bb9cf6d1d71e05b130\">hal_tdm_vblank_create_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga29dc90c62814dcd6b11c6db48bca0c81\">hal_tdm_vblank<\/a> *vblank, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The create handler of the vblank object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | vblank | The pointer of vblank object. |\n| --- | --- | --- |\n| [in] | user_data | The user data. |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm voutput object.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 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 void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae1f8d1d344922f2b4d9e10a643b3a530\">hal_tdm_voutput_commit_func<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, tbm_surface_h buffer)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The voutput commit function.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | voutput | The number of frame used as sequence. |\n| --- | --- | --- |\n| [in] | buffer | The handle of tbm_surface. |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef void(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga80519ff48f772d8cdc71235b0a628fdb\">hal_tdm_voutput_commit_handler<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga25f01fa801e5a933554c2f5ef0a7e3e9\">hal_tdm_voutput<\/a> *voutput, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The voutput commit handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | hwc | The pointer of hwc object. |\n| --- | --- | --- |\n| [in] | voutput | The number of frame used as sequence. |\n| [in] | tv_sec | The second of time when hwc's commit is occurred. |\n| [in] | tv_usec | The micro second of time when hwc's commit is occurred. |\n| [in] | user_data | The user data. |<\/p>\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__TDM__MODULE.md#struct__hal__tdm__voutput__funcs\">_hal_tdm_voutput_funcs<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gab3d8eccfb091f5da2f9d38dde6cccd2a\">hal_tdm_voutput_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the TDM HAL's virtual output functions for backend.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>See also:<\/strong>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#struct__hal__tdm__voutput__funcs\" title=\"The structure type of the TDM HAL's virtual output functions for backend.\">_hal_tdm_voutput_funcs<\/a><\/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__TDM__MODULE.md#gab7d11c9672aeeb705e9504f02cfb2d50\">hal_tdm_capture_capability<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capture capability enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>The scale, transform and CSC functionalities seem the default functions of capture. If hardware device doesn't support one of them, we'd better let the developer know what the backend doesn't support like <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gga661ef21cde703b776696d42014c8db77ab22dafb0654afef728803b9d394df8dd\">HAL_TDM_PP_CAPABILITY_NO_CSC<\/a>.<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_CAPTURE_CAPABILITY_OUTPUT<\/em> | The capture device supports to dump the output |\n| --- | --- |\n| <em>HAL_TDM_CAPTURE_CAPABILITY_ONESHOT<\/em> | The capture device supports oneshot dump |\n| <em>HAL_TDM_CAPTURE_CAPABILITY_STREAM<\/em> | The capture device supports stream dump |<\/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__TDM__MODULE.md#ga69ed97c23592595ba864aaeaa80676bf\">hal_tdm_capture_type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The capture type enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_CAPTURE_TYPE_ONESHOT<\/em> | The oneshot capture |\n| --- | --- |\n| <em>HAL_TDM_CAPTURE_TYPE_STREAM<\/em> | The stream capture |<\/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__TDM__MODULE.md#ga662c43f4604705b9fb187627caa8f095\">hal_tdm_display_capability<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The display capability enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_DISPLAY_CAPABILITY_PP<\/em> | The flag about hardware supports post-processing operation |\n| --- | --- |\n| <em>HAL_TDM_DISPLAY_CAPABILITY_CAPTURE<\/em> | The flag about hardware supports capture operation |<\/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__TDM__MODULE.md#ga1d03bbce5af3ec9912cdaea2c7edf762\">hal_tdm_error<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The error enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_ERROR_NONE<\/em> | none |\n| --- | --- |\n| <em>HAL_TDM_ERROR_BAD_REQUEST<\/em> | bad request |\n| <em>HAL_TDM_ERROR_OPERATION_FAILED<\/em> | operation failed |\n| <em>HAL_TDM_ERROR_INVALID_PARAMETER<\/em> | wrong input parameter |\n| <em>HAL_TDM_ERROR_PERMISSION_DENIED<\/em> | access denied |\n| <em>HAL_TDM_ERROR_BUSY<\/em> | hardware resource busy |\n| <em>HAL_TDM_ERROR_OUT_OF_MEMORY<\/em> | no free memory |\n| <em>HAL_TDM_ERROR_BAD_MODULE<\/em> | bad backend module |\n| <em>HAL_TDM_ERROR_NOT_IMPLEMENTED<\/em> | not implemented |\n| <em>HAL_TDM_ERROR_NO_CAPABILITY<\/em> | no capability |\n| <em>HAL_TDM_ERROR_DPMS_OFF<\/em> | dpms off |\n| <em>HAL_TDM_ERROR_OUTPUT_DISCONNECTED<\/em> | output disconnected |\n| <em>HAL_TDM_ERROR_PROTOCOL_ERROR<\/em> | protocol error |\n| <em>HAL_TDM_ERROR_TIMEOUT<\/em> | timeout |\n| <em>HAL_TDM_ERROR_NO_MODULE<\/em> | no backend module |<\/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__TDM__MODULE.md#gacd4c8a4b9b9eaf6bd28fb084bee2e833\">hal_tdm_event_loop_mask<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The mask of hal_tdm_event_loop_fd_handler.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>See also:<\/strong>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gaf88a08eac329064a0ffde1a38871ca06\" title=\"The event_loop_fd handler.\">hal_tdm_event_loop_fd_handler<\/a>\n: <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gae8b67f2dd27fcf40aeb4ce8d30946ba4\" title=\"The structure for event source information.\">hal_tdm_event_source<\/a><\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_EVENT_LOOP_READABLE<\/em> | The mask for READABLE event |\n| --- | --- |\n| <em>HAL_TDM_EVENT_LOOP_WRITABLE<\/em> | The mask for WRITABLE event |\n| <em>HAL_TDM_EVENT_LOOP_HANGUP<\/em> | The mask for HANGUP event |\n| <em>HAL_TDM_EVENT_LOOP_ERROR<\/em> | The mask for ERROR event |<\/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__TDM__MODULE.md#ga92d84c3a607ae402c84430fc6aed87bf\">hal_tdm_hwc_capability<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The hwc video capability enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_HWC_CAPABILITY_VIDEO_STREAM<\/em> | The capability about the hwc has video stream capability |\n| --- | --- |\n| <em>HAL_TDM_HWC_CAPABILITY_VIDEO_SCALE<\/em> | The capability about the hwc allows to scale the video buffer |\n| <em>HAL_TDM_HWC_CAPABILITY_VIDEO_TRANSFORM<\/em> | The capability about the hwc allows video to transform the video buffer |\n| <em>HAL_TDM_HWC_CAPABILITY_VIDEO_SCANOUT<\/em> | The capability about the hwc allows video to accept the scanout buffer only |\n| <em>HAL_TDM_HWC_CAPABILITY_FENCE<\/em> | The capability about the hwc allows fence |<\/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__TDM__MODULE.md#gaff049053f578957d7654aa0d9475a344\">hal_tdm_hwc_commit_interval<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>HWC's composition interval.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_HWC_COMMIT_INTERVAL_NONE<\/em> | Default interval of HWC's composition. |\n| --- | --- |\n| <em>HAL_TDM_HWC_COMMIT_INTERVAL_VBLANK<\/em> | If this interval is set by tdm backend, the compositor call commit per vblank even if the handler of commit isn't called. |<\/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__TDM__MODULE.md#gaf75c8b3c74dfbf62c681c9d4e88c8396\">hal_tdm_hwc_window_composition<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Possible composition types for the given window.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_HWC_WIN_COMPOSITION_NONE<\/em> | The composition type for an invisible window. The value by default. The backend ignores windows of this type. |\n| --- | --- |\n| <em>HAL_TDM_HWC_WIN_COMPOSITION_CLIENT<\/em> | The composition type for an window to be compsoited by the client. When the client sets this composition type, the backend MUST NOT modify this composition type into other types. When the backend changes TDM_HWC_WIN_COMPOSITION_DEVICE or TDM_HWC_WIN_COMPOSITION_CURSOR to this composition type at the time of tdm_hwc_validate and tdm_hwc_get_changed_composition_types, the client has to composite this window with gl or other drawing operations. |\n| <em>HAL_TDM_HWC_WIN_COMPOSITION_DEVICE<\/em> | The composition type for an window to be set to the hw overlay. The client sets this composition type to the visible windows before requesting the tdm_hwc_validate. Nomally, the backend leave it if the backend sets the window to the hw overlay. If the backend does not set the window to the hw overlay at the time of tdm_hwc_validate, the backend changes the composition type of the window into TDM_HWC_WIN_COMPOSITION_CLIENT. |\n| <em>HAL_TDM_HWC_WIN_COMPOSITION_CURSOR<\/em> | The composition type for an window to be set to the cursor hw overlay. The client sets this composition type to the cursor window before requesting the tdm_hwc_validate. If the backend does not support the cursor hw overlay, the backend can change the comopsition type into the TDM_HWC_WIN_COMPOSITION_CLIENT. |\n| <em>HAL_TDM_HWC_WIN_COMPOSITION_VIDEO<\/em> | The composition type for an window to be set to the video hw overlay. The client sets this composition type to the video window before requesting the tdm_hwc_validate. If the backend does not support the video hw overlay, the backend can change the comopsition type into the TDM_HWC_WIN_COMPOSITION_CLIENT. Normally, this VIDEO window displays under the primary hw overlayer of the output. |<\/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__TDM__MODULE.md#ga57b5a0e7863122347d7ed45301f62f79\">hal_tdm_hwc_window_constraint<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>HWC's composition mode for specific buffer.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_HWC_WIN_CONSTRAINT_NONE<\/em> | Default mode of HWC's composition. |\n| --- | --- |\n| <em>HAL_TDM_HWC_WIN_CONSTRAINT_BUFFER_QUEUE<\/em> | If the client needs to render to the specific buffer for compositing with TDM_HWC_WIN_COMPOSITION_DEVICE, the backend needs to set TDM_HWC_WIN_CONSTRAINT_BUFFER_QUEUE to hwc_window until the hwc_window is not TDM_HWC_WIN_COMPOSITION_DEVICE. The client gets the tbm_surface_queue_h through the tdm_hwc_window_acquire_buffer_queue. It will render the frames on the buffers which gets from the tbm_surface_queue_h. |<\/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__TDM__MODULE.md#ga7904b6c0840afdb498e65d466b92c21a\">hal_tdm_output_capability<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output capability enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>If the backend module provides <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gga7904b6c0840afdb498e65d466b92c21aa9b3e478cb15b7629747a39c63aa71d36\">HAL_TDM_OUTPUT_CAPABILITY_EXTENDED_DPMS<\/a>, we can set an extended DPMS mode to an output which the backend module supports. Don't use the low-4bit for an extended DPMS mode value. It's used for default DPMS modes.<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_OUTPUT_CAPABILITY_ASYNC_DPMS<\/em> | The capability about output supports asynchronous DPMS operation |\n| --- | --- |\n| <em>HAL_TDM_OUTPUT_CAPABILITY_HWC<\/em> | The capability about output supports hwc operation |\n| <em>HAL_TDM_OUTPUT_CAPABILITY_EXTENDED_DPMS<\/em> | The capability about output supports extended DPMS operation |\n| <em>HAL_TDM_OUTPUT_CAPABILITY_MIRROR<\/em> | The capability about output supports the displaying mirror image of the src_output |\n| <em>HAL_TDM_OUTPUT_CAPABILITY_NO_HW_VBLANK<\/em> | The capability about output doesn't support hw vblank |<\/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__TDM__MODULE.md#ga9214a1e38cc40f3c290bbdb76143712e\">hal_tdm_output_change_type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output change enumeration of <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#ga9a9170121642f72afc62a20f38e92f16\" title=\"The output change handler.\">hal_tdm_output_change_handler<\/a>.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_OUTPUT_CHANGE_CONNECTION<\/em> | The type of connection is changed |\n| --- | --- |\n| <em>HAL_TDM_OUTPUT_CHANGE_DPMS<\/em> | The type of dpms is changed |<\/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__TDM__MODULE.md#gae89f32424fc5915e44c05d6fe38db134\">hal_tdm_output_conn_status<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output connection status enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_OUTPUT_CONN_STATUS_DISCONNECTED<\/em> | The output is disconnected |\n| --- | --- |\n| <em>HAL_TDM_OUTPUT_CONN_STATUS_CONNECTED<\/em> | The output is connected |\n| <em>HAL_TDM_OUTPUT_CONN_STATUS_MODE_SETTED<\/em> | The output is connected and set the mode |<\/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__TDM__MODULE.md#ga1c4331bf80d727c95c128521bec9236d\">hal_tdm_output_dpms<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The DPMS enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>bit compatible with the libdrm definitions.<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_OUTPUT_DPMS_ON<\/em> | On, Vsync On |\n| --- | --- |\n| <em>HAL_TDM_OUTPUT_DPMS_STANDBY<\/em> | StandBy, Vsync On |\n| <em>HAL_TDM_OUTPUT_DPMS_SUSPEND<\/em> | Suspend, Vsync Off |\n| <em>HAL_TDM_OUTPUT_DPMS_OFF<\/em> | Off, Vsync Off |\n| <em>HAL_TDM_OUTPUT_DPMS_AOD<\/em> | AOD, Vsync On, extended DPMS mode |<\/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__TDM__MODULE.md#gabcf50c9efe0566f6bc28c0c8dfa99797\">hal_tdm_output_mode_flag<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output mode flag enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>bit compatible with the libdrm definitions.<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_OUTPUT_MODE_FLAG_PHSYNC<\/em> | DRM_MODE_FLAG_PHSYNC : horizontal sync is active high. |\n| --- | --- |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_NHSYNC<\/em> | DRM_MODE_FLAG_NHSYNC : horizontal sync is active low. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_PVSYNC<\/em> | DRM_MODE_FLAG_PVSYNC : vertical sync is active high. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_NVSYNC<\/em> | DRM_MODE_FLAG_NVSYNC : vertical sync is active low. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_INTERLACE<\/em> | DRM_MODE_FLAG_INTERLACE : mode is interlaced. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_DBLSCAN<\/em> | DRM_MODE_FLAG_DBLSCAN : mode uses doublescan. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_CSYNC<\/em> | DRM_MODE_FLAG_CSYNC : mode uses composite sync. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_PCSYNC<\/em> | DRM_MODE_FLAG_PCSYNC : composite sync is active high. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_NCSYNC<\/em> | DRM_MODE_FLAG_NCSYNC : composite sync is active low. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_HSKEW<\/em> | DRM_MODE_FLAG_HSKEW : hskew provided. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_BCAST<\/em> | DRM_MODE_FLAG_BCAST : <strong><a href=https://samsungtizenos.com/"deprecated.md#_deprecated000017\">Deprecated:<\/a><\/strong> Deprecated since HAL_MODULE_TDM 1.0 |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_PIXMUX<\/em> | DRM_MODE_FLAG_PIXMUX : <strong><a href=https://samsungtizenos.com/"deprecated.md#_deprecated000018\">Deprecated:<\/a><\/strong> Deprecated since HAL_MODULE_TDM 1.0 |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_DBLCLK<\/em> | DRM_MODE_FLAG_DBLCLK : double-clocked mode. |\n| <em>HAL_TDM_OUTPUT_MODE_FLAG_CLKDIV2<\/em> | DRM_MODE_FLAG_CLKDIV2 : half-clocked mode. |<\/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__TDM__MODULE.md#gace4720776333355f9792040f6f08f4a7\">hal_tdm_output_mode_type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output mode type enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>bit compatible with the libdrm definitions.<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_OUTPUT_MODE_TYPE_BUILTIN<\/em> | DRM_MODE_TYPE_BUILTIN |\n| --- | --- |\n| <em>HAL_TDM_OUTPUT_MODE_TYPE_CLOCK_C<\/em> | DRM_MODE_TYPE_CLOCK_C |\n| <em>HAL_TDM_OUTPUT_MODE_TYPE_CRTC_C<\/em> | DRM_MODE_TYPE_CRTC_C |\n| <em>HAL_TDM_OUTPUT_MODE_TYPE_PREFERRED<\/em> | DRM_MODE_TYPE_PREFERRED |\n| <em>HAL_TDM_OUTPUT_MODE_TYPE_DEFAULT<\/em> | DRM_MODE_TYPE_DEFAULT |\n| <em>HAL_TDM_OUTPUT_MODE_TYPE_USERDEF<\/em> | DRM_MODE_TYPE_USERDEF |\n| <em>HAL_TDM_OUTPUT_MODE_TYPE_DRIVER<\/em> | DRM_MODE_TYPE_DRIVER |<\/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__TDM__MODULE.md#ga547d7f99efa568c4be0adef89d5e3f44\">hal_tdm_output_type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The output connection status enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>bit compatible with the libdrm definitions.<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_OUTPUT_TYPE_Unknown<\/em> | unknown |\n| --- | --- |\n| <em>HAL_TDM_OUTPUT_TYPE_VGA<\/em> | VGA connection |\n| <em>HAL_TDM_OUTPUT_TYPE_DVII<\/em> | DVII connection |\n| <em>HAL_TDM_OUTPUT_TYPE_DVID<\/em> | DVID connection |\n| <em>HAL_TDM_OUTPUT_TYPE_DVIA<\/em> | DVIA connection |\n| <em>HAL_TDM_OUTPUT_TYPE_Composite<\/em> | Composite connection |\n| <em>HAL_TDM_OUTPUT_TYPE_SVIDEO<\/em> | SVIDEO connection |\n| <em>HAL_TDM_OUTPUT_TYPE_LVDS<\/em> | LVDS connection |\n| <em>HAL_TDM_OUTPUT_TYPE_Component<\/em> | Component connection |\n| <em>HAL_TDM_OUTPUT_TYPE_9PinDIN<\/em> | 9PinDIN connection |\n| <em>HAL_TDM_OUTPUT_TYPE_DisplayPort<\/em> | DisplayPort connection |\n| <em>HAL_TDM_OUTPUT_TYPE_HDMIA<\/em> | HDMIA connection |\n| <em>HAL_TDM_OUTPUT_TYPE_HDMIB<\/em> | HDMIB connection |\n| <em>HAL_TDM_OUTPUT_TYPE_TV<\/em> | TV connection |\n| <em>HAL_TDM_OUTPUT_TYPE_eDP<\/em> | eDP connection |\n| <em>HAL_TDM_OUTPUT_TYPE_VIRTUAL<\/em> | Virtual connection for WiFi Display |\n| <em>HAL_TDM_OUTPUT_TYPE_DSI<\/em> | DSI connection |<\/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__TDM__MODULE.md#ga661ef21cde703b776696d42014c8db77\">hal_tdm_pp_capability<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The PP(post-processing) capability enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p>The scale, transform and CSC functionalities seem the default functions of PP. If hardware device doesn't support one of them, we'd better let the developer know what the backend doesn't support like <a href=https://samsungtizenos.com/"group__HALAPI__HAL__TDM__MODULE.md#gga661ef21cde703b776696d42014c8db77ab22dafb0654afef728803b9d394df8dd\">HAL_TDM_PP_CAPABILITY_NO_CSC<\/a>.<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_PP_CAPABILITY_SYNC<\/em> | The post-processing device supports synchronous operation |\n| --- | --- |\n| <em>HAL_TDM_PP_CAPABILITY_ASYNC<\/em> | The post-processing device supports asynchronous operation |\n| <em>HAL_TDM_PP_CAPABILITY_SCANOUT<\/em> | The post-processing device supports only scanout buffer |\n| <em>HAL_TDM_PP_CAPABILITY_NO_CSC<\/em> | The post-processing device doesn't support Color Space Conversion |\n| <em>HAL_TDM_PP_CAPABILITY_NO_TRANSFORM_ROTATION<\/em> | The post-processing device doesn't support rotation transform |<\/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__TDM__MODULE.md#ga22cde5c32061e36550d4f201de9a642b\">hal_tdm_transform<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The transform enumeration(rotate, flip)<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_TRANSFORM_NORMAL<\/em> | no transform |\n| --- | --- |\n| <em>HAL_TDM_TRANSFORM_90<\/em> | rotate 90 degrees clockwise |\n| <em>HAL_TDM_TRANSFORM_180<\/em> | rotate 180 degrees clockwise |\n| <em>HAL_TDM_TRANSFORM_270<\/em> | rotate 270 degrees clockwise |\n| <em>HAL_TDM_TRANSFORM_FLIPPED<\/em> | no rotate and horizontal flip |\n| <em>HAL_TDM_TRANSFORM_FLIPPED_90<\/em> | rotate 90 degrees clockwise and horizontal flip |\n| <em>HAL_TDM_TRANSFORM_FLIPPED_180<\/em> | rotate 180 degrees clockwise and horizontal flip |\n| <em>HAL_TDM_TRANSFORM_FLIPPED_270<\/em> | rotate 270 degrees clockwise and horizontal flip |<\/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__TDM__MODULE.md#ga949993aa4e596124926516e6d9182a19\">hal_tdm_value_type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The tdm value type enumeration.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_TDM 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_TDM_VALUE_TYPE_UNKNOWN<\/em> | The unknown type of value for variable |\n| --- | --- |\n| <em>HAL_TDM_VALUE_TYPE_PTR<\/em> | The pointer type of value for variable |\n| <em>HAL_TDM_VALUE_TYPE_INT32<\/em> | The 32bit integer type of value for variable |\n| <em>HAL_TDM_VALUE_TYPE_UINT32<\/em> | The 32bit unsigned integer type of value for variable |\n| <em>HAL_TDM_VALUE_TYPE_INT64<\/em> | The 64bit integer type of value for variable |\n| <em>HAL_TDM_VALUE_TYPE_UINT64<\/em> | The 64bit unsigned integer type of value for variable |<\/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-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-field-documentation-15\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-16\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-17\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-18\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-19\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-20\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-21\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-22\">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: TDM","raw":null},{"class":"App\\Services\\Documentation\\Data\\RenderedMarkdown","s":"wrbl"}]},"memo":{"id":"3zSvQgVFjwPjAk4Y4aSa","name":"documentation::article","path":"docs\/platform\/hal\/api\/1.0.0\/group__HALAPI__HAL__TDM__MODULE","method":"GET","release":"a-a-a","children":[],"scripts":[],"assets":[],"lazyLoaded":false,"lazyIsolated":true,"errors":[],"locale":"en","islands":[]},"checksum":"958127e06a1be26b2c656d20a97e4f87026fcf651bf4b37f80c82258e876e4f2"}" wire:effects="[]" wire:id="3zSvQgVFjwPjAk4Y4aSa" wire:name="documentation::article" x-init="$wire.__lazyLoad('eyJkYXRhIjp7ImZvck1vdW50IjpbeyJtYXJrZG93biI6W3siYm9keSI6IjxoMSBpZD1cImNvbnRlbnQtdGl6ZW4taGFsLWFwaS10ZG1cIj48YSBocmVmPVwiI2NvbnRlbnQtdGl6ZW4taGFsLWFwaS10ZG1cIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlRpemVuIEhBTCBBUEk6IFRETTxcL2gxPjxkaXYgZGF0YS1rbm93bGVkZ2UtYmFzZS1tZXRhZGF0YT48XC9kaXY+XG48aHIgXC8+XG48cD5UaGUgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWRcIj5URE08XC9hPiBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGRpc3BsYXkgc2VydmVyLjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXJlcXVpcmVkLWhlYWRlclwiPjxhIGhyZWY9XCIjY29udGVudC1yZXF1aXJlZC1oZWFkZXJcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlJlcXVpcmVkIEhlYWRlcjxcL2gyPlxuPHA+I2luY2x1ZGUgJmx0O2hhbC10ZG0uaCZndDs8XC9wPlxuPGgyIGlkPVwiY29udGVudC1vdmVydmlld1wiPjxhIGhyZWY9XCIjY29udGVudC1vdmVydmlld1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+T3ZlcnZpZXc8XC9oMj5cbjxwPlRoZSBURE0gZnVuY3Rpb25zIHByb3ZpZGVzIGFuIGFic3RyYWN0aW9uIGludGVyZmFjZSBmb3IgZGlzcGxheSBzZXJ2ZXIgaW5jbHVkaW5nOjxcL3A+XG48dWw+XG48bGk+RGlzcGxheSBzZXJ2ZXIgaW50ZXJmYWNlIHRvIHVzZXIgbGlrZSBnZXR0aW5nIGRpc3BsYXkgY2FwYWJpbGl0aWVzLCBzaXplLCBmb3JtYXQuPFwvbGk+XG48bGk+RGlzcGxheSBjb250cm9sIGludGVyZmFjZSBsaWtlIGRpc3BsYXkgbW9kZSBzZXR0aW5nLCBkcG1zLCBjYXB0dXJlLjxcL2xpPlxuPFwvdWw+XG48cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgVERNIGZlYXR1cmVzIGFuZCB0aGUgbWFjcm9zLCBzZWUgSEFMIFRETSBwcm9ncmFtbWluZyBndWlkZXMgYW5kIHR1dG9yaWFscy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+VHlwZWRlZnM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19iYWNrZW5kX19kYXRhXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyYWQ1MDExNjRiNThlYWIwMzgzMjAzMWUzM2FhN2NjXCI+aGFsX3RkbV9iYWNrZW5kX2RhdGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSB0ZG0gYmFja2VuZCBkYXRhLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19kaXNwbGF5X19mdW5jc1wiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjY4NWJkNWJmYTNhMzZmYWQwMGY3NTJmY2U5NDRjNjBcIj5oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgZGlzcGxheSBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX291dHB1dF9fZnVuY3NcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMTBiZDc0MGJiNjZjYjI2MGQyNzFkNjVlZDMyMmRiMTVcIj5oYWxfdGRtX291dHB1dF9mdW5jczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBvdXRwdXQgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX19mdW5jc1wiPl9oYWxfdGRtX2h3Y19mdW5jczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1NTFjMmYyODFmNmE5NGQxMzE4MTc2NzI0NjNjNWZlZFwiPmhhbF90ZG1faHdjX2Z1bmNzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGh3YyBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2h3Y19fd2luZG93X19mdW5jc1wiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGFkOTFiOTg5ODc0NzgyYzUzYjVjMzkzOGFjYzc2YzNcIj5oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgaHdjIHdpbmRvdyBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19wcF9fZnVuY3NcIj5faGFsX3RkbV9wcF9mdW5jczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlZmY5Y2M4ZjRkNDA2YWMyMTJhMGE5NGVjY2NjMmY2M1wiPmhhbF90ZG1fcHBfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgcG9zdC1wcm9jZXNzaW5nIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fY2FwdHVyZV9fZnVuY3NcIj5faGFsX3RkbV9jYXB0dXJlX2Z1bmNzPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFiMDAzMzU4NWY5ZGQ5YmRlODBiMDEyMzg5NzBmOThlXCI+aGFsX3RkbV9jYXB0dXJlX2Z1bmNzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGNhcHR1cmUgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX192b3V0cHV0X19mdW5jc1wiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjNkOGVjY2ZiMDkxZjVkYTJmOWQzOGRkZTZjY2NkMmFcIj5oYWxfdGRtX3ZvdXRwdXRfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgdmlydHVhbCBvdXRwdXQgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTQ1OTM0YzczM2ZiYTYxOTc1MWM0NTI0ZmE3ZTk2Y2M2XCI+aGFsX3RkbV9tYXN0ZXJfZHJtX2ZkX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWZmMjhjMmE2OTkyMDQwY2I3ZTkzNzQzM2RmMGQ0MjFcIj5oYWxfdGRtX2ZkPFwvYT4gbWFzdGVyX2RybV9mZCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIG1hc3Rlcl9kcm1fZmQgdG8gYmFja2VuZC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3NpemVcIj5faGFsX3RkbV9zaXplPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiMDNiMWY0NDE1MDg4MGU5OTk2N2JjM2IwYjMwNzI5XCI+aGFsX3RkbV9zaXplPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBzaXplIHN0cnVjdHVyZS48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3Bvc1wiPl9oYWxfdGRtX3BvczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzgzNmQ3ZTJlMDdmMWIxZWIyNmViMWVjNjkzMzMzZFwiPmhhbF90ZG1fcG9zPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBwb3NpdGlvbiBzdHJ1Y3R1cmUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX2Rpc3BsYXlcIj5faGFsX3RkbV9jYXBzX2Rpc3BsYXk8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVkNDZiOGMxODQ5MmMyNTBmNzZlOTM0NGI2YTQ0NWJcIj5oYWxfdGRtX2NhcHNfZGlzcGxheTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgZGlzcGxheSBjYXBhYmlsaXR5IHN0cnVjdHVyZSBmb3IgQ0FQVFVSRS48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX291dHB1dF9fbW9kZVwiPl9oYWxfdGRtX291dHB1dF9tb2RlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgb3V0cHV0IG1vZGUgc3RydWN0dXJlIGNvbXBhdGlibGUgd2l0aCBkcm1fbW9kZV9tb2RlaW5mbyBpbiBkcm0tdWFwaS48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3Byb3BcIj5faGFsX3RkbV9wcm9wPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWQ0MDUzYzc2OWIxYzE3OTQ5ZDg3OTk2NzhiMTY1MTdmXCI+aGFsX3RkbV9wcm9wPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBwcm9wZXJ0eSBzdHJ1Y3R1cmUgb2YgdGRtLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faW5mb19fY29uZmlnXCI+X2hhbF90ZG1faW5mb19jb25maWc8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjliYmU0ZThlYTViYTA2NWJhOTFiMGE0YTE5NGQwZTlcIj5oYWxfdGRtX2luZm9fY29uZmlnPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBpbmZvIGNvbmZpZyBzdHJ1Y3R1cmUgZm9yIHdpbmRvdywgbGF5ZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19yZWdpb25cIj5faGFsX3RkbV9yZWdpb248XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjMyZTQ2YWE4YzZlNjgzNmUzMGM5MTkxNTRjMzE2NWNcIj5oYWxfdGRtX3JlZ2lvbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgcmVnaW9uIHN0cnVjdHVyZS48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX193aW5kb3dfX2luZm9cIj5faGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTE1N2U5NmI3YzU5YzU1OTdjYmExOWU3N2RkZjljZWFcIj5oYWxfdGRtX2h3Y193aW5kb3dfaW5mbzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgaHdjIHdpbmRvdyBpbmZvIHN0cnVjdHVyZSB0byBjb21wb3NpdGUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19pbmZvX19wcFwiPl9oYWxfdGRtX2luZm9fcHA8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYzE3ZTdjYjlhMzYwY2UxM2RiNTg5MjYwZDEwNzc0YzdcIj5oYWxfdGRtX2luZm9fcHA8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGluZm9ybWF0aW9uIHN0cnVjdHVyZSB0byB1c2UgcG9zdC1wcm9jZXNzaW5nLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19pbmZvX19jYXB0dXJlXCI+X2hhbF90ZG1faW5mb19jYXB0dXJlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYThkNDU2Y2I0NjUxZmVjYWQ1MzU3ZDVmNDNhYmM2MWIyXCI+aGFsX3RkbV9pbmZvX2NhcHR1cmU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGNhcHR1cmUgaW5mbyBzdHJ1Y3R1cmUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWZmMjhjMmE2OTkyMDQwY2I3ZTkzNzQzM2RmMGQ0MjFcIj5oYWxfdGRtX2ZkPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSB0ZG0gZmQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSB0ZG0gZGlzcGxheSBvYmplY3QuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTMzNTE1ZTU5ZGM1MzQ4ODYxZjc3YWFiNjc0ZGZlMDc0XCI+aGFsX3RkbV9tb2R1bGU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHRkbSBiYWNrZW5kIG9iamVjdC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgdGRtIG91dHB1dCBvYmplY3QuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSB0ZG0gdm91dHB1dCBvYmplY3QuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHRkbSBod2Mgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgdGRtIGh3YyB3aW5kb3cgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgdGRtIGNhcHR1cmUgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHRkbSBwcCBvYmplY3QuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI5ZGM5MGM2MjgxNGRjZDZiMTFjNmRiNDhiY2EwYzgxXCI+aGFsX3RkbV92Ymxhbms8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHRkbSB2Ymxhbmsgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2MjliZGU5MjI2ZmY4NGE2NGY5YTA3NjBlMTIxODlmNFwiPmhhbF90ZG1fYmFja2VuZDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgdGRtIGJhY2tlbmQgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY4OGEwOGVhYzMyOTA2NGEwZmZkZTFhMzg4NzFjYTA2XCI+aGFsX3RkbV9ldmVudF9sb29wX2ZkX2hhbmRsZXI8XC9hPiApKGludCBldmVudF9mZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FjZDRjOGE0YjliOWVhZjZiZDI4ZmIwODRiZWUyZTgzM1wiPmhhbF90ZG1fZXZlbnRfbG9vcF9tYXNrPFwvYT4gbWFzaywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGV2ZW50X2xvb3BfZmQgaGFuZGxlci48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZWQ3YmQ0MDAxYWYzOTcwMDkwNjI1OWVlYWNhZjlkNVwiPmhhbF90ZG1fb3V0cHV0X2NyZWF0ZV9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRweSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIG91dHB1dCBjcmVhdGUgaGFuZGxlci48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MmE0YmVjM2U1ZTE3OGEyYTAzNGRkNmU1MDUxYzdiOFwiPmhhbF90ZG1fb3V0cHV0X2Rlc3Ryb3lfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIG91dHB1dCBkZXN0cm95IGhhbmRsZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWE5MTcwMTIxNjQyZjcyYWZjNjJhMjBmMzhlOTJmMTZcIj5oYWxfdGRtX291dHB1dF9jaGFuZ2VfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5MjE0YTFlMzhjYzQwZjNjMjkwYmJkYjc2MTQzNzEyZVwiPmhhbF90ZG1fb3V0cHV0X2NoYW5nZV90eXBlPFwvYT4gdHlwZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBvdXRwdXQgY2hhbmdlIGhhbmRsZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTlmYTBiYmU4ZjJmOWRjOGY2YmE1MDNlNjE1YjM0ZmFcIj5oYWxfdGRtX291dHB1dF92YmxhbmtfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdW5zaWduZWQgaW50IHNlcXVlbmNlLCB1bnNpZ25lZCBpbnQgdHZfc2VjLCB1bnNpZ25lZCBpbnQgdHZfdXNlYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHZibGFuayBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4YTc2MWY0NjZjZDk3MDdlN2ViNGU3NDBhYWU2ZDc5XCI+aGFsX3RkbV9vdXRwdXRfY29tbWl0X2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBzZXF1ZW5jZSwgdW5zaWduZWQgaW50IHR2X3NlYywgdW5zaWduZWQgaW50IHR2X3VzZWMsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBvdXRwdXQgY29tbWl0IGhhbmRsZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzVmMmNjYTdjMzA3NDA1OTkxMmY5NzQ1ODI0YTBiOTlcIj5oYWxfdGRtX291dHB1dF9tb2RlX2NoYW5nZV9yZXF1ZXN0X2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBpbmRleCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIG91dHB1dCBtb2RlIGNoYW5nZSByZXF1ZXN0IGhhbmRsZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzVjNTA0MTdjZWJiZWZhZmUxN2RhYWRiNzllMTE1MjFcIj5oYWxfdGRtX291dHB1dF9zdGF0dXNfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlODlmMzI0MjRmYzU5MTVlNDRjMDVkNmZlMzhkYjEzNFwiPmhhbF90ZG1fb3V0cHV0X2Nvbm5fc3RhdHVzPFwvYT4gc3RhdHVzLCB2b2lkICp1c2VyX2RhdGEpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgb3V0cHV0IHN0YXR1cyBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3MTBiNjMyYjNkMWEwNmMyYzYzNDE5MWQzZDU1NjBmXCI+aGFsX3RkbV9vdXRwdXRfZHBtc19oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFjNDMzMWJmODBkNzI3Yzk1YzEyODUyMWJlYzkyMzZkXCI+aGFsX3RkbV9vdXRwdXRfZHBtczxcL2E+IGRwbXMsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBvdXRwdXQgZHBtcyBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTk1ZGQ4MmJiM2NmMWIwYjMzMDNiZWRmNDIxYWZmNjBmXCI+aGFsX3RkbV9wcF9kb25lX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGJjNzY3Nzk4YWFiYjUzNDU0MDg1MTdmYjkxMDk3YzRcIj5oYWxfdGRtX3BwPFwvYT4gKnBwLCB0Ym1fc3VyZmFjZV9oIHNyYywgdGJtX3N1cmZhY2VfaCBkc3QsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBkb25lIGhhbmRsZXIgb2YgdGhlIHBwIG9iamVjdC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZDkzZTVjYjI3NzUzNGE1ZjIyNGRjYzAyZjMyNjNjNFwiPmhhbF90ZG1fY2FwdHVyZV9kb25lX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgdGJtX3N1cmZhY2VfaCBidWZmZXIsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBkb25lIGhhbmRsZXIgb2YgdGhlIGNhcHR1cmUgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY1M2Q3NDFhZmU1MGYwYmI5Y2Y2ZDFkNzFlMDViMTMwXCI+aGFsX3RkbV92YmxhbmtfY3JlYXRlX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjlkYzkwYzYyODE0ZGNkNmIxMWM2ZGI0OGJjYTBjODFcIj5oYWxfdGRtX3ZibGFuazxcL2E+ICp2YmxhbmssIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBjcmVhdGUgaGFuZGxlciBvZiB0aGUgdmJsYW5rIG9iamVjdC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FiNmJkYTU2YjFkYjg0ZWUyZjIwZTgxMzlhZTg4NDJiYVwiPmhhbF90ZG1faHdjX2NvbW1pdF9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1bnNpZ25lZCBpbnQgc2VxdWVuY2UsIHVuc2lnbmVkIGludCB0dl9zZWMsIHVuc2lnbmVkIGludCB0dl91c2VjLCB2b2lkICp1c2VyX2RhdGEpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgaHdjIGNvbW1pdCBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTgwNTE5ZmY0OGY3NzJkOGNkYzcxMjM1YjBhNjI4ZmRiXCI+aGFsX3RkbV92b3V0cHV0X2NvbW1pdF9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQsIHVuc2lnbmVkIGludCBzZXF1ZW5jZSwgdW5zaWduZWQgaW50IHR2X3NlYywgdW5zaWduZWQgaW50IHR2X3VzZWMsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSB2b3V0cHV0IGNvbW1pdCBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWUxZjhkMWQzNDQ5MjJmMmI0ZDllMTBhNjQzYjNhNTMwXCI+aGFsX3RkbV92b3V0cHV0X2NvbW1pdF9mdW5jPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQsIHRibV9zdXJmYWNlX2ggYnVmZmVyKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHZvdXRwdXQgY29tbWl0IGZ1bmN0aW9uLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19ldmVudF9fc291cmNlXCI+X2hhbF90ZG1fZXZlbnRfc291cmNlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU4YjY3ZjJkZDI3ZmNmNDBhZWI0Y2U4ZDMwOTQ2YmE0XCI+aGFsX3RkbV9ldmVudF9zb3VyY2U8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSBmb3IgZXZlbnQgc291cmNlIGluZm9ybWF0aW9uLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fY2Fwc19fb3V0cHV0XCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzBjODZhYjFjOGYwZDRlZGM5MDU1NTJlMjk4OTMxNTVcIj5oYWxfdGRtX2NhcHNfb3V0cHV0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBzdHJ1Y3R1cmUgZm9yIG91dHB1dCdzIGNhcGFiaWxpdGllcy48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX3BwXCI+X2hhbF90ZG1fY2Fwc19wcDxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzZWYyYTdmZjNhNGJjYmU5ZDY3NmFhMmNmYjRiZTczOVwiPmhhbF90ZG1fY2Fwc19wcDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgc3RydWN0dXJlIGZvciBwb3N0LXByb2Nlc3NpbmcncyBjYXBhYmlsaXRpZXMuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX2NhcHR1cmVcIj5faGFsX3RkbV9jYXBzX2NhcHR1cmU8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNmNiYjkwNTY5M2VjMGI0NGE5NGI1ZmI5OTJkYzViOTJcIj5oYWxfdGRtX2NhcHNfY2FwdHVyZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgc3RydWN0dXJlIGZvciBjYXB0dXJlJ3MgY2FwYWJpbGl0aWVzLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+RGVmaW5lczxcL3RkPlxuPHRkPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+I2RlZmluZTxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjNjMGQxZGVjYWU2NTY1NTI2NGYxYzk5ZjZjYmM2MWVcIj5IQUxfVERNX05BTUVfTEVOPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA2NDxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+RGVmaW5pdGlvbiBvZiBNYXggTmFtZSBMZW5ndGggaW4gSEFMX1RETV9NT0RVTEUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD4jZGVmaW5lPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlNTkzZWFlNGZkNWE1YzkxZDlkY2Q1NmNiZmJmNTJjOVwiPkhBTF9URE1fUEFUSF9MRU48XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDEwMjQ8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPkRlZmluaXRpb24gb2YgTWF4IFBhdGggTGVuZ3RoIGluIEhBTF9URE1fTU9EVUxFLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+I2RlZmluZTxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMDZjNjgwYjMyMzJkMjMwMjIxNjc4Y2U4YTc0MzE3NDdcIj5IQUxfVERNX0VWRU5UX1NPVVJDRV9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPkRlZmluaXRpb24gb2YgTWF4IGNvdW50IG9mIGV2ZW50IHNvdXJjZSBpbiBIQUxfVERNX01PRFVMRS48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDIgaWQ9XCJjb250ZW50LWRhdGEtc3RydWN0dXJlLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtZGF0YS1zdHJ1Y3R1cmUtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RGF0YSBTdHJ1Y3R1cmUgRG9jdW1lbnRhdGlvbjxcL2gyPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2JhY2tlbmRfZGF0YTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgdGRtIGJhY2tlbmQgZGF0YS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTRhNWYwMjM1ZTI2NDBhYmFhZTY2YzBiYTMyYmJjOGU3XCI+ZGlzcGxheTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZDc2MjJlYWMyYWVhOTRkNzUxNTMxMGRhMzY4NGU3YmJcIj5oYXNfZHJtX2RldmljZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMDQ5ZDllZDRjMmU0YTVlZGMyNDA2YmY0ODU0OTgyYmJcIj5udW1fZXZlbnRfc291cmNlczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU4YjY3ZjJkZDI3ZmNmNDBhZWI0Y2U4ZDMwOTQ2YmE0XCI+aGFsX3RkbV9ldmVudF9zb3VyY2U8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTlhYjdhNDhlMTMzYTM2NWRhZmZlYTUxYzdlYTQ1NzZlXCI+ZXZlbnRfc291cmNlczxcL2E+IFszXTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2Njg1YmQ1YmZhM2EzNmZhZDAwZjc1MmZjZTk0NGM2MFwiPmhhbF90ZG1fZGlzcGxheV9mdW5jczxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYjRmNWYyMDhjYjY5ZTYwZDI1NWQwMzIxNWFhYTI2YmRcIj5kaXNwbGF5X2Z1bmNzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMTBiZDc0MGJiNjZjYjI2MGQyNzFkNjVlZDMyMmRiMTVcIj5oYWxfdGRtX291dHB1dF9mdW5jczxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMWMzZmI2ODk1M2JhZWY4YzJlYWM5NTQ4YTNmZmI4MmNcIj5vdXRwdXRfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1NTFjMmYyODFmNmE5NGQxMzE4MTc2NzI0NjNjNWZlZFwiPmhhbF90ZG1faHdjX2Z1bmNzPFwvYT4gKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiMDlmNGUyMTRlMzI5ZjU3NjIxMjdkY2EyNGY2MTE0YVwiPmh3Y19mdW5jczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBhZDkxYjk4OTg3NDc4MmM1M2I1YzM5MzhhY2M3NmMzXCI+aGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzPFwvYT4gKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1NTA3MzI5MTM2NDdkMTMyNTQ1MzJiZDUzZTZmYTUzMVwiPmh3Y193aW5kb3dfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlZmY5Y2M4ZjRkNDA2YWMyMTJhMGE5NGVjY2NjMmY2M1wiPmhhbF90ZG1fcHBfZnVuY3M8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgxNzQ2ZjUwNWZhNTU4YWMzMGQ1NmMxYmM5NjU2OTk2XCI+cHBfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYjAwMzM1ODVmOWRkOWJkZTgwYjAxMjM4OTcwZjk4ZVwiPmhhbF90ZG1fY2FwdHVyZV9mdW5jczxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjc2ZGJkNzdlMmRiNDI1NGY2ZWEyN2Y1MWFmNmZhYTdcIj5jYXB0dXJlX2Z1bmNzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjNkOGVjY2ZiMDkxZjVkYTJmOWQzOGRkZTZjY2NkMmFcIj5oYWxfdGRtX3ZvdXRwdXRfZnVuY3M8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWI0YjE2NzBjZTY2ZDI4Zjc0YjQ5ODI5NzVmZWE5MWM4XCI+dm91dHB1dF9mdW5jczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTlmZjI4YzJhNjk5MjA0MGNiN2U5Mzc0MzNkZjBkNDIxXCI+aGFsX3RkbV9mZDxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTE0ZjY0YTNkODJjZTVlNmZmODRlODQzYTE1OGFhNzI5XCI+ZHJtX2ZkPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExZmZiMzg0MTAyNDVkYTU2ODI2NGZjYjJlOTc1MzdiNlwiPmlzX21hc3RlcjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTQ1OTM0YzczM2ZiYTYxOTc1MWM0NTI0ZmE3ZTk2Y2M2XCI+aGFsX3RkbV9tYXN0ZXJfZHJtX2ZkX2hhbmRsZXI8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5Mjg4ZjM4NmM5NTRiN2E0ZDFiOWMzYTUxZTk0OWIwZFwiPm1hc3Rlcl9kcm1fZmRfZnVuYzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD52b2lkICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjc3NjhmZWZjYTkyNDExMjczMWVmZDY5MTNjODBiNjRcIj51c2VyX2RhdGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvblwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFiMDAzMzU4NWY5ZGQ5YmRlODBiMDEyMzg5NzBmOThlXCI+aGFsX3RkbV9jYXB0dXJlX2Z1bmNzPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyNzZkYmQ3N2UyZGI0MjU0ZjZlYTI3ZjUxYWY2ZmFhN1wiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6Y2FwdHVyZV9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Y2FwdHVyZSBmdW5jdGlvbnMgb2YgYmFja2VuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0YTVmMDIzNWUyNjQwYWJhYWU2NmMwYmEzMmJiYzhlN1wiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6ZGlzcGxheTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGhhbmRsZSBvZiBkaXNwbGF5PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjY4NWJkNWJmYTNhMzZmYWQwMGY3NTJmY2U5NDRjNjBcIj5oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPiogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWI0ZjVmMjA4Y2I2OWU2MGQyNTVkMDMyMTVhYWEyNmJkXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpkaXNwbGF5X2Z1bmNzPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5kaXNwbGF5IGZ1bmN0aW9ucyBvZiBiYWNrZW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWZmMjhjMmE2OTkyMDQwY2I3ZTkzNzQzM2RmMGQ0MjFcIj5oYWxfdGRtX2ZkPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTE0ZjY0YTNkODJjZTVlNmZmODRlODQzYTE1OGFhNzI5XCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpkcm1fZmQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkcm0gZmlsZSBkZXNjcmlwdG9yPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZThiNjdmMmRkMjdmY2Y0MGFlYjRjZThkMzA5NDZiYTRcIj5oYWxfdGRtX2V2ZW50X3NvdXJjZTxcL2E+KiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOWFiN2E0OGUxMzNhMzY1ZGFmZmVhNTFjN2VhNDU3NmVcIj5faGFsX3RkbV9iYWNrZW5kX2RhdGE6OmV2ZW50X3NvdXJjZXM8XC9hPlszXTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBldmVudCBzb3VyY2UgYXJyYXk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkNzYyMmVhYzJhZWE5NGQ3NTE1MzEwZGEzNjg0ZTdiYlwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6aGFzX2RybV9kZXZpY2U8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBmbGFnIG9mIGhhdmluZyBkcm0gZGV2aWNlIG9yIG5vdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTU1MWMyZjI4MWY2YTk0ZDEzMTgxNzY3MjQ2M2M1ZmVkXCI+aGFsX3RkbV9od2NfZnVuY3M8XC9hPiogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWIwOWY0ZTIxNGUzMjlmNTc2MjEyN2RjYTI0ZjYxMTRhXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpod2NfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPmh3YyBmdW5jdGlvbnMgb2YgYmFja2VuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBhZDkxYjk4OTg3NDc4MmM1M2I1YzM5MzhhY2M3NmMzXCI+aGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1NTA3MzI5MTM2NDdkMTMyNTQ1MzJiZDUzZTZmYTUzMVwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6aHdjX3dpbmRvd19mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+aHdjX3dpbmRvdyBmdW5jdGlvbnMgb2YgYmFja2VuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFmZmIzODQxMDI0NWRhNTY4MjY0ZmNiMmU5NzUzN2I2XCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjppc19tYXN0ZXI8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBmbGFnIG9mIG1hc3RlciBvciBub3Q8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E0NTkzNGM3MzNmYmE2MTk3NTFjNDUyNGZhN2U5NmNjNlwiPmhhbF90ZG1fbWFzdGVyX2RybV9mZF9oYW5kbGVyPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTkyODhmMzg2Yzk1NGI3YTRkMWI5YzNhNTFlOTQ5YjBkXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjptYXN0ZXJfZHJtX2ZkX2Z1bmM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBoYW5kbGVyIGZ1bmN0aW9uIGZvciBzZXR0aW5nIG1hc3RlciBkcm0gZmlsZSBkZXNjcmlwdG9yLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTA0OWQ5ZWQ0YzJlNGE1ZWRjMjQwNmJmNDg1NDk4MmJiXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpudW1fZXZlbnRfc291cmNlczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG51bWJlciBvZiBldmVudCBzb3VyY2U8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExMGJkNzQwYmI2NmNiMjYwZDI3MWQ2NWVkMzIyZGIxNVwiPmhhbF90ZG1fb3V0cHV0X2Z1bmNzPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExYzNmYjY4OTUzYmFlZjhjMmVhYzk1NDhhM2ZmYjgyY1wiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6b3V0cHV0X2Z1bmNzPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5vdXRwdXQgZnVuY3Rpb25zIG9mIGJhY2tlbmQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlZmY5Y2M4ZjRkNDA2YWMyMTJhMGE5NGVjY2NjMmY2M1wiPmhhbF90ZG1fcHBfZnVuY3M8XC9hPiogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgxNzQ2ZjUwNWZhNTU4YWMzMGQ1NmMxYmM5NjU2OTk2XCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpwcF9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+cG9zdC1wcm9jZXNzaW5nIGZ1bmN0aW9ucyBvZiBiYWNrZW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmNzc2OGZlZmNhOTI0MTEyNzMxZWZkNjkxM2M4MGI2NFwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6dXNlcl9kYXRhPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdXNlciBkYXRhIGZvciBjYWxsYmFjazxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWIzZDhlY2NmYjA5MWY1ZGEyZjlkMzhkZGU2Y2NjZDJhXCI+aGFsX3RkbV92b3V0cHV0X2Z1bmNzPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiNGIxNjcwY2U2NmQyOGY3NGI0OTgyOTc1ZmVhOTFjOFwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6dm91dHB1dF9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+dm91dHB1dCBmdW5jdGlvbnMgb2YgYmFja2VuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fZGlzcGxheV9mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGRpc3BsYXkgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTYxOWU4NTY1M2I0Y2FkMTc5MmMwNmE1MmJhZmM4ZWZjXCI+ZGlzcGxheV9nZXRfY2FwYWJpbGl0eTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MjI3YzcwYzYyMWI1YzI1ODliNDM1YzU2ZTkzZTAxOVwiPmhhbF90ZG1fZGlzcGxheTxcL2E+ICpkaXNwbGF5LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZDQ2YjhjMTg0OTJjMjUwZjc2ZTkzNDRiNmE0NDViXCI+aGFsX3RkbV9jYXBzX2Rpc3BsYXk8XC9hPiAqY2Fwcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyYzMxMGFlYmEzZmRiYTkxYjlkY2FlODFjZDgxMzNmNlwiPmRpc3BsYXlfZ2V0X3BwX2NhcGFiaWxpdHk8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzZWYyYTdmZjNhNGJjYmU5ZDY3NmFhMmNmYjRiZTczOVwiPmhhbF90ZG1fY2Fwc19wcDxcL2E+ICpjYXBzKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTNiM2UzYmQzM2UwYzdlNjUwMzFlMmEzYTdiODQwOGZmXCI+ZGlzcGxheV9nZXRfY2FwdHVyZV9jYXBhYmlsaXR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXksIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNmNiYjkwNTY5M2VjMGI0NGE5NGI1ZmI5OTJkYzViOTJcIj5oYWxfdGRtX2NhcHNfY2FwdHVyZTxcL2E+ICpjYXBzKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKiooKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2NDJmMTRhNTdhMzFlMGM1ZDY4ZGU0YTQzYzQ4YWEyN1wiPmRpc3BsYXlfZ2V0X291dHB1dHM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgaW50ICpjb3VudCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTY0NTc0YmQ3Y2UwZmY5NzY5MWQ3YTU1Mjk5N2MzNTVcIj5kaXNwbGF5X2dldF9mZDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MjI3YzcwYzYyMWI1YzI1ODliNDM1YzU2ZTkzZTAxOVwiPmhhbF90ZG1fZGlzcGxheTxcL2E+ICpkaXNwbGF5LCBpbnQgKmZkKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI3ZWZmMGQ2M2FlZWRkMzg4MDEyOTdlNjg1OGM3NGJhXCI+ZGlzcGxheV9oYW5kbGVfZXZlbnRzPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXkpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBiYzc2Nzc5OGFhYmI1MzQ1NDA4NTE3ZmI5MTA5N2M0XCI+aGFsX3RkbV9wcDxcL2E+ICooKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4OGM2YWEwMWJlYjJmNzE1NGIxZGYwOTU3MDE1MWEwMlwiPmRpc3BsYXlfY3JlYXRlX3BwPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXksIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICooKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2MGM0ZTA3MjRhNDkwYzkzYjA2YWEyZGVlMTE2YjdjNFwiPmRpc3BsYXlfdm91dHB1dF9jcmVhdGU8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgY29uc3QgY2hhciAqbmFtZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTFcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBiYzc2Nzc5OGFhYmI1MzQ1NDA4NTE3ZmI5MTA5N2M0XCI+aGFsX3RkbV9wcDxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4OGM2YWEwMWJlYjJmNzE1NGIxZGYwOTU3MDE1MWEwMlwiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M6OmRpc3BsYXlfY3JlYXRlX3BwPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q3JlYXRlIHRoZSBwb3N0LXByb2Nlc3Npbmcgb2JqZWN0IG9mIGhhbF90ZG1fZGlzcGxheS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2MTllODU2NTNiNGNhZDE3OTJjMDZhNTJiYWZjOGVmY1wiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M6OmRpc3BsYXlfZ2V0X2NhcGFiaWxpdHk8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MjI3YzcwYzYyMWI1YzI1ODliNDM1YzU2ZTkzZTAxOVwiPmhhbF90ZG1fZGlzcGxheTxcL2E+ICpkaXNwbGF5LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZDQ2YjhjMTg0OTJjMjUwZjc2ZTkzNDRiNmE0NDViXCI+aGFsX3RkbV9jYXBzX2Rpc3BsYXk8XC9hPiAqY2Fwcyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIGRpc3BsYXkgY2FwYWJpbGl0aWVzIG9mIGhhbF90ZG1fZGlzcGxheS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYjNlM2JkMzNlMGM3ZTY1MDMxZTJhM2E3Yjg0MDhmZlwiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M6OmRpc3BsYXlfZ2V0X2NhcHR1cmVfY2FwYWJpbGl0eTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXksIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNmNiYjkwNTY5M2VjMGI0NGE5NGI1ZmI5OTJkYzViOTJcIj5oYWxfdGRtX2NhcHNfY2FwdHVyZTxcL2E+ICpjYXBzKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgY2FwdHVyZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGhhbF90ZG1fZGlzcGxheS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNjQ1NzRiZDdjZTBmZjk3NjkxZDdhNTUyOTk3YzM1NVwiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M6OmRpc3BsYXlfZ2V0X2ZkPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgaW50ICpmZCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIGZpbGUgZGVzY3JpcHRvciBvZiBoYWxfdGRtX2Rpc3BsYXkuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+KiooKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjQyZjE0YTU3YTMxZTBjNWQ2OGRlNGE0M2M0OGFhMjdcIj5faGFsX3RkbV9kaXNwbGF5X2Z1bmNzOjpkaXNwbGF5X2dldF9vdXRwdXRzPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgaW50ICpjb3VudCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBvdXRwdXQgYXJyYXkgb2YgaGFsX3RkbV9kaXNwbGF5LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTJjMzEwYWViYTNmZGJhOTFiOWRjYWU4MWNkODEzM2Y2XCI+X2hhbF90ZG1fZGlzcGxheV9mdW5jczo6ZGlzcGxheV9nZXRfcHBfY2FwYWJpbGl0eTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXksIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2VmMmE3ZmYzYTRiY2JlOWQ2NzZhYTJjZmI0YmU3MzlcIj5oYWxfdGRtX2NhcHNfcHA8XC9hPiAqY2Fwcyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIHBvc3QtcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMgb2YgaGFsX3RkbV9kaXNwbGF5LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI3ZWZmMGQ2M2FlZWRkMzg4MDEyOTdlNjg1OGM3NGJhXCI+X2hhbF90ZG1fZGlzcGxheV9mdW5jczo6ZGlzcGxheV9oYW5kbGVfZXZlbnRzPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5IYW5kbGUgdGhlIGV2ZW50cyB3aGljaCBoYXBwZW5zIG9uIHRoZSBmZCBvZiBoYWxfdGRtX2Rpc3BsYXkuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiooKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjBjNGUwNzI0YTQ5MGM5M2IwNmFhMmRlZTExNmI3YzRcIj5faGFsX3RkbV9kaXNwbGF5X2Z1bmNzOjpkaXNwbGF5X3ZvdXRwdXRfY3JlYXRlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgY29uc3QgY2hhciAqbmFtZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q3JlYXRlIHRoZSB2aXJ0dWFsIG91dHB1dCBvYmplY3Qgb2YgaGFsX3RkbV9kaXNwbGF5LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fb3V0cHV0X2Z1bmNzPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3Mgb3V0cHV0IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyZTBiNmFlMzIwMTdmYzJmYmViMDgwNDYyNTYxMjg0MlwiPm91dHB1dF9nZXRfY2FwYWJpbGl0eTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzMGM4NmFiMWM4ZjBkNGVkYzkwNTU1MmUyOTg5MzE1NVwiPmhhbF90ZG1fY2Fwc19vdXRwdXQ8XC9hPiAqY2Fwcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlMTBkODU0MmZjYjUzYWFkMTcwYzcxZjEwOGNjZTRjNVwiPm91dHB1dF9zZXRfcHJvcGVydHk8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzQzYWRhODdkNmYxYzIzNDQ1ZWRkZjhjYTYxMDZjMmNcIj5vdXRwdXRfZ2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgaWQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3VuaW9uaGFsX190ZG1fX3ZhbHVlXCI+aGFsX3RkbV92YWx1ZTxcL2E+ICp2YWx1ZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNGU1MTZjOGE0NWU5NDhkYWU5MjM5NDdiZmM1MjJmMFwiPm91dHB1dF93YWl0X3ZibGFuazxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgaW50IGludGVydmFsLCBpbnQgc3luYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTUwZTFjNWM3NDRkNDU0MTE1NjMyM2EzYzQwNjNkN2M4XCI+b3V0cHV0X3NldF92YmxhbmtfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1OWZhMGJiZThmMmY5ZGM4ZjZiYTUwM2U2MTViMzRmYVwiPmhhbF90ZG1fb3V0cHV0X3ZibGFua19oYW5kbGVyPFwvYT4gZnVuYyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExY2I4ZGZhMzRlMDVlYTczZjIzMzVmOWExYjM3NDQzZVwiPm91dHB1dF9zZXRfZHBtczxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYzQzMzFiZjgwZDcyN2M5NWMxMjg1MjFiZWM5MjM2ZFwiPmhhbF90ZG1fb3V0cHV0X2RwbXM8XC9hPiBkcG1zX3ZhbHVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTE0ZmU1ZmM3NjI1M2YyZWQwYTA1ODRjZDZkOTZmOTViXCI+b3V0cHV0X2dldF9kcG1zPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFjNDMzMWJmODBkNzI3Yzk1YzEyODUyMWJlYzkyMzZkXCI+aGFsX3RkbV9vdXRwdXRfZHBtczxcL2E+ICpkcG1zX3ZhbHVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWYxNGZhNmNhYjU2NWVlZGU2MjUyMTFhYmNkZTc3YTgxXCI+b3V0cHV0X3NldF9tb2RlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCBjb25zdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+ICptb2RlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZlODk2YjBmNWM3NmJmODc4N2NjZWE0OTU3YzI0NTBjXCI+b3V0cHV0X2dldF9tb2RlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCBjb25zdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+ICoqbW9kZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMWVhNDc2OWMwZmIzMTlkMmE5ZjA1MzU3ZWJlMGZjZDVcIj5vdXRwdXRfY3JlYXRlX2NhcHR1cmU8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTkyNzA1ZjVhZjc4MWVhMGM5ZTcwNGM3YWY2ZjFhMDExXCI+b3V0cHV0X3NldF9zdGF0dXNfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzNWM1MDQxN2NlYmJlZmFmZTE3ZGFhZGI3OWUxMTUyMVwiPmhhbF90ZG1fb3V0cHV0X3N0YXR1c19oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEwMzNjYTM5MDQ0MmZjYTY0ODM3MGRhZjEyODZmZTkzXCI+b3V0cHV0X3NldF9kcG1zX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjcxMGI2MzJiM2QxYTA2YzJjNjM0MTkxZDNkNTU2MGZcIj5oYWxfdGRtX291dHB1dF9kcG1zX2hhbmRsZXI8XC9hPiBmdW5jLCB2b2lkICp1c2VyX2RhdGEpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTU1MzA3MGM4YTk0ZWJjODFmZDIzYmUxODEwZjEyOGVcIj5vdXRwdXRfc2V0X2RwbXNfYXN5bmM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWM0MzMxYmY4MGQ3MjdjOTVjMTI4NTIxYmVjOTIzNmRcIj5oYWxfdGRtX291dHB1dF9kcG1zPFwvYT4gZHBtc192YWx1ZSwgaW50ICpzeW5jKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQ1YmZjZTMzMzZkMWNkN2ViZmM1ZDEyNjIzMGIzZjE4XCI+b3V0cHV0X2dldF9od2M8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWIyYTMyZDc0N2M0NmY5M2FkZDZlMTBhMzA4YzM4OGFiXCI+b3V0cHV0X3NldF9taXJyb3I8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpzcmNfb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPiB0cmFuc2Zvcm0pPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNDZhNTY1Y2E4MGIyOTg0YzVlZTQ5YmI4MDgwMDA5Y2NcIj5vdXRwdXRfdW5zZXRfbWlycm9yPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0KTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMlwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExZWE0NzY5YzBmYjMxOWQyYTlmMDUzNTdlYmUwZmNkNVwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X2NyZWF0ZV9jYXB0dXJlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNyZWF0ZSB0aGUgY2FwdHVyZSBvYmplY3QgZnJvbSB0aGUgb3V0cHV0IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyZTBiNmFlMzIwMTdmYzJmYmViMDgwNDYyNTYxMjg0MlwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X2dldF9jYXBhYmlsaXR5PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzBjODZhYjFjOGYwZDRlZGM5MDU1NTJlMjk4OTMxNTVcIj5oYWxfdGRtX2NhcHNfb3V0cHV0PFwvYT4gKmNhcHMpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGhhbF90ZG1fb3V0cHV0IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExNGZlNWZjNzYyNTNmMmVkMGEwNTg0Y2Q2ZDk2Zjk1YlwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X2dldF9kcG1zPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWM0MzMxYmY4MGQ3MjdjOTVjMTI4NTIxYmVjOTIzNmRcIj5oYWxfdGRtX291dHB1dF9kcG1zPFwvYT4gKmRwbXNfdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IERQTVMgb2YgdGhlIG91dHB1dCBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0NWJmY2UzMzM2ZDFjZDdlYmZjNWQxMjYyMzBiM2YxOFwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X2dldF9od2M8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBod2Mgb2JqZWN0IG9mIHRoZSBvdXRwdXQgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZlODk2YjBmNWM3NmJmODc4N2NjZWE0OTU3YzI0NTBjXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzOjpvdXRwdXRfZ2V0X21vZGU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgY29uc3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E0ZDgyNTJlYzE1YmU4ZjI4NWU5MjEwYzg4NmFiN2RjM1wiPmhhbF90ZG1fb3V0cHV0X21vZGU8XC9hPiAqKm1vZGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBtb2RlIG9mIHRoZSBvdXRwdXQgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTc0M2FkYTg3ZDZmMWMyMzQ0NWVkZGY4Y2E2MTA2YzJjXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzOjpvdXRwdXRfZ2V0X3Byb3BlcnR5PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gKnZhbHVlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgb3V0cHV0J3MgcHJvcGVydHkgd2hpY2ggaGFzIHRoZSBnaXZlbiBpZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExY2I4ZGZhMzRlMDVlYTczZjIzMzVmOWExYjM3NDQzZVwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X3NldF9kcG1zPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWM0MzMxYmY4MGQ3MjdjOTVjMTI4NTIxYmVjOTIzNmRcIj5oYWxfdGRtX291dHB1dF9kcG1zPFwvYT4gZHBtc192YWx1ZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgRFBNUyBvZiB0aGUgb3V0cHV0IG9iamVjdCBzeW5jaHJvbm91c2x5LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWU1NTMwNzBjOGE5NGViYzgxZmQyM2JlMTgxMGYxMjhlXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzOjpvdXRwdXRfc2V0X2RwbXNfYXN5bmM8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYzQzMzFiZjgwZDcyN2M5NWMxMjg1MjFiZWM5MjM2ZFwiPmhhbF90ZG1fb3V0cHV0X2RwbXM8XC9hPiBkcG1zX3ZhbHVlLCBpbnQgKnN5bmMpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IERQTVMgb2YgdGhlIG91dHB1dCBvYmplY3QgYXN5bmNocm9ub3VzbHkuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTAzM2NhMzkwNDQyZmNhNjQ4MzcwZGFmMTI4NmZlOTNcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfZHBtc19oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjcxMGI2MzJiM2QxYTA2YzJjNjM0MTkxZDNkNTU2MGZcIj5oYWxfdGRtX291dHB1dF9kcG1zX2hhbmRsZXI8XC9hPiBmdW5jLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBvdXRwdXQncyBkcG1zIGhhbmRsZXIuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYjJhMzJkNzQ3YzQ2ZjkzYWRkNmUxMGEzMDhjMzg4YWJcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfbWlycm9yPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpzcmNfb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPiB0cmFuc2Zvcm0pPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBtaXJyb3IgaW1hZ2Ugb2YgdGhlIHNyY19vdXRwdXQgdG8gdGhlIG91dHB1dC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmMTRmYTZjYWI1NjVlZWRlNjI1MjExYWJjZGU3N2E4MVwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X3NldF9tb2RlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIGNvbnN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNGQ4MjUyZWMxNWJlOGYyODVlOTIxMGM4ODZhYjdkYzNcIj5oYWxfdGRtX291dHB1dF9tb2RlPFwvYT4gKm1vZGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IG9uZSBvZiBhdmFpbGFibGUgbW9kZXMgb2YgdGhlIG91dHB1dCBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTEwZDg1NDJmY2I1M2FhZDE3MGM3MWYxMDhjY2U0YzVcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfcHJvcGVydHk8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdW5zaWduZWQgaW50IGlkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCN1bmlvbmhhbF9fdGRtX192YWx1ZVwiPmhhbF90ZG1fdmFsdWU8XC9hPiB2YWx1ZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIG91dHB1dCdzIHByb3BlcnR5IHdoaWNoIGhhcyB0aGUgZ2l2ZW4gaWQuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTI3MDVmNWFmNzgxZWEwYzllNzA0YzdhZjZmMWEwMTFcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfc3RhdHVzX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzNWM1MDQxN2NlYmJlZmFmZTE3ZGFhZGI3OWUxMTUyMVwiPmhhbF90ZG1fb3V0cHV0X3N0YXR1c19oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgb3V0cHV0IGNvbm5lY3Rpb24gc3RhdHVzIGhhbmRsZXIuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNTBlMWM1Yzc0NGQ0NTQxMTU2MzIzYTNjNDA2M2Q3YzhcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfdmJsYW5rX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1OWZhMGJiZThmMmY5ZGM4ZjZiYTUwM2U2MTViMzRmYVwiPmhhbF90ZG1fb3V0cHV0X3ZibGFua19oYW5kbGVyPFwvYT4gZnVuYyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIGhhbmRsZXIgb2YgdmJsYW5rLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQ2YTU2NWNhODBiMjk4NGM1ZWU0OWJiODA4MDAwOWNjXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzOjpvdXRwdXRfdW5zZXRfbWlycm9yPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VW5zZXQgdGhlIG1pcnJvciBpbWFnZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNGU1MTZjOGE0NWU5NDhkYWU5MjM5NDdiZmM1MjJmMFwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X3dhaXRfdmJsYW5rPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIGludCBpbnRlcnZhbCwgaW50IHN5bmMsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5XYWl0IGZvciBWQkxBTksgb2Ygb3V0cHV0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fdm91dHB1dF9mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIHZpcnR1YWwgb3V0cHV0IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmNGQyNDgxODM3NmQzM2Y1ODA3ZGYzMTVmZDJkYjk4YlwiPnZvdXRwdXRfZGVzdHJveTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0KTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTllYTc1NmQ1ZTNhYWY1MjYwZmJhZDlkMTQ2OTYzY2EzXCI+dm91dHB1dF9zZXRfYXZhaWxhYmxlX21vZGU8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgY29uc3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E0ZDgyNTJlYzE1YmU4ZjI4NWU5MjEwYzg4NmFiN2RjM1wiPmhhbF90ZG1fb3V0cHV0X21vZGU8XC9hPiAqbW9kZXMsIGludCBjb3VudCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlYzgzNTMyODJkOWIwMWE0YzhlNWNjMTY4ZmQ4MjIyNVwiPnZvdXRwdXRfc2V0X3BoeXNpY2FsX3NpemU8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgdW5zaWduZWQgaW50IG1td2lkdGgsIHVuc2lnbmVkIGludCBtbWhlaWdodCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjZTdlNDc3YWVkZjVjNDZiNmI2ZDAzNDgxMWI2N2NkY1wiPnZvdXRwdXRfY29ubmVjdDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0KTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTk2MzUwOTFmMmIyMjU2YTY5NTg4MDQ5OWMwYzZmNTIwXCI+dm91dHB1dF9kaXNjb25uZWN0PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTllMzgzNDc0Y2JiY2Y2ZTJiOWEwNGQ3ZGY4ZmQ2ODFcIj52b3V0cHV0X2dldF9vdXRwdXQ8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjdmZTAzMjlmNDBhNjM1NWM3ZWM2YjkyNzg5NmM0NjZcIj52b3V0cHV0X3NldF9jb21taXRfZnVuYzxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTgwNTE5ZmY0OGY3NzJkOGNkYzcxMjM1YjBhNjI4ZmRiXCI+aGFsX3RkbV92b3V0cHV0X2NvbW1pdF9oYW5kbGVyPFwvYT4gY29tbWl0X2Z1bmMpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZWEwYmM4YjhiNTA2MGE2MDViYzdmNzkwNzFhMjJmNTlcIj52b3V0cHV0X2NvbW1pdF9kb25lPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOWE1MTE3OTJlMzY1OGZjM2ViOTIyMzYyMGUxZWQ3YjlcIj52b3V0cHV0X3NldF90YXJnZXRfYnVmZmVyX3F1ZXVlX2ZsYWc8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgaW50IGZsYWdzKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0zXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tM1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlYTBiYzhiOGI1MDYwYTYwNWJjN2Y3OTA3MWEyMmY1OVwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfY29tbWl0X2RvbmU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPk5vdGlmeSBjb21taXQgZG9uZSB0byBiYWNrZW5kLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWNlN2U0NzdhZWRmNWM0NmI2YjZkMDM0ODExYjY3Y2RjXCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczo6dm91dHB1dF9jb25uZWN0PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgY29ubmVjdCBzdGF0dXMgb2YgdGhlIHZpcnR1YWwgb3V0cHV0IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmNGQyNDgxODM3NmQzM2Y1ODA3ZGYzMTVmZDJkYjk4YlwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfZGVzdHJveTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RGVzdHJveSB0aGUgdmlydHVhbCBvdXRwdXQgb2JqZWN0IG9mIHRoZSBiYWNrZW5kIG1vZHVsZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5NjM1MDkxZjJiMjI1NmE2OTU4ODA0OTljMGM2ZjUyMFwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfZGlzY29ubmVjdDxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IGRpc2Nvbm5lY3Qgc3RhdHVzIG9mIHRoZSB2aXJ0dWFsIG91dHB1dCBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlOWUzODM0NzRjYmJjZjZlMmI5YTA0ZDdkZjhmZDY4MVwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfZ2V0X291dHB1dDxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCBvdXRwdXQgb2JqZWN0IGZyb20gdmlydHVhbCBvdXRwdXQgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTllYTc1NmQ1ZTNhYWY1MjYwZmJhZDlkMTQ2OTYzY2EzXCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczo6dm91dHB1dF9zZXRfYXZhaWxhYmxlX21vZGU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0LCBjb25zdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+ICptb2RlcywgaW50IGNvdW50KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCBhdmFpbGFibGUgbW9kZXMgb2YgdGhlIHZpcnR1YWwgb3V0cHV0IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmN2ZlMDMyOWY0MGE2MzU1YzdlYzZiOTI3ODk2YzQ2NlwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfc2V0X2NvbW1pdF9mdW5jPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4MDUxOWZmNDhmNzcyZDhjZGM3MTIzNWIwYTYyOGZkYlwiPmhhbF90ZG1fdm91dHB1dF9jb21taXRfaGFuZGxlcjxcL2E+IGNvbW1pdF9mdW5jKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgdXNlciBjb21taXQgZnVuY3Rpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlYzgzNTMyODJkOWIwMWE0YzhlNWNjMTY4ZmQ4MjIyNVwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfc2V0X3BoeXNpY2FsX3NpemU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0LCB1bnNpZ25lZCBpbnQgbW13aWR0aCwgdW5zaWduZWQgaW50IG1taGVpZ2h0KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCBwaHlzaWNhbCBzaXplKG1tKSBvZiB0aGUgdmlydHVhbCBvdXRwdXQgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTlhNTExNzkyZTM2NThmYzNlYjkyMjM2MjBlMWVkN2I5XCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczo6dm91dHB1dF9zZXRfdGFyZ2V0X2J1ZmZlcl9xdWV1ZV9mbGFnPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgaW50IGZsYWdzKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0YXJnZXQgYnVmZmVyIHF1ZXVlIGZsYWcgb2YgdGhlIHZpcnR1YWwgb3V0cHV0J3MgaHdjIG9iamVjdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1faHdjX2Z1bmNzPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgaHdjIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhODJkODM5ZWMxMDI5NWJiNDNhZjY1MjA1ODg4MDRjMGFcIj5od2NfY3JlYXRlX3dpbmRvdzxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZWYyM2M4OWJjMGUxZTlmYjRiMzg1OTc5MGZlZDZiMDJcIj5od2NfZ2V0X3ZpZGVvX3N1cHBvcnRlZF9mb3JtYXRzPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBjb25zdCB0Ym1fZm9ybWF0ICoqZm9ybWF0cywgaW50ICpjb3VudCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNmRhNjRjM2NhYTA3ODJkYTI1YjhiMWFiZDdhY2VkM1wiPmh3Y19nZXRfdmlkZW9fYXZhaWxhYmxlX3Byb3BlcnRpZXM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGNvbnN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZDQwNTNjNzY5YjFjMTc5NDlkODc5OTY3OGIxNjUxN2ZcIj5oYWxfdGRtX3Byb3A8XC9hPiAqKnByb3BzLCBpbnQgKmNvdW50KTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQwY2MwNDVjOTQ4M2MyOTc0NDczYzZhMmM3YThmYjIzXCI+aHdjX2dldF9jYXBhYmlsaXRpZXM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOTJkODRjM2E2MDdhZTQwMmM4NDQzMGZjNmFlZDg3YmZcIj5oYWxfdGRtX2h3Y19jYXBhYmlsaXR5PFwvYT4gKmNhcGFiaWxpdGllcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiNzNlNTQ1MjkwMDEwZmU5MzNlNGJjOTQ0MWY4YzI0NFwiPmh3Y19nZXRfYXZhaWxhYmxlX3Byb3BlcnRpZXM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGNvbnN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZDQwNTNjNzY5YjFjMTc5NDlkODc5OTY3OGIxNjUxN2ZcIj5oYWxfdGRtX3Byb3A8XC9hPiAqKnByb3BzLCBpbnQgKmNvdW50KTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dGJtX3N1cmZhY2VfcXVldWVfaCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWY4YmE4YmVhNTg2NTkxYmYxZmZlNmVjMDdkYTIwOWRmXCI+aHdjX2dldF9jbGllbnRfdGFyZ2V0X2J1ZmZlcl9xdWV1ZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYWZmZDcwNGEwOTcwZWVmZWI4NzA0MWYzNzQxMzAzNGJcIj5od2Nfc2V0X2NsaWVudF90YXJnZXRfYnVmZmVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB0Ym1fc3VyZmFjZV9oIHRhcmdldF9idWZmZXIsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjMyZTQ2YWE4YzZlNjgzNmUzMGM5MTkxNTRjMzE2NWNcIj5oYWxfdGRtX3JlZ2lvbjxcL2E+IGRhbWFnZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhZWE2ZDlkNWU1ZTliYzRhNzUxOTEzNWViOWJhMTBkM1wiPmh3Y19zZXRfY2xpZW50X3RhcmdldF9hY3F1aXJlX2ZlbmNlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBpbnQgYWNxdWlyZV9mZW5jZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2ZjM1ZjYxMWRjNGM0M2YwZWYyYWVmMjQ2ZWE0MGE4YlwiPmh3Y192YWxpZGF0ZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqY29tcG9zaXRlZF93bmRzLCB1aW50MzJfdCBudW1fd25kcywgdWludDMyX3QgKm51bV90eXBlcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiZGI2MjYxNjI1ZmU4MzNlYTAzNjM4OGQxMjZhMDAxNVwiPmh3Y19nZXRfY2hhbmdlZF9jb21wb3NpdGlvbl90eXBlczxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgdWludDMyX3QgKm51bV9lbGVtZW50cywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzVjOGIzYzc0ZGZiZjYyYzY4MWM5ZDRlODhjODM5NlwiPmhhbF90ZG1faHdjX3dpbmRvd19jb21wb3NpdGlvbjxcL2E+ICpjb21wb3NpdGlvbl90eXBlcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlMDhlNDFkYzQ4ZWUzZmIxMmI0NzkyYWM1MzRlMzMzZVwiPmh3Y19hY2NlcHRfdmFsaWRhdGlvbjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3Yyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4Zjk2NDI4OWY4Y2FiOGE0M2Y2YmRiMDc5ZTZmNjMzOVwiPmh3Y19jb21taXQ8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGludCBzeW5jLCB2b2lkICp1c2VyX2RhdGEpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTY3MzRhODg5MTVjM2RjMGFmMDM2Yjc4NTU0M2NkNzZcIj5od2Nfc2V0X2NvbW1pdF9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWI2YmRhNTZiMWRiODRlZTJmMjBlODEzOWFlODg0MmJhXCI+aGFsX3RkbV9od2NfY29tbWl0X2hhbmRsZXI8XC9hPiBmdW5jKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTM0MjAwOWIzMWJjYWY5MDMwN2I0OGNlODc4YmU5N2I0XCI+aHdjX2dldF9jb21taXRfZmVuY2U8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGludCAqY29tbWl0X2ZlbmNlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgxZDA0OTI2Njc4ZWMzZjJjNzMxOTVkNjhlMmYzZjg2XCI+aHdjX2dldF9yZWxlYXNlX2ZlbmNlczxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgdWludDMyX3QgKm51bV9lbGVtZW50cywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqaHdjX3dpbmRvd3MsIGludCAqcmVsZWFzZV9mZW5jZXMpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTE3MWM2NGRlN2MwYzlkNDMwZWRkZDY2NDA5MjhiM2FcIj5od2Nfc2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNWY3ODZiMDNmMGE0YThmMTU1YWVkMWUyZDExNDM4MjZcIj5od2NfZ2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gKnZhbHVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZiYmE3ODI5MjM5MjE4NWE5MWI0OTFhYWJhNDhmNDk5XCI+aHdjX2dldF9jb21taXRfaW50ZXJ2YWw8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZmYwNDkwNTNmNTc4OTU3ZDc2NTRhYTBkOTQ3NWEzNDRcIj5oYWxfdGRtX2h3Y19jb21taXRfaW50ZXJ2YWw8XC9hPiAqaW50ZXJ2YWwpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzI4YTFkNmFjZWI2MjBlODBkOGY3MmNlYThkYzJiMTNcIj5od2Nfc2V0X2NsaWVudF90YXJnZXRfYnVmZmVyX2luZm88XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTE1N2U5NmI3YzU5YzU1OTdjYmExOWU3N2RkZjljZWFcIj5oYWxfdGRtX2h3Y193aW5kb3dfaW5mbzxcL2E+ICppbmZvKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi00XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNFwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlMDhlNDFkYzQ4ZWUzZmIxMmI0NzkyYWM1MzRlMzMzZVwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2FjY2VwdF92YWxpZGF0aW9uPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+QWNjZXB0cyB0aGUgdmFsaWRhdGlvbiByZXF1aXJlZCBieSB0aGUgYmFja2VuZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4Zjk2NDI4OWY4Y2FiOGE0M2Y2YmRiMDc5ZTZmNjMzOVwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2NvbW1pdDxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBpbnQgc3luYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNvbW1pdCBjaGFuZ2VzIGZvciB0aGUgaHdjIG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4MmQ4MzllYzEwMjk1YmI0M2FmNjUyMDU4ODgwNGMwYVwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2NyZWF0ZV93aW5kb3c8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q3JlYXRlIGEgbmV3IHdpbmRvdyBvbiB0aGUgZ2l2ZW4gaHdjLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWI3M2U1NDUyOTAwMTBmZTkzM2U0YmM5NDQxZjhjMjQ0XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2F2YWlsYWJsZV9wcm9wZXJ0aWVzPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGNvbnN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZDQwNTNjNzY5YjFjMTc5NDlkODc5OTY3OGIxNjUxN2ZcIj5oYWxfdGRtX3Byb3A8XC9hPiAqKnByb3BzLCBpbnQgKmNvdW50KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgYXZhaWxhYmxlIHByb3BlcnR5IGFycmF5IG9mIHRoZSBod2Mgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQwY2MwNDVjOTQ4M2MyOTc0NDczYzZhMmM3YThmYjIzXCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2NhcGFiaWxpdGllczxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTkyZDg0YzNhNjA3YWU0MDJjODQ0MzBmYzZhZWQ4N2JmXCI+aGFsX3RkbV9od2NfY2FwYWJpbGl0eTxcL2E+ICpjYXBhYmlsaXRpZXMpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBod2MgY2FwYWJpbGl0aWVzLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWJkYjYyNjE2MjVmZTgzM2VhMDM2Mzg4ZDEyNmEwMDE1XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2NoYW5nZWRfY29tcG9zaXRpb25fdHlwZXM8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgdWludDMyX3QgKm51bV9lbGVtZW50cywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzVjOGIzYzc0ZGZiZjYyYzY4MWM5ZDRlODhjODM5NlwiPmhhbF90ZG1faHdjX3dpbmRvd19jb21wb3NpdGlvbjxcL2E+ICpjb21wb3NpdGlvbl90eXBlcyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgY2hhbmdlZCBjb21wb3NpdGlvbiB0eXBlcy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dGJtX3N1cmZhY2VfcXVldWVfaCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmOGJhOGJlYTU4NjU5MWJmMWZmZTZlYzA3ZGEyMDlkZlwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2dldF9jbGllbnRfdGFyZ2V0X2J1ZmZlcl9xdWV1ZTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+ICplcnJvcik8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIGNsaWVudCB0YXJnZXQgYnVmZmVyIHF1ZXVlLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTM0MjAwOWIzMWJjYWY5MDMwN2I0OGNlODc4YmU5N2I0XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2NvbW1pdF9mZW5jZTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBpbnQgKmNvbW1pdF9mZW5jZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgY29tbWl0IGZlbmNlLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZiYmE3ODI5MjM5MjE4NWE5MWI0OTFhYWJhNDhmNDk5XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2NvbW1pdF9pbnRlcnZhbDxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWZmMDQ5MDUzZjU3ODk1N2Q3NjU0YWEwZDk0NzVhMzQ0XCI+aGFsX3RkbV9od2NfY29tbWl0X2ludGVydmFsPFwvYT4gKmludGVydmFsKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgY29tbWl0IGludGVydmFsLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTVmNzg2YjAzZjBhNGE4ZjE1NWFlZDFlMmQxMTQzODI2XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X3Byb3BlcnR5PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIHVpbnQzMl90IGlkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCN1bmlvbmhhbF9fdGRtX192YWx1ZVwiPmhhbF90ZG1fdmFsdWU8XC9hPiAqdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBwcm9wZXJ0eSB3aGljaCBoYXMgdGhlIGdpdmVuIGlkIG9uIHRoZSBod2Mgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgxZDA0OTI2Njc4ZWMzZjJjNzMxOTVkNjhlMmYzZjg2XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X3JlbGVhc2VfZmVuY2VzPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIHVpbnQzMl90ICpudW1fZWxlbWVudHMsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqKmh3Y193aW5kb3dzLCBpbnQgKnJlbGVhc2VfZmVuY2VzKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCByZWxlYXNlIGZlbmNlcy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNmRhNjRjM2NhYTA3ODJkYTI1YjhiMWFiZDdhY2VkM1wiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2dldF92aWRlb19hdmFpbGFibGVfcHJvcGVydGllczxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBjb25zdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWQ0MDUzYzc2OWIxYzE3OTQ5ZDg3OTk2NzhiMTY1MTdmXCI+aGFsX3RkbV9wcm9wPFwvYT4gKipwcm9wcywgaW50ICpjb3VudCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIGF2YWlsYWJsZSB2aWRlbyBwcm9wZXJ0eSBhcnJheSBvZiB0aGUgaHdjIG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlZjIzYzg5YmMwZTFlOWZiNGIzODU5NzkwZmVkNmIwMlwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2dldF92aWRlb19zdXBwb3J0ZWRfZm9ybWF0czxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBjb25zdCB0Ym1fZm9ybWF0ICoqZm9ybWF0cywgaW50ICpjb3VudCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdmlkZW8gdGhlIHN1cHBvcnRlZCBmb3JtYXQgYXJyYXkgZm9yIHRoZSBod2Mgd2luZG93cyBvZiB0aGUgaHdjIG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhZWE2ZDlkNWU1ZTliYzRhNzUxOTEzNWViOWJhMTBkM1wiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX3NldF9jbGllbnRfdGFyZ2V0X2FjcXVpcmVfZmVuY2U8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgaW50IGFjcXVpcmVfZmVuY2UpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBhY3F1aXJlIGZlbmNlIG9mIGNsaWVudCB0YXJnZXQgYnVmZmVyLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWFmZmQ3MDRhMDk3MGVlZmViODcwNDFmMzc0MTMwMzRiXCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2Nfc2V0X2NsaWVudF90YXJnZXRfYnVmZmVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIHRibV9zdXJmYWNlX2ggdGFyZ2V0X2J1ZmZlciwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMzJlNDZhYThjNmU2ODM2ZTMwYzkxOTE1NGMzMTY1Y1wiPmhhbF90ZG1fcmVnaW9uPFwvYT4gZGFtYWdlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgY2xpZW50IHRhcmdldCBidWZmZXIuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzI4YTFkNmFjZWI2MjBlODBkOGY3MmNlYThkYzJiMTNcIj5faGFsX3RkbV9od2NfZnVuY3M6Omh3Y19zZXRfY2xpZW50X3RhcmdldF9idWZmZXJfaW5mbzxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWUxNTdlOTZiN2M1OWM1NTk3Y2JhMTllNzdkZGY5Y2VhXCI+aGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPiAqaW5mbyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBjbGllbnQgdGFyZ2V0IGJ1ZmZlci48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5NjczNGE4ODkxNWMzZGMwYWYwMzZiNzg1NTQzY2Q3NlwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX3NldF9jb21taXRfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWI2YmRhNTZiMWRiODRlZTJmMjBlODEzOWFlODg0MmJhXCI+aGFsX3RkbV9od2NfY29tbWl0X2hhbmRsZXI8XC9hPiBmdW5jKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgdXNlciBjb21taXQgaGFuZGxlci48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5MTcxYzY0ZGU3YzBjOWQ0MzBlZGRkNjY0MDkyOGIzYVwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX3NldF9wcm9wZXJ0eTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBwcm9wZXJ0eSB3aGljaCBoYXMgdGhlIGdpdmVuIGlkIG9uIHRoZSBod2Mgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZmMzVmNjExZGM0YzQzZjBlZjJhZWYyNDZlYTQwYThiXCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfdmFsaWRhdGU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqY29tcG9zaXRlZF93bmRzLCB1aW50MzJfdCBudW1fd25kcywgdWludDMyX3QgKm51bV90eXBlcyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5WYWxpZGF0ZSB0aGUgaHdjLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1faHdjX3dpbmRvd19mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGh3YyB3aW5kb3cgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWUyMjhmZDg4MTI4NzgyNzg5YjE0Yjk5OTFkMmNlYWQwXCI+aHdjX3dpbmRvd19kZXN0cm95PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3cpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50Ym1fc3VyZmFjZV9xdWV1ZV9oKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGYxZTBlN2VmMDE4NGZlMjkyYmU0YTJjNjFmZTE5OWVcIj5od2Nfd2luZG93X2FjcXVpcmVfYnVmZmVyX3F1ZXVlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI4OGE0ZWMxZTkwZTViYTY0N2VjNTVlMTU1YmIzNDk0XCI+aHdjX3dpbmRvd19yZWxlYXNlX2J1ZmZlcl9xdWV1ZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB0Ym1fc3VyZmFjZV9xdWV1ZV9oIHF1ZXVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWZjOTdmNTUyZDc1MjZmYTIyMjhkYmI4YjcxNjBjNGRjXCI+aHdjX3dpbmRvd19zZXRfY29tcG9zaXRpb25fdHlwZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3NWM4YjNjNzRkZmJmNjJjNjgxYzlkNGU4OGM4Mzk2XCI+aGFsX3RkbV9od2Nfd2luZG93X2NvbXBvc2l0aW9uPFwvYT4gY29tcG9zaXRpb25fdHlwZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2MjdmM2E0YTk0NDA3YzNkOTIwN2ZkYWUxZWJlYjdhOFwiPmh3Y193aW5kb3dfc2V0X2J1ZmZlcl9kYW1hZ2U8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMzJlNDZhYThjNmU2ODM2ZTMwYzkxOTE1NGMzMTY1Y1wiPmhhbF90ZG1fcmVnaW9uPFwvYT4gZGFtYWdlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTYzOTExZjM3NThmN2RjZjU4NGM2ODRmNWUzNTVmMjY4XCI+aHdjX3dpbmRvd19zZXRfaW5mbzxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWUxNTdlOTZiN2M1OWM1NTk3Y2JhMTllNzdkZGY5Y2VhXCI+aGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPiAqaW5mbyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzNDJiZDA3ZTNjOTlhZDE2NDY3YWY2YWI1MGNiYmQ1N1wiPmh3Y193aW5kb3dfc2V0X2J1ZmZlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB0Ym1fc3VyZmFjZV9oIGJ1ZmZlcik8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3MDg5ZGNhNWNjNzBmYWNhZTc0NmYwZWFiMzBiOThiZFwiPmh3Y193aW5kb3dfc2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIHVpbnQzMl90IGlkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCN1bmlvbmhhbF9fdGRtX192YWx1ZVwiPmhhbF90ZG1fdmFsdWU8XC9hPiB2YWx1ZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0NWQ2NDI0NDI5ZGY2ZTQ4ZDNlNjFjYTQ2NTczMzZhMVwiPmh3Y193aW5kb3dfZ2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIHVpbnQzMl90IGlkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCN1bmlvbmhhbF9fdGRtX192YWx1ZVwiPmhhbF90ZG1fdmFsdWU8XC9hPiAqdmFsdWUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhODYyMmJhOTJlZmQ2YjFhNzgwMjQzZWNkZWVkMDE4NzhcIj5od2Nfd2luZG93X2dldF9jb25zdHJhaW50czxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCBpbnQgKmNvbnN0cmFpbnRzKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQwOTU0ZWI4YzVlMjdhZTU4YjE1OTgwNGUxNTE4Mzc5XCI+aHdjX3dpbmRvd19zZXRfbmFtZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCBjb25zdCBjaGFyICpuYW1lKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTA5MzVjMTUxOWI3ZDgxZDJmZTZkYzYwNWIyNTRmYmQyXCI+aHdjX3dpbmRvd19zZXRfY3Vyc29yX2ltYWdlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgdm9pZCAqcHRyKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWY4Zjg5YTc4ZDYyMjE2MmMyNTE3ZTAyZjliM2IzYjhjXCI+aHdjX3dpbmRvd19zZXRfYWNxdWlyZV9mZW5jZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCBpbnQgYWNxdWlyZV9mZW5jZSk8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTVcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnRibV9zdXJmYWNlX3F1ZXVlX2goKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGYxZTBlN2VmMDE4NGZlMjkyYmU0YTJjNjFmZTE5OWVcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X2FjcXVpcmVfYnVmZmVyX3F1ZXVlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+QWNxdWlyZSB0aGUgYnVmZmVyIHF1ZXVlIGhhbmRsZSBmb3IgdGhlIHdpbmRvdyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTIyOGZkODgxMjg3ODI3ODliMTRiOTk5MWQyY2VhZDBcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X2Rlc3Ryb3k8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlc3Ryb3lzIHRoZSBnaXZlbiB3aW5kb3cuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhODYyMmJhOTJlZmQ2YjFhNzgwMjQzZWNkZWVkMDE4NzhcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X2dldF9jb25zdHJhaW50czxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIGludCAqY29uc3RyYWludHMpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBjb25zdHJhaW50cyBvZiBod2Nfd2luZG93LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQ1ZDY0MjQ0MjlkZjZlNDhkM2U2MWNhNDY1NzMzNmExXCI+X2hhbF90ZG1faHdjX3dpbmRvd19mdW5jczo6aHdjX3dpbmRvd19nZXRfcHJvcGVydHk8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gKnZhbHVlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgcHJvcGVydHkgd2hpY2ggaGFzIHRoZSBnaXZlbiBpZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyODhhNGVjMWU5MGU1YmE2NDdlYzU1ZTE1NWJiMzQ5NFwiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M6Omh3Y193aW5kb3dfcmVsZWFzZV9idWZmZXJfcXVldWU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB0Ym1fc3VyZmFjZV9xdWV1ZV9oIHF1ZXVlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlJlbGVhc2UgdGhlIGJ1ZmZlciBxdWV1ZSBmb3IgdGhlIHdpbmRvdyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjhmODlhNzhkNjIyMTYyYzI1MTdlMDJmOWIzYjNiOGNcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X3NldF9hY3F1aXJlX2ZlbmNlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgaW50IGFjcXVpcmVfZmVuY2UpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBhY3F1aXJlIGZlbmNlIG9mIGh3Y193aW5kb3cuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMzQyYmQwN2UzYzk5YWQxNjQ2N2FmNmFiNTBjYmJkNTdcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X3NldF9idWZmZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB0Ym1fc3VyZmFjZV9oIGJ1ZmZlcik8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIFRETSBidWZmZXIgdG8gdGhlIHdpbmRvdyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjI3ZjNhNGE5NDQwN2MzZDkyMDdmZGFlMWViZWI3YThcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X3NldF9idWZmZXJfZGFtYWdlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMzJlNDZhYThjNmU2ODM2ZTMwYzkxOTE1NGMzMTY1Y1wiPmhhbF90ZG1fcmVnaW9uPFwvYT4gZGFtYWdlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgYnVmZmVyIGRhbWFnZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmYzk3ZjU1MmQ3NTI2ZmEyMjI4ZGJiOGI3MTYwYzRkY1wiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M6Omh3Y193aW5kb3dfc2V0X2NvbXBvc2l0aW9uX3R5cGU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3NWM4YjNjNzRkZmJmNjJjNjgxYzlkNGU4OGM4Mzk2XCI+aGFsX3RkbV9od2Nfd2luZG93X2NvbXBvc2l0aW9uPFwvYT4gY29tcG9zaXRpb25fdHlwZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXRzIHRoZSBkZXNpcmVkIGNvbXBvc2l0aW9uIHR5cGUgb2YgdGhlIGdpdmVuIHdpbmRvdy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwOTM1YzE1MTliN2Q4MWQyZmU2ZGM2MDViMjU0ZmJkMlwiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M6Omh3Y193aW5kb3dfc2V0X2N1cnNvcl9pbWFnZTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgdm9pZCAqcHRyKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgY3Vyc29yIGltYWdlIHRvIGh3Y193aW5kb3cuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjM5MTFmMzc1OGY3ZGNmNTg0YzY4NGY1ZTM1NWYyNjhcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X3NldF9pbmZvPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlMTU3ZTk2YjdjNTljNTU5N2NiYTE5ZTc3ZGRmOWNlYVwiPmhhbF90ZG1faHdjX3dpbmRvd19pbmZvPFwvYT4gKmluZm8pPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgd2luZG93IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0MDk1NGViOGM1ZTI3YWU1OGIxNTk4MDRlMTUxODM3OVwiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M6Omh3Y193aW5kb3dfc2V0X25hbWU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCBjb25zdCBjaGFyICpuYW1lKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgbmFtZSBvZiBod2Nfd2luZG93LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTcwODlkY2E1Y2M3MGZhY2FlNzQ2ZjBlYWIzMGI5OGJkXCI+X2hhbF90ZG1faHdjX3dpbmRvd19mdW5jczo6aHdjX3dpbmRvd19zZXRfcHJvcGVydHk8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBwcm9wZXJ0eSB3aGljaCBoYXMgdGhlIGdpdmVuIGlkLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fcHBfZnVuY3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBwb3N0LXByb2Nlc3NpbmcgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWRhMGY0NzNiZjZhYTM4NDkxMjExMzFlODhhMjkzMzBlXCI+cHBfZGVzdHJveTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHApPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTYyYjVjYjZhODQ5YTU5MDg4NzljMjY4ZWY2MzI2ODBcIj5wcF9zZXRfaW5mbzxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHAsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYzE3ZTdjYjlhMzYwY2UxM2RiNTg5MjYwZDEwNzc0YzdcIj5oYWxfdGRtX2luZm9fcHA8XC9hPiAqaW5mbyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyMTZhN2YzODdkZjk3Y2IxNTY1MjA5MDViZDBkZmNkM1wiPnBwX2F0dGFjaDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHAsIHRibV9zdXJmYWNlX2ggc3JjLCB0Ym1fc3VyZmFjZV9oIGRzdCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiMDJjZWMwMWQzYzExYmZiOWI2ZDZlYTU3ZGUzN2QzNVwiPnBwX2NvbW1pdDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHApPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNTQ3ODg1YzQyY2Y3MTQ1OWI4YjIwNzg0ZDA5MGQ0NDlcIj5wcF9zZXRfZG9uZV9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBiYzc2Nzc5OGFhYmI1MzQ1NDA4NTE3ZmI5MTA5N2M0XCI+aGFsX3RkbV9wcDxcL2E+ICpwcCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5NWRkODJiYjNjZjFiMGIzMzAzYmVkZjQyMWFmZjYwZlwiPmhhbF90ZG1fcHBfZG9uZV9oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi02XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNlwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyMTZhN2YzODdkZjk3Y2IxNTY1MjA5MDViZDBkZmNkM1wiPl9oYWxfdGRtX3BwX2Z1bmNzOjpwcF9hdHRhY2g8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHAsIHRibV9zdXJmYWNlX2ggc3JjLCB0Ym1fc3VyZmFjZV9oIGRzdCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5BdHRhY2ggdGhlIHNvdXJjZSBidWZmZXIgYW5kIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdG8gdGhlIHBvc3QtcHJvY2Vzc2luZyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYjAyY2VjMDFkM2MxMWJmYjliNmQ2ZWE1N2RlMzdkMzVcIj5faGFsX3RkbV9wcF9mdW5jczo6cHBfY29tbWl0PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGJjNzY3Nzk4YWFiYjUzNDU0MDg1MTdmYjkxMDk3YzRcIj5oYWxfdGRtX3BwPFwvYT4gKnBwKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNvbW1pdCBjaGFuZ2VzIGZvciB0aGUgcG9zdC1wcm9jZXNzaW5nIG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkYTBmNDczYmY2YWEzODQ5MTIxMTMxZTg4YTI5MzMwZVwiPl9oYWxfdGRtX3BwX2Z1bmNzOjpwcF9kZXN0cm95PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGJjNzY3Nzk4YWFiYjUzNDU0MDg1MTdmYjkxMDk3YzRcIj5oYWxfdGRtX3BwPFwvYT4gKnBwKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlc3Ryb3kgdGhlIHBvc3QtcHJvY2Vzc2luZyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNTQ3ODg1YzQyY2Y3MTQ1OWI4YjIwNzg0ZDA5MGQ0NDlcIj5faGFsX3RkbV9wcF9mdW5jczo6cHBfc2V0X2RvbmVfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBiYzc2Nzc5OGFhYmI1MzQ1NDA4NTE3ZmI5MTA5N2M0XCI+aGFsX3RkbV9wcDxcL2E+ICpwcCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5NWRkODJiYjNjZjFiMGIzMzAzYmVkZjQyMWFmZjYwZlwiPmhhbF90ZG1fcHBfZG9uZV9oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgcHJvY2Vzc2luZyBkb25lIGhhbmRsZXIgdG8gdGhlIHBvc3QtcHJvY2Vzc2luZyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTYyYjVjYjZhODQ5YTU5MDg4NzljMjY4ZWY2MzI2ODBcIj5faGFsX3RkbV9wcF9mdW5jczo6cHBfc2V0X2luZm88XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHAsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYzE3ZTdjYjlhMzYwY2UxM2RiNTg5MjYwZDEwNzc0YzdcIj5oYWxfdGRtX2luZm9fcHA8XC9hPiAqaW5mbyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIGdlb21ldHJ5IGluZm9ybWF0aW9uIHRvIHRoZSBwb3N0LXByb2Nlc3Npbmcgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fY2FwdHVyZV9mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGNhcHR1cmUgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWYzYjBlMWRlNzFjMTJlOTFiNWFhMDFkMDNhODJlMDFlXCI+Y2FwdHVyZV9kZXN0cm95PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4MDEwMDNiYTM3YTdkZTNjYTkxNTE2MTZkMzJkYmFjXCI+aGFsX3RkbV9jYXB0dXJlPFwvYT4gKmNhcHR1cmUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTU4ZWEwYjQ5MTYxYTE5YzI1MDM0ZGQ3YmMzZDE2MTVcIj5jYXB0dXJlX3NldF9pbmZvPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4MDEwMDNiYTM3YTdkZTNjYTkxNTE2MTZkMzJkYmFjXCI+aGFsX3RkbV9jYXB0dXJlPFwvYT4gKmNhcHR1cmUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOGQ0NTZjYjQ2NTFmZWNhZDUzNTdkNWY0M2FiYzYxYjJcIj5oYWxfdGRtX2luZm9fY2FwdHVyZTxcL2E+ICppbmZvKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTU3NTFiMjI5YWRiNGQ5Zjk1ODczYTA1NjhhYTcwZWU3XCI+Y2FwdHVyZV9hdHRhY2g8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgdGJtX3N1cmZhY2VfaCBidWZmZXIpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzA4MDAzNmY4ZjBlZmM5NjM2NjgwOTkxMjE4OTMwZDJcIj5jYXB0dXJlX2NvbW1pdDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+ICpjYXB0dXJlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTJjNDcxOTYxNGVkMDMzMzU5MzFkNDY3YzI4ZmMwZWZkXCI+Y2FwdHVyZV9zZXRfZG9uZV9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4MDEwMDNiYTM3YTdkZTNjYTkxNTE2MTZkMzJkYmFjXCI+aGFsX3RkbV9jYXB0dXJlPFwvYT4gKmNhcHR1cmUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMmQ5M2U1Y2IyNzc1MzRhNWYyMjRkY2MwMmYzMjYzYzRcIj5oYWxfdGRtX2NhcHR1cmVfZG9uZV9oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi03XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tN1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1NzUxYjIyOWFkYjRkOWY5NTg3M2EwNTY4YWE3MGVlN1wiPl9oYWxfdGRtX2NhcHR1cmVfZnVuY3M6OmNhcHR1cmVfYXR0YWNoPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgdGJtX3N1cmZhY2VfaCBidWZmZXIpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+QXR0YWNoIHRoZSBURE0gYnVmZmVyIHRvIHRoZSBjYXB0dXJlIG9iamVjdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTcwODAwMzZmOGYwZWZjOTYzNjY4MDk5MTIxODkzMGQyXCI+X2hhbF90ZG1fY2FwdHVyZV9mdW5jczo6Y2FwdHVyZV9jb21taXQ8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+ICpjYXB0dXJlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNvbW1pdCBjaGFuZ2VzIGZvciB0aGUgY2FwdHVyZSBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjNiMGUxZGU3MWMxMmU5MWI1YWEwMWQwM2E4MmUwMWVcIj5faGFsX3RkbV9jYXB0dXJlX2Z1bmNzOjpjYXB0dXJlX2Rlc3Ryb3k8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+ICpjYXB0dXJlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlc3Ryb3kgdGhlIGNhcHR1cmUgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTJjNDcxOTYxNGVkMDMzMzU5MzFkNDY3YzI4ZmMwZWZkXCI+X2hhbF90ZG1fY2FwdHVyZV9mdW5jczo6Y2FwdHVyZV9zZXRfZG9uZV9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZDkzZTVjYjI3NzUzNGE1ZjIyNGRjYzAyZjMyNjNjNFwiPmhhbF90ZG1fY2FwdHVyZV9kb25lX2hhbmRsZXI8XC9hPiBmdW5jLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBjYXB0dXJlIGRvbmUgaGFuZGxlciB0byB0aGUgY2FwdHVyZSBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTU4ZWEwYjQ5MTYxYTE5YzI1MDM0ZGQ3YmMzZDE2MTVcIj5faGFsX3RkbV9jYXB0dXJlX2Z1bmNzOjpjYXB0dXJlX3NldF9pbmZvPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4ZDQ1NmNiNDY1MWZlY2FkNTM1N2Q1ZjQzYWJjNjFiMlwiPmhhbF90ZG1faW5mb19jYXB0dXJlPFwvYT4gKmluZm8pPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBnZW9tZXRyeSBpbmZvcm1hdGlvbiB0byB0aGUgY2FwdHVyZSBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9zaXplPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHNpemUgc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTM3NTAwM2FkMzZmN2UwMWRjOWY0M2IzYzk3MzkyMmY1XCI+aDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZDRlZTRiMDFlMzk1MTljY2QzYTE4MDIzYjAyN2UxMDlcIj52PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tOFwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLThcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMzc1MDAzYWQzNmY3ZTAxZGM5ZjQzYjNjOTczOTIyZjVcIj5faGFsX3RkbV9zaXplOjpoPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaG9yaXpvbnRhbCBidWZmZXIgc2l6ZSwgd2lkdGg8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkNGVlNGIwMWUzOTUxOWNjZDNhMTgwMjNiMDI3ZTEwOVwiPl9oYWxfdGRtX3NpemU6OnY8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB2ZXJ0aWNhbCBidWZmZXIgc2l6ZSwgaGVpZ2h0PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9wb3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcG9zaXRpb24gc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWQ2NmZjZDk3YWZlMTg4ZDkwNjI1ZjA2YmFkMTM0MTYyXCI+eDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMGU0NjQ1NmI0NTE3MDA0ZmI5YjdlZTQ0NmJmZmU0MWRcIj55PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkZGY2NGQ3ODU5NjRhNGE2YjVlYWFlYzljODg2MjU0MVwiPnc8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTk5ZWIzZjkzNjc3Yzk0YTlmNmViZDBlNjQxMzJjZTkxXCI+aDxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTlcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi05XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTk5ZWIzZjkzNjc3Yzk0YTlmNmViZDBlNjQxMzJjZTkxXCI+X2hhbF90ZG1fcG9zOjpoPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaGVpZ2h0PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGRmNjRkNzg1OTY0YTRhNmI1ZWFhZWM5Yzg4NjI1NDFcIj5faGFsX3RkbV9wb3M6Onc8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB3aWR0aDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWQ2NmZjZDk3YWZlMTg4ZDkwNjI1ZjA2YmFkMTM0MTYyXCI+X2hhbF90ZG1fcG9zOjp4PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgeChsZWZ0KSBwb3NpdGlvbjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTBlNDY0NTZiNDUxNzAwNGZiOWI3ZWU0NDZiZmZlNDFkXCI+X2hhbF90ZG1fcG9zOjp5PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgeSh0b3ApIHBvc2l0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuaW9uIGhhbF90ZG1fdmFsdWU8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtJ3MgdW5pb24gdmFsdWUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD52b2lkICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYjM1MjJjMmI2Y2M4MzllMjkzMDA0NzEzNDJlYWQ5M2FcIj5wdHI8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwMDM4ZThlNDJkMTJjZGE3YTUwNGI0YzFlMzdiOTc3NlwiPnMzMjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjYjJlOGUxMTdkZTAyNTkxMTdiOGY3ZGM2NzVjNmE5OFwiPnUzMjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ2NF90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEzMjU3NmI0YmI4NGI0NTliZDViNDA2Y2NjMjgyNzllXCI+czY0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQ2NF90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWJkYTYzYzMyMzZlZGJhNmZhYTExNmI4ZGYzNGQ1OWJmXCI+dTY0PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTBcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMFwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dm9pZCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWIzNTIyYzJiNmNjODM5ZTI5MzAwNDcxMzQyZWFkOTNhXCI+aGFsX3RkbV92YWx1ZTo6cHRyPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdW5pb24gdmFsdWUgYXMgcG9pbnRlciB0eXBlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludDMyX3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTAwMzhlOGU0MmQxMmNkYTdhNTA0YjRjMWUzN2I5Nzc2XCI+aGFsX3RkbV92YWx1ZTo6czMyPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdW5pb24gdmFsdWUgYXMgMzJiaXQgaW50ZWdlciB0eXBlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludDY0X3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEzMjU3NmI0YmI4NGI0NTliZDViNDA2Y2NjMjgyNzllXCI+aGFsX3RkbV92YWx1ZTo6czY0PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdW5pb24gdmFsdWUgYXMgNjRiaXQgaW50ZWdlciB0eXBlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjYjJlOGUxMTdkZTAyNTkxMTdiOGY3ZGM2NzVjNmE5OFwiPmhhbF90ZG1fdmFsdWU6OnUzMjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHVuaW9uIHZhbHVlIGFzIDMyYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50NjRfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYmRhNjNjMzIzNmVkYmE2ZmFhMTE2YjhkZjM0ZDU5YmZcIj5oYWxfdGRtX3ZhbHVlOjp1NjQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB1bmlvbiB2YWx1ZSBhcyA2NGJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2NhcHNfZGlzcGxheTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkaXNwbGF5IGNhcGFiaWxpdHkgc3RydWN0dXJlIGZvciBDQVBUVVJFLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI3MmZjOWZkMmE5NWYyYTM5NDQ1ZDVlZjgxMThkYTA3XCI+bWF4X2xheWVyX2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTFcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMVwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyNzJmYzlmZDJhOTVmMmEzOTQ0NWQ1ZWY4MTE4ZGEwN1wiPl9oYWxfdGRtX2NhcHNfZGlzcGxheTo6bWF4X2xheWVyX2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSBsYXllciBjb3VudDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fb3V0cHV0X21vZGU8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IG1vZGUgc3RydWN0dXJlIGNvbXBhdGlibGUgd2l0aCBkcm1fbW9kZV9tb2RlaW5mbyBpbiBkcm0tdWFwaS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3Mjc2NjBjMGNhZDljYjhjZDNhZjc5MmM1Y2I1NjMzY1wiPmNsb2NrPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiYTMzMTI3OGYwYjllMzQ5YWExNGI0YzYyMDA1YWE1MVwiPmhkaXNwbGF5PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhMTJmY2M5NTk1ZTI3MzE2NzcwZTg2MWMxZTYyZTM3YlwiPmhzeW5jX3N0YXJ0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4YjlhMGIwODhmZjAyZWFlMTQ3ZGYzNGUwMjQzYzRmNlwiPmhzeW5jX2VuZDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMzZjOGM3MjdmMzViMGQ1ZmYyOWMwYTNjNjMwMTA1MmZcIj5odG90YWw8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEwZWFlZjM3YTk5Zjg3NGYwODljODliZWU3NmM1OTU5XCI+aHNrZXc8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI0ZjM3ZjQ0OGRlOTkxYTRhYWQ4M2U1ZjFjMDFiNzNhXCI+dmRpc3BsYXk8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEzMGM3MjcwM2QxNzE5YWE4ZGVjMzFjNGFmMjQ5NGJiXCI+dnN5bmNfc3RhcnQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTg1MmJhY2ZmMTA0NjM0NGQ4MTZkMThkMzQwODEwN2UzXCI+dnN5bmNfZW5kPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyZGQ0ZmI2NjRhM2Q2NDE4MDdiZTUzMmJmMmRkYTk1ZlwiPnZ0b3RhbDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjgwMDQwYWY0ZmQxMDJmYjhkZjBhMDQyNDI3NzFiMTFcIj52c2NhbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMDYxMzFhNzBiMjI5ZmY2NGY5NzE2ZTkxNGFlNzc3OTNcIj52cmVmcmVzaDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzAwODg2Zjg2NGNhMDRjOTYyZTQ3NDUyNGFmMWNiYjJcIj5mbGFnczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzMwMTk4ODNiODlkMzk5Mzc2YThiMWQ4ODM1Yzg4YzJcIj50eXBlPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmNoYXI8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhY2QyOTIyNTBjOGIzODE5YmE4YmI1ZDYyNDVhY2Q3MjRcIj5uYW1lPFwvYT4gWzY0XTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMlwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEyXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTcyNzY2MGMwY2FkOWNiOGNkM2FmNzkyYzVjYjU2MzNjXCI+X2hhbF90ZG1fb3V0cHV0X21vZGU6OmNsb2NrPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcGl4ZWwgY2xvY2sgaW4ga0h6PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzAwODg2Zjg2NGNhMDRjOTYyZTQ3NDUyNGFmMWNiYjJcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6ZmxhZ3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBiaXRtYXNrIG9mIG1pc2MuIGZsYWdzLCBzZWUgRFJNX01PREVfRkxBR18qIGRlZmluZXM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiYTMzMTI3OGYwYjllMzQ5YWExNGI0YzYyMDA1YWE1MVwiPl9oYWxfdGRtX291dHB1dF9tb2RlOjpoZGlzcGxheTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGhvcml6b250YWwgZGlzcGxheSBzaXplPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTBlYWVmMzdhOTlmODc0ZjA4OWM4OWJlZTc2YzU5NTlcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6aHNrZXc8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBob3Jpem9udGFsIHNrZXc8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4YjlhMGIwODhmZjAyZWFlMTQ3ZGYzNGUwMjQzYzRmNlwiPl9oYWxfdGRtX291dHB1dF9tb2RlOjpoc3luY19lbmQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBob3Jpem9udGFsIHN5bmMgZW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYTEyZmNjOTU5NWUyNzMxNjc3MGU4NjFjMWU2MmUzN2JcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6aHN5bmNfc3RhcnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBob3Jpem9udGFsIHN5bmMgc3RhcnQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzNmM4YzcyN2YzNWIwZDVmZjI5YzBhM2M2MzAxMDUyZlwiPl9oYWxfdGRtX291dHB1dF9tb2RlOjpodG90YWw8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBob3Jpem9udGFsIHRvdGFsIHNpemU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+Y2hhciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhY2QyOTIyNTBjOGIzODE5YmE4YmI1ZDYyNDVhY2Q3MjRcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6bmFtZTxcL2E+WzY0XTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgbW9kZSByZXNvbHV0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzMwMTk4ODNiODlkMzk5Mzc2YThiMWQ4ODM1Yzg4YzJcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6dHlwZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGJpdG1hc2sgb2YgdHlwZSBmbGFncywgc2VlIERSTV9NT0RFX1RZUEVfKiBkZWZpbmVzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjRmMzdmNDQ4ZGU5OTFhNGFhZDgzZTVmMWMwMWI3M2FcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6dmRpc3BsYXk8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB2ZXJ0aWNhbCBkaXNwbGF5IHNpemU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwNjEzMWE3MGIyMjlmZjY0Zjk3MTZlOTE0YWU3Nzc5M1wiPl9oYWxfdGRtX291dHB1dF9tb2RlOjp2cmVmcmVzaDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGFwcHJveGltYXRlIHZlcnRpY2FsIHJlZnJlc2ggcmF0ZSBpbiBIejxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTY4MDA0MGFmNGZkMTAyZmI4ZGYwYTA0MjQyNzcxYjExXCI+X2hhbF90ZG1fb3V0cHV0X21vZGU6OnZzY2FuPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmVydGljYWwgc2NhbjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTg1MmJhY2ZmMTA0NjM0NGQ4MTZkMThkMzQwODEwN2UzXCI+X2hhbF90ZG1fb3V0cHV0X21vZGU6OnZzeW5jX2VuZDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZlcnRpY2FsIHN5bmMgZW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTMwYzcyNzAzZDE3MTlhYThkZWMzMWM0YWYyNDk0YmJcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6dnN5bmNfc3RhcnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB2ZXJ0aWNhbCBzeW5jIHN0YXJ0PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMmRkNGZiNjY0YTNkNjQxODA3YmU1MzJiZjJkZGE5NWZcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6dnRvdGFsPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmVydGljYWwgdG90YWwgc2l6ZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fcHJvcDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwcm9wZXJ0eSBzdHJ1Y3R1cmUgb2YgdGRtLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWZjNjAyY2U5ZGIxYzdjN2U4YzlhNTBmYWYxMTMzODFkXCI+aWQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+Y2hhcjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYzYyNGNkZGI3ZTBhOTE5Mjc0NmI4YTAzMmM5MmE3NlwiPm5hbWU8XC9hPiBbNjRdPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTk0OTk5M2FhNGU1OTYxMjQ5MjY1MTZlNmQ5MTgyYTE5XCI+aGFsX3RkbV92YWx1ZV90eXBlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNDc1M2Q1MWM0OGExNWQ5MWRkZWRlYzNmMzE3NTcxNTJcIj50eXBlPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTNcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xM1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmYzYwMmNlOWRiMWM3YzdlOGM5YTUwZmFmMTEzMzgxZFwiPl9oYWxfdGRtX3Byb3A6OmlkPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaWRlbnRpZmllciBvZiBwcm9wZXJ0eTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5jaGFyIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYzYyNGNkZGI3ZTBhOTE5Mjc0NmI4YTAzMmM5MmE3NlwiPl9oYWxfdGRtX3Byb3A6Om5hbWU8XC9hPls2NF08XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbmFtZSBvZiBwcm9wZXJ0eTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTk0OTk5M2FhNGU1OTYxMjQ5MjY1MTZlNmQ5MTgyYTE5XCI+aGFsX3RkbV92YWx1ZV90eXBlPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQ3NTNkNTFjNDhhMTVkOTFkZGVkZWMzZjMxNzU3MTUyXCI+X2hhbF90ZG1fcHJvcDo6dHlwZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZhbHVlIHR5cGUgb2YgcHJvcGVydHk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2luZm9fY29uZmlnPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGluZm8gY29uZmlnIHN0cnVjdHVyZSBmb3Igd2luZG93LCBsYXllci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2IwM2IxZjQ0MTUwODgwZTk5OTY3YmMzYjBiMzA3MjlcIj5oYWxfdGRtX3NpemU8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwMzRhMWE2N2FmZTgwZjEzZThiYjk3ZGQzNDk5NDc0M1wiPnNpemU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzgzNmQ3ZTJlMDdmMWIxZWIyNmViMWVjNjkzMzMzZFwiPmhhbF90ZG1fcG9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGUxMmFmNDcxODZmMDViY2I1N2I2NTQ1Njk2ZWIyN2VcIj5wb3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dGJtX2Zvcm1hdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1N2NmZTBlMDJmMzY5ZTAwMTk3OGY1YzAxOGIyZjY2ZFwiPmZvcm1hdDxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE0XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTRcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnRibV9mb3JtYXQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTU3Y2ZlMGUwMmYzNjllMDAxOTc4ZjVjMDE4YjJmNjZkXCI+X2hhbF90ZG1faW5mb19jb25maWc6OmZvcm1hdDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHBpeGVsIGZvcm1hdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGUxMmFmNDcxODZmMDViY2I1N2I2NTQ1Njk2ZWIyN2VcIj5faGFsX3RkbV9pbmZvX2NvbmZpZzo6cG9zPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcG9zaXRpb24gb3IgbG9naWNhbCBpbWFnZSBzaXplPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2IwM2IxZjQ0MTUwODgwZTk5OTY3YmMzYjBiMzA3MjlcIj5oYWxfdGRtX3NpemU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMDM0YTFhNjdhZmU4MGYxM2U4YmI5N2RkMzQ5OTQ3NDNcIj5faGFsX3RkbV9pbmZvX2NvbmZpZzo6c2l6ZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGJ1ZmZlciBzaXplPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9yZWdpb248XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcmVnaW9uIHN0cnVjdHVyZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExYzk1NDJhMDJjNzUwYzQxNzRiM2NkNzAzNzgwNzU0ZlwiPm51bV9yZWN0czxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPiBjb25zdCAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWMwNzVhM2VhODUyMjhjOWJlMDU2MmVkY2E5MGFhNzIxXCI+cmVjdHM8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xNVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE1XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFjOTU0MmEwMmM3NTBjNDE3NGIzY2Q3MDM3ODA3NTRmXCI+X2hhbF90ZG1fcmVnaW9uOjpudW1fcmVjdHM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBudW1iZXIgb2YgcmVjdHM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzgzNmQ3ZTJlMDdmMWIxZWIyNmViMWVjNjkzMzMzZFwiPmhhbF90ZG1fcG9zPFwvYT4gY29uc3QqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjMDc1YTNlYTg1MjI4YzliZTA1NjJlZGNhOTBhYTcyMVwiPl9oYWxfdGRtX3JlZ2lvbjo6cmVjdHM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBhcnJheSBvZiByZWN0IGluZm9ybWF0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9od2Nfd2luZG93X2luZm88XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaHdjIHdpbmRvdyBpbmZvIHN0cnVjdHVyZSB0byBjb21wb3NpdGUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWFiMzllNjMyOWE4MmJjNjMwZjZmNzRjMDllYTRlOTRmXCI+c3JjX2NvbmZpZzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYWViZjI0Y2MxZGU5ODZkNWZjMjM2ZmJkZGNiMjlkOVwiPmRzdF9wb3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMmNkZTVjMzIwNjFlMzY1NTBkNGYyMDFkZTlhNjQyYlwiPmhhbF90ZG1fdHJhbnNmb3JtPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGExODZjMWM2NGVmODliNWQyZWUxZTA3ZWIyMThmNjRcIj50cmFuc2Zvcm08XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xNlwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE2XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhM2FlYmYyNGNjMWRlOTg2ZDVmYzIzNmZiZGRjYjI5ZDlcIj5faGFsX3RkbV9od2Nfd2luZG93X2luZm86OmRzdF9wb3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkZXN0aW5hdGlvbiByZWN0YW5ndWxhciBpbmZvcm1hdGlvbiAobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0KTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhYjM5ZTYzMjlhODJiYzYzMGY2Zjc0YzA5ZWE0ZTk0ZlwiPl9oYWxfdGRtX2h3Y193aW5kb3dfaW5mbzo6c3JjX2NvbmZpZzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGh3YyB3aW5kb3dzIGluZm9ybWF0aW9uIG9mIGNsaWVudDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGExODZjMWM2NGVmODliNWQyZWUxZTA3ZWIyMThmNjRcIj5faGFsX3RkbV9od2Nfd2luZG93X2luZm86OnRyYW5zZm9ybTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRyYW5zZm9ybSBpbmZvcm1hdGlvbiAoc291cmNlIHRvIGRlc3RpbmF0aW9uKTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1faW5mb19wcDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUgdG8gdXNlIHBvc3QtcHJvY2Vzc2luZy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjliYmU0ZThlYTViYTA2NWJhOTFiMGE0YTE5NGQwZTlcIj5oYWxfdGRtX2luZm9fY29uZmlnPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGYxM2U2NDk2OWE0NzM2OTJhZTM3NTQzNTM4ZmViOTNcIj5zcmNfY29uZmlnPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjliYmU0ZThlYTViYTA2NWJhOTFiMGE0YTE5NGQwZTlcIj5oYWxfdGRtX2luZm9fY29uZmlnPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOGYzNGMxZWNhMjlhYTIwOWNhM2NkMWYwYjM4ZGNhODlcIj5kc3RfY29uZmlnPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjJjZGU1YzMyMDYxZTM2NTUwZDRmMjAxZGU5YTY0MmJcIj5oYWxfdGRtX3RyYW5zZm9ybTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTYyNjUxNDEwOWU0MmU3MTQzMjUyN2Y4ZjcwNmU3NjI5XCI+dHJhbnNmb3JtPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0MzdkM2MyMDU2ZDQxYTIwZTczOGFiNjkzZTU5YTY5ZFwiPnN5bmM8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWE1ZDI2NDBlZjkzM2RlZDdiMDRlOWJjOTIzNWVlNGY0XCI+ZmxhZ3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xN1wiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE3XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4ZjM0YzFlY2EyOWFhMjA5Y2EzY2QxZjBiMzhkY2E4OVwiPl9oYWxfdGRtX2luZm9fcHA6OmRzdF9jb25maWc8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkZXN0aW5hdGlvbiB3aW5kb3cncyBpbmZvcm1hdGlvbjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWE1ZDI2NDBlZjkzM2RlZDdiMDRlOWJjOTIzNWVlNGY0XCI+X2hhbF90ZG1faW5mb19wcDo6ZmxhZ3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIHVzZSBwcml2YXRlIGluZm9ybWF0aW9uLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0ZjEzZTY0OTY5YTQ3MzY5MmFlMzc1NDM1MzhmZWI5M1wiPl9oYWxfdGRtX2luZm9fcHA6OnNyY19jb25maWc8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzb3VyY2Ugd2luZG93J3MgaW5mb3JtYXRpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0MzdkM2MyMDU2ZDQxYTIwZTczOGFiNjkzZTU5YTY5ZFwiPl9oYWxfdGRtX2luZm9fcHA6OnN5bmM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvcHRpb24gZm9yIHN5bmNocm9ub3MgcmV0dXJuIG9yIG5vdCB3aGVuIHBvc3QtcHJvY2Vzc2luZyBpcyBkb25lPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjJjZGU1YzMyMDYxZTM2NTUwZDRmMjAxZGU5YTY0MmJcIj5oYWxfdGRtX3RyYW5zZm9ybTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2MjY1MTQxMDllNDJlNzE0MzI1MjdmOGY3MDZlNzYyOVwiPl9oYWxfdGRtX2luZm9fcHA6OnRyYW5zZm9ybTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHdpbmRvdyB0cmFuc2Zvcm0gaW5mb3JtYXRpb24gKHNvdXJjZSB0byBkZXN0aW5hdGlvbik8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2luZm9fY2FwdHVyZTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXB0dXJlIGluZm8gc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmOWJiZTRlOGVhNWJhMDY1YmE5MWIwYTRhMTk0ZDBlOVwiPmhhbF90ZG1faW5mb19jb25maWc8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjZWEyZTk0NGVjNDJlYmM1ZjkzYjhmYWVlZjZhMmRkNlwiPmRzdF9jb25maWc8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMmNkZTVjMzIwNjFlMzY1NTBkNGYyMDFkZTlhNjQyYlwiPmhhbF90ZG1fdHJhbnNmb3JtPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjkyYjQ0M2JiYjFmMDg0Njc0NmI4NDIxMWZjNGEwODNcIj50cmFuc2Zvcm08XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2OWVkOTdjMjM1OTI1OTViYTg2NGFhZWFhODA2NzZiZlwiPmhhbF90ZG1fY2FwdHVyZV90eXBlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMmY3ZTgzYjEwMGFkMWNmMTMwOTNmOWVhMzI1NWU2Y2FcIj50eXBlPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2OThjMDcyNDAxZWU1YjZlZGZjMmZkODRlOTUyMGJjOFwiPmZyZXF1ZW5jeTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOGYwOTU2MjkxMDJhMWFmMjJmZTdlZWExOGQ4M2M2MGZcIj5mbGFnczxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE4XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMThcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjliYmU0ZThlYTViYTA2NWJhOTFiMGE0YTE5NGQwZTlcIj5oYWxfdGRtX2luZm9fY29uZmlnPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWNlYTJlOTQ0ZWM0MmViYzVmOTNiOGZhZWVmNmEyZGQ2XCI+X2hhbF90ZG1faW5mb19jYXB0dXJlOjpkc3RfY29uZmlnPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgd2luZG93J3MgY29vcmRuYXRlICZhbXA7IHNpemUgaW5mb3JtYXRpb24gdG8gY2FwdHVyZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYThmMDk1NjI5MTAyYTFhZjIyZmU3ZWVhMThkODNjNjBmXCI+X2hhbF90ZG1faW5mb19jYXB0dXJlOjpmbGFnczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gdXNlIHByaXZhdGUgaW5mb3JtYXRpb24uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjk4YzA3MjQwMWVlNWI2ZWRmYzJmZDg0ZTk1MjBiYzhcIj5faGFsX3RkbV9pbmZvX2NhcHR1cmU6OmZyZXF1ZW5jeTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZlcnRpY2FsIHJlZnJlc2ggcmF0ZSBpbiBIejxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjkyYjQ0M2JiYjFmMDg0Njc0NmI4NDIxMWZjNGEwODNcIj5faGFsX3RkbV9pbmZvX2NhcHR1cmU6OnRyYW5zZm9ybTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHdpbmRvdydzIHRyYW5zZm9ybSBpbmZvcm1hdGlvbiB0byBjYXB0dXJlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjllZDk3YzIzNTkyNTk1YmE4NjRhYWVhYTgwNjc2YmZcIj5oYWxfdGRtX2NhcHR1cmVfdHlwZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyZjdlODNiMTAwYWQxY2YxMzA5M2Y5ZWEzMjU1ZTZjYVwiPl9oYWxfdGRtX2luZm9fY2FwdHVyZTo6dHlwZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNhcHR1cmUgdHlwZSBvbmUtc2hvdCBvciBzdHJlYW08XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2V2ZW50X3NvdXJjZTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgZm9yIGV2ZW50IHNvdXJjZSBpbmZvcm1hdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiYTRmZmQxYmJiYmI0ZjRjNzc0MDg2NDdkYmUxZmNmZFwiPmV2ZW50X2ZkPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjg4YTA4ZWFjMzI5MDY0YTBmZmRlMWEzODg3MWNhMDZcIj5oYWxfdGRtX2V2ZW50X2xvb3BfZmRfaGFuZGxlcjxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFkNWQxODQ5NmQxZmVmZTJjMDYyZTYyZDkxOTFmNDc5XCI+ZnVuYzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD52b2lkICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMDk1MTU5NGZkZDI4MWMxMTc0YjExNWI5NjIyMzJhZWZcIj51c2VyX2RhdGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xOVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE5XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWJhNGZmZDFiYmJiYjRmNGM3NzQwODY0N2RiZTFmY2ZkXCI+X2hhbF90ZG1fZXZlbnRfc291cmNlOjpldmVudF9mZDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGZpbGUgZGVzY3JpcHRvciBvZiBldmVudC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmODhhMDhlYWMzMjkwNjRhMGZmZGUxYTM4ODcxY2EwNlwiPmhhbF90ZG1fZXZlbnRfbG9vcF9mZF9oYW5kbGVyPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFkNWQxODQ5NmQxZmVmZTJjMDYyZTYyZDkxOTFmNDc5XCI+X2hhbF90ZG1fZXZlbnRfc291cmNlOjpmdW5jPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaGFuZGxlciBmdW5jdGlvbiBvZiB0ZG1fZXZlbl9sb29wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwOTUxNTk0ZmRkMjgxYzExNzRiMTE1Yjk2MjIzMmFlZlwiPl9oYWxfdGRtX2V2ZW50X3NvdXJjZTo6dXNlcl9kYXRhPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdXNlciBkYXRhLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fY2Fwc19vdXRwdXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIGZvciBvdXRwdXQncyBjYXBhYmlsaXRpZXMuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5jaGFyPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWVkYjk5MWYxNzI4NmE5ZTUwMzRkYWQxZTY0MmNmODZkXCI+bWFrZXI8XC9hPiBbNjRdPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5jaGFyPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgzMWIxZmU1ODA3NTM5MjJiNmZiMDMxYzJlOTZhZWY5XCI+bW9kZWw8XC9hPiBbNjRdPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5jaGFyPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWE1MGU5NGZjMGQ3NjI5NzYzOTcyOGM5MzJhY2FlNGM5XCI+bmFtZTxcL2E+IFs2NF08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTg5ZjMyNDI0ZmM1OTE1ZTQ0YzA1ZDZmZTM4ZGIxMzRcIj5oYWxfdGRtX291dHB1dF9jb25uX3N0YXR1czxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI3NWI2YjBhNDU5ZDU1NTZhNzA5OWVjMTkyOWJkNWM4XCI+c3RhdHVzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTQ3ZDdmOTllZmE1NjhjNGJlMGFkZWY4OWQ1ZTNmNDRcIj5oYWxfdGRtX291dHB1dF90eXBlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYmI3MzkxNjIzZjIxOWU3Mjk4NGRiMTAwMjAzM2ZhMTBcIj50eXBlPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmZjY3ZWExY2FiYmFhYzBhMDFmYzlhMmY2NmRkNjM3YlwiPnR5cGVfaWQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFlMDIzNGM1ODU1MWE2YWI1MDFjYmI4MzcwNjQ5Y2FhXCI+bW9kZV9jb3VudDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzc0NWY5MDVlODM4MGFmOTcyNjYwMDg0Nzg3NGEyZGZcIj5tb2RlczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGQyZWFiOGRhOTUxNmFhZTM0YWJiMzQyM2NiNDQ5MTBcIj5wcm9wX2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZDQwNTNjNzY5YjFjMTc5NDlkODc5OTY3OGIxNjUxN2ZcIj5oYWxfdGRtX3Byb3A8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWQ1ZjgwYTY3N2FiNTYzY2YzMTQ1NTMzMjdiZTk0MTA4XCI+cHJvcHM8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFlOTZhNTZmMjg4OGJhNGY4OTE4MDg5ZGNhNzc2NGMzXCI+bW1XaWR0aDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGJkZGUzMjU1MGM1YWMyMzlkMzZhMDU5YjVjN2JmZDdcIj5tbUhlaWdodDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZDViMzlhNzE0NWU3MjU3YmQxNmIyNDgzYmNhMjZjN2FcIj5zdWJwaXhlbDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNmMxYTM3NGExNzY3YjI1YzRlNmZkMmE3ZDZkY2ZhYWVcIj5taW5fdzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjI4ODUyZmUzMzc2NWU4NzdmZDgzOTIxY2FjOTEwZmZcIj5taW5faDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzAzZjhjMjNhMWY2NTJlYmQ0NDQwMTdlZWVhZDFlZDBcIj5tYXhfdzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTYwOGM5YTQxOGQzMDk5ZjBjOTgyOWVhYmU5ZThjNjNcIj5tYXhfaDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNWRiNTc0MzVhNTczYmUyZGM1MjhmNjg1NTgxZDMyNGRcIj5wcmVmZXJyZWRfYWxpZ248XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E3OTA0YjZjMDg0MGFmZGI0OThlNjVkNDY2YjkyYzIxYVwiPmhhbF90ZG1fb3V0cHV0X2NhcGFiaWxpdHk8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5YTYyNGM0NmE0Y2IzNGJiN2NjODkyY2VkMTNjMGYzM1wiPmNhcGFiaWxpdGllczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGYwODA2NWZiNTRkYjUxMjNhZGNkNjViNmZkYjI5ODdcIj5jdXJzb3JfbWluX3c8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWUwNjRkMTIyNzU0NzhiYzZlMTcwNDQ0NGRiZDMwYzFjXCI+Y3Vyc29yX21pbl9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1NWI1YWM2YTBlMzFmMGM2YTMwMmU2Mzg5ZGMxYTJlNVwiPmN1cnNvcl9tYXhfdzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhN2Y3ZDZmYTlhMmVmZTcwMGU5YWEyYjBmM2Q0N2E5NTZcIj5jdXJzb3JfbWF4X2g8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWUyM2QzOGJjMzNhYTlmOWIyOTQwN2I2ZjNkOTdmMWM4XCI+Y3Vyc29yX3ByZWZlcnJlZF9hbGlnbjxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTIwXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMjBcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNzkwNGI2YzA4NDBhZmRiNDk4ZTY1ZDQ2NmI5MmMyMWFcIj5oYWxfdGRtX291dHB1dF9jYXBhYmlsaXR5PFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTlhNjI0YzQ2YTRjYjM0YmI3Y2M4OTJjZWQxM2MwZjMzXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OmNhcGFiaWxpdGllczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNhcGFiaWxpdGllcyBvZiBvdXRwdXQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIDEuNC4xPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhN2Y3ZDZmYTlhMmVmZTcwMGU5YWEyYjBmM2Q0N2E5NTZcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6Y3Vyc29yX21heF9oPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSBoZWlnaHQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIDEuNS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNTViNWFjNmEwZTMxZjBjNmEzMDJlNjM4OWRjMWEyZTVcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6Y3Vyc29yX21heF93PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSB3aWR0aC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgMS41LjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlMDY0ZDEyMjc1NDc4YmM2ZTE3MDQ0NDRkYmQzMGMxY1wiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjpjdXJzb3JfbWluX2g8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIGhlaWdodC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgMS41LjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0ZjA4MDY1ZmI1NGRiNTEyM2FkY2Q2NWI2ZmRiMjk4N1wiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjpjdXJzb3JfbWluX3c8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIHdpZHRoLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICAxLjUuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWUyM2QzOGJjMzNhYTlmOWIyOTQwN2I2ZjNkOTdmMWM4XCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OmN1cnNvcl9wcmVmZXJyZWRfYWxpZ248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwcmVmZXJyZWQgYWxpZ24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIDEuNS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmNoYXIgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWVkYjk5MWYxNzI4NmE5ZTUwMzRkYWQxZTY0MmNmODZkXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6Om1ha2VyPFwvYT5bNjRdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBtYWtlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTE2MDhjOWE0MThkMzA5OWYwYzk4MjllYWJlOWU4YzYzXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6Om1heF9oPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSBoZWlnaHQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjMDNmOGMyM2ExZjY1MmViZDQ0NDAxN2VlZWFkMWVkMFwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjptYXhfdzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gd2lkdGg8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmMjg4NTJmZTMzNzY1ZTg3N2ZkODM5MjFjYWM5MTBmZlwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjptaW5faDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1pbmltdW0gaGVpZ2h0PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNmMxYTM3NGExNzY3YjI1YzRlNmZkMmE3ZDZkY2ZhYWVcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bWluX3c8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIHdpZHRoPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGJkZGUzMjU1MGM1YWMyMzlkMzZhMDU5YjVjN2JmZDdcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bW1IZWlnaHQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwaHlzaWNhbCBoZWlnaHQgKG1pbGxpbWV0ZXIpPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMWU5NmE1NmYyODg4YmE0Zjg5MTgwODlkY2E3NzY0YzNcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bW1XaWR0aDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHBoeXNpY2FsIHdpZHRoIChtaWxsaW1ldGVyKTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFlMDIzNGM1ODU1MWE2YWI1MDFjYmI4MzcwNjQ5Y2FhXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6Om1vZGVfY291bnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjb3VudCBvZiBhdmFpbGFibGUgbW9kZXM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+Y2hhciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhODMxYjFmZTU4MDc1MzkyMmI2ZmIwMzFjMmU5NmFlZjlcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bW9kZWw8XC9hPls2NF08XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IG1vZGVsPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNGQ4MjUyZWMxNWJlOGYyODVlOTIxMGM4ODZhYjdkYzNcIj5oYWxfdGRtX291dHB1dF9tb2RlPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjNzQ1ZjkwNWU4MzgwYWY5NzI2NjAwODQ3ODc0YTJkZlwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0Ojptb2RlczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIDxzdHJvbmc+bmV3bHktYWxsb2NhdGVkPFwvc3Ryb25nPiBhcnJheSBvZiBtb2Rlcy4gd2lsbCBiZSBmcmVlZCBpbiBmcm9udGVuZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+Y2hhciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYTUwZTk0ZmMwZDc2Mjk3NjM5NzI4YzkzMmFjYWU0YzlcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bmFtZTxcL2E+WzY0XTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgbmFtZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTVkYjU3NDM1YTU3M2JlMmRjNTI4ZjY4NTU4MWQzMjRkXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OnByZWZlcnJlZF9hbGlnbjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHByZWZlcnJlZCBhbGlnbjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTRkMmVhYjhkYTk1MTZhYWUzNGFiYjM0MjNjYjQ0OTEwXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OnByb3BfY291bnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjb3VudCBvZiBhdmFpbGFibGUgcHJvcGVydGllczxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWQ0MDUzYzc2OWIxYzE3OTQ5ZDg3OTk2NzhiMTY1MTdmXCI+aGFsX3RkbV9wcm9wPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkNWY4MGE2NzdhYjU2M2NmMzE0NTUzMzI3YmU5NDEwOFwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0Ojpwcm9wczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIDxzdHJvbmc+bmV3bHktYWxsb2NhdGVkPFwvc3Ryb25nPiBhcnJheSBvZiBwcm9wZXJ0aWVzLiB3aWxsIGJlIGZyZWVkIGluIGZyb250ZW5kLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU4OWYzMjQyNGZjNTkxNWU0NGMwNWQ2ZmUzOGRiMTM0XCI+aGFsX3RkbV9vdXRwdXRfY29ubl9zdGF0dXM8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjc1YjZiMGE0NTlkNTU1NmE3MDk5ZWMxOTI5YmQ1YzhcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6c3RhdHVzPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgY29ubmVjdGlvbiBzdGF0dXM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkNWIzOWE3MTQ1ZTcyNTdiZDE2YjI0ODNiY2EyNmM3YVwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjpzdWJwaXhlbDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN1YnBpeGVsPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTQ3ZDdmOTllZmE1NjhjNGJlMGFkZWY4OWQ1ZTNmNDRcIj5oYWxfdGRtX291dHB1dF90eXBlPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWJiNzM5MTYyM2YyMTllNzI5ODRkYjEwMDIwMzNmYTEwXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OnR5cGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjb25uZWN0aW9uIHR5cGU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmZjY3ZWExY2FiYmFhYzBhMDFmYzlhMmY2NmRkNjM3YlwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0Ojp0eXBlX2lkPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgY29ubmVjdGlvbiB0eXBlIGlkPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9jYXBzX3BwPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSBmb3IgcG9zdC1wcm9jZXNzaW5nJ3MgY2FwYWJpbGl0aWVzLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2NjFlZjIxY2RlNzAzYjc3NjY5NmQ0MjAxNGM4ZGI3N1wiPmhhbF90ZG1fcHBfY2FwYWJpbGl0eTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWMzNjM2OTU4OTllODJhMzAyZmUxZjk1ZWE3MmMwN2VlXCI+Y2FwYWJpbGl0aWVzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3M2MxZjEzMzMxYWFlMzEyNDRjYTljODI5MDJmNmFhYlwiPmZvcm1hdF9jb3VudDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50Ym1fZm9ybWF0ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhM2M0NmQzMGQ1NDY3YjFiMDAxMDhlZGNhNTI3NDRiNTlcIj5mb3JtYXRzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2ZWM0ZTVlMzI0ZDUwNTVlMDZmZGM1ODQyYzlkZTFkZlwiPm1pbl93PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzMzRhNjdiOGZiZTkyOTdjOTBlMmM5ZDY3YTNjNGQ5ZVwiPm1pbl9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmYTM5YTgzY2JhZTkzNzYyNzVmZWEyM2I3YmNiYmY4Y1wiPm1heF93PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5NDBkYmJhNWE4YjA2ZWI0YTA2YjBlN2EzNGU4Yzk4N1wiPm1heF9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmMTkxYjg3NGU5Yzk4OThkMGVjODVjNzI2ZjQzMjcyN1wiPnByZWZlcnJlZF9hbGlnbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNDA2MjJmMTJkMGZmZWJhYWMwODA0Y2IxNWIxNDgxNDFcIj5wcmVmZXJyZWRfYWxpZ25fdmVydGljYWw8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWRhNzE0NDJkYjBiZTVlOWM3OWM2ZDZiOWVkMGIzYzc1XCI+bWF4X2F0dGFjaF9jb3VudDxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTIxXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMjFcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjYxZWYyMWNkZTcwM2I3NzY2OTZkNDIwMTRjOGRiNzdcIj5oYWxfdGRtX3BwX2NhcGFiaWxpdHk8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzM2MzY5NTg5OWU4MmEzMDJmZTFmOTVlYTcyYzA3ZWVcIj5faGFsX3RkbV9jYXBzX3BwOjpjYXBhYmlsaXRpZXM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXBhYmlsaXRpZXMgb2YgcHA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3M2MxZjEzMzMxYWFlMzEyNDRjYTljODI5MDJmNmFhYlwiPl9oYWxfdGRtX2NhcHNfcHA6OmZvcm1hdF9jb3VudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNvdW50IG9mIGF2YWlsYWJsZSBmb3JtYXRzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnRibV9mb3JtYXQqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYzQ2ZDMwZDU0NjdiMWIwMDEwOGVkY2E1Mjc0NGI1OVwiPl9oYWxfdGRtX2NhcHNfcHA6OmZvcm1hdHM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSA8c3Ryb25nPm5ld2x5LWFsbG9jYXRlZDxcL3N0cm9uZz4gYXJyYXkuIHdpbGwgYmUgZnJlZWQgaW4gZnJvbnRlbmQuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGE3MTQ0MmRiMGJlNWU5Yzc5YzZkNmI5ZWQwYjNjNzVcIj5faGFsX3RkbV9jYXBzX3BwOjptYXhfYXR0YWNoX2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgYXR0YWNoIGNvdW50IHdoaWNoIHRoZSBQUCBvYmplY3QgY2FuIGhhbmRsZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5NDBkYmJhNWE4YjA2ZWI0YTA2YjBlN2EzNGU4Yzk4N1wiPl9oYWxfdGRtX2NhcHNfcHA6Om1heF9oPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSBoZWlnaHQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmYTM5YTgzY2JhZTkzNzYyNzVmZWEyM2I3YmNiYmY4Y1wiPl9oYWxfdGRtX2NhcHNfcHA6Om1heF93PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSB3aWR0aDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTMzNGE2N2I4ZmJlOTI5N2M5MGUyYzlkNjdhM2M0ZDllXCI+X2hhbF90ZG1fY2Fwc19wcDo6bWluX2g8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIGhlaWdodDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZlYzRlNWUzMjRkNTA1NWUwNmZkYzU4NDJjOWRlMWRmXCI+X2hhbF90ZG1fY2Fwc19wcDo6bWluX3c8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIHdpZHRoPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjE5MWI4NzRlOWM5ODk4ZDBlYzg1YzcyNmY0MzI3MjdcIj5faGFsX3RkbV9jYXBzX3BwOjpwcmVmZXJyZWRfYWxpZ248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwcmVmZXJyZWQgYWxpZ248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0MDYyMmYxMmQwZmZlYmFhYzA4MDRjYjE1YjE0ODE0MVwiPl9oYWxfdGRtX2NhcHNfcHA6OnByZWZlcnJlZF9hbGlnbl92ZXJ0aWNhbDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHByZWZlcnJlZCBhbGlnbiB2ZXJ0aWNhbDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fY2Fwc19jYXB0dXJlPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSBmb3IgY2FwdHVyZSdzIGNhcGFiaWxpdGllcy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjdkMTFjOTY3MmFlZWI3MDVlOTUwNGYwMmNmYjJkNTBcIj5oYWxfdGRtX2NhcHR1cmVfY2FwYWJpbGl0eTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTVkMGY3N2ZlNzBiMmNkNWU3NzA1ZDU3MjViNmJkYjkwXCI+Y2FwYWJpbGl0aWVzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2YzY3ZTgxMDA3MmYyZDVmYTVhOTk0YjAzYWYwM2VhMFwiPmZvcm1hdF9jb3VudDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50Ym1fZm9ybWF0ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTVjZTdhYzVmYjg3NTIwMjNhNDljOTRhNWJjMDNlNGJcIj5mb3JtYXRzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyNWFhNWUxODA4OTZiYzJlNzY2M2RlZjQ0ZjBiOWU3ZFwiPm1pbl93PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExZTgxNTYxZWI1MTQ2MDNhNmE0Yzk3NGQxODM4N2Q2OVwiPm1pbl9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5MDkxNjAwMDQ0NmU3N2Q3NjA5Y2NkYzM2MjI1MTE3YlwiPm1heF93PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjYzM5MmZlODMyYWRkNjIzMTViZTMwZTBiNjZiM2I5OVwiPm1heF9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhNjJjNzc1NGI4YTk5MTQxMDEyMWMzYTBiMWNlNjg1MVwiPnByZWZlcnJlZF9hbGlnbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzhjZmFjNGZmNmI5Y2JjMGU1YzYxZDI2MmQwZmU2MWVcIj5tYXhfYXR0YWNoX2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMjJcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yMlwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FiN2QxMWM5NjcyYWVlYjcwNWU5NTA0ZjAyY2ZiMmQ1MFwiPmhhbF90ZG1fY2FwdHVyZV9jYXBhYmlsaXR5PFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTVkMGY3N2ZlNzBiMmNkNWU3NzA1ZDU3MjViNmJkYjkwXCI+X2hhbF90ZG1fY2Fwc19jYXB0dXJlOjpjYXBhYmlsaXRpZXM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXBhYmlsaXRpZXMgb2YgY2FwdHVyZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZjNjdlODEwMDcyZjJkNWZhNWE5OTRiMDNhZjAzZWEwXCI+X2hhbF90ZG1fY2Fwc19jYXB0dXJlOjpmb3JtYXRfY291bnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjb3VudCBvZiBhdmFpbGFibGUgZm9ybWF0czxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50Ym1fZm9ybWF0KiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTVjZTdhYzVmYjg3NTIwMjNhNDljOTRhNWJjMDNlNGJcIj5faGFsX3RkbV9jYXBzX2NhcHR1cmU6OmZvcm1hdHM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSA8c3Ryb25nPm5ld2x5LWFsbG9jYXRlZDxcL3N0cm9uZz4gYXJyYXkgb2YgZm9ybWF0cy4gd2lsbCBiZSBmcmVlZCBpbiBmcm9udGVuZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3OGNmYWM0ZmY2YjljYmMwZTVjNjFkMjYyZDBmZTYxZVwiPl9oYWxfdGRtX2NhcHNfY2FwdHVyZTo6bWF4X2F0dGFjaF9jb3VudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGF0dGFjaCBjb3VudCB3aGljaCB0aGUgY2FwdHVyZSBvYmplY3QgY2FuIGhhbmRsZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjYzM5MmZlODMyYWRkNjIzMTViZTMwZTBiNjZiM2I5OVwiPl9oYWxfdGRtX2NhcHNfY2FwdHVyZTo6bWF4X2g8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtYXhpbXVtIGhlaWdodDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTkwOTE2MDAwNDQ2ZTc3ZDc2MDljY2RjMzYyMjUxMTdiXCI+X2hhbF90ZG1fY2Fwc19jYXB0dXJlOjptYXhfdzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gd2lkdGg8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExZTgxNTYxZWI1MTQ2MDNhNmE0Yzk3NGQxODM4N2Q2OVwiPl9oYWxfdGRtX2NhcHNfY2FwdHVyZTo6bWluX2g8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIGhlaWdodDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI1YWE1ZTE4MDg5NmJjMmU3NjYzZGVmNDRmMGI5ZTdkXCI+X2hhbF90ZG1fY2Fwc19jYXB0dXJlOjptaW5fdzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1pbmltdW0gd2lkdGg8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhNjJjNzc1NGI4YTk5MTQxMDEyMWMzYTBiMWNlNjg1MVwiPl9oYWxfdGRtX2NhcHNfY2FwdHVyZTo6cHJlZmVycmVkX2FsaWduPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcHJlZmVycmVkIGFsaWduPFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkRlZmluZSBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMDZjNjgwYjMyMzJkMjMwMjIxNjc4Y2U4YTc0MzE3NDdcIj5IQUxfVERNX0VWRU5UX1NPVVJDRV9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDM8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5EZWZpbml0aW9uIG9mIE1heCBjb3VudCBvZiBldmVudCBzb3VyY2UgaW4gSEFMX1RETV9NT0RVTEUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjNjMGQxZGVjYWU2NTY1NTI2NGYxYzk5ZjZjYmM2MWVcIj5IQUxfVERNX05BTUVfTEVOPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA2NDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlZmluaXRpb24gb2YgTWF4IE5hbWUgTGVuZ3RoIGluIEhBTF9URE1fTU9EVUxFLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+I2RlZmluZSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU1OTNlYWU0ZmQ1YTVjOTFkOWRjZDU2Y2JmYmY1MmM5XCI+SEFMX1RETV9QQVRIX0xFTjxcL2E+XHUwMGEwXHUwMGEwXHUwMGEwMTAyNDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlZmluaXRpb24gb2YgTWF4IFBhdGggTGVuZ3RoIGluIEhBTF9URE1fTU9EVUxFLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGhyIFwvPlxuPGgyIGlkPVwiY29udGVudC10eXBlZGVmLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtdHlwZWRlZi1kb2N1bWVudGF0aW9uXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5UeXBlZGVmIERvY3VtZW50YXRpb248XC9oMj5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTYyOWJkZTkyMjZmZjg0YTY0ZjlhMDc2MGUxMjE4OWY0XCI+aGFsX3RkbV9iYWNrZW5kPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIGJhY2tlbmQgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fYmFja2VuZF9fZGF0YVwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjJhZDUwMTE2NGI1OGVhYjAzODMyMDMxZTMzYWE3Y2NcIj5oYWxfdGRtX2JhY2tlbmRfZGF0YTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSB0ZG0gYmFja2VuZCBkYXRhLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5TZWUgYWxzbzo8XC9zdHJvbmc+XG46ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fYmFja2VuZF9fZGF0YVwiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSB0ZG0gYmFja2VuZCBkYXRhLlwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTxcL2E+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX2NhcHR1cmVcIj5faGFsX3RkbV9jYXBzX2NhcHR1cmU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTZjYmI5MDU2OTNlYzBiNDRhOTRiNWZiOTkyZGM1YjkyXCI+aGFsX3RkbV9jYXBzX2NhcHR1cmU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgZm9yIGNhcHR1cmUncyBjYXBhYmlsaXRpZXMuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19jYXBzX19kaXNwbGF5XCI+X2hhbF90ZG1fY2Fwc19kaXNwbGF5PFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWQ0NmI4YzE4NDkyYzI1MGY3NmU5MzQ0YjZhNDQ1YlwiPmhhbF90ZG1fY2Fwc19kaXNwbGF5PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgZGlzcGxheSBjYXBhYmlsaXR5IHN0cnVjdHVyZSBmb3IgQ0FQVFVSRS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX291dHB1dFwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0PFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzMGM4NmFiMWM4ZjBkNGVkYzkwNTU1MmUyOTg5MzE1NVwiPmhhbF90ZG1fY2Fwc19vdXRwdXQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgZm9yIG91dHB1dCdzIGNhcGFiaWxpdGllcy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX3BwXCI+X2hhbF90ZG1fY2Fwc19wcDxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2VmMmE3ZmYzYTRiY2JlOWQ2NzZhYTJjZmI0YmU3MzlcIj5oYWxfdGRtX2NhcHNfcHA8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgZm9yIHBvc3QtcHJvY2Vzc2luZydzIGNhcGFiaWxpdGllcy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4MDEwMDNiYTM3YTdkZTNjYTkxNTE2MTZkMzJkYmFjXCI+aGFsX3RkbV9jYXB0dXJlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIGNhcHR1cmUgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZDkzZTVjYjI3NzUzNGE1ZjIyNGRjYzAyZjMyNjNjNFwiPmhhbF90ZG1fY2FwdHVyZV9kb25lX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+ICpjYXB0dXJlLCB0Ym1fc3VyZmFjZV9oIGJ1ZmZlciwgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkb25lIGhhbmRsZXIgb2YgdGhlIGNhcHR1cmUgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBjYXB0dXJlIHwgVGhlIHBvaW50ZXIgb2YgY2FwdHVyZSBvYmplY3QuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IGJ1ZmZlciB8IFRoZSBoYW5kbGUgb2YgdGJtX3N1cmZhY2UuIHxcbnwgW2luXSB8IHVzZXJfZGF0YSB8IFRoZSB1c2VyIGRhdGEuIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fY2FwdHVyZV9fZnVuY3NcIj5faGFsX3RkbV9jYXB0dXJlX2Z1bmNzPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYjAwMzM1ODVmOWRkOWJkZTgwYjAxMjM4OTcwZjk4ZVwiPmhhbF90ZG1fY2FwdHVyZV9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgY2FwdHVyZSBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19jYXB0dXJlX19mdW5jc1wiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgY2FwdHVyZSBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuXCI+X2hhbF90ZG1fY2FwdHVyZV9mdW5jczxcL2E+PFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MjI3YzcwYzYyMWI1YzI1ODliNDM1YzU2ZTkzZTAxOVwiPmhhbF90ZG1fZGlzcGxheTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRkbSBkaXNwbGF5IG9iamVjdC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2Rpc3BsYXlfX2Z1bmNzXCI+X2hhbF90ZG1fZGlzcGxheV9mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjY4NWJkNWJmYTNhMzZmYWQwMGY3NTJmY2U5NDRjNjBcIj5oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGRpc3BsYXkgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5TZWUgYWxzbzo8XC9zdHJvbmc+XG46ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fZGlzcGxheV9fZnVuY3NcIiB0aXRsZT1cIlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGRpc3BsYXkgZnVuY3Rpb25zIGZvciBiYWNrZW5kLlwiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY4OGEwOGVhYzMyOTA2NGEwZmZkZTFhMzg4NzFjYTA2XCI+aGFsX3RkbV9ldmVudF9sb29wX2ZkX2hhbmRsZXI8XC9hPikoaW50IGV2ZW50X2ZkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWNkNGM4YTRiOWI5ZWFmNmJkMjhmYjA4NGJlZTJlODMzXCI+aGFsX3RkbV9ldmVudF9sb29wX21hc2s8XC9hPiBtYXNrLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGV2ZW50X2xvb3BfZmQgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoaXMgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBvdXRwdXQgb2JqZWN0IGlzIGNyZWF0ZWQgaW4gcnVudGltZS48XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBldmVudF9mZCB8IFRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgZXZlbnQuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IG1hc2sgfCBUaGUgbWFzayBvZiBldmVudF9mZC4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19ldmVudF9fc291cmNlXCI+X2hhbF90ZG1fZXZlbnRfc291cmNlPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlOGI2N2YyZGQyN2ZjZjQwYWViNGNlOGQzMDk0NmJhNFwiPmhhbF90ZG1fZXZlbnRfc291cmNlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIGZvciBldmVudCBzb3VyY2UgaW5mb3JtYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTlmZjI4YzJhNjk5MjA0MGNiN2U5Mzc0MzNkZjBkNDIxXCI+aGFsX3RkbV9mZDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRkbSBmZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0ZG0gaHdjIG9iamVjdC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjZiZGE1NmIxZGI4NGVlMmYyMGU4MTM5YWU4ODQyYmFcIj5oYWxfdGRtX2h3Y19jb21taXRfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1bnNpZ25lZCBpbnQgc2VxdWVuY2UsIHVuc2lnbmVkIGludCB0dl9zZWMsIHVuc2lnbmVkIGludCB0dl91c2VjLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGh3YyBjb21taXQgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+UGFyYW1ldGVyczo8XC9zdHJvbmc+XG46ICAgfCBbaW5dIHwgaHdjIHwgVGhlIHBvaW50ZXIgb2YgaHdjIG9iamVjdC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgc2VxdWVuY2UgfCBUaGUgbnVtYmVyIG9mIGZyYW1lIHVzZWQgYXMgc2VxdWVuY2UuIHxcbnwgW2luXSB8IHR2X3NlYyB8IFRoZSBzZWNvbmQgb2YgdGltZSB3aGVuIGh3YydzIGNvbW1pdCBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdHZfdXNlYyB8IFRoZSBtaWNybyBzZWNvbmQgb2YgdGltZSB3aGVuIGh3YydzIGNvbW1pdCBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICBod2Nfc2V0X2NvbW1pdF9oYW5kbGVyKCkgZnVuY3Rpb24gb2YgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1NTFjMmYyODFmNmE5NGQxMzE4MTc2NzI0NjNjNWZlZFwiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgaHdjIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC5cIj5oYWxfdGRtX2h3Y19mdW5jczxcL2E+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2h3Y19fZnVuY3NcIj5faGFsX3RkbV9od2NfZnVuY3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTU1MWMyZjI4MWY2YTk0ZDEzMTgxNzY3MjQ2M2M1ZmVkXCI+aGFsX3RkbV9od2NfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGh3YyBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19od2NfX2Z1bmNzXCIgdGl0bGU9XCJUaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBod2MgZnVuY3Rpb25zIGZvciBiYWNrZW5kLlwiPl9oYWxfdGRtX2h3Y19mdW5jczxcL2E+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIGh3YyB3aW5kb3cgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX193aW5kb3dfX2Z1bmNzXCI+X2hhbF90ZG1faHdjX3dpbmRvd19mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGFkOTFiOTg5ODc0NzgyYzUzYjVjMzkzOGFjYzc2YzNcIj5oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGh3YyB3aW5kb3cgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5TZWUgYWxzbzo8XC9zdHJvbmc+XG46ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX193aW5kb3dfX2Z1bmNzXCIgdGl0bGU9XCJUaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBod2Mgd2luZG93IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC5cIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzPFwvYT48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX193aW5kb3dfX2luZm9cIj5faGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWUxNTdlOTZiN2M1OWM1NTk3Y2JhMTllNzdkZGY5Y2VhXCI+aGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBod2Mgd2luZG93IGluZm8gc3RydWN0dXJlIHRvIGNvbXBvc2l0ZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2luZm9fX2NhcHR1cmVcIj5faGFsX3RkbV9pbmZvX2NhcHR1cmU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYThkNDU2Y2I0NjUxZmVjYWQ1MzU3ZDVmNDNhYmM2MWIyXCI+aGFsX3RkbV9pbmZvX2NhcHR1cmU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXB0dXJlIGluZm8gc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faW5mb19fY29uZmlnXCI+X2hhbF90ZG1faW5mb19jb25maWc8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGluZm8gY29uZmlnIHN0cnVjdHVyZSBmb3Igd2luZG93LCBsYXllci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2luZm9fX3BwXCI+X2hhbF90ZG1faW5mb19wcDxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYzE3ZTdjYjlhMzYwY2UxM2RiNTg5MjYwZDEwNzc0YzdcIj5oYWxfdGRtX2luZm9fcHA8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUgdG8gdXNlIHBvc3QtcHJvY2Vzc2luZy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNDU5MzRjNzMzZmJhNjE5NzUxYzQ1MjRmYTdlOTZjYzZcIj5oYWxfdGRtX21hc3Rlcl9kcm1fZmRfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTlmZjI4YzJhNjk5MjA0MGNiN2U5Mzc0MzNkZjBkNDIxXCI+aGFsX3RkbV9mZDxcL2E+IG1hc3Rlcl9kcm1fZmQsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgZnVuY3Rpb24gZm9yIHNldHRpbmcgbWFzdGVyX2RybV9mZCB0byBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBtYXN0ZXJfZHJtX2ZkIHwgVGhlIG1hc3RlciBkcm0gZmlsZSBkZXNjcmlwdG9yLiB8XG58IC0tLSB8IC0tLSB8IC0tLSB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhIGZvciBoYW5kbGVyLiB8PFwvcD5cbjxwPjxzdHJvbmc+UHJlY29uZGl0aW9uOjxcL3N0cm9uZz5cbjogICBoYWxfdGRtX2JhY2tlbmRfc2V0X21hc3Rlcl9kcm1fZmQoKSB3aWxsIGludm9rZSB0aGlzIGhhbmRsZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIGhhbF90ZG1fYmFja2VuZF9zZXRfbWFzdGVyX2RybV9mZCgpLlxuOiAgIGhhbF90ZG1fYmFja2VuZF9nZXRfbWFzdGVyX2RybV9mZCgpLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzMzUxNWU1OWRjNTM0ODg2MWY3N2FhYjY3NGRmZTA3NFwiPmhhbF90ZG1fbW9kdWxlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIGJhY2tlbmQgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRkbSBvdXRwdXQgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5YTkxNzAxMjE2NDJmNzJhZmM2MmEyMGYzOGU5MmYxNlwiPmhhbF90ZG1fb3V0cHV0X2NoYW5nZV9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOTIxNGExZTM4Y2M0MGYzYzI5MGJiZGI3NjE0MzcxMmVcIj5oYWxfdGRtX291dHB1dF9jaGFuZ2VfdHlwZTxcL2E+IHR5cGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3VuaW9uaGFsX190ZG1fX3ZhbHVlXCI+aGFsX3RkbV92YWx1ZTxcL2E+IHZhbHVlLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBjaGFuZ2UgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoaXMgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBzdGF0dXMgb2YgdGhlIG91dHB1dCBvYmplY3QgaXMgY2hhbmdlZCBpbiBydW50aW1lLjxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IG91dHB1dCB8IFRoZSBwb2ludGVyIG9mIG91dHB1dC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgdHlwZSB8IFRoZSBvdXRwdXQgY2hhbmdlIGVudW1lcmF0aW9uLiB8XG58IFtpbl0gfCB2YWx1ZSB8IFRoZSB0ZG0ncyB1bmlvbiB2YWx1ZS4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4YTc2MWY0NjZjZDk3MDdlN2ViNGU3NDBhYWU2ZDc5XCI+aGFsX3RkbV9vdXRwdXRfY29tbWl0X2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdW5zaWduZWQgaW50IHNlcXVlbmNlLCB1bnNpZ25lZCBpbnQgdHZfc2VjLCB1bnNpZ25lZCBpbnQgdHZfdXNlYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgY29tbWl0IGhhbmRsZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IG91dHB1dCB8IFRoZSBwb2ludGVyIG9mIG91dHB1dC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgc2VxdWVuY2UgfCBUaGUgbnVtYmVyIG9mIGZyYW1lIHVzZWQgYXMgc2VxdWVuY2UuIHxcbnwgW2luXSB8IHR2X3NlYyB8IFRoZSBzZWNvbmQgb2YgdGltZSB3aGVuIGNvbW1pdCBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdHZfdXNlYyB8IFRoZSBtaWNybyBzZWNvbmQgb2YgdGltZSB3aGVuIGNvbW1pdCBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICBvdXRwdXRfc2V0X2NvbW1pdF9oYW5kbGVyKCkgZnVuY3Rpb24gb2YgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2Njg1YmQ1YmZhM2EzNmZhZDAwZjc1MmZjZTk0NGM2MFwiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgZGlzcGxheSBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuXCI+aGFsX3RkbV9kaXNwbGF5X2Z1bmNzPFwvYT48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZWQ3YmQ0MDAxYWYzOTcwMDkwNjI1OWVlYWNhZjlkNVwiPmhhbF90ZG1fb3V0cHV0X2NyZWF0ZV9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZHB5LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBjcmVhdGUgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoaXMgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBvdXRwdXQgb2JqZWN0IGlzIGNyZWF0ZWQgaW4gcnVudGltZS48XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBkcHkgfCBUaGUgcG9pbnRlciBvZiBoYWxfdGRtX2Rpc3BsYXkuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IG91dHB1dCB8IFRoZSBwb2ludGVyIG9mIG91dHB1dC4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YSB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTJhNGJlYzNlNWUxNzhhMmEwMzRkZDZlNTA1MWM3YjhcIj5oYWxfdGRtX291dHB1dF9kZXN0cm95X2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgZGVzdHJveSBoYW5kbGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+VGhpcyBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIG91dHB1dCBvYmplY3QgaXMgZGVzdHJveWVkIGluIHJ1bnRpbWUuPFwvcD5cbjxwPjxzdHJvbmc+UGFyYW1ldGVyczo8XC9zdHJvbmc+XG46ICAgfCBbaW5dIHwgb3V0cHV0IHwgVGhlIHBvaW50ZXIgb2Ygb3V0cHV0LiB8XG58IC0tLSB8IC0tLSB8IC0tLSB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjcxMGI2MzJiM2QxYTA2YzJjNjM0MTkxZDNkNTU2MGZcIj5oYWxfdGRtX291dHB1dF9kcG1zX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYzQzMzFiZjgwZDcyN2M5NWMxMjg1MjFiZWM5MjM2ZFwiPmhhbF90ZG1fb3V0cHV0X2RwbXM8XC9hPiBkcG1zLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBkcG1zIGhhbmRsZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IG91dHB1dCB8IFRoZSBwb2ludGVyIG9mIG91dHB1dC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgZHBtcyB8IFRoZSBEUE1TIHZhbHVlIHxcbnwgW2luXSB8IHVzZXJfZGF0YSB8IFRoZSB1c2VyIGRhdGEuIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fb3V0cHV0X19mdW5jc1wiPl9oYWxfdGRtX291dHB1dF9mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMTBiZDc0MGJiNjZjYjI2MGQyNzFkNjVlZDMyMmRiMTVcIj5oYWxfdGRtX291dHB1dF9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3Mgb3V0cHV0IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX291dHB1dF9fZnVuY3NcIiB0aXRsZT1cIlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIG91dHB1dCBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzPFwvYT48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fb3V0cHV0X19tb2RlXCI+X2hhbF90ZG1fb3V0cHV0X21vZGU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBtb2RlIHN0cnVjdHVyZSBjb21wYXRpYmxlIHdpdGggZHJtX21vZGVfbW9kZWluZm8gaW4gZHJtLXVhcGkuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM1ZjJjY2E3YzMwNzQwNTk5MTJmOTc0NTgyNGEwYjk5XCI+aGFsX3RkbV9vdXRwdXRfbW9kZV9jaGFuZ2VfcmVxdWVzdF9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBpbmRleCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgbW9kZSBjaGFuZ2UgcmVxdWVzdCBoYW5kbGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBvdXRwdXQgfCBUaGUgcG9pbnRlciBvZiBvdXRwdXQuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IGluZGV4IHwgVGhlIGluZGV4IG9mIGF2YWlsYWJsZSBtb2RlcyB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzVjNTA0MTdjZWJiZWZhZmUxN2RhYWRiNzllMTE1MjFcIj5oYWxfdGRtX291dHB1dF9zdGF0dXNfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU4OWYzMjQyNGZjNTkxNWU0NGMwNWQ2ZmUzOGRiMTM0XCI+aGFsX3RkbV9vdXRwdXRfY29ubl9zdGF0dXM8XC9hPiBzdGF0dXMsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IHN0YXR1cyBoYW5kbGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBvdXRwdXQgfCBUaGUgcG9pbnRlciBvZiBvdXRwdXQuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IHN0YXR1cyB8IFRoZSBjb25uZWN0aW9uIHN0YXR1cyB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTlmYTBiYmU4ZjJmOWRjOGY2YmE1MDNlNjE1YjM0ZmFcIj5oYWxfdGRtX291dHB1dF92YmxhbmtfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgc2VxdWVuY2UsIHVuc2lnbmVkIGludCB0dl9zZWMsIHVuc2lnbmVkIGludCB0dl91c2VjLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZibGFuayBoYW5kbGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBvdXRwdXQgfCBUaGUgcG9pbnRlciBvZiBvdXRwdXQuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IHNlcXVlbmNlIHwgVGhlIG51bWJlciBvZiBmcmFtZSB1c2VkIGFzIHNlcXVlbmNlLiB8XG58IFtpbl0gfCB0dl9zZWMgfCBUaGUgc2Vjb25kIG9mIHRpbWUgd2hlbiB2c3luYyBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdHZfdXNlYyB8IFRoZSBtaWNybyBzZWNvbmQgb2YgdGltZSB3aGVuIHZzeW5jIGlzIG9jY3VycmVkLiB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIG91dHB1dF9zZXRfdmJsYW5rX2hhbmRsZXIoKSBmdW5jdGlvbiBvZiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTY2ODViZDViZmEzYTM2ZmFkMDBmNzUyZmNlOTQ0YzYwXCIgdGl0bGU9XCJUaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBkaXNwbGF5IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC5cIj5oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19wb3NcIj5faGFsX3RkbV9wb3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwb3NpdGlvbiBzdHJ1Y3R1cmUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0ZG0gcHAgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5NWRkODJiYjNjZjFiMGIzMzAzYmVkZjQyMWFmZjYwZlwiPmhhbF90ZG1fcHBfZG9uZV9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGJjNzY3Nzk4YWFiYjUzNDU0MDg1MTdmYjkxMDk3YzRcIj5oYWxfdGRtX3BwPFwvYT4gKnBwLCB0Ym1fc3VyZmFjZV9oIHNyYywgdGJtX3N1cmZhY2VfaCBkc3QsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgZG9uZSBoYW5kbGVyIG9mIHRoZSBwcCBvYmplY3QuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IHBwIHwgVGhlIHBvaW50ZXIgb2YgcG9zdC1wcm9jZXNzaW5nIG9iamVjdC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgc3JjIHwgVGhlIHNvdXJjZSBoYW5kbGUgb2YgdGJtX3N1cmZhY2UuIHxcbnwgW2luXSB8IGRzdCB8IFRoZSBkZXN0aW5hdGlvbiBoYW5kbGUgb2YgdGJtX3N1cmZhY2UuIHxcbnwgW2luXSB8IHVzZXJfZGF0YSB8IFRoZSB1c2VyIGRhdGEuIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fcHBfX2Z1bmNzXCI+X2hhbF90ZG1fcHBfZnVuY3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWVmZjljYzhmNGQ0MDZhYzIxMmEwYTk0ZWNjY2MyZjYzXCI+aGFsX3RkbV9wcF9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgcG9zdC1wcm9jZXNzaW5nIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3BwX19mdW5jc1wiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgcG9zdC1wcm9jZXNzaW5nIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC5cIj5faGFsX3RkbV9wcF9mdW5jczxcL2E+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3Byb3BcIj5faGFsX3RkbV9wcm9wPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FkNDA1M2M3NjliMWMxNzk0OWQ4Nzk5Njc4YjE2NTE3ZlwiPmhhbF90ZG1fcHJvcDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHByb3BlcnR5IHN0cnVjdHVyZSBvZiB0ZG0uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19yZWdpb25cIj5faGFsX3RkbV9yZWdpb248XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIzMmU0NmFhOGM2ZTY4MzZlMzBjOTE5MTU0YzMxNjVjXCI+aGFsX3RkbV9yZWdpb248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSByZWdpb24gc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fc2l6ZVwiPl9oYWxfdGRtX3NpemU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiMDNiMWY0NDE1MDg4MGU5OTk2N2JjM2IwYjMwNzI5XCI+aGFsX3RkbV9zaXplPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc2l6ZSBzdHJ1Y3R1cmUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyOWRjOTBjNjI4MTRkY2Q2YjExYzZkYjQ4YmNhMGM4MVwiPmhhbF90ZG1fdmJsYW5rPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIHZibGFuayBvYmplY3QuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY1M2Q3NDFhZmU1MGYwYmI5Y2Y2ZDFkNzFlMDViMTMwXCI+aGFsX3RkbV92YmxhbmtfY3JlYXRlX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyOWRjOTBjNjI4MTRkY2Q2YjExYzZkYjQ4YmNhMGM4MVwiPmhhbF90ZG1fdmJsYW5rPFwvYT4gKnZibGFuaywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjcmVhdGUgaGFuZGxlciBvZiB0aGUgdmJsYW5rIG9iamVjdC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+UGFyYW1ldGVyczo8XC9zdHJvbmc+XG46ICAgfCBbaW5dIHwgdmJsYW5rIHwgVGhlIHBvaW50ZXIgb2YgdmJsYW5rIG9iamVjdC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRkbSB2b3V0cHV0IG9iamVjdC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTFmOGQxZDM0NDkyMmYyYjRkOWUxMGE2NDNiM2E1MzBcIj5oYWxfdGRtX3ZvdXRwdXRfY29tbWl0X2Z1bmM8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0LCB0Ym1fc3VyZmFjZV9oIGJ1ZmZlcik8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdm91dHB1dCBjb21taXQgZnVuY3Rpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IHZvdXRwdXQgfCBUaGUgbnVtYmVyIG9mIGZyYW1lIHVzZWQgYXMgc2VxdWVuY2UuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IGJ1ZmZlciB8IFRoZSBoYW5kbGUgb2YgdGJtX3N1cmZhY2UuIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4MDUxOWZmNDhmNzcyZDhjZGM3MTIzNWIwYTYyOGZkYlwiPmhhbF90ZG1fdm91dHB1dF9jb21taXRfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQsIHVuc2lnbmVkIGludCBzZXF1ZW5jZSwgdW5zaWduZWQgaW50IHR2X3NlYywgdW5zaWduZWQgaW50IHR2X3VzZWMsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdm91dHB1dCBjb21taXQgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+UGFyYW1ldGVyczo8XC9zdHJvbmc+XG46ICAgfCBbaW5dIHwgaHdjIHwgVGhlIHBvaW50ZXIgb2YgaHdjIG9iamVjdC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgdm91dHB1dCB8IFRoZSBudW1iZXIgb2YgZnJhbWUgdXNlZCBhcyBzZXF1ZW5jZS4gfFxufCBbaW5dIHwgdHZfc2VjIHwgVGhlIHNlY29uZCBvZiB0aW1lIHdoZW4gaHdjJ3MgY29tbWl0IGlzIG9jY3VycmVkLiB8XG58IFtpbl0gfCB0dl91c2VjIHwgVGhlIG1pY3JvIHNlY29uZCBvZiB0aW1lIHdoZW4gaHdjJ3MgY29tbWl0IGlzIG9jY3VycmVkLiB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3ZvdXRwdXRfX2Z1bmNzXCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjNkOGVjY2ZiMDkxZjVkYTJmOWQzOGRkZTZjY2NkMmFcIj5oYWxfdGRtX3ZvdXRwdXRfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIHZpcnR1YWwgb3V0cHV0IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3ZvdXRwdXRfX2Z1bmNzXCIgdGl0bGU9XCJUaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyB2aXJ0dWFsIG91dHB1dCBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuXCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczxcL2E+PFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtZW51bWVyYXRpb24tdHlwZS1kb2N1bWVudGF0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LWVudW1lcmF0aW9uLXR5cGUtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RW51bWVyYXRpb24gVHlwZSBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjdkMTFjOTY3MmFlZWI3MDVlOTUwNGYwMmNmYjJkNTBcIj5oYWxfdGRtX2NhcHR1cmVfY2FwYWJpbGl0eTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNhcHR1cmUgY2FwYWJpbGl0eSBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoZSBzY2FsZSwgdHJhbnNmb3JtIGFuZCBDU0MgZnVuY3Rpb25hbGl0aWVzIHNlZW0gdGhlIGRlZmF1bHQgZnVuY3Rpb25zIG9mIGNhcHR1cmUuIElmIGhhcmR3YXJlIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgb25lIG9mIHRoZW0sIHdlJ2QgYmV0dGVyIGxldCB0aGUgZGV2ZWxvcGVyIGtub3cgd2hhdCB0aGUgYmFja2VuZCBkb2Vzbid0IHN1cHBvcnQgbGlrZSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnZ2E2NjFlZjIxY2RlNzAzYjc3NjY5NmQ0MjAxNGM4ZGI3N2FiMjJkYWZiMDY1NGFmZWY3Mjg4MDNiOWQzOTRkZjhkZFwiPkhBTF9URE1fUFBfQ0FQQUJJTElUWV9OT19DU0M8XC9hPi48XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX0NBUFRVUkVfQ0FQQUJJTElUWV9PVVRQVVQ8XC9lbT4gfCBUaGUgY2FwdHVyZSBkZXZpY2Ugc3VwcG9ydHMgdG8gZHVtcCB0aGUgb3V0cHV0IHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9URE1fQ0FQVFVSRV9DQVBBQklMSVRZX09ORVNIT1Q8XC9lbT4gfCBUaGUgY2FwdHVyZSBkZXZpY2Ugc3VwcG9ydHMgb25lc2hvdCBkdW1wIHxcbnwgPGVtPkhBTF9URE1fQ0FQVFVSRV9DQVBBQklMSVRZX1NUUkVBTTxcL2VtPiB8IFRoZSBjYXB0dXJlIGRldmljZSBzdXBwb3J0cyBzdHJlYW0gZHVtcCB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2OWVkOTdjMjM1OTI1OTViYTg2NGFhZWFhODA2NzZiZlwiPmhhbF90ZG1fY2FwdHVyZV90eXBlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgY2FwdHVyZSB0eXBlIGVudW1lcmF0aW9uLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX0NBUFRVUkVfVFlQRV9PTkVTSE9UPFwvZW0+IHwgVGhlIG9uZXNob3QgY2FwdHVyZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX0NBUFRVUkVfVFlQRV9TVFJFQU08XC9lbT4gfCBUaGUgc3RyZWFtIGNhcHR1cmUgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjYyYzQzZjQ2MDQ3MDViOWZiMTg3NjI3Y2FhOGYwOTVcIj5oYWxfdGRtX2Rpc3BsYXlfY2FwYWJpbGl0eTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGRpc3BsYXkgY2FwYWJpbGl0eSBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9ESVNQTEFZX0NBUEFCSUxJVFlfUFA8XC9lbT4gfCBUaGUgZmxhZyBhYm91dCBoYXJkd2FyZSBzdXBwb3J0cyBwb3N0LXByb2Nlc3Npbmcgb3BlcmF0aW9uIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9URE1fRElTUExBWV9DQVBBQklMSVRZX0NBUFRVUkU8XC9lbT4gfCBUaGUgZmxhZyBhYm91dCBoYXJkd2FyZSBzdXBwb3J0cyBjYXB0dXJlIG9wZXJhdGlvbiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBlcnJvciBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9FUlJPUl9OT05FPFwvZW0+IHwgbm9uZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX0VSUk9SX0JBRF9SRVFVRVNUPFwvZW0+IHwgYmFkIHJlcXVlc3QgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9PUEVSQVRJT05fRkFJTEVEPFwvZW0+IHwgb3BlcmF0aW9uIGZhaWxlZCB8XG58IDxlbT5IQUxfVERNX0VSUk9SX0lOVkFMSURfUEFSQU1FVEVSPFwvZW0+IHwgd3JvbmcgaW5wdXQgcGFyYW1ldGVyIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfUEVSTUlTU0lPTl9ERU5JRUQ8XC9lbT4gfCBhY2Nlc3MgZGVuaWVkIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfQlVTWTxcL2VtPiB8IGhhcmR3YXJlIHJlc291cmNlIGJ1c3kgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9PVVRfT0ZfTUVNT1JZPFwvZW0+IHwgbm8gZnJlZSBtZW1vcnkgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9CQURfTU9EVUxFPFwvZW0+IHwgYmFkIGJhY2tlbmQgbW9kdWxlIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfTk9UX0lNUExFTUVOVEVEPFwvZW0+IHwgbm90IGltcGxlbWVudGVkIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfTk9fQ0FQQUJJTElUWTxcL2VtPiB8IG5vIGNhcGFiaWxpdHkgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9EUE1TX09GRjxcL2VtPiB8IGRwbXMgb2ZmIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfT1VUUFVUX0RJU0NPTk5FQ1RFRDxcL2VtPiB8IG91dHB1dCBkaXNjb25uZWN0ZWQgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9QUk9UT0NPTF9FUlJPUjxcL2VtPiB8IHByb3RvY29sIGVycm9yIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfVElNRU9VVDxcL2VtPiB8IHRpbWVvdXQgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9OT19NT0RVTEU8XC9lbT4gfCBubyBiYWNrZW5kIG1vZHVsZSB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FjZDRjOGE0YjliOWVhZjZiZDI4ZmIwODRiZWUyZTgzM1wiPmhhbF90ZG1fZXZlbnRfbG9vcF9tYXNrPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWFzayBvZiBoYWxfdGRtX2V2ZW50X2xvb3BfZmRfaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjg4YTA4ZWFjMzI5MDY0YTBmZmRlMWEzODg3MWNhMDZcIiB0aXRsZT1cIlRoZSBldmVudF9sb29wX2ZkIGhhbmRsZXIuXCI+aGFsX3RkbV9ldmVudF9sb29wX2ZkX2hhbmRsZXI8XC9hPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZThiNjdmMmRkMjdmY2Y0MGFlYjRjZThkMzA5NDZiYTRcIiB0aXRsZT1cIlRoZSBzdHJ1Y3R1cmUgZm9yIGV2ZW50IHNvdXJjZSBpbmZvcm1hdGlvbi5cIj5oYWxfdGRtX2V2ZW50X3NvdXJjZTxcL2E+PFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9FVkVOVF9MT09QX1JFQURBQkxFPFwvZW0+IHwgVGhlIG1hc2sgZm9yIFJFQURBQkxFIGV2ZW50IHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9URE1fRVZFTlRfTE9PUF9XUklUQUJMRTxcL2VtPiB8IFRoZSBtYXNrIGZvciBXUklUQUJMRSBldmVudCB8XG58IDxlbT5IQUxfVERNX0VWRU5UX0xPT1BfSEFOR1VQPFwvZW0+IHwgVGhlIG1hc2sgZm9yIEhBTkdVUCBldmVudCB8XG58IDxlbT5IQUxfVERNX0VWRU5UX0xPT1BfRVJST1I8XC9lbT4gfCBUaGUgbWFzayBmb3IgRVJST1IgZXZlbnQgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOTJkODRjM2E2MDdhZTQwMmM4NDQzMGZjNmFlZDg3YmZcIj5oYWxfdGRtX2h3Y19jYXBhYmlsaXR5PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaHdjIHZpZGVvIGNhcGFiaWxpdHkgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9URE1fSFdDX0NBUEFCSUxJVFlfVklERU9fU1RSRUFNPFwvZW0+IHwgVGhlIGNhcGFiaWxpdHkgYWJvdXQgdGhlIGh3YyBoYXMgdmlkZW8gc3RyZWFtIGNhcGFiaWxpdHkgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9IV0NfQ0FQQUJJTElUWV9WSURFT19TQ0FMRTxcL2VtPiB8IFRoZSBjYXBhYmlsaXR5IGFib3V0IHRoZSBod2MgYWxsb3dzIHRvIHNjYWxlIHRoZSB2aWRlbyBidWZmZXIgfFxufCA8ZW0+SEFMX1RETV9IV0NfQ0FQQUJJTElUWV9WSURFT19UUkFOU0ZPUk08XC9lbT4gfCBUaGUgY2FwYWJpbGl0eSBhYm91dCB0aGUgaHdjIGFsbG93cyB2aWRlbyB0byB0cmFuc2Zvcm0gdGhlIHZpZGVvIGJ1ZmZlciB8XG58IDxlbT5IQUxfVERNX0hXQ19DQVBBQklMSVRZX1ZJREVPX1NDQU5PVVQ8XC9lbT4gfCBUaGUgY2FwYWJpbGl0eSBhYm91dCB0aGUgaHdjIGFsbG93cyB2aWRlbyB0byBhY2NlcHQgdGhlIHNjYW5vdXQgYnVmZmVyIG9ubHkgfFxufCA8ZW0+SEFMX1RETV9IV0NfQ0FQQUJJTElUWV9GRU5DRTxcL2VtPiB8IFRoZSBjYXBhYmlsaXR5IGFib3V0IHRoZSBod2MgYWxsb3dzIGZlbmNlIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWZmMDQ5MDUzZjU3ODk1N2Q3NjU0YWEwZDk0NzVhMzQ0XCI+aGFsX3RkbV9od2NfY29tbWl0X2ludGVydmFsPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5IV0MncyBjb21wb3NpdGlvbiBpbnRlcnZhbC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9IV0NfQ09NTUlUX0lOVEVSVkFMX05PTkU8XC9lbT4gfCBEZWZhdWx0IGludGVydmFsIG9mIEhXQydzIGNvbXBvc2l0aW9uLiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX0hXQ19DT01NSVRfSU5URVJWQUxfVkJMQU5LPFwvZW0+IHwgSWYgdGhpcyBpbnRlcnZhbCBpcyBzZXQgYnkgdGRtIGJhY2tlbmQsIHRoZSBjb21wb3NpdG9yIGNhbGwgY29tbWl0IHBlciB2YmxhbmsgZXZlbiBpZiB0aGUgaGFuZGxlciBvZiBjb21taXQgaXNuJ3QgY2FsbGVkLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzVjOGIzYzc0ZGZiZjYyYzY4MWM5ZDRlODhjODM5NlwiPmhhbF90ZG1faHdjX3dpbmRvd19jb21wb3NpdGlvbjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+UG9zc2libGUgY29tcG9zaXRpb24gdHlwZXMgZm9yIHRoZSBnaXZlbiB3aW5kb3cuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9URE1fSFdDX1dJTl9DT01QT1NJVElPTl9OT05FPFwvZW0+IHwgVGhlIGNvbXBvc2l0aW9uIHR5cGUgZm9yIGFuIGludmlzaWJsZSB3aW5kb3cuIFRoZSB2YWx1ZSBieSBkZWZhdWx0LiAgVGhlIGJhY2tlbmQgaWdub3JlcyB3aW5kb3dzIG9mIHRoaXMgdHlwZS4gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9IV0NfV0lOX0NPTVBPU0lUSU9OX0NMSUVOVDxcL2VtPiB8IFRoZSBjb21wb3NpdGlvbiB0eXBlIGZvciBhbiB3aW5kb3cgdG8gYmUgY29tcHNvaXRlZCBieSB0aGUgY2xpZW50LiAgV2hlbiB0aGUgY2xpZW50IHNldHMgdGhpcyBjb21wb3NpdGlvbiB0eXBlLCB0aGUgYmFja2VuZCBNVVNUIE5PVCBtb2RpZnkgdGhpcyBjb21wb3NpdGlvbiB0eXBlIGludG8gb3RoZXIgdHlwZXMuICBXaGVuIHRoZSBiYWNrZW5kIGNoYW5nZXMgVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fREVWSUNFIG9yIFRETV9IV0NfV0lOX0NPTVBPU0lUSU9OX0NVUlNPUiB0byB0aGlzIGNvbXBvc2l0aW9uIHR5cGUgYXQgdGhlIHRpbWUgb2YgdGRtX2h3Y192YWxpZGF0ZSBhbmQgdGRtX2h3Y19nZXRfY2hhbmdlZF9jb21wb3NpdGlvbl90eXBlcywgdGhlIGNsaWVudCBoYXMgdG8gY29tcG9zaXRlIHRoaXMgd2luZG93IHdpdGggZ2wgb3Igb3RoZXIgZHJhd2luZyBvcGVyYXRpb25zLiB8XG58IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fREVWSUNFPFwvZW0+IHwgVGhlIGNvbXBvc2l0aW9uIHR5cGUgZm9yIGFuIHdpbmRvdyB0byBiZSBzZXQgdG8gdGhlIGh3IG92ZXJsYXkuICBUaGUgY2xpZW50IHNldHMgdGhpcyBjb21wb3NpdGlvbiB0eXBlIHRvIHRoZSB2aXNpYmxlIHdpbmRvd3MgYmVmb3JlIHJlcXVlc3RpbmcgdGhlIHRkbV9od2NfdmFsaWRhdGUuIE5vbWFsbHksIHRoZSBiYWNrZW5kIGxlYXZlIGl0IGlmIHRoZSBiYWNrZW5kIHNldHMgdGhlIHdpbmRvdyB0byB0aGUgaHcgb3ZlcmxheS4gSWYgdGhlIGJhY2tlbmQgZG9lcyBub3Qgc2V0IHRoZSB3aW5kb3cgdG8gdGhlIGh3IG92ZXJsYXkgYXQgdGhlIHRpbWUgb2YgdGRtX2h3Y192YWxpZGF0ZSwgdGhlIGJhY2tlbmQgY2hhbmdlcyB0aGUgY29tcG9zaXRpb24gdHlwZSBvZiB0aGUgd2luZG93IGludG8gVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fQ0xJRU5ULiB8XG58IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fQ1VSU09SPFwvZW0+IHwgVGhlIGNvbXBvc2l0aW9uIHR5cGUgZm9yIGFuIHdpbmRvdyB0byBiZSBzZXQgdG8gdGhlIGN1cnNvciBodyBvdmVybGF5LiAgVGhlIGNsaWVudCBzZXRzIHRoaXMgY29tcG9zaXRpb24gdHlwZSB0byB0aGUgY3Vyc29yIHdpbmRvdyBiZWZvcmUgcmVxdWVzdGluZyB0aGUgdGRtX2h3Y192YWxpZGF0ZS4gSWYgdGhlIGJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3Vyc29yIGh3IG92ZXJsYXksIHRoZSBiYWNrZW5kIGNhbiBjaGFuZ2UgdGhlIGNvbW9wc2l0aW9uIHR5cGUgaW50byB0aGUgVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fQ0xJRU5ULiB8XG58IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fVklERU88XC9lbT4gfCBUaGUgY29tcG9zaXRpb24gdHlwZSBmb3IgYW4gd2luZG93IHRvIGJlIHNldCB0byB0aGUgdmlkZW8gaHcgb3ZlcmxheS4gIFRoZSBjbGllbnQgc2V0cyB0aGlzIGNvbXBvc2l0aW9uIHR5cGUgdG8gdGhlIHZpZGVvIHdpbmRvdyBiZWZvcmUgcmVxdWVzdGluZyB0aGUgdGRtX2h3Y192YWxpZGF0ZS4gSWYgdGhlIGJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgdmlkZW8gaHcgb3ZlcmxheSwgdGhlIGJhY2tlbmQgY2FuIGNoYW5nZSB0aGUgY29tb3BzaXRpb24gdHlwZSBpbnRvIHRoZSBURE1fSFdDX1dJTl9DT01QT1NJVElPTl9DTElFTlQuIE5vcm1hbGx5LCB0aGlzIFZJREVPIHdpbmRvdyBkaXNwbGF5cyB1bmRlciB0aGUgcHJpbWFyeSBodyBvdmVybGF5ZXIgb2YgdGhlIG91dHB1dC4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTdiNWEwZTc4NjMxMjIzNDdkN2VkNDUzMDFmNjJmNzlcIj5oYWxfdGRtX2h3Y193aW5kb3dfY29uc3RyYWludDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+SFdDJ3MgY29tcG9zaXRpb24gbW9kZSBmb3Igc3BlY2lmaWMgYnVmZmVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09OU1RSQUlOVF9OT05FPFwvZW0+IHwgRGVmYXVsdCBtb2RlIG9mIEhXQydzIGNvbXBvc2l0aW9uLiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09OU1RSQUlOVF9CVUZGRVJfUVVFVUU8XC9lbT4gfCBJZiB0aGUgY2xpZW50IG5lZWRzIHRvIHJlbmRlciB0byB0aGUgc3BlY2lmaWMgYnVmZmVyIGZvciBjb21wb3NpdGluZyB3aXRoIFRETV9IV0NfV0lOX0NPTVBPU0lUSU9OX0RFVklDRSwgdGhlIGJhY2tlbmQgbmVlZHMgdG8gc2V0IFRETV9IV0NfV0lOX0NPTlNUUkFJTlRfQlVGRkVSX1FVRVVFIHRvIGh3Y193aW5kb3cgdW50aWwgdGhlIGh3Y193aW5kb3cgaXMgbm90IFRETV9IV0NfV0lOX0NPTVBPU0lUSU9OX0RFVklDRS4gVGhlIGNsaWVudCBnZXRzIHRoZSB0Ym1fc3VyZmFjZV9xdWV1ZV9oIHRocm91Z2ggdGhlIHRkbV9od2Nfd2luZG93X2FjcXVpcmVfYnVmZmVyX3F1ZXVlLiBJdCB3aWxsIHJlbmRlciB0aGUgZnJhbWVzIG9uIHRoZSBidWZmZXJzIHdoaWNoIGdldHMgZnJvbSB0aGUgdGJtX3N1cmZhY2VfcXVldWVfaC4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNzkwNGI2YzA4NDBhZmRiNDk4ZTY1ZDQ2NmI5MmMyMWFcIj5oYWxfdGRtX291dHB1dF9jYXBhYmlsaXR5PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IGNhcGFiaWxpdHkgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD5JZiB0aGUgYmFja2VuZCBtb2R1bGUgcHJvdmlkZXMgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2dhNzkwNGI2YzA4NDBhZmRiNDk4ZTY1ZDQ2NmI5MmMyMWFhOWIzZTQ3OGNiMTViNzYyOTc0N2EzOWM2M2FhNzFkMzZcIj5IQUxfVERNX09VVFBVVF9DQVBBQklMSVRZX0VYVEVOREVEX0RQTVM8XC9hPiwgd2UgY2FuIHNldCBhbiBleHRlbmRlZCBEUE1TIG1vZGUgdG8gYW4gb3V0cHV0IHdoaWNoIHRoZSBiYWNrZW5kIG1vZHVsZSBzdXBwb3J0cy4gRG9uJ3QgdXNlIHRoZSBsb3ctNGJpdCBmb3IgYW4gZXh0ZW5kZWQgRFBNUyBtb2RlIHZhbHVlLiBJdCdzIHVzZWQgZm9yIGRlZmF1bHQgRFBNUyBtb2Rlcy48XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX09VVFBVVF9DQVBBQklMSVRZX0FTWU5DX0RQTVM8XC9lbT4gfCBUaGUgY2FwYWJpbGl0eSBhYm91dCBvdXRwdXQgc3VwcG9ydHMgYXN5bmNocm9ub3VzIERQTVMgb3BlcmF0aW9uIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX0NBUEFCSUxJVFlfSFdDPFwvZW0+IHwgVGhlIGNhcGFiaWxpdHkgYWJvdXQgb3V0cHV0IHN1cHBvcnRzIGh3YyBvcGVyYXRpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfQ0FQQUJJTElUWV9FWFRFTkRFRF9EUE1TPFwvZW0+IHwgVGhlIGNhcGFiaWxpdHkgYWJvdXQgb3V0cHV0IHN1cHBvcnRzIGV4dGVuZGVkIERQTVMgb3BlcmF0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX0NBUEFCSUxJVFlfTUlSUk9SPFwvZW0+IHwgVGhlIGNhcGFiaWxpdHkgYWJvdXQgb3V0cHV0IHN1cHBvcnRzIHRoZSBkaXNwbGF5aW5nIG1pcnJvciBpbWFnZSBvZiB0aGUgc3JjX291dHB1dCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9DQVBBQklMSVRZX05PX0hXX1ZCTEFOSzxcL2VtPiB8IFRoZSBjYXBhYmlsaXR5IGFib3V0IG91dHB1dCBkb2Vzbid0IHN1cHBvcnQgaHcgdmJsYW5rIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTkyMTRhMWUzOGNjNDBmM2MyOTBiYmRiNzYxNDM3MTJlXCI+aGFsX3RkbV9vdXRwdXRfY2hhbmdlX3R5cGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgY2hhbmdlIGVudW1lcmF0aW9uIG9mIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWE5MTcwMTIxNjQyZjcyYWZjNjJhMjBmMzhlOTJmMTZcIiB0aXRsZT1cIlRoZSBvdXRwdXQgY2hhbmdlIGhhbmRsZXIuXCI+aGFsX3RkbV9vdXRwdXRfY2hhbmdlX2hhbmRsZXI8XC9hPi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfQ0hBTkdFX0NPTk5FQ1RJT048XC9lbT4gfCBUaGUgdHlwZSBvZiBjb25uZWN0aW9uIGlzIGNoYW5nZWQgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfQ0hBTkdFX0RQTVM8XC9lbT4gfCBUaGUgdHlwZSBvZiBkcG1zIGlzIGNoYW5nZWQgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTg5ZjMyNDI0ZmM1OTE1ZTQ0YzA1ZDZmZTM4ZGIxMzRcIj5oYWxfdGRtX291dHB1dF9jb25uX3N0YXR1czxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBjb25uZWN0aW9uIHN0YXR1cyBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfQ09OTl9TVEFUVVNfRElTQ09OTkVDVEVEPFwvZW0+IHwgVGhlIG91dHB1dCBpcyBkaXNjb25uZWN0ZWQgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfQ09OTl9TVEFUVVNfQ09OTkVDVEVEPFwvZW0+IHwgVGhlIG91dHB1dCBpcyBjb25uZWN0ZWQgfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfQ09OTl9TVEFUVVNfTU9ERV9TRVRURUQ8XC9lbT4gfCBUaGUgb3V0cHV0IGlzIGNvbm5lY3RlZCBhbmQgc2V0IHRoZSBtb2RlIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFjNDMzMWJmODBkNzI3Yzk1YzEyODUyMWJlYzkyMzZkXCI+aGFsX3RkbV9vdXRwdXRfZHBtczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIERQTVMgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD5iaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBsaWJkcm0gZGVmaW5pdGlvbnMuPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfRFBNU19PTjxcL2VtPiB8IE9uLCBWc3luYyBPbiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9EUE1TX1NUQU5EQlk8XC9lbT4gfCBTdGFuZEJ5LCBWc3luYyBPbiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9EUE1TX1NVU1BFTkQ8XC9lbT4gfCBTdXNwZW5kLCBWc3luYyBPZmYgfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfRFBNU19PRkY8XC9lbT4gfCBPZmYsIFZzeW5jIE9mZiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9EUE1TX0FPRDxcL2VtPiB8IEFPRCwgVnN5bmMgT24sIGV4dGVuZGVkIERQTVMgbW9kZSB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FiY2Y1MGM5ZWZlMDU2NmY2YmMyOGMwYzhkZmE5OTc5N1wiPmhhbF90ZG1fb3V0cHV0X21vZGVfZmxhZzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBtb2RlIGZsYWcgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD5iaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBsaWJkcm0gZGVmaW5pdGlvbnMuPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9GTEFHX1BIU1lOQzxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfUEhTWU5DIDogaG9yaXpvbnRhbCBzeW5jIGlzIGFjdGl2ZSBoaWdoLiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfTkhTWU5DPFwvZW0+IHwgRFJNX01PREVfRkxBR19OSFNZTkMgOiBob3Jpem9udGFsIHN5bmMgaXMgYWN0aXZlIGxvdy4gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9GTEFHX1BWU1lOQzxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DIDogdmVydGljYWwgc3luYyBpcyBhY3RpdmUgaGlnaC4gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9GTEFHX05WU1lOQzxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfTlZTWU5DIDogdmVydGljYWwgc3luYyBpcyBhY3RpdmUgbG93LiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfSU5URVJMQUNFPFwvZW0+IHwgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgOiBtb2RlIGlzIGludGVybGFjZWQuIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfRkxBR19EQkxTQ0FOPFwvZW0+IHwgRFJNX01PREVfRkxBR19EQkxTQ0FOIDogbW9kZSB1c2VzIGRvdWJsZXNjYW4uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfRkxBR19DU1lOQzxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfQ1NZTkMgOiBtb2RlIHVzZXMgY29tcG9zaXRlIHN5bmMuIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfRkxBR19QQ1NZTkM8XC9lbT4gfCBEUk1fTU9ERV9GTEFHX1BDU1lOQyA6IGNvbXBvc2l0ZSBzeW5jIGlzIGFjdGl2ZSBoaWdoLiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfTkNTWU5DPFwvZW0+IHwgRFJNX01PREVfRkxBR19OQ1NZTkMgOiBjb21wb3NpdGUgc3luYyBpcyBhY3RpdmUgbG93LiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfSFNLRVc8XC9lbT4gfCBEUk1fTU9ERV9GTEFHX0hTS0VXIDogaHNrZXcgcHJvdmlkZWQuIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfRkxBR19CQ0FTVDxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfQkNBU1QgOiAgPHN0cm9uZz48YSBocmVmPVwiZGVwcmVjYXRlZC5tZCNfZGVwcmVjYXRlZDAwMDAxN1wiPkRlcHJlY2F0ZWQ6PFwvYT48XC9zdHJvbmc+ICBEZXByZWNhdGVkIHNpbmNlIEhBTF9NT0RVTEVfVERNIDEuMCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfUElYTVVYPFwvZW0+IHwgRFJNX01PREVfRkxBR19QSVhNVVggOiAgPHN0cm9uZz48YSBocmVmPVwiZGVwcmVjYXRlZC5tZCNfZGVwcmVjYXRlZDAwMDAxOFwiPkRlcHJlY2F0ZWQ6PFwvYT48XC9zdHJvbmc+ICBEZXByZWNhdGVkIHNpbmNlIEhBTF9NT0RVTEVfVERNIDEuMCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfREJMQ0xLPFwvZW0+IHwgRFJNX01PREVfRkxBR19EQkxDTEsgOiBkb3VibGUtY2xvY2tlZCBtb2RlLiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfQ0xLRElWMjxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfQ0xLRElWMiA6IGhhbGYtY2xvY2tlZCBtb2RlLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FjZTQ3MjA3NzYzMzMzNTVmOTc5MjA0MGY2ZjA4ZjRhN1wiPmhhbF90ZG1fb3V0cHV0X21vZGVfdHlwZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBtb2RlIHR5cGUgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD5iaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBsaWJkcm0gZGVmaW5pdGlvbnMuPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9UWVBFX0JVSUxUSU48XC9lbT4gfCBEUk1fTU9ERV9UWVBFX0JVSUxUSU4gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9UWVBFX0NMT0NLX0M8XC9lbT4gfCBEUk1fTU9ERV9UWVBFX0NMT0NLX0MgfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9UWVBFX0NSVENfQzxcL2VtPiB8IERSTV9NT0RFX1RZUEVfQ1JUQ19DIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfVFlQRV9QUkVGRVJSRUQ8XC9lbT4gfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX1RZUEVfREVGQVVMVDxcL2VtPiB8IERSTV9NT0RFX1RZUEVfREVGQVVMVCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX1RZUEVfVVNFUkRFRjxcL2VtPiB8IERSTV9NT0RFX1RZUEVfVVNFUkRFRiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX1RZUEVfRFJJVkVSPFwvZW0+IHwgRFJNX01PREVfVFlQRV9EUklWRVIgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTQ3ZDdmOTllZmE1NjhjNGJlMGFkZWY4OWQ1ZTNmNDRcIj5oYWxfdGRtX291dHB1dF90eXBlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IGNvbm5lY3Rpb24gc3RhdHVzIGVudW1lcmF0aW9uLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+Yml0IGNvbXBhdGlibGUgd2l0aCB0aGUgbGliZHJtIGRlZmluaXRpb25zLjxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfVW5rbm93bjxcL2VtPiB8IHVua25vd24gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9WR0E8XC9lbT4gfCBWR0EgY29ubmVjdGlvbiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9UWVBFX0RWSUk8XC9lbT4gfCBEVklJIGNvbm5lY3Rpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9EVklEPFwvZW0+IHwgRFZJRCBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfRFZJQTxcL2VtPiB8IERWSUEgY29ubmVjdGlvbiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9UWVBFX0NvbXBvc2l0ZTxcL2VtPiB8IENvbXBvc2l0ZSBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfU1ZJREVPPFwvZW0+IHwgU1ZJREVPIGNvbm5lY3Rpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9MVkRTPFwvZW0+IHwgTFZEUyBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfQ29tcG9uZW50PFwvZW0+IHwgQ29tcG9uZW50IGNvbm5lY3Rpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV85UGluRElOPFwvZW0+IHwgOVBpbkRJTiBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfRGlzcGxheVBvcnQ8XC9lbT4gfCBEaXNwbGF5UG9ydCBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfSERNSUE8XC9lbT4gfCBIRE1JQSBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfSERNSUI8XC9lbT4gfCBIRE1JQiBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfVFY8XC9lbT4gfCBUViBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfZURQPFwvZW0+IHwgZURQIGNvbm5lY3Rpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9WSVJUVUFMPFwvZW0+IHwgVmlydHVhbCBjb25uZWN0aW9uIGZvciBXaUZpIERpc3BsYXkgfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9EU0k8XC9lbT4gfCBEU0kgY29ubmVjdGlvbiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2NjFlZjIxY2RlNzAzYjc3NjY5NmQ0MjAxNGM4ZGI3N1wiPmhhbF90ZG1fcHBfY2FwYWJpbGl0eTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIFBQKHBvc3QtcHJvY2Vzc2luZykgY2FwYWJpbGl0eSBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoZSBzY2FsZSwgdHJhbnNmb3JtIGFuZCBDU0MgZnVuY3Rpb25hbGl0aWVzIHNlZW0gdGhlIGRlZmF1bHQgZnVuY3Rpb25zIG9mIFBQLiBJZiBoYXJkd2FyZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IG9uZSBvZiB0aGVtLCB3ZSdkIGJldHRlciBsZXQgdGhlIGRldmVsb3BlciBrbm93IHdoYXQgdGhlIGJhY2tlbmQgZG9lc24ndCBzdXBwb3J0IGxpa2UgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2dhNjYxZWYyMWNkZTcwM2I3NzY2OTZkNDIwMTRjOGRiNzdhYjIyZGFmYjA2NTRhZmVmNzI4ODAzYjlkMzk0ZGY4ZGRcIj5IQUxfVERNX1BQX0NBUEFCSUxJVFlfTk9fQ1NDPFwvYT4uPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9QUF9DQVBBQklMSVRZX1NZTkM8XC9lbT4gfCBUaGUgcG9zdC1wcm9jZXNzaW5nIGRldmljZSBzdXBwb3J0cyBzeW5jaHJvbm91cyBvcGVyYXRpb24gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9QUF9DQVBBQklMSVRZX0FTWU5DPFwvZW0+IHwgVGhlIHBvc3QtcHJvY2Vzc2luZyBkZXZpY2Ugc3VwcG9ydHMgYXN5bmNocm9ub3VzIG9wZXJhdGlvbiB8XG58IDxlbT5IQUxfVERNX1BQX0NBUEFCSUxJVFlfU0NBTk9VVDxcL2VtPiB8IFRoZSBwb3N0LXByb2Nlc3NpbmcgZGV2aWNlIHN1cHBvcnRzIG9ubHkgc2Nhbm91dCBidWZmZXIgfFxufCA8ZW0+SEFMX1RETV9QUF9DQVBBQklMSVRZX05PX0NTQzxcL2VtPiB8IFRoZSBwb3N0LXByb2Nlc3NpbmcgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBDb2xvciBTcGFjZSBDb252ZXJzaW9uIHxcbnwgPGVtPkhBTF9URE1fUFBfQ0FQQUJJTElUWV9OT19UUkFOU0ZPUk1fUk9UQVRJT048XC9lbT4gfCBUaGUgcG9zdC1wcm9jZXNzaW5nIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgcm90YXRpb24gdHJhbnNmb3JtIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0cmFuc2Zvcm0gZW51bWVyYXRpb24ocm90YXRlLCBmbGlwKTxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX1RSQU5TRk9STV9OT1JNQUw8XC9lbT4gfCBubyB0cmFuc2Zvcm0gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9UUkFOU0ZPUk1fOTA8XC9lbT4gfCByb3RhdGUgOTAgZGVncmVlcyBjbG9ja3dpc2UgfFxufCA8ZW0+SEFMX1RETV9UUkFOU0ZPUk1fMTgwPFwvZW0+IHwgcm90YXRlIDE4MCBkZWdyZWVzIGNsb2Nrd2lzZSB8XG58IDxlbT5IQUxfVERNX1RSQU5TRk9STV8yNzA8XC9lbT4gfCByb3RhdGUgMjcwIGRlZ3JlZXMgY2xvY2t3aXNlIHxcbnwgPGVtPkhBTF9URE1fVFJBTlNGT1JNX0ZMSVBQRUQ8XC9lbT4gfCBubyByb3RhdGUgYW5kIGhvcml6b250YWwgZmxpcCB8XG58IDxlbT5IQUxfVERNX1RSQU5TRk9STV9GTElQUEVEXzkwPFwvZW0+IHwgcm90YXRlIDkwIGRlZ3JlZXMgY2xvY2t3aXNlIGFuZCBob3Jpem9udGFsIGZsaXAgfFxufCA8ZW0+SEFMX1RETV9UUkFOU0ZPUk1fRkxJUFBFRF8xODA8XC9lbT4gfCByb3RhdGUgMTgwIGRlZ3JlZXMgY2xvY2t3aXNlIGFuZCBob3Jpem9udGFsIGZsaXAgfFxufCA8ZW0+SEFMX1RETV9UUkFOU0ZPUk1fRkxJUFBFRF8yNzA8XC9lbT4gfCByb3RhdGUgMjcwIGRlZ3JlZXMgY2xvY2t3aXNlIGFuZCBob3Jpem9udGFsIGZsaXAgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOTQ5OTkzYWE0ZTU5NjEyNDkyNjUxNmU2ZDkxODJhMTlcIj5oYWxfdGRtX3ZhbHVlX3R5cGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0ZG0gdmFsdWUgdHlwZSBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9WQUxVRV9UWVBFX1VOS05PV048XC9lbT4gfCBUaGUgdW5rbm93biB0eXBlIG9mIHZhbHVlIGZvciB2YXJpYWJsZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX1ZBTFVFX1RZUEVfUFRSPFwvZW0+IHwgVGhlIHBvaW50ZXIgdHlwZSBvZiB2YWx1ZSBmb3IgdmFyaWFibGUgfFxufCA8ZW0+SEFMX1RETV9WQUxVRV9UWVBFX0lOVDMyPFwvZW0+IHwgVGhlIDMyYml0IGludGVnZXIgdHlwZSBvZiB2YWx1ZSBmb3IgdmFyaWFibGUgfFxufCA8ZW0+SEFMX1RETV9WQUxVRV9UWVBFX1VJTlQzMjxcL2VtPiB8IFRoZSAzMmJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2YgdmFsdWUgZm9yIHZhcmlhYmxlIHxcbnwgPGVtPkhBTF9URE1fVkFMVUVfVFlQRV9JTlQ2NDxcL2VtPiB8IFRoZSA2NGJpdCBpbnRlZ2VyIHR5cGUgb2YgdmFsdWUgZm9yIHZhcmlhYmxlIHxcbnwgPGVtPkhBTF9URE1fVkFMVUVfVFlQRV9VSU5UNjQ8XC9lbT4gfCBUaGUgNjRiaXQgdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHZhbHVlIGZvciB2YXJpYWJsZSB8PFwvcD5cbjxociBcLz5cbjxwPkV4Y2VwdCBhcyBub3RlZCwgdGhpcyBjb250ZW50IC0gZXhjbHVkaW5nIHRoZSBDb2RlIEV4YW1wbGVzIC0gaXMgbGljZW5zZWQgdW5kZXIgPGEgaHJlZj1cImh0dHA6XC9cL2NyZWF0aXZlY29tbW9ucy5vcmdcL2xpY2Vuc2VzXC9ieVwvMy4wXC9sZWdhbGNvZGVcIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMDxcL2E+XG5hbmQgYWxsIG9mIHRoZSBDb2RlIEV4YW1wbGVzIGNvbnRhaW5lZCBoZXJlaW4gYXJlIGxpY2Vuc2VkIHVuZGVyIDxhIGhyZWY9XCJodHRwczpcL1wvd3d3LnRpemVuLm9yZ1wvYnNkLTMtY2xhdXNlLWxpY2Vuc2VcIj5CU0QtMy1DbGF1c2U8XC9hPi48YnIgXC8+XG5Gb3IgZGV0YWlscywgc2VlIHRoZSA8YSBocmVmPVwiaHR0cHM6XC9cL3d3dy50aXplbi5vcmdcL2NvbnRlbnQtbGljZW5zZVwiPkNvbnRlbnQgTGljZW5zZTxcL2E+LjxcL3A+XG4iLCJ0YWJsZV9vZl9jb250ZW50IjoiPHVsIGNsYXNzPVwidGFibGUtb2YtY29udGVudHNcIj5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtcmVxdWlyZWQtaGVhZGVyXCI+UmVxdWlyZWQgSGVhZGVyPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtb3ZlcnZpZXdcIj5PdmVydmlldzxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWRhdGEtc3RydWN0dXJlLWRvY3VtZW50YXRpb25cIj5EYXRhIFN0cnVjdHVyZSBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvblwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTFcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tM1wiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTRcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi01XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNlwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTdcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi04XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tOVwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEwXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTFcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMlwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEzXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTRcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xNVwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE2XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTdcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xOFwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE5XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMjBcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yMVwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTIyXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWRlZmluZS1kb2N1bWVudGF0aW9uXCI+RGVmaW5lIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC10eXBlZGVmLWRvY3VtZW50YXRpb25cIj5UeXBlZGVmIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1lbnVtZXJhdGlvbi10eXBlLWRvY3VtZW50YXRpb25cIj5FbnVtZXJhdGlvbiBUeXBlIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPFwvdWw+XG4iLCJ0aXRsZSI6IlRpemVuIEhBTCBBUEk6IFRETSIsInJhdyI6bnVsbH0seyJjbGFzcyI6IkFwcFxcU2VydmljZXNcXERvY3VtZW50YXRpb25cXERhdGFcXFJlbmRlcmVkTWFya2Rvd24iLCJzIjoid3JibCJ9XX0seyJzIjoiYXJyIn1dfSwibWVtbyI6eyJpZCI6InRaZklnMndITm80UlRuc05oMlR2IiwibmFtZSI6Il9fbW91bnRQYXJhbXNDb250YWluZXIiLCJwYXRoIjoiZG9jc1wvcGxhdGZvcm1cL2hhbFwvYXBpXC8xLjAuMFwvZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRSIsIm1ldGhvZCI6IkdFVCIsInJlbGVhc2UiOiJhLWEtYSJ9LCJjaGVja3N1bSI6IjA5Y2NkOWU5ZTM0OWQ3YTRkODgwM2E5N2Y2MzAwNzQzNThjM2UzODE4YTA0NjEzZTE4YWZlYWJlY2FkOTU3MzIifQ==')" >
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-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-field-documentation-15\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-16\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-17\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-18\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-19\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-20\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-21\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-22\">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: TDM","raw":null},{"class":"App\\Services\\Documentation\\Data\\RenderedMarkdown","s":"wrbl"}]},"memo":{"id":"3zSvQgVFjwPjAk4Y4aSa","name":"documentation::article","path":"docs\/platform\/hal\/api\/1.0.0\/group__HALAPI__HAL__TDM__MODULE","method":"GET","release":"a-a-a","children":[],"scripts":[],"assets":[],"lazyLoaded":false,"lazyIsolated":true,"errors":[],"locale":"en","islands":[]},"checksum":"958127e06a1be26b2c656d20a97e4f87026fcf651bf4b37f80c82258e876e4f2"}" wire:effects="[]" wire:id="3zSvQgVFjwPjAk4Y4aSa" wire:name="documentation::article" x-init="$wire.__lazyLoad('eyJkYXRhIjp7ImZvck1vdW50IjpbeyJtYXJrZG93biI6W3siYm9keSI6IjxoMSBpZD1cImNvbnRlbnQtdGl6ZW4taGFsLWFwaS10ZG1cIj48YSBocmVmPVwiI2NvbnRlbnQtdGl6ZW4taGFsLWFwaS10ZG1cIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlRpemVuIEhBTCBBUEk6IFRETTxcL2gxPjxkaXYgZGF0YS1rbm93bGVkZ2UtYmFzZS1tZXRhZGF0YT48XC9kaXY+XG48aHIgXC8+XG48cD5UaGUgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWRcIj5URE08XC9hPiBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGRpc3BsYXkgc2VydmVyLjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXJlcXVpcmVkLWhlYWRlclwiPjxhIGhyZWY9XCIjY29udGVudC1yZXF1aXJlZC1oZWFkZXJcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlJlcXVpcmVkIEhlYWRlcjxcL2gyPlxuPHA+I2luY2x1ZGUgJmx0O2hhbC10ZG0uaCZndDs8XC9wPlxuPGgyIGlkPVwiY29udGVudC1vdmVydmlld1wiPjxhIGhyZWY9XCIjY29udGVudC1vdmVydmlld1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+T3ZlcnZpZXc8XC9oMj5cbjxwPlRoZSBURE0gZnVuY3Rpb25zIHByb3ZpZGVzIGFuIGFic3RyYWN0aW9uIGludGVyZmFjZSBmb3IgZGlzcGxheSBzZXJ2ZXIgaW5jbHVkaW5nOjxcL3A+XG48dWw+XG48bGk+RGlzcGxheSBzZXJ2ZXIgaW50ZXJmYWNlIHRvIHVzZXIgbGlrZSBnZXR0aW5nIGRpc3BsYXkgY2FwYWJpbGl0aWVzLCBzaXplLCBmb3JtYXQuPFwvbGk+XG48bGk+RGlzcGxheSBjb250cm9sIGludGVyZmFjZSBsaWtlIGRpc3BsYXkgbW9kZSBzZXR0aW5nLCBkcG1zLCBjYXB0dXJlLjxcL2xpPlxuPFwvdWw+XG48cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgVERNIGZlYXR1cmVzIGFuZCB0aGUgbWFjcm9zLCBzZWUgSEFMIFRETSBwcm9ncmFtbWluZyBndWlkZXMgYW5kIHR1dG9yaWFscy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+VHlwZWRlZnM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19iYWNrZW5kX19kYXRhXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyYWQ1MDExNjRiNThlYWIwMzgzMjAzMWUzM2FhN2NjXCI+aGFsX3RkbV9iYWNrZW5kX2RhdGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSB0ZG0gYmFja2VuZCBkYXRhLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19kaXNwbGF5X19mdW5jc1wiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjY4NWJkNWJmYTNhMzZmYWQwMGY3NTJmY2U5NDRjNjBcIj5oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgZGlzcGxheSBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX291dHB1dF9fZnVuY3NcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMTBiZDc0MGJiNjZjYjI2MGQyNzFkNjVlZDMyMmRiMTVcIj5oYWxfdGRtX291dHB1dF9mdW5jczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBvdXRwdXQgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX19mdW5jc1wiPl9oYWxfdGRtX2h3Y19mdW5jczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1NTFjMmYyODFmNmE5NGQxMzE4MTc2NzI0NjNjNWZlZFwiPmhhbF90ZG1faHdjX2Z1bmNzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGh3YyBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2h3Y19fd2luZG93X19mdW5jc1wiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGFkOTFiOTg5ODc0NzgyYzUzYjVjMzkzOGFjYzc2YzNcIj5oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgaHdjIHdpbmRvdyBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19wcF9fZnVuY3NcIj5faGFsX3RkbV9wcF9mdW5jczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlZmY5Y2M4ZjRkNDA2YWMyMTJhMGE5NGVjY2NjMmY2M1wiPmhhbF90ZG1fcHBfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgcG9zdC1wcm9jZXNzaW5nIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fY2FwdHVyZV9fZnVuY3NcIj5faGFsX3RkbV9jYXB0dXJlX2Z1bmNzPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFiMDAzMzU4NWY5ZGQ5YmRlODBiMDEyMzg5NzBmOThlXCI+aGFsX3RkbV9jYXB0dXJlX2Z1bmNzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGNhcHR1cmUgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX192b3V0cHV0X19mdW5jc1wiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjNkOGVjY2ZiMDkxZjVkYTJmOWQzOGRkZTZjY2NkMmFcIj5oYWxfdGRtX3ZvdXRwdXRfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgdmlydHVhbCBvdXRwdXQgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTQ1OTM0YzczM2ZiYTYxOTc1MWM0NTI0ZmE3ZTk2Y2M2XCI+aGFsX3RkbV9tYXN0ZXJfZHJtX2ZkX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWZmMjhjMmE2OTkyMDQwY2I3ZTkzNzQzM2RmMGQ0MjFcIj5oYWxfdGRtX2ZkPFwvYT4gbWFzdGVyX2RybV9mZCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIG1hc3Rlcl9kcm1fZmQgdG8gYmFja2VuZC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3NpemVcIj5faGFsX3RkbV9zaXplPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiMDNiMWY0NDE1MDg4MGU5OTk2N2JjM2IwYjMwNzI5XCI+aGFsX3RkbV9zaXplPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBzaXplIHN0cnVjdHVyZS48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3Bvc1wiPl9oYWxfdGRtX3BvczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzgzNmQ3ZTJlMDdmMWIxZWIyNmViMWVjNjkzMzMzZFwiPmhhbF90ZG1fcG9zPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBwb3NpdGlvbiBzdHJ1Y3R1cmUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX2Rpc3BsYXlcIj5faGFsX3RkbV9jYXBzX2Rpc3BsYXk8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVkNDZiOGMxODQ5MmMyNTBmNzZlOTM0NGI2YTQ0NWJcIj5oYWxfdGRtX2NhcHNfZGlzcGxheTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgZGlzcGxheSBjYXBhYmlsaXR5IHN0cnVjdHVyZSBmb3IgQ0FQVFVSRS48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX291dHB1dF9fbW9kZVwiPl9oYWxfdGRtX291dHB1dF9tb2RlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgb3V0cHV0IG1vZGUgc3RydWN0dXJlIGNvbXBhdGlibGUgd2l0aCBkcm1fbW9kZV9tb2RlaW5mbyBpbiBkcm0tdWFwaS48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3Byb3BcIj5faGFsX3RkbV9wcm9wPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWQ0MDUzYzc2OWIxYzE3OTQ5ZDg3OTk2NzhiMTY1MTdmXCI+aGFsX3RkbV9wcm9wPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBwcm9wZXJ0eSBzdHJ1Y3R1cmUgb2YgdGRtLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faW5mb19fY29uZmlnXCI+X2hhbF90ZG1faW5mb19jb25maWc8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjliYmU0ZThlYTViYTA2NWJhOTFiMGE0YTE5NGQwZTlcIj5oYWxfdGRtX2luZm9fY29uZmlnPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBpbmZvIGNvbmZpZyBzdHJ1Y3R1cmUgZm9yIHdpbmRvdywgbGF5ZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19yZWdpb25cIj5faGFsX3RkbV9yZWdpb248XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjMyZTQ2YWE4YzZlNjgzNmUzMGM5MTkxNTRjMzE2NWNcIj5oYWxfdGRtX3JlZ2lvbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgcmVnaW9uIHN0cnVjdHVyZS48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX193aW5kb3dfX2luZm9cIj5faGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTE1N2U5NmI3YzU5YzU1OTdjYmExOWU3N2RkZjljZWFcIj5oYWxfdGRtX2h3Y193aW5kb3dfaW5mbzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgaHdjIHdpbmRvdyBpbmZvIHN0cnVjdHVyZSB0byBjb21wb3NpdGUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19pbmZvX19wcFwiPl9oYWxfdGRtX2luZm9fcHA8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYzE3ZTdjYjlhMzYwY2UxM2RiNTg5MjYwZDEwNzc0YzdcIj5oYWxfdGRtX2luZm9fcHA8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGluZm9ybWF0aW9uIHN0cnVjdHVyZSB0byB1c2UgcG9zdC1wcm9jZXNzaW5nLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19pbmZvX19jYXB0dXJlXCI+X2hhbF90ZG1faW5mb19jYXB0dXJlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYThkNDU2Y2I0NjUxZmVjYWQ1MzU3ZDVmNDNhYmM2MWIyXCI+aGFsX3RkbV9pbmZvX2NhcHR1cmU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGNhcHR1cmUgaW5mbyBzdHJ1Y3R1cmUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWZmMjhjMmE2OTkyMDQwY2I3ZTkzNzQzM2RmMGQ0MjFcIj5oYWxfdGRtX2ZkPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSB0ZG0gZmQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSB0ZG0gZGlzcGxheSBvYmplY3QuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTMzNTE1ZTU5ZGM1MzQ4ODYxZjc3YWFiNjc0ZGZlMDc0XCI+aGFsX3RkbV9tb2R1bGU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHRkbSBiYWNrZW5kIG9iamVjdC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgdGRtIG91dHB1dCBvYmplY3QuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSB0ZG0gdm91dHB1dCBvYmplY3QuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHRkbSBod2Mgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgdGRtIGh3YyB3aW5kb3cgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgdGRtIGNhcHR1cmUgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHRkbSBwcCBvYmplY3QuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI5ZGM5MGM2MjgxNGRjZDZiMTFjNmRiNDhiY2EwYzgxXCI+aGFsX3RkbV92Ymxhbms8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHRkbSB2Ymxhbmsgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2MjliZGU5MjI2ZmY4NGE2NGY5YTA3NjBlMTIxODlmNFwiPmhhbF90ZG1fYmFja2VuZDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgdGRtIGJhY2tlbmQgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY4OGEwOGVhYzMyOTA2NGEwZmZkZTFhMzg4NzFjYTA2XCI+aGFsX3RkbV9ldmVudF9sb29wX2ZkX2hhbmRsZXI8XC9hPiApKGludCBldmVudF9mZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FjZDRjOGE0YjliOWVhZjZiZDI4ZmIwODRiZWUyZTgzM1wiPmhhbF90ZG1fZXZlbnRfbG9vcF9tYXNrPFwvYT4gbWFzaywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIGV2ZW50X2xvb3BfZmQgaGFuZGxlci48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZWQ3YmQ0MDAxYWYzOTcwMDkwNjI1OWVlYWNhZjlkNVwiPmhhbF90ZG1fb3V0cHV0X2NyZWF0ZV9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRweSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIG91dHB1dCBjcmVhdGUgaGFuZGxlci48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MmE0YmVjM2U1ZTE3OGEyYTAzNGRkNmU1MDUxYzdiOFwiPmhhbF90ZG1fb3V0cHV0X2Rlc3Ryb3lfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIG91dHB1dCBkZXN0cm95IGhhbmRsZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWE5MTcwMTIxNjQyZjcyYWZjNjJhMjBmMzhlOTJmMTZcIj5oYWxfdGRtX291dHB1dF9jaGFuZ2VfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5MjE0YTFlMzhjYzQwZjNjMjkwYmJkYjc2MTQzNzEyZVwiPmhhbF90ZG1fb3V0cHV0X2NoYW5nZV90eXBlPFwvYT4gdHlwZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBvdXRwdXQgY2hhbmdlIGhhbmRsZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTlmYTBiYmU4ZjJmOWRjOGY2YmE1MDNlNjE1YjM0ZmFcIj5oYWxfdGRtX291dHB1dF92YmxhbmtfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdW5zaWduZWQgaW50IHNlcXVlbmNlLCB1bnNpZ25lZCBpbnQgdHZfc2VjLCB1bnNpZ25lZCBpbnQgdHZfdXNlYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHZibGFuayBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4YTc2MWY0NjZjZDk3MDdlN2ViNGU3NDBhYWU2ZDc5XCI+aGFsX3RkbV9vdXRwdXRfY29tbWl0X2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBzZXF1ZW5jZSwgdW5zaWduZWQgaW50IHR2X3NlYywgdW5zaWduZWQgaW50IHR2X3VzZWMsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBvdXRwdXQgY29tbWl0IGhhbmRsZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzVmMmNjYTdjMzA3NDA1OTkxMmY5NzQ1ODI0YTBiOTlcIj5oYWxfdGRtX291dHB1dF9tb2RlX2NoYW5nZV9yZXF1ZXN0X2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBpbmRleCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIG91dHB1dCBtb2RlIGNoYW5nZSByZXF1ZXN0IGhhbmRsZXIuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHZvaWQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzVjNTA0MTdjZWJiZWZhZmUxN2RhYWRiNzllMTE1MjFcIj5oYWxfdGRtX291dHB1dF9zdGF0dXNfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlODlmMzI0MjRmYzU5MTVlNDRjMDVkNmZlMzhkYjEzNFwiPmhhbF90ZG1fb3V0cHV0X2Nvbm5fc3RhdHVzPFwvYT4gc3RhdHVzLCB2b2lkICp1c2VyX2RhdGEpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgb3V0cHV0IHN0YXR1cyBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3MTBiNjMyYjNkMWEwNmMyYzYzNDE5MWQzZDU1NjBmXCI+aGFsX3RkbV9vdXRwdXRfZHBtc19oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFjNDMzMWJmODBkNzI3Yzk1YzEyODUyMWJlYzkyMzZkXCI+aGFsX3RkbV9vdXRwdXRfZHBtczxcL2E+IGRwbXMsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBvdXRwdXQgZHBtcyBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTk1ZGQ4MmJiM2NmMWIwYjMzMDNiZWRmNDIxYWZmNjBmXCI+aGFsX3RkbV9wcF9kb25lX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGJjNzY3Nzk4YWFiYjUzNDU0MDg1MTdmYjkxMDk3YzRcIj5oYWxfdGRtX3BwPFwvYT4gKnBwLCB0Ym1fc3VyZmFjZV9oIHNyYywgdGJtX3N1cmZhY2VfaCBkc3QsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBkb25lIGhhbmRsZXIgb2YgdGhlIHBwIG9iamVjdC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZDkzZTVjYjI3NzUzNGE1ZjIyNGRjYzAyZjMyNjNjNFwiPmhhbF90ZG1fY2FwdHVyZV9kb25lX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgdGJtX3N1cmZhY2VfaCBidWZmZXIsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBkb25lIGhhbmRsZXIgb2YgdGhlIGNhcHR1cmUgb2JqZWN0LjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY1M2Q3NDFhZmU1MGYwYmI5Y2Y2ZDFkNzFlMDViMTMwXCI+aGFsX3RkbV92YmxhbmtfY3JlYXRlX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjlkYzkwYzYyODE0ZGNkNmIxMWM2ZGI0OGJjYTBjODFcIj5oYWxfdGRtX3ZibGFuazxcL2E+ICp2YmxhbmssIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBjcmVhdGUgaGFuZGxlciBvZiB0aGUgdmJsYW5rIG9iamVjdC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgdm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FiNmJkYTU2YjFkYjg0ZWUyZjIwZTgxMzlhZTg4NDJiYVwiPmhhbF90ZG1faHdjX2NvbW1pdF9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1bnNpZ25lZCBpbnQgc2VxdWVuY2UsIHVuc2lnbmVkIGludCB0dl9zZWMsIHVuc2lnbmVkIGludCB0dl91c2VjLCB2b2lkICp1c2VyX2RhdGEpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgaHdjIGNvbW1pdCBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTgwNTE5ZmY0OGY3NzJkOGNkYzcxMjM1YjBhNjI4ZmRiXCI+aGFsX3RkbV92b3V0cHV0X2NvbW1pdF9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQsIHVuc2lnbmVkIGludCBzZXF1ZW5jZSwgdW5zaWduZWQgaW50IHR2X3NlYywgdW5zaWduZWQgaW50IHR2X3VzZWMsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSB2b3V0cHV0IGNvbW1pdCBoYW5kbGVyLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiB2b2lkKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWUxZjhkMWQzNDQ5MjJmMmI0ZDllMTBhNjQzYjNhNTMwXCI+aGFsX3RkbV92b3V0cHV0X2NvbW1pdF9mdW5jPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQsIHRibV9zdXJmYWNlX2ggYnVmZmVyKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHZvdXRwdXQgY29tbWl0IGZ1bmN0aW9uLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19ldmVudF9fc291cmNlXCI+X2hhbF90ZG1fZXZlbnRfc291cmNlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU4YjY3ZjJkZDI3ZmNmNDBhZWI0Y2U4ZDMwOTQ2YmE0XCI+aGFsX3RkbV9ldmVudF9zb3VyY2U8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSBmb3IgZXZlbnQgc291cmNlIGluZm9ybWF0aW9uLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fY2Fwc19fb3V0cHV0XCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzBjODZhYjFjOGYwZDRlZGM5MDU1NTJlMjk4OTMxNTVcIj5oYWxfdGRtX2NhcHNfb3V0cHV0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBzdHJ1Y3R1cmUgZm9yIG91dHB1dCdzIGNhcGFiaWxpdGllcy48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX3BwXCI+X2hhbF90ZG1fY2Fwc19wcDxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzZWYyYTdmZjNhNGJjYmU5ZDY3NmFhMmNmYjRiZTczOVwiPmhhbF90ZG1fY2Fwc19wcDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgc3RydWN0dXJlIGZvciBwb3N0LXByb2Nlc3NpbmcncyBjYXBhYmlsaXRpZXMuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX2NhcHR1cmVcIj5faGFsX3RkbV9jYXBzX2NhcHR1cmU8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNmNiYjkwNTY5M2VjMGI0NGE5NGI1ZmI5OTJkYzViOTJcIj5oYWxfdGRtX2NhcHNfY2FwdHVyZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48XC90ZD5cbjx0ZD5UaGUgc3RydWN0dXJlIGZvciBjYXB0dXJlJ3MgY2FwYWJpbGl0aWVzLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+RGVmaW5lczxcL3RkPlxuPHRkPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+I2RlZmluZTxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjNjMGQxZGVjYWU2NTY1NTI2NGYxYzk5ZjZjYmM2MWVcIj5IQUxfVERNX05BTUVfTEVOPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA2NDxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+RGVmaW5pdGlvbiBvZiBNYXggTmFtZSBMZW5ndGggaW4gSEFMX1RETV9NT0RVTEUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD4jZGVmaW5lPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlNTkzZWFlNGZkNWE1YzkxZDlkY2Q1NmNiZmJmNTJjOVwiPkhBTF9URE1fUEFUSF9MRU48XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDEwMjQ8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPkRlZmluaXRpb24gb2YgTWF4IFBhdGggTGVuZ3RoIGluIEhBTF9URE1fTU9EVUxFLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+I2RlZmluZTxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMDZjNjgwYjMyMzJkMjMwMjIxNjc4Y2U4YTc0MzE3NDdcIj5IQUxfVERNX0VWRU5UX1NPVVJDRV9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPkRlZmluaXRpb24gb2YgTWF4IGNvdW50IG9mIGV2ZW50IHNvdXJjZSBpbiBIQUxfVERNX01PRFVMRS48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDIgaWQ9XCJjb250ZW50LWRhdGEtc3RydWN0dXJlLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtZGF0YS1zdHJ1Y3R1cmUtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RGF0YSBTdHJ1Y3R1cmUgRG9jdW1lbnRhdGlvbjxcL2gyPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2JhY2tlbmRfZGF0YTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgdGRtIGJhY2tlbmQgZGF0YS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTRhNWYwMjM1ZTI2NDBhYmFhZTY2YzBiYTMyYmJjOGU3XCI+ZGlzcGxheTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZDc2MjJlYWMyYWVhOTRkNzUxNTMxMGRhMzY4NGU3YmJcIj5oYXNfZHJtX2RldmljZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMDQ5ZDllZDRjMmU0YTVlZGMyNDA2YmY0ODU0OTgyYmJcIj5udW1fZXZlbnRfc291cmNlczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU4YjY3ZjJkZDI3ZmNmNDBhZWI0Y2U4ZDMwOTQ2YmE0XCI+aGFsX3RkbV9ldmVudF9zb3VyY2U8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTlhYjdhNDhlMTMzYTM2NWRhZmZlYTUxYzdlYTQ1NzZlXCI+ZXZlbnRfc291cmNlczxcL2E+IFszXTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2Njg1YmQ1YmZhM2EzNmZhZDAwZjc1MmZjZTk0NGM2MFwiPmhhbF90ZG1fZGlzcGxheV9mdW5jczxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYjRmNWYyMDhjYjY5ZTYwZDI1NWQwMzIxNWFhYTI2YmRcIj5kaXNwbGF5X2Z1bmNzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMTBiZDc0MGJiNjZjYjI2MGQyNzFkNjVlZDMyMmRiMTVcIj5oYWxfdGRtX291dHB1dF9mdW5jczxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMWMzZmI2ODk1M2JhZWY4YzJlYWM5NTQ4YTNmZmI4MmNcIj5vdXRwdXRfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1NTFjMmYyODFmNmE5NGQxMzE4MTc2NzI0NjNjNWZlZFwiPmhhbF90ZG1faHdjX2Z1bmNzPFwvYT4gKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiMDlmNGUyMTRlMzI5ZjU3NjIxMjdkY2EyNGY2MTE0YVwiPmh3Y19mdW5jczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBhZDkxYjk4OTg3NDc4MmM1M2I1YzM5MzhhY2M3NmMzXCI+aGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzPFwvYT4gKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1NTA3MzI5MTM2NDdkMTMyNTQ1MzJiZDUzZTZmYTUzMVwiPmh3Y193aW5kb3dfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlZmY5Y2M4ZjRkNDA2YWMyMTJhMGE5NGVjY2NjMmY2M1wiPmhhbF90ZG1fcHBfZnVuY3M8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgxNzQ2ZjUwNWZhNTU4YWMzMGQ1NmMxYmM5NjU2OTk2XCI+cHBfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYjAwMzM1ODVmOWRkOWJkZTgwYjAxMjM4OTcwZjk4ZVwiPmhhbF90ZG1fY2FwdHVyZV9mdW5jczxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjc2ZGJkNzdlMmRiNDI1NGY2ZWEyN2Y1MWFmNmZhYTdcIj5jYXB0dXJlX2Z1bmNzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjNkOGVjY2ZiMDkxZjVkYTJmOWQzOGRkZTZjY2NkMmFcIj5oYWxfdGRtX3ZvdXRwdXRfZnVuY3M8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWI0YjE2NzBjZTY2ZDI4Zjc0YjQ5ODI5NzVmZWE5MWM4XCI+dm91dHB1dF9mdW5jczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTlmZjI4YzJhNjk5MjA0MGNiN2U5Mzc0MzNkZjBkNDIxXCI+aGFsX3RkbV9mZDxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTE0ZjY0YTNkODJjZTVlNmZmODRlODQzYTE1OGFhNzI5XCI+ZHJtX2ZkPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExZmZiMzg0MTAyNDVkYTU2ODI2NGZjYjJlOTc1MzdiNlwiPmlzX21hc3RlcjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTQ1OTM0YzczM2ZiYTYxOTc1MWM0NTI0ZmE3ZTk2Y2M2XCI+aGFsX3RkbV9tYXN0ZXJfZHJtX2ZkX2hhbmRsZXI8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5Mjg4ZjM4NmM5NTRiN2E0ZDFiOWMzYTUxZTk0OWIwZFwiPm1hc3Rlcl9kcm1fZmRfZnVuYzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD52b2lkICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjc3NjhmZWZjYTkyNDExMjczMWVmZDY5MTNjODBiNjRcIj51c2VyX2RhdGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvblwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFiMDAzMzU4NWY5ZGQ5YmRlODBiMDEyMzg5NzBmOThlXCI+aGFsX3RkbV9jYXB0dXJlX2Z1bmNzPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyNzZkYmQ3N2UyZGI0MjU0ZjZlYTI3ZjUxYWY2ZmFhN1wiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6Y2FwdHVyZV9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Y2FwdHVyZSBmdW5jdGlvbnMgb2YgYmFja2VuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0YTVmMDIzNWUyNjQwYWJhYWU2NmMwYmEzMmJiYzhlN1wiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6ZGlzcGxheTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGhhbmRsZSBvZiBkaXNwbGF5PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjY4NWJkNWJmYTNhMzZmYWQwMGY3NTJmY2U5NDRjNjBcIj5oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPiogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWI0ZjVmMjA4Y2I2OWU2MGQyNTVkMDMyMTVhYWEyNmJkXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpkaXNwbGF5X2Z1bmNzPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5kaXNwbGF5IGZ1bmN0aW9ucyBvZiBiYWNrZW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWZmMjhjMmE2OTkyMDQwY2I3ZTkzNzQzM2RmMGQ0MjFcIj5oYWxfdGRtX2ZkPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTE0ZjY0YTNkODJjZTVlNmZmODRlODQzYTE1OGFhNzI5XCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpkcm1fZmQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkcm0gZmlsZSBkZXNjcmlwdG9yPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZThiNjdmMmRkMjdmY2Y0MGFlYjRjZThkMzA5NDZiYTRcIj5oYWxfdGRtX2V2ZW50X3NvdXJjZTxcL2E+KiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOWFiN2E0OGUxMzNhMzY1ZGFmZmVhNTFjN2VhNDU3NmVcIj5faGFsX3RkbV9iYWNrZW5kX2RhdGE6OmV2ZW50X3NvdXJjZXM8XC9hPlszXTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBldmVudCBzb3VyY2UgYXJyYXk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkNzYyMmVhYzJhZWE5NGQ3NTE1MzEwZGEzNjg0ZTdiYlwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6aGFzX2RybV9kZXZpY2U8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBmbGFnIG9mIGhhdmluZyBkcm0gZGV2aWNlIG9yIG5vdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTU1MWMyZjI4MWY2YTk0ZDEzMTgxNzY3MjQ2M2M1ZmVkXCI+aGFsX3RkbV9od2NfZnVuY3M8XC9hPiogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWIwOWY0ZTIxNGUzMjlmNTc2MjEyN2RjYTI0ZjYxMTRhXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpod2NfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPmh3YyBmdW5jdGlvbnMgb2YgYmFja2VuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBhZDkxYjk4OTg3NDc4MmM1M2I1YzM5MzhhY2M3NmMzXCI+aGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1NTA3MzI5MTM2NDdkMTMyNTQ1MzJiZDUzZTZmYTUzMVwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6aHdjX3dpbmRvd19mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+aHdjX3dpbmRvdyBmdW5jdGlvbnMgb2YgYmFja2VuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFmZmIzODQxMDI0NWRhNTY4MjY0ZmNiMmU5NzUzN2I2XCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjppc19tYXN0ZXI8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBmbGFnIG9mIG1hc3RlciBvciBub3Q8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E0NTkzNGM3MzNmYmE2MTk3NTFjNDUyNGZhN2U5NmNjNlwiPmhhbF90ZG1fbWFzdGVyX2RybV9mZF9oYW5kbGVyPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTkyODhmMzg2Yzk1NGI3YTRkMWI5YzNhNTFlOTQ5YjBkXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjptYXN0ZXJfZHJtX2ZkX2Z1bmM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBoYW5kbGVyIGZ1bmN0aW9uIGZvciBzZXR0aW5nIG1hc3RlciBkcm0gZmlsZSBkZXNjcmlwdG9yLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTA0OWQ5ZWQ0YzJlNGE1ZWRjMjQwNmJmNDg1NDk4MmJiXCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpudW1fZXZlbnRfc291cmNlczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG51bWJlciBvZiBldmVudCBzb3VyY2U8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExMGJkNzQwYmI2NmNiMjYwZDI3MWQ2NWVkMzIyZGIxNVwiPmhhbF90ZG1fb3V0cHV0X2Z1bmNzPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExYzNmYjY4OTUzYmFlZjhjMmVhYzk1NDhhM2ZmYjgyY1wiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6b3V0cHV0X2Z1bmNzPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5vdXRwdXQgZnVuY3Rpb25zIG9mIGJhY2tlbmQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlZmY5Y2M4ZjRkNDA2YWMyMTJhMGE5NGVjY2NjMmY2M1wiPmhhbF90ZG1fcHBfZnVuY3M8XC9hPiogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgxNzQ2ZjUwNWZhNTU4YWMzMGQ1NmMxYmM5NjU2OTk2XCI+X2hhbF90ZG1fYmFja2VuZF9kYXRhOjpwcF9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+cG9zdC1wcm9jZXNzaW5nIGZ1bmN0aW9ucyBvZiBiYWNrZW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmNzc2OGZlZmNhOTI0MTEyNzMxZWZkNjkxM2M4MGI2NFwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6dXNlcl9kYXRhPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdXNlciBkYXRhIGZvciBjYWxsYmFjazxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWIzZDhlY2NmYjA5MWY1ZGEyZjlkMzhkZGU2Y2NjZDJhXCI+aGFsX3RkbV92b3V0cHV0X2Z1bmNzPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiNGIxNjcwY2U2NmQyOGY3NGI0OTgyOTc1ZmVhOTFjOFwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTo6dm91dHB1dF9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+dm91dHB1dCBmdW5jdGlvbnMgb2YgYmFja2VuZDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fZGlzcGxheV9mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGRpc3BsYXkgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTYxOWU4NTY1M2I0Y2FkMTc5MmMwNmE1MmJhZmM4ZWZjXCI+ZGlzcGxheV9nZXRfY2FwYWJpbGl0eTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MjI3YzcwYzYyMWI1YzI1ODliNDM1YzU2ZTkzZTAxOVwiPmhhbF90ZG1fZGlzcGxheTxcL2E+ICpkaXNwbGF5LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZDQ2YjhjMTg0OTJjMjUwZjc2ZTkzNDRiNmE0NDViXCI+aGFsX3RkbV9jYXBzX2Rpc3BsYXk8XC9hPiAqY2Fwcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyYzMxMGFlYmEzZmRiYTkxYjlkY2FlODFjZDgxMzNmNlwiPmRpc3BsYXlfZ2V0X3BwX2NhcGFiaWxpdHk8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzZWYyYTdmZjNhNGJjYmU5ZDY3NmFhMmNmYjRiZTczOVwiPmhhbF90ZG1fY2Fwc19wcDxcL2E+ICpjYXBzKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTNiM2UzYmQzM2UwYzdlNjUwMzFlMmEzYTdiODQwOGZmXCI+ZGlzcGxheV9nZXRfY2FwdHVyZV9jYXBhYmlsaXR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXksIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNmNiYjkwNTY5M2VjMGI0NGE5NGI1ZmI5OTJkYzViOTJcIj5oYWxfdGRtX2NhcHNfY2FwdHVyZTxcL2E+ICpjYXBzKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKiooKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2NDJmMTRhNTdhMzFlMGM1ZDY4ZGU0YTQzYzQ4YWEyN1wiPmRpc3BsYXlfZ2V0X291dHB1dHM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgaW50ICpjb3VudCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTY0NTc0YmQ3Y2UwZmY5NzY5MWQ3YTU1Mjk5N2MzNTVcIj5kaXNwbGF5X2dldF9mZDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MjI3YzcwYzYyMWI1YzI1ODliNDM1YzU2ZTkzZTAxOVwiPmhhbF90ZG1fZGlzcGxheTxcL2E+ICpkaXNwbGF5LCBpbnQgKmZkKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI3ZWZmMGQ2M2FlZWRkMzg4MDEyOTdlNjg1OGM3NGJhXCI+ZGlzcGxheV9oYW5kbGVfZXZlbnRzPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXkpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBiYzc2Nzc5OGFhYmI1MzQ1NDA4NTE3ZmI5MTA5N2M0XCI+aGFsX3RkbV9wcDxcL2E+ICooKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4OGM2YWEwMWJlYjJmNzE1NGIxZGYwOTU3MDE1MWEwMlwiPmRpc3BsYXlfY3JlYXRlX3BwPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXksIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICooKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2MGM0ZTA3MjRhNDkwYzkzYjA2YWEyZGVlMTE2YjdjNFwiPmRpc3BsYXlfdm91dHB1dF9jcmVhdGU8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgY29uc3QgY2hhciAqbmFtZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTFcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBiYzc2Nzc5OGFhYmI1MzQ1NDA4NTE3ZmI5MTA5N2M0XCI+aGFsX3RkbV9wcDxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4OGM2YWEwMWJlYjJmNzE1NGIxZGYwOTU3MDE1MWEwMlwiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M6OmRpc3BsYXlfY3JlYXRlX3BwPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q3JlYXRlIHRoZSBwb3N0LXByb2Nlc3Npbmcgb2JqZWN0IG9mIGhhbF90ZG1fZGlzcGxheS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2MTllODU2NTNiNGNhZDE3OTJjMDZhNTJiYWZjOGVmY1wiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M6OmRpc3BsYXlfZ2V0X2NhcGFiaWxpdHk8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MjI3YzcwYzYyMWI1YzI1ODliNDM1YzU2ZTkzZTAxOVwiPmhhbF90ZG1fZGlzcGxheTxcL2E+ICpkaXNwbGF5LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZDQ2YjhjMTg0OTJjMjUwZjc2ZTkzNDRiNmE0NDViXCI+aGFsX3RkbV9jYXBzX2Rpc3BsYXk8XC9hPiAqY2Fwcyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIGRpc3BsYXkgY2FwYWJpbGl0aWVzIG9mIGhhbF90ZG1fZGlzcGxheS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYjNlM2JkMzNlMGM3ZTY1MDMxZTJhM2E3Yjg0MDhmZlwiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M6OmRpc3BsYXlfZ2V0X2NhcHR1cmVfY2FwYWJpbGl0eTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXksIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNmNiYjkwNTY5M2VjMGI0NGE5NGI1ZmI5OTJkYzViOTJcIj5oYWxfdGRtX2NhcHNfY2FwdHVyZTxcL2E+ICpjYXBzKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgY2FwdHVyZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGhhbF90ZG1fZGlzcGxheS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNjQ1NzRiZDdjZTBmZjk3NjkxZDdhNTUyOTk3YzM1NVwiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M6OmRpc3BsYXlfZ2V0X2ZkPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgaW50ICpmZCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIGZpbGUgZGVzY3JpcHRvciBvZiBoYWxfdGRtX2Rpc3BsYXkuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+KiooKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjQyZjE0YTU3YTMxZTBjNWQ2OGRlNGE0M2M0OGFhMjdcIj5faGFsX3RkbV9kaXNwbGF5X2Z1bmNzOjpkaXNwbGF5X2dldF9vdXRwdXRzPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgaW50ICpjb3VudCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBvdXRwdXQgYXJyYXkgb2YgaGFsX3RkbV9kaXNwbGF5LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTJjMzEwYWViYTNmZGJhOTFiOWRjYWU4MWNkODEzM2Y2XCI+X2hhbF90ZG1fZGlzcGxheV9mdW5jczo6ZGlzcGxheV9nZXRfcHBfY2FwYWJpbGl0eTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTUyMjdjNzBjNjIxYjVjMjU4OWI0MzVjNTZlOTNlMDE5XCI+aGFsX3RkbV9kaXNwbGF5PFwvYT4gKmRpc3BsYXksIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2VmMmE3ZmYzYTRiY2JlOWQ2NzZhYTJjZmI0YmU3MzlcIj5oYWxfdGRtX2NhcHNfcHA8XC9hPiAqY2Fwcyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIHBvc3QtcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMgb2YgaGFsX3RkbV9kaXNwbGF5LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI3ZWZmMGQ2M2FlZWRkMzg4MDEyOTdlNjg1OGM3NGJhXCI+X2hhbF90ZG1fZGlzcGxheV9mdW5jczo6ZGlzcGxheV9oYW5kbGVfZXZlbnRzPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5IYW5kbGUgdGhlIGV2ZW50cyB3aGljaCBoYXBwZW5zIG9uIHRoZSBmZCBvZiBoYWxfdGRtX2Rpc3BsYXkuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiooKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjBjNGUwNzI0YTQ5MGM5M2IwNmFhMmRlZTExNmI3YzRcIj5faGFsX3RkbV9kaXNwbGF5X2Z1bmNzOjpkaXNwbGF5X3ZvdXRwdXRfY3JlYXRlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZGlzcGxheSwgY29uc3QgY2hhciAqbmFtZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q3JlYXRlIHRoZSB2aXJ0dWFsIG91dHB1dCBvYmplY3Qgb2YgaGFsX3RkbV9kaXNwbGF5LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fb3V0cHV0X2Z1bmNzPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3Mgb3V0cHV0IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyZTBiNmFlMzIwMTdmYzJmYmViMDgwNDYyNTYxMjg0MlwiPm91dHB1dF9nZXRfY2FwYWJpbGl0eTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzMGM4NmFiMWM4ZjBkNGVkYzkwNTU1MmUyOTg5MzE1NVwiPmhhbF90ZG1fY2Fwc19vdXRwdXQ8XC9hPiAqY2Fwcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlMTBkODU0MmZjYjUzYWFkMTcwYzcxZjEwOGNjZTRjNVwiPm91dHB1dF9zZXRfcHJvcGVydHk8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzQzYWRhODdkNmYxYzIzNDQ1ZWRkZjhjYTYxMDZjMmNcIj5vdXRwdXRfZ2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgaWQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3VuaW9uaGFsX190ZG1fX3ZhbHVlXCI+aGFsX3RkbV92YWx1ZTxcL2E+ICp2YWx1ZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNGU1MTZjOGE0NWU5NDhkYWU5MjM5NDdiZmM1MjJmMFwiPm91dHB1dF93YWl0X3ZibGFuazxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgaW50IGludGVydmFsLCBpbnQgc3luYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTUwZTFjNWM3NDRkNDU0MTE1NjMyM2EzYzQwNjNkN2M4XCI+b3V0cHV0X3NldF92YmxhbmtfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1OWZhMGJiZThmMmY5ZGM4ZjZiYTUwM2U2MTViMzRmYVwiPmhhbF90ZG1fb3V0cHV0X3ZibGFua19oYW5kbGVyPFwvYT4gZnVuYyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExY2I4ZGZhMzRlMDVlYTczZjIzMzVmOWExYjM3NDQzZVwiPm91dHB1dF9zZXRfZHBtczxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYzQzMzFiZjgwZDcyN2M5NWMxMjg1MjFiZWM5MjM2ZFwiPmhhbF90ZG1fb3V0cHV0X2RwbXM8XC9hPiBkcG1zX3ZhbHVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTE0ZmU1ZmM3NjI1M2YyZWQwYTA1ODRjZDZkOTZmOTViXCI+b3V0cHV0X2dldF9kcG1zPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFjNDMzMWJmODBkNzI3Yzk1YzEyODUyMWJlYzkyMzZkXCI+aGFsX3RkbV9vdXRwdXRfZHBtczxcL2E+ICpkcG1zX3ZhbHVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWYxNGZhNmNhYjU2NWVlZGU2MjUyMTFhYmNkZTc3YTgxXCI+b3V0cHV0X3NldF9tb2RlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCBjb25zdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+ICptb2RlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZlODk2YjBmNWM3NmJmODc4N2NjZWE0OTU3YzI0NTBjXCI+b3V0cHV0X2dldF9tb2RlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCBjb25zdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+ICoqbW9kZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMWVhNDc2OWMwZmIzMTlkMmE5ZjA1MzU3ZWJlMGZjZDVcIj5vdXRwdXRfY3JlYXRlX2NhcHR1cmU8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTkyNzA1ZjVhZjc4MWVhMGM5ZTcwNGM3YWY2ZjFhMDExXCI+b3V0cHV0X3NldF9zdGF0dXNfaGFuZGxlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzNWM1MDQxN2NlYmJlZmFmZTE3ZGFhZGI3OWUxMTUyMVwiPmhhbF90ZG1fb3V0cHV0X3N0YXR1c19oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEwMzNjYTM5MDQ0MmZjYTY0ODM3MGRhZjEyODZmZTkzXCI+b3V0cHV0X3NldF9kcG1zX2hhbmRsZXI8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjcxMGI2MzJiM2QxYTA2YzJjNjM0MTkxZDNkNTU2MGZcIj5oYWxfdGRtX291dHB1dF9kcG1zX2hhbmRsZXI8XC9hPiBmdW5jLCB2b2lkICp1c2VyX2RhdGEpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTU1MzA3MGM4YTk0ZWJjODFmZDIzYmUxODEwZjEyOGVcIj5vdXRwdXRfc2V0X2RwbXNfYXN5bmM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWM0MzMxYmY4MGQ3MjdjOTVjMTI4NTIxYmVjOTIzNmRcIj5oYWxfdGRtX291dHB1dF9kcG1zPFwvYT4gZHBtc192YWx1ZSwgaW50ICpzeW5jKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQ1YmZjZTMzMzZkMWNkN2ViZmM1ZDEyNjIzMGIzZjE4XCI+b3V0cHV0X2dldF9od2M8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWIyYTMyZDc0N2M0NmY5M2FkZDZlMTBhMzA4YzM4OGFiXCI+b3V0cHV0X3NldF9taXJyb3I8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpzcmNfb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPiB0cmFuc2Zvcm0pPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNDZhNTY1Y2E4MGIyOTg0YzVlZTQ5YmI4MDgwMDA5Y2NcIj5vdXRwdXRfdW5zZXRfbWlycm9yPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0KTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMlwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExZWE0NzY5YzBmYjMxOWQyYTlmMDUzNTdlYmUwZmNkNVwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X2NyZWF0ZV9jYXB0dXJlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNyZWF0ZSB0aGUgY2FwdHVyZSBvYmplY3QgZnJvbSB0aGUgb3V0cHV0IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyZTBiNmFlMzIwMTdmYzJmYmViMDgwNDYyNTYxMjg0MlwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X2dldF9jYXBhYmlsaXR5PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzBjODZhYjFjOGYwZDRlZGM5MDU1NTJlMjk4OTMxNTVcIj5oYWxfdGRtX2NhcHNfb3V0cHV0PFwvYT4gKmNhcHMpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGhhbF90ZG1fb3V0cHV0IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExNGZlNWZjNzYyNTNmMmVkMGEwNTg0Y2Q2ZDk2Zjk1YlwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X2dldF9kcG1zPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWM0MzMxYmY4MGQ3MjdjOTVjMTI4NTIxYmVjOTIzNmRcIj5oYWxfdGRtX291dHB1dF9kcG1zPFwvYT4gKmRwbXNfdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IERQTVMgb2YgdGhlIG91dHB1dCBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0NWJmY2UzMzM2ZDFjZDdlYmZjNWQxMjYyMzBiM2YxOFwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X2dldF9od2M8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBod2Mgb2JqZWN0IG9mIHRoZSBvdXRwdXQgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZlODk2YjBmNWM3NmJmODc4N2NjZWE0OTU3YzI0NTBjXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzOjpvdXRwdXRfZ2V0X21vZGU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgY29uc3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E0ZDgyNTJlYzE1YmU4ZjI4NWU5MjEwYzg4NmFiN2RjM1wiPmhhbF90ZG1fb3V0cHV0X21vZGU8XC9hPiAqKm1vZGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBtb2RlIG9mIHRoZSBvdXRwdXQgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTc0M2FkYTg3ZDZmMWMyMzQ0NWVkZGY4Y2E2MTA2YzJjXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzOjpvdXRwdXRfZ2V0X3Byb3BlcnR5PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gKnZhbHVlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgb3V0cHV0J3MgcHJvcGVydHkgd2hpY2ggaGFzIHRoZSBnaXZlbiBpZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExY2I4ZGZhMzRlMDVlYTczZjIzMzVmOWExYjM3NDQzZVwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X3NldF9kcG1zPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWM0MzMxYmY4MGQ3MjdjOTVjMTI4NTIxYmVjOTIzNmRcIj5oYWxfdGRtX291dHB1dF9kcG1zPFwvYT4gZHBtc192YWx1ZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgRFBNUyBvZiB0aGUgb3V0cHV0IG9iamVjdCBzeW5jaHJvbm91c2x5LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWU1NTMwNzBjOGE5NGViYzgxZmQyM2JlMTgxMGYxMjhlXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzOjpvdXRwdXRfc2V0X2RwbXNfYXN5bmM8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYzQzMzFiZjgwZDcyN2M5NWMxMjg1MjFiZWM5MjM2ZFwiPmhhbF90ZG1fb3V0cHV0X2RwbXM8XC9hPiBkcG1zX3ZhbHVlLCBpbnQgKnN5bmMpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IERQTVMgb2YgdGhlIG91dHB1dCBvYmplY3QgYXN5bmNocm9ub3VzbHkuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTAzM2NhMzkwNDQyZmNhNjQ4MzcwZGFmMTI4NmZlOTNcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfZHBtc19oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjcxMGI2MzJiM2QxYTA2YzJjNjM0MTkxZDNkNTU2MGZcIj5oYWxfdGRtX291dHB1dF9kcG1zX2hhbmRsZXI8XC9hPiBmdW5jLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBvdXRwdXQncyBkcG1zIGhhbmRsZXIuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYjJhMzJkNzQ3YzQ2ZjkzYWRkNmUxMGEzMDhjMzg4YWJcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfbWlycm9yPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpzcmNfb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPiB0cmFuc2Zvcm0pPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBtaXJyb3IgaW1hZ2Ugb2YgdGhlIHNyY19vdXRwdXQgdG8gdGhlIG91dHB1dC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmMTRmYTZjYWI1NjVlZWRlNjI1MjExYWJjZGU3N2E4MVwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X3NldF9tb2RlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIGNvbnN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNGQ4MjUyZWMxNWJlOGYyODVlOTIxMGM4ODZhYjdkYzNcIj5oYWxfdGRtX291dHB1dF9tb2RlPFwvYT4gKm1vZGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IG9uZSBvZiBhdmFpbGFibGUgbW9kZXMgb2YgdGhlIG91dHB1dCBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTEwZDg1NDJmY2I1M2FhZDE3MGM3MWYxMDhjY2U0YzVcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfcHJvcGVydHk8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdW5zaWduZWQgaW50IGlkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCN1bmlvbmhhbF9fdGRtX192YWx1ZVwiPmhhbF90ZG1fdmFsdWU8XC9hPiB2YWx1ZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIG91dHB1dCdzIHByb3BlcnR5IHdoaWNoIGhhcyB0aGUgZ2l2ZW4gaWQuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTI3MDVmNWFmNzgxZWEwYzllNzA0YzdhZjZmMWEwMTFcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfc3RhdHVzX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzNWM1MDQxN2NlYmJlZmFmZTE3ZGFhZGI3OWUxMTUyMVwiPmhhbF90ZG1fb3V0cHV0X3N0YXR1c19oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgb3V0cHV0IGNvbm5lY3Rpb24gc3RhdHVzIGhhbmRsZXIuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNTBlMWM1Yzc0NGQ0NTQxMTU2MzIzYTNjNDA2M2Q3YzhcIj5faGFsX3RkbV9vdXRwdXRfZnVuY3M6Om91dHB1dF9zZXRfdmJsYW5rX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1OWZhMGJiZThmMmY5ZGM4ZjZiYTUwM2U2MTViMzRmYVwiPmhhbF90ZG1fb3V0cHV0X3ZibGFua19oYW5kbGVyPFwvYT4gZnVuYyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIGhhbmRsZXIgb2YgdmJsYW5rLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQ2YTU2NWNhODBiMjk4NGM1ZWU0OWJiODA4MDAwOWNjXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzOjpvdXRwdXRfdW5zZXRfbWlycm9yPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VW5zZXQgdGhlIG1pcnJvciBpbWFnZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNGU1MTZjOGE0NWU5NDhkYWU5MjM5NDdiZmM1MjJmMFwiPl9oYWxfdGRtX291dHB1dF9mdW5jczo6b3V0cHV0X3dhaXRfdmJsYW5rPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIGludCBpbnRlcnZhbCwgaW50IHN5bmMsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5XYWl0IGZvciBWQkxBTksgb2Ygb3V0cHV0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fdm91dHB1dF9mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIHZpcnR1YWwgb3V0cHV0IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmNGQyNDgxODM3NmQzM2Y1ODA3ZGYzMTVmZDJkYjk4YlwiPnZvdXRwdXRfZGVzdHJveTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0KTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTllYTc1NmQ1ZTNhYWY1MjYwZmJhZDlkMTQ2OTYzY2EzXCI+dm91dHB1dF9zZXRfYXZhaWxhYmxlX21vZGU8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgY29uc3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E0ZDgyNTJlYzE1YmU4ZjI4NWU5MjEwYzg4NmFiN2RjM1wiPmhhbF90ZG1fb3V0cHV0X21vZGU8XC9hPiAqbW9kZXMsIGludCBjb3VudCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlYzgzNTMyODJkOWIwMWE0YzhlNWNjMTY4ZmQ4MjIyNVwiPnZvdXRwdXRfc2V0X3BoeXNpY2FsX3NpemU8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgdW5zaWduZWQgaW50IG1td2lkdGgsIHVuc2lnbmVkIGludCBtbWhlaWdodCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjZTdlNDc3YWVkZjVjNDZiNmI2ZDAzNDgxMWI2N2NkY1wiPnZvdXRwdXRfY29ubmVjdDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0KTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTk2MzUwOTFmMmIyMjU2YTY5NTg4MDQ5OWMwYzZmNTIwXCI+dm91dHB1dF9kaXNjb25uZWN0PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTllMzgzNDc0Y2JiY2Y2ZTJiOWEwNGQ3ZGY4ZmQ2ODFcIj52b3V0cHV0X2dldF9vdXRwdXQ8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjdmZTAzMjlmNDBhNjM1NWM3ZWM2YjkyNzg5NmM0NjZcIj52b3V0cHV0X3NldF9jb21taXRfZnVuYzxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTgwNTE5ZmY0OGY3NzJkOGNkYzcxMjM1YjBhNjI4ZmRiXCI+aGFsX3RkbV92b3V0cHV0X2NvbW1pdF9oYW5kbGVyPFwvYT4gY29tbWl0X2Z1bmMpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZWEwYmM4YjhiNTA2MGE2MDViYzdmNzkwNzFhMjJmNTlcIj52b3V0cHV0X2NvbW1pdF9kb25lPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOWE1MTE3OTJlMzY1OGZjM2ViOTIyMzYyMGUxZWQ3YjlcIj52b3V0cHV0X3NldF90YXJnZXRfYnVmZmVyX3F1ZXVlX2ZsYWc8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgaW50IGZsYWdzKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0zXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tM1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlYTBiYzhiOGI1MDYwYTYwNWJjN2Y3OTA3MWEyMmY1OVwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfY29tbWl0X2RvbmU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPk5vdGlmeSBjb21taXQgZG9uZSB0byBiYWNrZW5kLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWNlN2U0NzdhZWRmNWM0NmI2YjZkMDM0ODExYjY3Y2RjXCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczo6dm91dHB1dF9jb25uZWN0PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgY29ubmVjdCBzdGF0dXMgb2YgdGhlIHZpcnR1YWwgb3V0cHV0IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmNGQyNDgxODM3NmQzM2Y1ODA3ZGYzMTVmZDJkYjk4YlwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfZGVzdHJveTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RGVzdHJveSB0aGUgdmlydHVhbCBvdXRwdXQgb2JqZWN0IG9mIHRoZSBiYWNrZW5kIG1vZHVsZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5NjM1MDkxZjJiMjI1NmE2OTU4ODA0OTljMGM2ZjUyMFwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfZGlzY29ubmVjdDxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IGRpc2Nvbm5lY3Qgc3RhdHVzIG9mIHRoZSB2aXJ0dWFsIG91dHB1dCBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlOWUzODM0NzRjYmJjZjZlMmI5YTA0ZDdkZjhmZDY4MVwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfZ2V0X291dHB1dDxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCBvdXRwdXQgb2JqZWN0IGZyb20gdmlydHVhbCBvdXRwdXQgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTllYTc1NmQ1ZTNhYWY1MjYwZmJhZDlkMTQ2OTYzY2EzXCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczo6dm91dHB1dF9zZXRfYXZhaWxhYmxlX21vZGU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0LCBjb25zdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+ICptb2RlcywgaW50IGNvdW50KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCBhdmFpbGFibGUgbW9kZXMgb2YgdGhlIHZpcnR1YWwgb3V0cHV0IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmN2ZlMDMyOWY0MGE2MzU1YzdlYzZiOTI3ODk2YzQ2NlwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfc2V0X2NvbW1pdF9mdW5jPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4MDUxOWZmNDhmNzcyZDhjZGM3MTIzNWIwYTYyOGZkYlwiPmhhbF90ZG1fdm91dHB1dF9jb21taXRfaGFuZGxlcjxcL2E+IGNvbW1pdF9mdW5jKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgdXNlciBjb21taXQgZnVuY3Rpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlYzgzNTMyODJkOWIwMWE0YzhlNWNjMTY4ZmQ4MjIyNVwiPl9oYWxfdGRtX3ZvdXRwdXRfZnVuY3M6OnZvdXRwdXRfc2V0X3BoeXNpY2FsX3NpemU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0LCB1bnNpZ25lZCBpbnQgbW13aWR0aCwgdW5zaWduZWQgaW50IG1taGVpZ2h0KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCBwaHlzaWNhbCBzaXplKG1tKSBvZiB0aGUgdmlydHVhbCBvdXRwdXQgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTlhNTExNzkyZTM2NThmYzNlYjkyMjM2MjBlMWVkN2I5XCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczo6dm91dHB1dF9zZXRfdGFyZ2V0X2J1ZmZlcl9xdWV1ZV9mbGFnPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjVmMDFmYTgwMWU1YTkzMzU1NGMyZjVlZjBhN2UzZTlcIj5oYWxfdGRtX3ZvdXRwdXQ8XC9hPiAqdm91dHB1dCwgaW50IGZsYWdzKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0YXJnZXQgYnVmZmVyIHF1ZXVlIGZsYWcgb2YgdGhlIHZpcnR1YWwgb3V0cHV0J3MgaHdjIG9iamVjdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1faHdjX2Z1bmNzPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgaHdjIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhODJkODM5ZWMxMDI5NWJiNDNhZjY1MjA1ODg4MDRjMGFcIj5od2NfY3JlYXRlX3dpbmRvdzxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZWYyM2M4OWJjMGUxZTlmYjRiMzg1OTc5MGZlZDZiMDJcIj5od2NfZ2V0X3ZpZGVvX3N1cHBvcnRlZF9mb3JtYXRzPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBjb25zdCB0Ym1fZm9ybWF0ICoqZm9ybWF0cywgaW50ICpjb3VudCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNmRhNjRjM2NhYTA3ODJkYTI1YjhiMWFiZDdhY2VkM1wiPmh3Y19nZXRfdmlkZW9fYXZhaWxhYmxlX3Byb3BlcnRpZXM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGNvbnN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZDQwNTNjNzY5YjFjMTc5NDlkODc5OTY3OGIxNjUxN2ZcIj5oYWxfdGRtX3Byb3A8XC9hPiAqKnByb3BzLCBpbnQgKmNvdW50KTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQwY2MwNDVjOTQ4M2MyOTc0NDczYzZhMmM3YThmYjIzXCI+aHdjX2dldF9jYXBhYmlsaXRpZXM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOTJkODRjM2E2MDdhZTQwMmM4NDQzMGZjNmFlZDg3YmZcIj5oYWxfdGRtX2h3Y19jYXBhYmlsaXR5PFwvYT4gKmNhcGFiaWxpdGllcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiNzNlNTQ1MjkwMDEwZmU5MzNlNGJjOTQ0MWY4YzI0NFwiPmh3Y19nZXRfYXZhaWxhYmxlX3Byb3BlcnRpZXM8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGNvbnN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZDQwNTNjNzY5YjFjMTc5NDlkODc5OTY3OGIxNjUxN2ZcIj5oYWxfdGRtX3Byb3A8XC9hPiAqKnByb3BzLCBpbnQgKmNvdW50KTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dGJtX3N1cmZhY2VfcXVldWVfaCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWY4YmE4YmVhNTg2NTkxYmYxZmZlNmVjMDdkYTIwOWRmXCI+aHdjX2dldF9jbGllbnRfdGFyZ2V0X2J1ZmZlcl9xdWV1ZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYWZmZDcwNGEwOTcwZWVmZWI4NzA0MWYzNzQxMzAzNGJcIj5od2Nfc2V0X2NsaWVudF90YXJnZXRfYnVmZmVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB0Ym1fc3VyZmFjZV9oIHRhcmdldF9idWZmZXIsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjMyZTQ2YWE4YzZlNjgzNmUzMGM5MTkxNTRjMzE2NWNcIj5oYWxfdGRtX3JlZ2lvbjxcL2E+IGRhbWFnZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhZWE2ZDlkNWU1ZTliYzRhNzUxOTEzNWViOWJhMTBkM1wiPmh3Y19zZXRfY2xpZW50X3RhcmdldF9hY3F1aXJlX2ZlbmNlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBpbnQgYWNxdWlyZV9mZW5jZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2ZjM1ZjYxMWRjNGM0M2YwZWYyYWVmMjQ2ZWE0MGE4YlwiPmh3Y192YWxpZGF0ZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqY29tcG9zaXRlZF93bmRzLCB1aW50MzJfdCBudW1fd25kcywgdWludDMyX3QgKm51bV90eXBlcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiZGI2MjYxNjI1ZmU4MzNlYTAzNjM4OGQxMjZhMDAxNVwiPmh3Y19nZXRfY2hhbmdlZF9jb21wb3NpdGlvbl90eXBlczxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgdWludDMyX3QgKm51bV9lbGVtZW50cywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzVjOGIzYzc0ZGZiZjYyYzY4MWM5ZDRlODhjODM5NlwiPmhhbF90ZG1faHdjX3dpbmRvd19jb21wb3NpdGlvbjxcL2E+ICpjb21wb3NpdGlvbl90eXBlcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlMDhlNDFkYzQ4ZWUzZmIxMmI0NzkyYWM1MzRlMzMzZVwiPmh3Y19hY2NlcHRfdmFsaWRhdGlvbjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3Yyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4Zjk2NDI4OWY4Y2FiOGE0M2Y2YmRiMDc5ZTZmNjMzOVwiPmh3Y19jb21taXQ8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGludCBzeW5jLCB2b2lkICp1c2VyX2RhdGEpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTY3MzRhODg5MTVjM2RjMGFmMDM2Yjc4NTU0M2NkNzZcIj5od2Nfc2V0X2NvbW1pdF9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWI2YmRhNTZiMWRiODRlZTJmMjBlODEzOWFlODg0MmJhXCI+aGFsX3RkbV9od2NfY29tbWl0X2hhbmRsZXI8XC9hPiBmdW5jKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTM0MjAwOWIzMWJjYWY5MDMwN2I0OGNlODc4YmU5N2I0XCI+aHdjX2dldF9jb21taXRfZmVuY2U8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGludCAqY29tbWl0X2ZlbmNlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgxZDA0OTI2Njc4ZWMzZjJjNzMxOTVkNjhlMmYzZjg2XCI+aHdjX2dldF9yZWxlYXNlX2ZlbmNlczxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgdWludDMyX3QgKm51bV9lbGVtZW50cywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqaHdjX3dpbmRvd3MsIGludCAqcmVsZWFzZV9mZW5jZXMpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTE3MWM2NGRlN2MwYzlkNDMwZWRkZDY2NDA5MjhiM2FcIj5od2Nfc2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNWY3ODZiMDNmMGE0YThmMTU1YWVkMWUyZDExNDM4MjZcIj5od2NfZ2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gKnZhbHVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZiYmE3ODI5MjM5MjE4NWE5MWI0OTFhYWJhNDhmNDk5XCI+aHdjX2dldF9jb21taXRfaW50ZXJ2YWw8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZmYwNDkwNTNmNTc4OTU3ZDc2NTRhYTBkOTQ3NWEzNDRcIj5oYWxfdGRtX2h3Y19jb21taXRfaW50ZXJ2YWw8XC9hPiAqaW50ZXJ2YWwpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzI4YTFkNmFjZWI2MjBlODBkOGY3MmNlYThkYzJiMTNcIj5od2Nfc2V0X2NsaWVudF90YXJnZXRfYnVmZmVyX2luZm88XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTE1N2U5NmI3YzU5YzU1OTdjYmExOWU3N2RkZjljZWFcIj5oYWxfdGRtX2h3Y193aW5kb3dfaW5mbzxcL2E+ICppbmZvKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi00XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNFwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlMDhlNDFkYzQ4ZWUzZmIxMmI0NzkyYWM1MzRlMzMzZVwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2FjY2VwdF92YWxpZGF0aW9uPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+QWNjZXB0cyB0aGUgdmFsaWRhdGlvbiByZXF1aXJlZCBieSB0aGUgYmFja2VuZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4Zjk2NDI4OWY4Y2FiOGE0M2Y2YmRiMDc5ZTZmNjMzOVwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2NvbW1pdDxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBpbnQgc3luYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNvbW1pdCBjaGFuZ2VzIGZvciB0aGUgaHdjIG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+KigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4MmQ4MzllYzEwMjk1YmI0M2FmNjUyMDU4ODgwNGMwYVwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2NyZWF0ZV93aW5kb3c8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+Q3JlYXRlIGEgbmV3IHdpbmRvdyBvbiB0aGUgZ2l2ZW4gaHdjLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWI3M2U1NDUyOTAwMTBmZTkzM2U0YmM5NDQxZjhjMjQ0XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2F2YWlsYWJsZV9wcm9wZXJ0aWVzPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIGNvbnN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZDQwNTNjNzY5YjFjMTc5NDlkODc5OTY3OGIxNjUxN2ZcIj5oYWxfdGRtX3Byb3A8XC9hPiAqKnByb3BzLCBpbnQgKmNvdW50KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgYXZhaWxhYmxlIHByb3BlcnR5IGFycmF5IG9mIHRoZSBod2Mgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQwY2MwNDVjOTQ4M2MyOTc0NDczYzZhMmM3YThmYjIzXCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2NhcGFiaWxpdGllczxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTkyZDg0YzNhNjA3YWU0MDJjODQ0MzBmYzZhZWQ4N2JmXCI+aGFsX3RkbV9od2NfY2FwYWJpbGl0eTxcL2E+ICpjYXBhYmlsaXRpZXMpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBod2MgY2FwYWJpbGl0aWVzLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWJkYjYyNjE2MjVmZTgzM2VhMDM2Mzg4ZDEyNmEwMDE1XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2NoYW5nZWRfY29tcG9zaXRpb25fdHlwZXM8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgdWludDMyX3QgKm51bV9lbGVtZW50cywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzVjOGIzYzc0ZGZiZjYyYzY4MWM5ZDRlODhjODM5NlwiPmhhbF90ZG1faHdjX3dpbmRvd19jb21wb3NpdGlvbjxcL2E+ICpjb21wb3NpdGlvbl90eXBlcyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgY2hhbmdlZCBjb21wb3NpdGlvbiB0eXBlcy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dGJtX3N1cmZhY2VfcXVldWVfaCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmOGJhOGJlYTU4NjU5MWJmMWZmZTZlYzA3ZGEyMDlkZlwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2dldF9jbGllbnRfdGFyZ2V0X2J1ZmZlcl9xdWV1ZTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+ICplcnJvcik8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIGNsaWVudCB0YXJnZXQgYnVmZmVyIHF1ZXVlLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTM0MjAwOWIzMWJjYWY5MDMwN2I0OGNlODc4YmU5N2I0XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2NvbW1pdF9mZW5jZTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBpbnQgKmNvbW1pdF9mZW5jZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgY29tbWl0IGZlbmNlLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZiYmE3ODI5MjM5MjE4NWE5MWI0OTFhYWJhNDhmNDk5XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X2NvbW1pdF9pbnRlcnZhbDxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWZmMDQ5MDUzZjU3ODk1N2Q3NjU0YWEwZDk0NzVhMzQ0XCI+aGFsX3RkbV9od2NfY29tbWl0X2ludGVydmFsPFwvYT4gKmludGVydmFsKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgY29tbWl0IGludGVydmFsLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTVmNzg2YjAzZjBhNGE4ZjE1NWFlZDFlMmQxMTQzODI2XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X3Byb3BlcnR5PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIHVpbnQzMl90IGlkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCN1bmlvbmhhbF9fdGRtX192YWx1ZVwiPmhhbF90ZG1fdmFsdWU8XC9hPiAqdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBwcm9wZXJ0eSB3aGljaCBoYXMgdGhlIGdpdmVuIGlkIG9uIHRoZSBod2Mgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgxZDA0OTI2Njc4ZWMzZjJjNzMxOTVkNjhlMmYzZjg2XCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfZ2V0X3JlbGVhc2VfZmVuY2VzPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIHVpbnQzMl90ICpudW1fZWxlbWVudHMsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqKmh3Y193aW5kb3dzLCBpbnQgKnJlbGVhc2VfZmVuY2VzKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCByZWxlYXNlIGZlbmNlcy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlNmRhNjRjM2NhYTA3ODJkYTI1YjhiMWFiZDdhY2VkM1wiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2dldF92aWRlb19hdmFpbGFibGVfcHJvcGVydGllczxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBjb25zdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWQ0MDUzYzc2OWIxYzE3OTQ5ZDg3OTk2NzhiMTY1MTdmXCI+aGFsX3RkbV9wcm9wPFwvYT4gKipwcm9wcywgaW50ICpjb3VudCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdGhlIGF2YWlsYWJsZSB2aWRlbyBwcm9wZXJ0eSBhcnJheSBvZiB0aGUgaHdjIG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlZjIzYzg5YmMwZTFlOWZiNGIzODU5NzkwZmVkNmIwMlwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX2dldF92aWRlb19zdXBwb3J0ZWRfZm9ybWF0czxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCBjb25zdCB0Ym1fZm9ybWF0ICoqZm9ybWF0cywgaW50ICpjb3VudCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5HZXQgdmlkZW8gdGhlIHN1cHBvcnRlZCBmb3JtYXQgYXJyYXkgZm9yIHRoZSBod2Mgd2luZG93cyBvZiB0aGUgaHdjIG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhZWE2ZDlkNWU1ZTliYzRhNzUxOTEzNWViOWJhMTBkM1wiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX3NldF9jbGllbnRfdGFyZ2V0X2FjcXVpcmVfZmVuY2U8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgaW50IGFjcXVpcmVfZmVuY2UpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBhY3F1aXJlIGZlbmNlIG9mIGNsaWVudCB0YXJnZXQgYnVmZmVyLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWFmZmQ3MDRhMDk3MGVlZmViODcwNDFmMzc0MTMwMzRiXCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2Nfc2V0X2NsaWVudF90YXJnZXRfYnVmZmVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhODUzZDYyYjA5MjI0OWJmZWExMjZhYjM0NzAyOTBmZjZcIj5oYWxfdGRtX2h3YzxcL2E+ICpod2MsIHRibV9zdXJmYWNlX2ggdGFyZ2V0X2J1ZmZlciwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMzJlNDZhYThjNmU2ODM2ZTMwYzkxOTE1NGMzMTY1Y1wiPmhhbF90ZG1fcmVnaW9uPFwvYT4gZGFtYWdlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgY2xpZW50IHRhcmdldCBidWZmZXIuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzI4YTFkNmFjZWI2MjBlODBkOGY3MmNlYThkYzJiMTNcIj5faGFsX3RkbV9od2NfZnVuY3M6Omh3Y19zZXRfY2xpZW50X3RhcmdldF9idWZmZXJfaW5mbzxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWUxNTdlOTZiN2M1OWM1NTk3Y2JhMTllNzdkZGY5Y2VhXCI+aGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPiAqaW5mbyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBjbGllbnQgdGFyZ2V0IGJ1ZmZlci48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5NjczNGE4ODkxNWMzZGMwYWYwMzZiNzg1NTQzY2Q3NlwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX3NldF9jb21taXRfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWI2YmRhNTZiMWRiODRlZTJmMjBlODEzOWFlODg0MmJhXCI+aGFsX3RkbV9od2NfY29tbWl0X2hhbmRsZXI8XC9hPiBmdW5jKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgdXNlciBjb21taXQgaGFuZGxlci48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5MTcxYzY0ZGU3YzBjOWQ0MzBlZGRkNjY0MDkyOGIzYVwiPl9oYWxfdGRtX2h3Y19mdW5jczo6aHdjX3NldF9wcm9wZXJ0eTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBwcm9wZXJ0eSB3aGljaCBoYXMgdGhlIGdpdmVuIGlkIG9uIHRoZSBod2Mgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZmMzVmNjExZGM0YzQzZjBlZjJhZWYyNDZlYTQwYThiXCI+X2hhbF90ZG1faHdjX2Z1bmNzOjpod2NfdmFsaWRhdGU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4NTNkNjJiMDkyMjQ5YmZlYTEyNmFiMzQ3MDI5MGZmNlwiPmhhbF90ZG1faHdjPFwvYT4gKmh3YywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICoqY29tcG9zaXRlZF93bmRzLCB1aW50MzJfdCBudW1fd25kcywgdWludDMyX3QgKm51bV90eXBlcyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5WYWxpZGF0ZSB0aGUgaHdjLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1faHdjX3dpbmRvd19mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGh3YyB3aW5kb3cgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWUyMjhmZDg4MTI4NzgyNzg5YjE0Yjk5OTFkMmNlYWQwXCI+aHdjX3dpbmRvd19kZXN0cm95PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3cpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50Ym1fc3VyZmFjZV9xdWV1ZV9oKCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGYxZTBlN2VmMDE4NGZlMjkyYmU0YTJjNjFmZTE5OWVcIj5od2Nfd2luZG93X2FjcXVpcmVfYnVmZmVyX3F1ZXVlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4gKmVycm9yKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI4OGE0ZWMxZTkwZTViYTY0N2VjNTVlMTU1YmIzNDk0XCI+aHdjX3dpbmRvd19yZWxlYXNlX2J1ZmZlcl9xdWV1ZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB0Ym1fc3VyZmFjZV9xdWV1ZV9oIHF1ZXVlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWZjOTdmNTUyZDc1MjZmYTIyMjhkYmI4YjcxNjBjNGRjXCI+aHdjX3dpbmRvd19zZXRfY29tcG9zaXRpb25fdHlwZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3NWM4YjNjNzRkZmJmNjJjNjgxYzlkNGU4OGM4Mzk2XCI+aGFsX3RkbV9od2Nfd2luZG93X2NvbXBvc2l0aW9uPFwvYT4gY29tcG9zaXRpb25fdHlwZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2MjdmM2E0YTk0NDA3YzNkOTIwN2ZkYWUxZWJlYjdhOFwiPmh3Y193aW5kb3dfc2V0X2J1ZmZlcl9kYW1hZ2U8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMzJlNDZhYThjNmU2ODM2ZTMwYzkxOTE1NGMzMTY1Y1wiPmhhbF90ZG1fcmVnaW9uPFwvYT4gZGFtYWdlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTYzOTExZjM3NThmN2RjZjU4NGM2ODRmNWUzNTVmMjY4XCI+aHdjX3dpbmRvd19zZXRfaW5mbzxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWUxNTdlOTZiN2M1OWM1NTk3Y2JhMTllNzdkZGY5Y2VhXCI+aGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPiAqaW5mbyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzNDJiZDA3ZTNjOTlhZDE2NDY3YWY2YWI1MGNiYmQ1N1wiPmh3Y193aW5kb3dfc2V0X2J1ZmZlcjxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB0Ym1fc3VyZmFjZV9oIGJ1ZmZlcik8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3MDg5ZGNhNWNjNzBmYWNhZTc0NmYwZWFiMzBiOThiZFwiPmh3Y193aW5kb3dfc2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIHVpbnQzMl90IGlkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCN1bmlvbmhhbF9fdGRtX192YWx1ZVwiPmhhbF90ZG1fdmFsdWU8XC9hPiB2YWx1ZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0NWQ2NDI0NDI5ZGY2ZTQ4ZDNlNjFjYTQ2NTczMzZhMVwiPmh3Y193aW5kb3dfZ2V0X3Byb3BlcnR5PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIHVpbnQzMl90IGlkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCN1bmlvbmhhbF9fdGRtX192YWx1ZVwiPmhhbF90ZG1fdmFsdWU8XC9hPiAqdmFsdWUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhODYyMmJhOTJlZmQ2YjFhNzgwMjQzZWNkZWVkMDE4NzhcIj5od2Nfd2luZG93X2dldF9jb25zdHJhaW50czxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCBpbnQgKmNvbnN0cmFpbnRzKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQwOTU0ZWI4YzVlMjdhZTU4YjE1OTgwNGUxNTE4Mzc5XCI+aHdjX3dpbmRvd19zZXRfbmFtZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCBjb25zdCBjaGFyICpuYW1lKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTA5MzVjMTUxOWI3ZDgxZDJmZTZkYzYwNWIyNTRmYmQyXCI+aHdjX3dpbmRvd19zZXRfY3Vyc29yX2ltYWdlPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgdm9pZCAqcHRyKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWY4Zjg5YTc4ZDYyMjE2MmMyNTE3ZTAyZjliM2IzYjhjXCI+aHdjX3dpbmRvd19zZXRfYWNxdWlyZV9mZW5jZTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCBpbnQgYWNxdWlyZV9mZW5jZSk8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTVcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnRibV9zdXJmYWNlX3F1ZXVlX2goKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGYxZTBlN2VmMDE4NGZlMjkyYmU0YTJjNjFmZTE5OWVcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X2FjcXVpcmVfYnVmZmVyX3F1ZXVlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPiAqZXJyb3IpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+QWNxdWlyZSB0aGUgYnVmZmVyIHF1ZXVlIGhhbmRsZSBmb3IgdGhlIHdpbmRvdyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZTIyOGZkODgxMjg3ODI3ODliMTRiOTk5MWQyY2VhZDBcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X2Rlc3Ryb3k8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93KTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlc3Ryb3lzIHRoZSBnaXZlbiB3aW5kb3cuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhODYyMmJhOTJlZmQ2YjFhNzgwMjQzZWNkZWVkMDE4NzhcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X2dldF9jb25zdHJhaW50czxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIGludCAqY29uc3RyYWludHMpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0IHRoZSBjb25zdHJhaW50cyBvZiBod2Nfd2luZG93LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQ1ZDY0MjQ0MjlkZjZlNDhkM2U2MWNhNDY1NzMzNmExXCI+X2hhbF90ZG1faHdjX3dpbmRvd19mdW5jczo6aHdjX3dpbmRvd19nZXRfcHJvcGVydHk8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gKnZhbHVlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkdldCB0aGUgcHJvcGVydHkgd2hpY2ggaGFzIHRoZSBnaXZlbiBpZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyODhhNGVjMWU5MGU1YmE2NDdlYzU1ZTE1NWJiMzQ5NFwiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M6Omh3Y193aW5kb3dfcmVsZWFzZV9idWZmZXJfcXVldWU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB0Ym1fc3VyZmFjZV9xdWV1ZV9oIHF1ZXVlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlJlbGVhc2UgdGhlIGJ1ZmZlciBxdWV1ZSBmb3IgdGhlIHdpbmRvdyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjhmODlhNzhkNjIyMTYyYzI1MTdlMDJmOWIzYjNiOGNcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X3NldF9hY3F1aXJlX2ZlbmNlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgaW50IGFjcXVpcmVfZmVuY2UpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBhY3F1aXJlIGZlbmNlIG9mIGh3Y193aW5kb3cuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMzQyYmQwN2UzYzk5YWQxNjQ2N2FmNmFiNTBjYmJkNTdcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X3NldF9idWZmZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB0Ym1fc3VyZmFjZV9oIGJ1ZmZlcik8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIFRETSBidWZmZXIgdG8gdGhlIHdpbmRvdyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjI3ZjNhNGE5NDQwN2MzZDkyMDdmZGFlMWViZWI3YThcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X3NldF9idWZmZXJfZGFtYWdlPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMzJlNDZhYThjNmU2ODM2ZTMwYzkxOTE1NGMzMTY1Y1wiPmhhbF90ZG1fcmVnaW9uPFwvYT4gZGFtYWdlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgYnVmZmVyIGRhbWFnZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmYzk3ZjU1MmQ3NTI2ZmEyMjI4ZGJiOGI3MTYwYzRkY1wiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M6Omh3Y193aW5kb3dfc2V0X2NvbXBvc2l0aW9uX3R5cGU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3NWM4YjNjNzRkZmJmNjJjNjgxYzlkNGU4OGM4Mzk2XCI+aGFsX3RkbV9od2Nfd2luZG93X2NvbXBvc2l0aW9uPFwvYT4gY29tcG9zaXRpb25fdHlwZSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXRzIHRoZSBkZXNpcmVkIGNvbXBvc2l0aW9uIHR5cGUgb2YgdGhlIGdpdmVuIHdpbmRvdy48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwOTM1YzE1MTliN2Q4MWQyZmU2ZGM2MDViMjU0ZmJkMlwiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M6Omh3Y193aW5kb3dfc2V0X2N1cnNvcl9pbWFnZTxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT4gKmh3Y193aW5kb3csIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgdm9pZCAqcHRyKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgY3Vyc29yIGltYWdlIHRvIGh3Y193aW5kb3cuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjM5MTFmMzc1OGY3ZGNmNTg0YzY4NGY1ZTM1NWYyNjhcIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzOjpod2Nfd2luZG93X3NldF9pbmZvPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2I3OTQ5YTc2ZGEwZDQ1NzU0ODU0YmQyMGQ0ODkwMzRcIj5oYWxfdGRtX2h3Y193aW5kb3c8XC9hPiAqaHdjX3dpbmRvdywgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlMTU3ZTk2YjdjNTljNTU5N2NiYTE5ZTc3ZGRmOWNlYVwiPmhhbF90ZG1faHdjX3dpbmRvd19pbmZvPFwvYT4gKmluZm8pPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgd2luZG93IG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0MDk1NGViOGM1ZTI3YWU1OGIxNTk4MDRlMTUxODM3OVwiPl9oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M6Omh3Y193aW5kb3dfc2V0X25hbWU8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCBjb25zdCBjaGFyICpuYW1lKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgbmFtZSBvZiBod2Nfd2luZG93LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTcwODlkY2E1Y2M3MGZhY2FlNzQ2ZjBlYWIzMGI5OGJkXCI+X2hhbF90ZG1faHdjX3dpbmRvd19mdW5jczo6aHdjX3dpbmRvd19zZXRfcHJvcGVydHk8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzYjc5NDlhNzZkYTBkNDU3NTQ4NTRiZDIwZDQ4OTAzNFwiPmhhbF90ZG1faHdjX3dpbmRvdzxcL2E+ICpod2Nfd2luZG93LCB1aW50MzJfdCBpZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjdW5pb25oYWxfX3RkbV9fdmFsdWVcIj5oYWxfdGRtX3ZhbHVlPFwvYT4gdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBwcm9wZXJ0eSB3aGljaCBoYXMgdGhlIGdpdmVuIGlkLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fcHBfZnVuY3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBwb3N0LXByb2Nlc3NpbmcgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWRhMGY0NzNiZjZhYTM4NDkxMjExMzFlODhhMjkzMzBlXCI+cHBfZGVzdHJveTxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHApPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTYyYjVjYjZhODQ5YTU5MDg4NzljMjY4ZWY2MzI2ODBcIj5wcF9zZXRfaW5mbzxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHAsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYzE3ZTdjYjlhMzYwY2UxM2RiNTg5MjYwZDEwNzc0YzdcIj5oYWxfdGRtX2luZm9fcHA8XC9hPiAqaW5mbyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyMTZhN2YzODdkZjk3Y2IxNTY1MjA5MDViZDBkZmNkM1wiPnBwX2F0dGFjaDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHAsIHRibV9zdXJmYWNlX2ggc3JjLCB0Ym1fc3VyZmFjZV9oIGRzdCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiMDJjZWMwMWQzYzExYmZiOWI2ZDZlYTU3ZGUzN2QzNVwiPnBwX2NvbW1pdDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHApPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNTQ3ODg1YzQyY2Y3MTQ1OWI4YjIwNzg0ZDA5MGQ0NDlcIj5wcF9zZXRfZG9uZV9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBiYzc2Nzc5OGFhYmI1MzQ1NDA4NTE3ZmI5MTA5N2M0XCI+aGFsX3RkbV9wcDxcL2E+ICpwcCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5NWRkODJiYjNjZjFiMGIzMzAzYmVkZjQyMWFmZjYwZlwiPmhhbF90ZG1fcHBfZG9uZV9oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi02XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNlwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyMTZhN2YzODdkZjk3Y2IxNTY1MjA5MDViZDBkZmNkM1wiPl9oYWxfdGRtX3BwX2Z1bmNzOjpwcF9hdHRhY2g8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHAsIHRibV9zdXJmYWNlX2ggc3JjLCB0Ym1fc3VyZmFjZV9oIGRzdCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5BdHRhY2ggdGhlIHNvdXJjZSBidWZmZXIgYW5kIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdG8gdGhlIHBvc3QtcHJvY2Vzc2luZyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYjAyY2VjMDFkM2MxMWJmYjliNmQ2ZWE1N2RlMzdkMzVcIj5faGFsX3RkbV9wcF9mdW5jczo6cHBfY29tbWl0PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGJjNzY3Nzk4YWFiYjUzNDU0MDg1MTdmYjkxMDk3YzRcIj5oYWxfdGRtX3BwPFwvYT4gKnBwKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNvbW1pdCBjaGFuZ2VzIGZvciB0aGUgcG9zdC1wcm9jZXNzaW5nIG9iamVjdC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkYTBmNDczYmY2YWEzODQ5MTIxMTMxZTg4YTI5MzMwZVwiPl9oYWxfdGRtX3BwX2Z1bmNzOjpwcF9kZXN0cm95PFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGJjNzY3Nzk4YWFiYjUzNDU0MDg1MTdmYjkxMDk3YzRcIj5oYWxfdGRtX3BwPFwvYT4gKnBwKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlc3Ryb3kgdGhlIHBvc3QtcHJvY2Vzc2luZyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNTQ3ODg1YzQyY2Y3MTQ1OWI4YjIwNzg0ZDA5MGQ0NDlcIj5faGFsX3RkbV9wcF9mdW5jczo6cHBfc2V0X2RvbmVfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTBiYzc2Nzc5OGFhYmI1MzQ1NDA4NTE3ZmI5MTA5N2M0XCI+aGFsX3RkbV9wcDxcL2E+ICpwcCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5NWRkODJiYjNjZjFiMGIzMzAzYmVkZjQyMWFmZjYwZlwiPmhhbF90ZG1fcHBfZG9uZV9oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldCB0aGUgcHJvY2Vzc2luZyBkb25lIGhhbmRsZXIgdG8gdGhlIHBvc3QtcHJvY2Vzc2luZyBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTYyYjVjYjZhODQ5YTU5MDg4NzljMjY4ZWY2MzI2ODBcIj5faGFsX3RkbV9wcF9mdW5jczo6cHBfc2V0X2luZm88XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPiAqcHAsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYzE3ZTdjYjlhMzYwY2UxM2RiNTg5MjYwZDEwNzc0YzdcIj5oYWxfdGRtX2luZm9fcHA8XC9hPiAqaW5mbyk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TZXQgdGhlIGdlb21ldHJ5IGluZm9ybWF0aW9uIHRvIHRoZSBwb3N0LXByb2Nlc3Npbmcgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fY2FwdHVyZV9mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGNhcHR1cmUgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dm9pZCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWYzYjBlMWRlNzFjMTJlOTFiNWFhMDFkMDNhODJlMDFlXCI+Y2FwdHVyZV9kZXN0cm95PFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4MDEwMDNiYTM3YTdkZTNjYTkxNTE2MTZkMzJkYmFjXCI+aGFsX3RkbV9jYXB0dXJlPFwvYT4gKmNhcHR1cmUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTU4ZWEwYjQ5MTYxYTE5YzI1MDM0ZGQ3YmMzZDE2MTVcIj5jYXB0dXJlX3NldF9pbmZvPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4MDEwMDNiYTM3YTdkZTNjYTkxNTE2MTZkMzJkYmFjXCI+aGFsX3RkbV9jYXB0dXJlPFwvYT4gKmNhcHR1cmUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOGQ0NTZjYjQ2NTFmZWNhZDUzNTdkNWY0M2FiYzYxYjJcIj5oYWxfdGRtX2luZm9fY2FwdHVyZTxcL2E+ICppbmZvKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTU3NTFiMjI5YWRiNGQ5Zjk1ODczYTA1NjhhYTcwZWU3XCI+Y2FwdHVyZV9hdHRhY2g8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgdGJtX3N1cmZhY2VfaCBidWZmZXIpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzA4MDAzNmY4ZjBlZmM5NjM2NjgwOTkxMjE4OTMwZDJcIj5jYXB0dXJlX2NvbW1pdDxcL2E+ICkoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+ICpjYXB0dXJlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTJjNDcxOTYxNGVkMDMzMzU5MzFkNDY3YzI4ZmMwZWZkXCI+Y2FwdHVyZV9zZXRfZG9uZV9oYW5kbGVyPFwvYT4gKSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4MDEwMDNiYTM3YTdkZTNjYTkxNTE2MTZkMzJkYmFjXCI+aGFsX3RkbV9jYXB0dXJlPFwvYT4gKmNhcHR1cmUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMmQ5M2U1Y2IyNzc1MzRhNWYyMjRkY2MwMmYzMjYzYzRcIj5oYWxfdGRtX2NhcHR1cmVfZG9uZV9oYW5kbGVyPFwvYT4gZnVuYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi03XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tN1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1NzUxYjIyOWFkYjRkOWY5NTg3M2EwNTY4YWE3MGVlN1wiPl9oYWxfdGRtX2NhcHR1cmVfZnVuY3M6OmNhcHR1cmVfYXR0YWNoPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgdGJtX3N1cmZhY2VfaCBidWZmZXIpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+QXR0YWNoIHRoZSBURE0gYnVmZmVyIHRvIHRoZSBjYXB0dXJlIG9iamVjdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTcwODAwMzZmOGYwZWZjOTYzNjY4MDk5MTIxODkzMGQyXCI+X2hhbF90ZG1fY2FwdHVyZV9mdW5jczo6Y2FwdHVyZV9jb21taXQ8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+ICpjYXB0dXJlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNvbW1pdCBjaGFuZ2VzIGZvciB0aGUgY2FwdHVyZSBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjNiMGUxZGU3MWMxMmU5MWI1YWEwMWQwM2E4MmUwMWVcIj5faGFsX3RkbV9jYXB0dXJlX2Z1bmNzOjpjYXB0dXJlX2Rlc3Ryb3k8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+ICpjYXB0dXJlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlc3Ryb3kgdGhlIGNhcHR1cmUgb2JqZWN0LjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFkMDNiYmNlNWFmM2VjOTkxMmNkYWVhMmM3ZWRmNzYyXCI+aGFsX3RkbV9lcnJvcjxcL2E+KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTJjNDcxOTYxNGVkMDMzMzU5MzFkNDY3YzI4ZmMwZWZkXCI+X2hhbF90ZG1fY2FwdHVyZV9mdW5jczo6Y2FwdHVyZV9zZXRfZG9uZV9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZDkzZTVjYjI3NzUzNGE1ZjIyNGRjYzAyZjMyNjNjNFwiPmhhbF90ZG1fY2FwdHVyZV9kb25lX2hhbmRsZXI8XC9hPiBmdW5jLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBjYXB0dXJlIGRvbmUgaGFuZGxlciB0byB0aGUgY2FwdHVyZSBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOTU4ZWEwYjQ5MTYxYTE5YzI1MDM0ZGQ3YmMzZDE2MTVcIj5faGFsX3RkbV9jYXB0dXJlX2Z1bmNzOjpjYXB0dXJlX3NldF9pbmZvPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzgwMTAwM2JhMzdhN2RlM2NhOTE1MTYxNmQzMmRiYWNcIj5oYWxfdGRtX2NhcHR1cmU8XC9hPiAqY2FwdHVyZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4ZDQ1NmNiNDY1MWZlY2FkNTM1N2Q1ZjQzYWJjNjFiMlwiPmhhbF90ZG1faW5mb19jYXB0dXJlPFwvYT4gKmluZm8pPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0IHRoZSBnZW9tZXRyeSBpbmZvcm1hdGlvbiB0byB0aGUgY2FwdHVyZSBvYmplY3QuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9zaXplPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHNpemUgc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTM3NTAwM2FkMzZmN2UwMWRjOWY0M2IzYzk3MzkyMmY1XCI+aDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZDRlZTRiMDFlMzk1MTljY2QzYTE4MDIzYjAyN2UxMDlcIj52PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tOFwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLThcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMzc1MDAzYWQzNmY3ZTAxZGM5ZjQzYjNjOTczOTIyZjVcIj5faGFsX3RkbV9zaXplOjpoPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaG9yaXpvbnRhbCBidWZmZXIgc2l6ZSwgd2lkdGg8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkNGVlNGIwMWUzOTUxOWNjZDNhMTgwMjNiMDI3ZTEwOVwiPl9oYWxfdGRtX3NpemU6OnY8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB2ZXJ0aWNhbCBidWZmZXIgc2l6ZSwgaGVpZ2h0PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9wb3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcG9zaXRpb24gc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWQ2NmZjZDk3YWZlMTg4ZDkwNjI1ZjA2YmFkMTM0MTYyXCI+eDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMGU0NjQ1NmI0NTE3MDA0ZmI5YjdlZTQ0NmJmZmU0MWRcIj55PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkZGY2NGQ3ODU5NjRhNGE2YjVlYWFlYzljODg2MjU0MVwiPnc8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTk5ZWIzZjkzNjc3Yzk0YTlmNmViZDBlNjQxMzJjZTkxXCI+aDxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTlcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi05XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTk5ZWIzZjkzNjc3Yzk0YTlmNmViZDBlNjQxMzJjZTkxXCI+X2hhbF90ZG1fcG9zOjpoPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaGVpZ2h0PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGRmNjRkNzg1OTY0YTRhNmI1ZWFhZWM5Yzg4NjI1NDFcIj5faGFsX3RkbV9wb3M6Onc8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB3aWR0aDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWQ2NmZjZDk3YWZlMTg4ZDkwNjI1ZjA2YmFkMTM0MTYyXCI+X2hhbF90ZG1fcG9zOjp4PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgeChsZWZ0KSBwb3NpdGlvbjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTBlNDY0NTZiNDUxNzAwNGZiOWI3ZWU0NDZiZmZlNDFkXCI+X2hhbF90ZG1fcG9zOjp5PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgeSh0b3ApIHBvc2l0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuaW9uIGhhbF90ZG1fdmFsdWU8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtJ3MgdW5pb24gdmFsdWUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD52b2lkICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYjM1MjJjMmI2Y2M4MzllMjkzMDA0NzEzNDJlYWQ5M2FcIj5wdHI8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwMDM4ZThlNDJkMTJjZGE3YTUwNGI0YzFlMzdiOTc3NlwiPnMzMjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51aW50MzJfdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjYjJlOGUxMTdkZTAyNTkxMTdiOGY3ZGM2NzVjNmE5OFwiPnUzMjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ2NF90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEzMjU3NmI0YmI4NGI0NTliZDViNDA2Y2NjMjgyNzllXCI+czY0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVpbnQ2NF90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWJkYTYzYzMyMzZlZGJhNmZhYTExNmI4ZGYzNGQ1OWJmXCI+dTY0PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTBcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMFwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dm9pZCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWIzNTIyYzJiNmNjODM5ZTI5MzAwNDcxMzQyZWFkOTNhXCI+aGFsX3RkbV92YWx1ZTo6cHRyPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdW5pb24gdmFsdWUgYXMgcG9pbnRlciB0eXBlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludDMyX3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTAwMzhlOGU0MmQxMmNkYTdhNTA0YjRjMWUzN2I5Nzc2XCI+aGFsX3RkbV92YWx1ZTo6czMyPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdW5pb24gdmFsdWUgYXMgMzJiaXQgaW50ZWdlciB0eXBlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludDY0X3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEzMjU3NmI0YmI4NGI0NTliZDViNDA2Y2NjMjgyNzllXCI+aGFsX3RkbV92YWx1ZTo6czY0PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdW5pb24gdmFsdWUgYXMgNjRiaXQgaW50ZWdlciB0eXBlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVpbnQzMl90IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjYjJlOGUxMTdkZTAyNTkxMTdiOGY3ZGM2NzVjNmE5OFwiPmhhbF90ZG1fdmFsdWU6OnUzMjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHVuaW9uIHZhbHVlIGFzIDMyYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50NjRfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYmRhNjNjMzIzNmVkYmE2ZmFhMTE2YjhkZjM0ZDU5YmZcIj5oYWxfdGRtX3ZhbHVlOjp1NjQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB1bmlvbiB2YWx1ZSBhcyA2NGJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2NhcHNfZGlzcGxheTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkaXNwbGF5IGNhcGFiaWxpdHkgc3RydWN0dXJlIGZvciBDQVBUVVJFLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI3MmZjOWZkMmE5NWYyYTM5NDQ1ZDVlZjgxMThkYTA3XCI+bWF4X2xheWVyX2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTFcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMVwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyNzJmYzlmZDJhOTVmMmEzOTQ0NWQ1ZWY4MTE4ZGEwN1wiPl9oYWxfdGRtX2NhcHNfZGlzcGxheTo6bWF4X2xheWVyX2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSBsYXllciBjb3VudDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fb3V0cHV0X21vZGU8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IG1vZGUgc3RydWN0dXJlIGNvbXBhdGlibGUgd2l0aCBkcm1fbW9kZV9tb2RlaW5mbyBpbiBkcm0tdWFwaS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3Mjc2NjBjMGNhZDljYjhjZDNhZjc5MmM1Y2I1NjMzY1wiPmNsb2NrPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiYTMzMTI3OGYwYjllMzQ5YWExNGI0YzYyMDA1YWE1MVwiPmhkaXNwbGF5PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhMTJmY2M5NTk1ZTI3MzE2NzcwZTg2MWMxZTYyZTM3YlwiPmhzeW5jX3N0YXJ0PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4YjlhMGIwODhmZjAyZWFlMTQ3ZGYzNGUwMjQzYzRmNlwiPmhzeW5jX2VuZDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMzZjOGM3MjdmMzViMGQ1ZmYyOWMwYTNjNjMwMTA1MmZcIj5odG90YWw8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEwZWFlZjM3YTk5Zjg3NGYwODljODliZWU3NmM1OTU5XCI+aHNrZXc8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI0ZjM3ZjQ0OGRlOTkxYTRhYWQ4M2U1ZjFjMDFiNzNhXCI+dmRpc3BsYXk8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTEzMGM3MjcwM2QxNzE5YWE4ZGVjMzFjNGFmMjQ5NGJiXCI+dnN5bmNfc3RhcnQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTg1MmJhY2ZmMTA0NjM0NGQ4MTZkMThkMzQwODEwN2UzXCI+dnN5bmNfZW5kPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyZGQ0ZmI2NjRhM2Q2NDE4MDdiZTUzMmJmMmRkYTk1ZlwiPnZ0b3RhbDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjgwMDQwYWY0ZmQxMDJmYjhkZjBhMDQyNDI3NzFiMTFcIj52c2NhbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMDYxMzFhNzBiMjI5ZmY2NGY5NzE2ZTkxNGFlNzc3OTNcIj52cmVmcmVzaDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzAwODg2Zjg2NGNhMDRjOTYyZTQ3NDUyNGFmMWNiYjJcIj5mbGFnczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzMwMTk4ODNiODlkMzk5Mzc2YThiMWQ4ODM1Yzg4YzJcIj50eXBlPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmNoYXI8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhY2QyOTIyNTBjOGIzODE5YmE4YmI1ZDYyNDVhY2Q3MjRcIj5uYW1lPFwvYT4gWzY0XTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMlwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEyXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTcyNzY2MGMwY2FkOWNiOGNkM2FmNzkyYzVjYjU2MzNjXCI+X2hhbF90ZG1fb3V0cHV0X21vZGU6OmNsb2NrPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcGl4ZWwgY2xvY2sgaW4ga0h6PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzAwODg2Zjg2NGNhMDRjOTYyZTQ3NDUyNGFmMWNiYjJcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6ZmxhZ3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBiaXRtYXNrIG9mIG1pc2MuIGZsYWdzLCBzZWUgRFJNX01PREVfRkxBR18qIGRlZmluZXM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiYTMzMTI3OGYwYjllMzQ5YWExNGI0YzYyMDA1YWE1MVwiPl9oYWxfdGRtX291dHB1dF9tb2RlOjpoZGlzcGxheTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGhvcml6b250YWwgZGlzcGxheSBzaXplPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTBlYWVmMzdhOTlmODc0ZjA4OWM4OWJlZTc2YzU5NTlcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6aHNrZXc8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBob3Jpem9udGFsIHNrZXc8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4YjlhMGIwODhmZjAyZWFlMTQ3ZGYzNGUwMjQzYzRmNlwiPl9oYWxfdGRtX291dHB1dF9tb2RlOjpoc3luY19lbmQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBob3Jpem9udGFsIHN5bmMgZW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYTEyZmNjOTU5NWUyNzMxNjc3MGU4NjFjMWU2MmUzN2JcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6aHN5bmNfc3RhcnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBob3Jpem9udGFsIHN5bmMgc3RhcnQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzNmM4YzcyN2YzNWIwZDVmZjI5YzBhM2M2MzAxMDUyZlwiPl9oYWxfdGRtX291dHB1dF9tb2RlOjpodG90YWw8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBob3Jpem9udGFsIHRvdGFsIHNpemU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+Y2hhciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhY2QyOTIyNTBjOGIzODE5YmE4YmI1ZDYyNDVhY2Q3MjRcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6bmFtZTxcL2E+WzY0XTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgbW9kZSByZXNvbHV0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzMwMTk4ODNiODlkMzk5Mzc2YThiMWQ4ODM1Yzg4YzJcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6dHlwZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGJpdG1hc2sgb2YgdHlwZSBmbGFncywgc2VlIERSTV9NT0RFX1RZUEVfKiBkZWZpbmVzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjRmMzdmNDQ4ZGU5OTFhNGFhZDgzZTVmMWMwMWI3M2FcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6dmRpc3BsYXk8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB2ZXJ0aWNhbCBkaXNwbGF5IHNpemU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwNjEzMWE3MGIyMjlmZjY0Zjk3MTZlOTE0YWU3Nzc5M1wiPl9oYWxfdGRtX291dHB1dF9tb2RlOjp2cmVmcmVzaDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGFwcHJveGltYXRlIHZlcnRpY2FsIHJlZnJlc2ggcmF0ZSBpbiBIejxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTY4MDA0MGFmNGZkMTAyZmI4ZGYwYTA0MjQyNzcxYjExXCI+X2hhbF90ZG1fb3V0cHV0X21vZGU6OnZzY2FuPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmVydGljYWwgc2NhbjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTg1MmJhY2ZmMTA0NjM0NGQ4MTZkMThkMzQwODEwN2UzXCI+X2hhbF90ZG1fb3V0cHV0X21vZGU6OnZzeW5jX2VuZDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZlcnRpY2FsIHN5bmMgZW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTMwYzcyNzAzZDE3MTlhYThkZWMzMWM0YWYyNDk0YmJcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6dnN5bmNfc3RhcnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB2ZXJ0aWNhbCBzeW5jIHN0YXJ0PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMmRkNGZiNjY0YTNkNjQxODA3YmU1MzJiZjJkZGE5NWZcIj5faGFsX3RkbV9vdXRwdXRfbW9kZTo6dnRvdGFsPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmVydGljYWwgdG90YWwgc2l6ZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fcHJvcDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwcm9wZXJ0eSBzdHJ1Y3R1cmUgb2YgdGRtLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWZjNjAyY2U5ZGIxYzdjN2U4YzlhNTBmYWYxMTMzODFkXCI+aWQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+Y2hhcjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYzYyNGNkZGI3ZTBhOTE5Mjc0NmI4YTAzMmM5MmE3NlwiPm5hbWU8XC9hPiBbNjRdPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTk0OTk5M2FhNGU1OTYxMjQ5MjY1MTZlNmQ5MTgyYTE5XCI+aGFsX3RkbV92YWx1ZV90eXBlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNDc1M2Q1MWM0OGExNWQ5MWRkZWRlYzNmMzE3NTcxNTJcIj50eXBlPFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTNcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xM1wiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmYzYwMmNlOWRiMWM3YzdlOGM5YTUwZmFmMTEzMzgxZFwiPl9oYWxfdGRtX3Byb3A6OmlkPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaWRlbnRpZmllciBvZiBwcm9wZXJ0eTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5jaGFyIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYzYyNGNkZGI3ZTBhOTE5Mjc0NmI4YTAzMmM5MmE3NlwiPl9oYWxfdGRtX3Byb3A6Om5hbWU8XC9hPls2NF08XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbmFtZSBvZiBwcm9wZXJ0eTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTk0OTk5M2FhNGU1OTYxMjQ5MjY1MTZlNmQ5MTgyYTE5XCI+aGFsX3RkbV92YWx1ZV90eXBlPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTQ3NTNkNTFjNDhhMTVkOTFkZGVkZWMzZjMxNzU3MTUyXCI+X2hhbF90ZG1fcHJvcDo6dHlwZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZhbHVlIHR5cGUgb2YgcHJvcGVydHk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2luZm9fY29uZmlnPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGluZm8gY29uZmlnIHN0cnVjdHVyZSBmb3Igd2luZG93LCBsYXllci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2IwM2IxZjQ0MTUwODgwZTk5OTY3YmMzYjBiMzA3MjlcIj5oYWxfdGRtX3NpemU8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwMzRhMWE2N2FmZTgwZjEzZThiYjk3ZGQzNDk5NDc0M1wiPnNpemU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzgzNmQ3ZTJlMDdmMWIxZWIyNmViMWVjNjkzMzMzZFwiPmhhbF90ZG1fcG9zPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGUxMmFmNDcxODZmMDViY2I1N2I2NTQ1Njk2ZWIyN2VcIj5wb3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dGJtX2Zvcm1hdDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1N2NmZTBlMDJmMzY5ZTAwMTk3OGY1YzAxOGIyZjY2ZFwiPmZvcm1hdDxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE0XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTRcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnRibV9mb3JtYXQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTU3Y2ZlMGUwMmYzNjllMDAxOTc4ZjVjMDE4YjJmNjZkXCI+X2hhbF90ZG1faW5mb19jb25maWc6OmZvcm1hdDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHBpeGVsIGZvcm1hdDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGUxMmFmNDcxODZmMDViY2I1N2I2NTQ1Njk2ZWIyN2VcIj5faGFsX3RkbV9pbmZvX2NvbmZpZzo6cG9zPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcG9zaXRpb24gb3IgbG9naWNhbCBpbWFnZSBzaXplPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2IwM2IxZjQ0MTUwODgwZTk5OTY3YmMzYjBiMzA3MjlcIj5oYWxfdGRtX3NpemU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMDM0YTFhNjdhZmU4MGYxM2U4YmI5N2RkMzQ5OTQ3NDNcIj5faGFsX3RkbV9pbmZvX2NvbmZpZzo6c2l6ZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGJ1ZmZlciBzaXplPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9yZWdpb248XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcmVnaW9uIHN0cnVjdHVyZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExYzk1NDJhMDJjNzUwYzQxNzRiM2NkNzAzNzgwNzU0ZlwiPm51bV9yZWN0czxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPiBjb25zdCAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWMwNzVhM2VhODUyMjhjOWJlMDU2MmVkY2E5MGFhNzIxXCI+cmVjdHM8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xNVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE1XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFjOTU0MmEwMmM3NTBjNDE3NGIzY2Q3MDM3ODA3NTRmXCI+X2hhbF90ZG1fcmVnaW9uOjpudW1fcmVjdHM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBudW1iZXIgb2YgcmVjdHM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzgzNmQ3ZTJlMDdmMWIxZWIyNmViMWVjNjkzMzMzZFwiPmhhbF90ZG1fcG9zPFwvYT4gY29uc3QqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjMDc1YTNlYTg1MjI4YzliZTA1NjJlZGNhOTBhYTcyMVwiPl9oYWxfdGRtX3JlZ2lvbjo6cmVjdHM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBhcnJheSBvZiByZWN0IGluZm9ybWF0aW9uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9od2Nfd2luZG93X2luZm88XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaHdjIHdpbmRvdyBpbmZvIHN0cnVjdHVyZSB0byBjb21wb3NpdGUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWFiMzllNjMyOWE4MmJjNjMwZjZmNzRjMDllYTRlOTRmXCI+c3JjX2NvbmZpZzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYWViZjI0Y2MxZGU5ODZkNWZjMjM2ZmJkZGNiMjlkOVwiPmRzdF9wb3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMmNkZTVjMzIwNjFlMzY1NTBkNGYyMDFkZTlhNjQyYlwiPmhhbF90ZG1fdHJhbnNmb3JtPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGExODZjMWM2NGVmODliNWQyZWUxZTA3ZWIyMThmNjRcIj50cmFuc2Zvcm08XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xNlwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE2XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhM2FlYmYyNGNjMWRlOTg2ZDVmYzIzNmZiZGRjYjI5ZDlcIj5faGFsX3RkbV9od2Nfd2luZG93X2luZm86OmRzdF9wb3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkZXN0aW5hdGlvbiByZWN0YW5ndWxhciBpbmZvcm1hdGlvbiAobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0KTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhYjM5ZTYzMjlhODJiYzYzMGY2Zjc0YzA5ZWE0ZTk0ZlwiPl9oYWxfdGRtX2h3Y193aW5kb3dfaW5mbzo6c3JjX2NvbmZpZzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGh3YyB3aW5kb3dzIGluZm9ybWF0aW9uIG9mIGNsaWVudDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGExODZjMWM2NGVmODliNWQyZWUxZTA3ZWIyMThmNjRcIj5faGFsX3RkbV9od2Nfd2luZG93X2luZm86OnRyYW5zZm9ybTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRyYW5zZm9ybSBpbmZvcm1hdGlvbiAoc291cmNlIHRvIGRlc3RpbmF0aW9uKTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1faW5mb19wcDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUgdG8gdXNlIHBvc3QtcHJvY2Vzc2luZy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjliYmU0ZThlYTViYTA2NWJhOTFiMGE0YTE5NGQwZTlcIj5oYWxfdGRtX2luZm9fY29uZmlnPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGYxM2U2NDk2OWE0NzM2OTJhZTM3NTQzNTM4ZmViOTNcIj5zcmNfY29uZmlnPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjliYmU0ZThlYTViYTA2NWJhOTFiMGE0YTE5NGQwZTlcIj5oYWxfdGRtX2luZm9fY29uZmlnPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOGYzNGMxZWNhMjlhYTIwOWNhM2NkMWYwYjM4ZGNhODlcIj5kc3RfY29uZmlnPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjJjZGU1YzMyMDYxZTM2NTUwZDRmMjAxZGU5YTY0MmJcIj5oYWxfdGRtX3RyYW5zZm9ybTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTYyNjUxNDEwOWU0MmU3MTQzMjUyN2Y4ZjcwNmU3NjI5XCI+dHJhbnNmb3JtPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0MzdkM2MyMDU2ZDQxYTIwZTczOGFiNjkzZTU5YTY5ZFwiPnN5bmM8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWE1ZDI2NDBlZjkzM2RlZDdiMDRlOWJjOTIzNWVlNGY0XCI+ZmxhZ3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xN1wiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE3XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E4ZjM0YzFlY2EyOWFhMjA5Y2EzY2QxZjBiMzhkY2E4OVwiPl9oYWxfdGRtX2luZm9fcHA6OmRzdF9jb25maWc8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkZXN0aW5hdGlvbiB3aW5kb3cncyBpbmZvcm1hdGlvbjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWE1ZDI2NDBlZjkzM2RlZDdiMDRlOWJjOTIzNWVlNGY0XCI+X2hhbF90ZG1faW5mb19wcDo6ZmxhZ3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIHVzZSBwcml2YXRlIGluZm9ybWF0aW9uLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0ZjEzZTY0OTY5YTQ3MzY5MmFlMzc1NDM1MzhmZWI5M1wiPl9oYWxfdGRtX2luZm9fcHA6OnNyY19jb25maWc8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzb3VyY2Ugd2luZG93J3MgaW5mb3JtYXRpb248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0MzdkM2MyMDU2ZDQxYTIwZTczOGFiNjkzZTU5YTY5ZFwiPl9oYWxfdGRtX2luZm9fcHA6OnN5bmM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvcHRpb24gZm9yIHN5bmNocm9ub3MgcmV0dXJuIG9yIG5vdCB3aGVuIHBvc3QtcHJvY2Vzc2luZyBpcyBkb25lPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjJjZGU1YzMyMDYxZTM2NTUwZDRmMjAxZGU5YTY0MmJcIj5oYWxfdGRtX3RyYW5zZm9ybTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2MjY1MTQxMDllNDJlNzE0MzI1MjdmOGY3MDZlNzYyOVwiPl9oYWxfdGRtX2luZm9fcHA6OnRyYW5zZm9ybTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHdpbmRvdyB0cmFuc2Zvcm0gaW5mb3JtYXRpb24gKHNvdXJjZSB0byBkZXN0aW5hdGlvbik8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2luZm9fY2FwdHVyZTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXB0dXJlIGluZm8gc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmOWJiZTRlOGVhNWJhMDY1YmE5MWIwYTRhMTk0ZDBlOVwiPmhhbF90ZG1faW5mb19jb25maWc8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjZWEyZTk0NGVjNDJlYmM1ZjkzYjhmYWVlZjZhMmRkNlwiPmRzdF9jb25maWc8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyMmNkZTVjMzIwNjFlMzY1NTBkNGYyMDFkZTlhNjQyYlwiPmhhbF90ZG1fdHJhbnNmb3JtPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjkyYjQ0M2JiYjFmMDg0Njc0NmI4NDIxMWZjNGEwODNcIj50cmFuc2Zvcm08XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2OWVkOTdjMjM1OTI1OTViYTg2NGFhZWFhODA2NzZiZlwiPmhhbF90ZG1fY2FwdHVyZV90eXBlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMmY3ZTgzYjEwMGFkMWNmMTMwOTNmOWVhMzI1NWU2Y2FcIj50eXBlPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2OThjMDcyNDAxZWU1YjZlZGZjMmZkODRlOTUyMGJjOFwiPmZyZXF1ZW5jeTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhOGYwOTU2MjkxMDJhMWFmMjJmZTdlZWExOGQ4M2M2MGZcIj5mbGFnczxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE4XCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMThcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjliYmU0ZThlYTViYTA2NWJhOTFiMGE0YTE5NGQwZTlcIj5oYWxfdGRtX2luZm9fY29uZmlnPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWNlYTJlOTQ0ZWM0MmViYzVmOTNiOGZhZWVmNmEyZGQ2XCI+X2hhbF90ZG1faW5mb19jYXB0dXJlOjpkc3RfY29uZmlnPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgd2luZG93J3MgY29vcmRuYXRlICZhbXA7IHNpemUgaW5mb3JtYXRpb24gdG8gY2FwdHVyZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYThmMDk1NjI5MTAyYTFhZjIyZmU3ZWVhMThkODNjNjBmXCI+X2hhbF90ZG1faW5mb19jYXB0dXJlOjpmbGFnczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gdXNlIHByaXZhdGUgaW5mb3JtYXRpb24uPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNjk4YzA3MjQwMWVlNWI2ZWRmYzJmZDg0ZTk1MjBiYzhcIj5faGFsX3RkbV9pbmZvX2NhcHR1cmU6OmZyZXF1ZW5jeTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZlcnRpY2FsIHJlZnJlc2ggcmF0ZSBpbiBIejxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjkyYjQ0M2JiYjFmMDg0Njc0NmI4NDIxMWZjNGEwODNcIj5faGFsX3RkbV9pbmZvX2NhcHR1cmU6OnRyYW5zZm9ybTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHdpbmRvdydzIHRyYW5zZm9ybSBpbmZvcm1hdGlvbiB0byBjYXB0dXJlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjllZDk3YzIzNTkyNTk1YmE4NjRhYWVhYTgwNjc2YmZcIj5oYWxfdGRtX2NhcHR1cmVfdHlwZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyZjdlODNiMTAwYWQxY2YxMzA5M2Y5ZWEzMjU1ZTZjYVwiPl9oYWxfdGRtX2luZm9fY2FwdHVyZTo6dHlwZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNhcHR1cmUgdHlwZSBvbmUtc2hvdCBvciBzdHJlYW08XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IF9oYWxfdGRtX2V2ZW50X3NvdXJjZTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgZm9yIGV2ZW50IHNvdXJjZSBpbmZvcm1hdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FiYTRmZmQxYmJiYmI0ZjRjNzc0MDg2NDdkYmUxZmNmZFwiPmV2ZW50X2ZkPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjg4YTA4ZWFjMzI5MDY0YTBmZmRlMWEzODg3MWNhMDZcIj5oYWxfdGRtX2V2ZW50X2xvb3BfZmRfaGFuZGxlcjxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFkNWQxODQ5NmQxZmVmZTJjMDYyZTYyZDkxOTFmNDc5XCI+ZnVuYzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD52b2lkICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMDk1MTU5NGZkZDI4MWMxMTc0YjExNWI5NjIyMzJhZWZcIj51c2VyX2RhdGE8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xOVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE5XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWJhNGZmZDFiYmJiYjRmNGM3NzQwODY0N2RiZTFmY2ZkXCI+X2hhbF90ZG1fZXZlbnRfc291cmNlOjpldmVudF9mZDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGZpbGUgZGVzY3JpcHRvciBvZiBldmVudC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmODhhMDhlYWMzMjkwNjRhMGZmZGUxYTM4ODcxY2EwNlwiPmhhbF90ZG1fZXZlbnRfbG9vcF9mZF9oYW5kbGVyPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFkNWQxODQ5NmQxZmVmZTJjMDYyZTYyZDkxOTFmNDc5XCI+X2hhbF90ZG1fZXZlbnRfc291cmNlOjpmdW5jPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaGFuZGxlciBmdW5jdGlvbiBvZiB0ZG1fZXZlbl9sb29wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnZvaWQqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EwOTUxNTk0ZmRkMjgxYzExNzRiMTE1Yjk2MjIzMmFlZlwiPl9oYWxfdGRtX2V2ZW50X3NvdXJjZTo6dXNlcl9kYXRhPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdXNlciBkYXRhLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fY2Fwc19vdXRwdXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIGZvciBvdXRwdXQncyBjYXBhYmlsaXRpZXMuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5jaGFyPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWVkYjk5MWYxNzI4NmE5ZTUwMzRkYWQxZTY0MmNmODZkXCI+bWFrZXI8XC9hPiBbNjRdPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5jaGFyPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTgzMWIxZmU1ODA3NTM5MjJiNmZiMDMxYzJlOTZhZWY5XCI+bW9kZWw8XC9hPiBbNjRdPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5jaGFyPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWE1MGU5NGZjMGQ3NjI5NzYzOTcyOGM5MzJhY2FlNGM5XCI+bmFtZTxcL2E+IFs2NF08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTg5ZjMyNDI0ZmM1OTE1ZTQ0YzA1ZDZmZTM4ZGIxMzRcIj5oYWxfdGRtX291dHB1dF9jb25uX3N0YXR1czxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI3NWI2YjBhNDU5ZDU1NTZhNzA5OWVjMTkyOWJkNWM4XCI+c3RhdHVzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTQ3ZDdmOTllZmE1NjhjNGJlMGFkZWY4OWQ1ZTNmNDRcIj5oYWxfdGRtX291dHB1dF90eXBlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYmI3MzkxNjIzZjIxOWU3Mjk4NGRiMTAwMjAzM2ZhMTBcIj50eXBlPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmZjY3ZWExY2FiYmFhYzBhMDFmYzlhMmY2NmRkNjM3YlwiPnR5cGVfaWQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFlMDIzNGM1ODU1MWE2YWI1MDFjYmI4MzcwNjQ5Y2FhXCI+bW9kZV9jb3VudDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzc0NWY5MDVlODM4MGFmOTcyNjYwMDg0Nzg3NGEyZGZcIj5tb2RlczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGQyZWFiOGRhOTUxNmFhZTM0YWJiMzQyM2NiNDQ5MTBcIj5wcm9wX2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZDQwNTNjNzY5YjFjMTc5NDlkODc5OTY3OGIxNjUxN2ZcIj5oYWxfdGRtX3Byb3A8XC9hPiAqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWQ1ZjgwYTY3N2FiNTYzY2YzMTQ1NTMzMjdiZTk0MTA4XCI+cHJvcHM8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dW5zaWduZWQgaW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFlOTZhNTZmMjg4OGJhNGY4OTE4MDg5ZGNhNzc2NGMzXCI+bW1XaWR0aDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGJkZGUzMjU1MGM1YWMyMzlkMzZhMDU5YjVjN2JmZDdcIj5tbUhlaWdodDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBpbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZDViMzlhNzE0NWU3MjU3YmQxNmIyNDgzYmNhMjZjN2FcIj5zdWJwaXhlbDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNmMxYTM3NGExNzY3YjI1YzRlNmZkMmE3ZDZkY2ZhYWVcIj5taW5fdzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjI4ODUyZmUzMzc2NWU4NzdmZDgzOTIxY2FjOTEwZmZcIj5taW5faDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzAzZjhjMjNhMWY2NTJlYmQ0NDQwMTdlZWVhZDFlZDBcIj5tYXhfdzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTYwOGM5YTQxOGQzMDk5ZjBjOTgyOWVhYmU5ZThjNjNcIj5tYXhfaDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNWRiNTc0MzVhNTczYmUyZGM1MjhmNjg1NTgxZDMyNGRcIj5wcmVmZXJyZWRfYWxpZ248XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E3OTA0YjZjMDg0MGFmZGI0OThlNjVkNDY2YjkyYzIxYVwiPmhhbF90ZG1fb3V0cHV0X2NhcGFiaWxpdHk8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5YTYyNGM0NmE0Y2IzNGJiN2NjODkyY2VkMTNjMGYzM1wiPmNhcGFiaWxpdGllczxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGYwODA2NWZiNTRkYjUxMjNhZGNkNjViNmZkYjI5ODdcIj5jdXJzb3JfbWluX3c8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWUwNjRkMTIyNzU0NzhiYzZlMTcwNDQ0NGRiZDMwYzFjXCI+Y3Vyc29yX21pbl9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E1NWI1YWM2YTBlMzFmMGM2YTMwMmU2Mzg5ZGMxYTJlNVwiPmN1cnNvcl9tYXhfdzxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhN2Y3ZDZmYTlhMmVmZTcwMGU5YWEyYjBmM2Q0N2E5NTZcIj5jdXJzb3JfbWF4X2g8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWUyM2QzOGJjMzNhYTlmOWIyOTQwN2I2ZjNkOTdmMWM4XCI+Y3Vyc29yX3ByZWZlcnJlZF9hbGlnbjxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTIwXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMjBcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNzkwNGI2YzA4NDBhZmRiNDk4ZTY1ZDQ2NmI5MmMyMWFcIj5oYWxfdGRtX291dHB1dF9jYXBhYmlsaXR5PFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTlhNjI0YzQ2YTRjYjM0YmI3Y2M4OTJjZWQxM2MwZjMzXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OmNhcGFiaWxpdGllczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNhcGFiaWxpdGllcyBvZiBvdXRwdXQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIDEuNC4xPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhN2Y3ZDZmYTlhMmVmZTcwMGU5YWEyYjBmM2Q0N2E5NTZcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6Y3Vyc29yX21heF9oPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSBoZWlnaHQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIDEuNS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNTViNWFjNmEwZTMxZjBjNmEzMDJlNjM4OWRjMWEyZTVcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6Y3Vyc29yX21heF93PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSB3aWR0aC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgMS41LjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FlMDY0ZDEyMjc1NDc4YmM2ZTE3MDQ0NDRkYmQzMGMxY1wiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjpjdXJzb3JfbWluX2g8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIGhlaWdodC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgMS41LjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0ZjA4MDY1ZmI1NGRiNTEyM2FkY2Q2NWI2ZmRiMjk4N1wiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjpjdXJzb3JfbWluX3c8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIHdpZHRoLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICAxLjUuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWUyM2QzOGJjMzNhYTlmOWIyOTQwN2I2ZjNkOTdmMWM4XCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OmN1cnNvcl9wcmVmZXJyZWRfYWxpZ248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwcmVmZXJyZWQgYWxpZ24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIDEuNS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmNoYXIgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWVkYjk5MWYxNzI4NmE5ZTUwMzRkYWQxZTY0MmNmODZkXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6Om1ha2VyPFwvYT5bNjRdPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBtYWtlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTE2MDhjOWE0MThkMzA5OWYwYzk4MjllYWJlOWU4YzYzXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6Om1heF9oPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSBoZWlnaHQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjMDNmOGMyM2ExZjY1MmViZDQ0NDAxN2VlZWFkMWVkMFwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjptYXhfdzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gd2lkdGg8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmMjg4NTJmZTMzNzY1ZTg3N2ZkODM5MjFjYWM5MTBmZlwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjptaW5faDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1pbmltdW0gaGVpZ2h0PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNmMxYTM3NGExNzY3YjI1YzRlNmZkMmE3ZDZkY2ZhYWVcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bWluX3c8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIHdpZHRoPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNGJkZGUzMjU1MGM1YWMyMzlkMzZhMDU5YjVjN2JmZDdcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bW1IZWlnaHQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwaHlzaWNhbCBoZWlnaHQgKG1pbGxpbWV0ZXIpPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnVuc2lnbmVkIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMWU5NmE1NmYyODg4YmE0Zjg5MTgwODlkY2E3NzY0YzNcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bW1XaWR0aDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHBoeXNpY2FsIHdpZHRoIChtaWxsaW1ldGVyKTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTFlMDIzNGM1ODU1MWE2YWI1MDFjYmI4MzcwNjQ5Y2FhXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6Om1vZGVfY291bnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjb3VudCBvZiBhdmFpbGFibGUgbW9kZXM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+Y2hhciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhODMxYjFmZTU4MDc1MzkyMmI2ZmIwMzFjMmU5NmFlZjlcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bW9kZWw8XC9hPls2NF08XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IG1vZGVsPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNGQ4MjUyZWMxNWJlOGYyODVlOTIxMGM4ODZhYjdkYzNcIj5oYWxfdGRtX291dHB1dF9tb2RlPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjNzQ1ZjkwNWU4MzgwYWY5NzI2NjAwODQ3ODc0YTJkZlwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0Ojptb2RlczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIDxzdHJvbmc+bmV3bHktYWxsb2NhdGVkPFwvc3Ryb25nPiBhcnJheSBvZiBtb2Rlcy4gd2lsbCBiZSBmcmVlZCBpbiBmcm9udGVuZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+Y2hhciA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYTUwZTk0ZmMwZDc2Mjk3NjM5NzI4YzkzMmFjYWU0YzlcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6bmFtZTxcL2E+WzY0XTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgbmFtZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTVkYjU3NDM1YTU3M2JlMmRjNTI4ZjY4NTU4MWQzMjRkXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OnByZWZlcnJlZF9hbGlnbjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHByZWZlcnJlZCBhbGlnbjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTRkMmVhYjhkYTk1MTZhYWUzNGFiYjM0MjNjYjQ0OTEwXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OnByb3BfY291bnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjb3VudCBvZiBhdmFpbGFibGUgcHJvcGVydGllczxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWQ0MDUzYzc2OWIxYzE3OTQ5ZDg3OTk2NzhiMTY1MTdmXCI+aGFsX3RkbV9wcm9wPFwvYT4qIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkNWY4MGE2NzdhYjU2M2NmMzE0NTUzMzI3YmU5NDEwOFwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0Ojpwcm9wczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIDxzdHJvbmc+bmV3bHktYWxsb2NhdGVkPFwvc3Ryb25nPiBhcnJheSBvZiBwcm9wZXJ0aWVzLiB3aWxsIGJlIGZyZWVkIGluIGZyb250ZW5kLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU4OWYzMjQyNGZjNTkxNWU0NGMwNWQ2ZmUzOGRiMTM0XCI+aGFsX3RkbV9vdXRwdXRfY29ubl9zdGF0dXM8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMjc1YjZiMGE0NTlkNTU1NmE3MDk5ZWMxOTI5YmQ1YzhcIj5faGFsX3RkbV9jYXBzX291dHB1dDo6c3RhdHVzPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgY29ubmVjdGlvbiBzdGF0dXM8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FkNWIzOWE3MTQ1ZTcyNTdiZDE2YjI0ODNiY2EyNmM3YVwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0OjpzdWJwaXhlbDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN1YnBpeGVsPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTQ3ZDdmOTllZmE1NjhjNGJlMGFkZWY4OWQ1ZTNmNDRcIj5oYWxfdGRtX291dHB1dF90eXBlPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWJiNzM5MTYyM2YyMTllNzI5ODRkYjEwMDIwMzNmYTEwXCI+X2hhbF90ZG1fY2Fwc19vdXRwdXQ6OnR5cGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjb25uZWN0aW9uIHR5cGU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmZjY3ZWExY2FiYmFhYzBhMDFmYzlhMmY2NmRkNjM3YlwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0Ojp0eXBlX2lkPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgY29ubmVjdGlvbiB0eXBlIGlkPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX3RkbV9jYXBzX3BwPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSBmb3IgcG9zdC1wcm9jZXNzaW5nJ3MgY2FwYWJpbGl0aWVzLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2NjFlZjIxY2RlNzAzYjc3NjY5NmQ0MjAxNGM4ZGI3N1wiPmhhbF90ZG1fcHBfY2FwYWJpbGl0eTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWMzNjM2OTU4OTllODJhMzAyZmUxZjk1ZWE3MmMwN2VlXCI+Y2FwYWJpbGl0aWVzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3M2MxZjEzMzMxYWFlMzEyNDRjYTljODI5MDJmNmFhYlwiPmZvcm1hdF9jb3VudDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50Ym1fZm9ybWF0ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhM2M0NmQzMGQ1NDY3YjFiMDAxMDhlZGNhNTI3NDRiNTlcIj5mb3JtYXRzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2ZWM0ZTVlMzI0ZDUwNTVlMDZmZGM1ODQyYzlkZTFkZlwiPm1pbl93PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzMzRhNjdiOGZiZTkyOTdjOTBlMmM5ZDY3YTNjNGQ5ZVwiPm1pbl9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmYTM5YTgzY2JhZTkzNzYyNzVmZWEyM2I3YmNiYmY4Y1wiPm1heF93PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5NDBkYmJhNWE4YjA2ZWI0YTA2YjBlN2EzNGU4Yzk4N1wiPm1heF9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmMTkxYjg3NGU5Yzk4OThkMGVjODVjNzI2ZjQzMjcyN1wiPnByZWZlcnJlZF9hbGlnbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNDA2MjJmMTJkMGZmZWJhYWMwODA0Y2IxNWIxNDgxNDFcIj5wcmVmZXJyZWRfYWxpZ25fdmVydGljYWw8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYWRhNzE0NDJkYjBiZTVlOWM3OWM2ZDZiOWVkMGIzYzc1XCI+bWF4X2F0dGFjaF9jb3VudDxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTIxXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMjFcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjYxZWYyMWNkZTcwM2I3NzY2OTZkNDIwMTRjOGRiNzdcIj5oYWxfdGRtX3BwX2NhcGFiaWxpdHk8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhYzM2MzY5NTg5OWU4MmEzMDJmZTFmOTVlYTcyYzA3ZWVcIj5faGFsX3RkbV9jYXBzX3BwOjpjYXBhYmlsaXRpZXM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXBhYmlsaXRpZXMgb2YgcHA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgaW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3M2MxZjEzMzMxYWFlMzEyNDRjYTljODI5MDJmNmFhYlwiPl9oYWxfdGRtX2NhcHNfcHA6OmZvcm1hdF9jb3VudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNvdW50IG9mIGF2YWlsYWJsZSBmb3JtYXRzPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnRibV9mb3JtYXQqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EzYzQ2ZDMwZDU0NjdiMWIwMDEwOGVkY2E1Mjc0NGI1OVwiPl9oYWxfdGRtX2NhcHNfcHA6OmZvcm1hdHM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSA8c3Ryb25nPm5ld2x5LWFsbG9jYXRlZDxcL3N0cm9uZz4gYXJyYXkuIHdpbGwgYmUgZnJlZWQgaW4gZnJvbnRlbmQuPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZGE3MTQ0MmRiMGJlNWU5Yzc5YzZkNmI5ZWQwYjNjNzVcIj5faGFsX3RkbV9jYXBzX3BwOjptYXhfYXR0YWNoX2NvdW50PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgYXR0YWNoIGNvdW50IHdoaWNoIHRoZSBQUCBvYmplY3QgY2FuIGhhbmRsZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5NDBkYmJhNWE4YjA2ZWI0YTA2YjBlN2EzNGU4Yzk4N1wiPl9oYWxfdGRtX2NhcHNfcHA6Om1heF9oPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSBoZWlnaHQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FmYTM5YTgzY2JhZTkzNzYyNzVmZWEyM2I3YmNiYmY4Y1wiPl9oYWxfdGRtX2NhcHNfcHA6Om1heF93PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWF4aW11bSB3aWR0aDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTMzNGE2N2I4ZmJlOTI5N2M5MGUyYzlkNjdhM2M0ZDllXCI+X2hhbF90ZG1fY2Fwc19wcDo6bWluX2g8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIGhlaWdodDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZlYzRlNWUzMjRkNTA1NWUwNmZkYzU4NDJjOWRlMWRmXCI+X2hhbF90ZG1fY2Fwc19wcDo6bWluX3c8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIHdpZHRoPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhZjE5MWI4NzRlOWM5ODk4ZDBlYzg1YzcyNmY0MzI3MjdcIj5faGFsX3RkbV9jYXBzX3BwOjpwcmVmZXJyZWRfYWxpZ248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwcmVmZXJyZWQgYWxpZ248XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E0MDYyMmYxMmQwZmZlYmFhYzA4MDRjYjE1YjE0ODE0MVwiPl9oYWxfdGRtX2NhcHNfcHA6OnByZWZlcnJlZF9hbGlnbl92ZXJ0aWNhbDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHByZWZlcnJlZCBhbGlnbiB2ZXJ0aWNhbDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgX2hhbF90ZG1fY2Fwc19jYXB0dXJlPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSBmb3IgY2FwdHVyZSdzIGNhcGFiaWxpdGllcy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjdkMTFjOTY3MmFlZWI3MDVlOTUwNGYwMmNmYjJkNTBcIj5oYWxfdGRtX2NhcHR1cmVfY2FwYWJpbGl0eTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTVkMGY3N2ZlNzBiMmNkNWU3NzA1ZDU3MjViNmJkYjkwXCI+Y2FwYWJpbGl0aWVzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnVuc2lnbmVkIGludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E2YzY3ZTgxMDA3MmYyZDVmYTVhOTk0YjAzYWYwM2VhMFwiPmZvcm1hdF9jb3VudDxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50Ym1fZm9ybWF0ICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTVjZTdhYzVmYjg3NTIwMjNhNDljOTRhNWJjMDNlNGJcIj5mb3JtYXRzPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2EyNWFhNWUxODA4OTZiYzJlNzY2M2RlZjQ0ZjBiOWU3ZFwiPm1pbl93PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExZTgxNTYxZWI1MTQ2MDNhNmE0Yzk3NGQxODM4N2Q2OVwiPm1pbl9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E5MDkxNjAwMDQ0NmU3N2Q3NjA5Y2NkYzM2MjI1MTE3YlwiPm1heF93PFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjYzM5MmZlODMyYWRkNjIzMTViZTMwZTBiNjZiM2I5OVwiPm1heF9oPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhNjJjNzc1NGI4YTk5MTQxMDEyMWMzYTBiMWNlNjg1MVwiPnByZWZlcnJlZF9hbGlnbjxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhNzhjZmFjNGZmNmI5Y2JjMGU1YzYxZDI2MmQwZmU2MWVcIj5tYXhfYXR0YWNoX2NvdW50PFwvYT48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMjJcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yMlwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FiN2QxMWM5NjcyYWVlYjcwNWU5NTA0ZjAyY2ZiMmQ1MFwiPmhhbF90ZG1fY2FwdHVyZV9jYXBhYmlsaXR5PFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTVkMGY3N2ZlNzBiMmNkNWU3NzA1ZDU3MjViNmJkYjkwXCI+X2hhbF90ZG1fY2Fwc19jYXB0dXJlOjpjYXBhYmlsaXRpZXM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXBhYmlsaXRpZXMgb2YgY2FwdHVyZTxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBpbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTZjNjdlODEwMDcyZjJkNWZhNWE5OTRiMDNhZjAzZWEwXCI+X2hhbF90ZG1fY2Fwc19jYXB0dXJlOjpmb3JtYXRfY291bnQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjb3VudCBvZiBhdmFpbGFibGUgZm9ybWF0czxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50Ym1fZm9ybWF0KiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNhMTVjZTdhYzVmYjg3NTIwMjNhNDljOTRhNWJjMDNlNGJcIj5faGFsX3RkbV9jYXBzX2NhcHR1cmU6OmZvcm1hdHM8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSA8c3Ryb25nPm5ld2x5LWFsbG9jYXRlZDxcL3N0cm9uZz4gYXJyYXkgb2YgZm9ybWF0cy4gd2lsbCBiZSBmcmVlZCBpbiBmcm9udGVuZC48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2E3OGNmYWM0ZmY2YjljYmMwZTVjNjFkMjYyZDBmZTYxZVwiPl9oYWxfdGRtX2NhcHNfY2FwdHVyZTo6bWF4X2F0dGFjaF9jb3VudDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGF0dGFjaCBjb3VudCB3aGljaCB0aGUgY2FwdHVyZSBvYmplY3QgY2FuIGhhbmRsZS48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FjYzM5MmZlODMyYWRkNjIzMTViZTMwZTBiNjZiM2I5OVwiPl9oYWxfdGRtX2NhcHNfY2FwdHVyZTo6bWF4X2g8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtYXhpbXVtIGhlaWdodDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTkwOTE2MDAwNDQ2ZTc3ZDc2MDljY2RjMzYyMjUxMTdiXCI+X2hhbF90ZG1fY2Fwc19jYXB0dXJlOjptYXhfdzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1heGltdW0gd2lkdGg8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2ExZTgxNTYxZWI1MTQ2MDNhNmE0Yzk3NGQxODM4N2Q2OVwiPl9oYWxfdGRtX2NhcHNfY2FwdHVyZTo6bWluX2g8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBtaW5pbXVtIGhlaWdodDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjYTI1YWE1ZTE4MDg5NmJjMmU3NjYzZGVmNDRmMGI5ZTdkXCI+X2hhbF90ZG1fY2Fwc19jYXB0dXJlOjptaW5fdzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1pbmltdW0gd2lkdGg8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2FhNjJjNzc1NGI4YTk5MTQxMDEyMWMzYTBiMWNlNjg1MVwiPl9oYWxfdGRtX2NhcHNfY2FwdHVyZTo6cHJlZmVycmVkX2FsaWduPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgcHJlZmVycmVkIGFsaWduPFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtZGVmaW5lLWRvY3VtZW50YXRpb25cIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkRlZmluZSBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMDZjNjgwYjMyMzJkMjMwMjIxNjc4Y2U4YTc0MzE3NDdcIj5IQUxfVERNX0VWRU5UX1NPVVJDRV9NQVg8XC9hPlx1MDBhMFx1MDBhMFx1MDBhMDM8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5EZWZpbml0aW9uIG9mIE1heCBjb3VudCBvZiBldmVudCBzb3VyY2UgaW4gSEFMX1RETV9NT0RVTEUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD4jZGVmaW5lIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjNjMGQxZGVjYWU2NTY1NTI2NGYxYzk5ZjZjYmM2MWVcIj5IQUxfVERNX05BTUVfTEVOPFwvYT5cdTAwYTBcdTAwYTBcdTAwYTA2NDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlZmluaXRpb24gb2YgTWF4IE5hbWUgTGVuZ3RoIGluIEhBTF9URE1fTU9EVUxFLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+I2RlZmluZSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU1OTNlYWU0ZmQ1YTVjOTFkOWRjZDU2Y2JmYmY1MmM5XCI+SEFMX1RETV9QQVRIX0xFTjxcL2E+XHUwMGEwXHUwMGEwXHUwMGEwMTAyNDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlZmluaXRpb24gb2YgTWF4IFBhdGggTGVuZ3RoIGluIEhBTF9URE1fTU9EVUxFLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGhyIFwvPlxuPGgyIGlkPVwiY29udGVudC10eXBlZGVmLWRvY3VtZW50YXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtdHlwZWRlZi1kb2N1bWVudGF0aW9uXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5UeXBlZGVmIERvY3VtZW50YXRpb248XC9oMj5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTYyOWJkZTkyMjZmZjg0YTY0ZjlhMDc2MGUxMjE4OWY0XCI+aGFsX3RkbV9iYWNrZW5kPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIGJhY2tlbmQgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fYmFja2VuZF9fZGF0YVwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMjJhZDUwMTE2NGI1OGVhYjAzODMyMDMxZTMzYWE3Y2NcIj5oYWxfdGRtX2JhY2tlbmRfZGF0YTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSB0ZG0gYmFja2VuZCBkYXRhLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5TZWUgYWxzbzo8XC9zdHJvbmc+XG46ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fYmFja2VuZF9fZGF0YVwiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSB0ZG0gYmFja2VuZCBkYXRhLlwiPl9oYWxfdGRtX2JhY2tlbmRfZGF0YTxcL2E+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX2NhcHR1cmVcIj5faGFsX3RkbV9jYXBzX2NhcHR1cmU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTZjYmI5MDU2OTNlYzBiNDRhOTRiNWZiOTkyZGM1YjkyXCI+aGFsX3RkbV9jYXBzX2NhcHR1cmU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgZm9yIGNhcHR1cmUncyBjYXBhYmlsaXRpZXMuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19jYXBzX19kaXNwbGF5XCI+X2hhbF90ZG1fY2Fwc19kaXNwbGF5PFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWQ0NmI4YzE4NDkyYzI1MGY3NmU5MzQ0YjZhNDQ1YlwiPmhhbF90ZG1fY2Fwc19kaXNwbGF5PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgZGlzcGxheSBjYXBhYmlsaXR5IHN0cnVjdHVyZSBmb3IgQ0FQVFVSRS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX291dHB1dFwiPl9oYWxfdGRtX2NhcHNfb3V0cHV0PFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzMGM4NmFiMWM4ZjBkNGVkYzkwNTU1MmUyOTg5MzE1NVwiPmhhbF90ZG1fY2Fwc19vdXRwdXQ8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgZm9yIG91dHB1dCdzIGNhcGFiaWxpdGllcy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2NhcHNfX3BwXCI+X2hhbF90ZG1fY2Fwc19wcDxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhM2VmMmE3ZmYzYTRiY2JlOWQ2NzZhYTJjZmI0YmU3MzlcIj5oYWxfdGRtX2NhcHNfcHA8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgZm9yIHBvc3QtcHJvY2Vzc2luZydzIGNhcGFiaWxpdGllcy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4MDEwMDNiYTM3YTdkZTNjYTkxNTE2MTZkMzJkYmFjXCI+aGFsX3RkbV9jYXB0dXJlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIGNhcHR1cmUgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZDkzZTVjYjI3NzUzNGE1ZjIyNGRjYzAyZjMyNjNjNFwiPmhhbF90ZG1fY2FwdHVyZV9kb25lX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzODAxMDAzYmEzN2E3ZGUzY2E5MTUxNjE2ZDMyZGJhY1wiPmhhbF90ZG1fY2FwdHVyZTxcL2E+ICpjYXB0dXJlLCB0Ym1fc3VyZmFjZV9oIGJ1ZmZlciwgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBkb25lIGhhbmRsZXIgb2YgdGhlIGNhcHR1cmUgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBjYXB0dXJlIHwgVGhlIHBvaW50ZXIgb2YgY2FwdHVyZSBvYmplY3QuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IGJ1ZmZlciB8IFRoZSBoYW5kbGUgb2YgdGJtX3N1cmZhY2UuIHxcbnwgW2luXSB8IHVzZXJfZGF0YSB8IFRoZSB1c2VyIGRhdGEuIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fY2FwdHVyZV9fZnVuY3NcIj5faGFsX3RkbV9jYXB0dXJlX2Z1bmNzPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYjAwMzM1ODVmOWRkOWJkZTgwYjAxMjM4OTcwZjk4ZVwiPmhhbF90ZG1fY2FwdHVyZV9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgY2FwdHVyZSBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19jYXB0dXJlX19mdW5jc1wiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgY2FwdHVyZSBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuXCI+X2hhbF90ZG1fY2FwdHVyZV9mdW5jczxcL2E+PFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1MjI3YzcwYzYyMWI1YzI1ODliNDM1YzU2ZTkzZTAxOVwiPmhhbF90ZG1fZGlzcGxheTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRkbSBkaXNwbGF5IG9iamVjdC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2Rpc3BsYXlfX2Z1bmNzXCI+X2hhbF90ZG1fZGlzcGxheV9mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjY4NWJkNWJmYTNhMzZmYWQwMGY3NTJmY2U5NDRjNjBcIj5oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGRpc3BsYXkgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5TZWUgYWxzbzo8XC9zdHJvbmc+XG46ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fZGlzcGxheV9fZnVuY3NcIiB0aXRsZT1cIlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGRpc3BsYXkgZnVuY3Rpb25zIGZvciBiYWNrZW5kLlwiPl9oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMWQwM2JiY2U1YWYzZWM5OTEyY2RhZWEyYzdlZGY3NjJcIj5oYWxfdGRtX2Vycm9yPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY4OGEwOGVhYzMyOTA2NGEwZmZkZTFhMzg4NzFjYTA2XCI+aGFsX3RkbV9ldmVudF9sb29wX2ZkX2hhbmRsZXI8XC9hPikoaW50IGV2ZW50X2ZkLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWNkNGM4YTRiOWI5ZWFmNmJkMjhmYjA4NGJlZTJlODMzXCI+aGFsX3RkbV9ldmVudF9sb29wX21hc2s8XC9hPiBtYXNrLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGV2ZW50X2xvb3BfZmQgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoaXMgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBvdXRwdXQgb2JqZWN0IGlzIGNyZWF0ZWQgaW4gcnVudGltZS48XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBldmVudF9mZCB8IFRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgZXZlbnQuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IG1hc2sgfCBUaGUgbWFzayBvZiBldmVudF9mZC4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19ldmVudF9fc291cmNlXCI+X2hhbF90ZG1fZXZlbnRfc291cmNlPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FlOGI2N2YyZGQyN2ZjZjQwYWViNGNlOGQzMDk0NmJhNFwiPmhhbF90ZG1fZXZlbnRfc291cmNlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIGZvciBldmVudCBzb3VyY2UgaW5mb3JtYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIGludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTlmZjI4YzJhNjk5MjA0MGNiN2U5Mzc0MzNkZjBkNDIxXCI+aGFsX3RkbV9mZDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRkbSBmZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0ZG0gaHdjIG9iamVjdC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjZiZGE1NmIxZGI4NGVlMmYyMGU4MTM5YWU4ODQyYmFcIj5oYWxfdGRtX2h3Y19jb21taXRfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTg1M2Q2MmIwOTIyNDliZmVhMTI2YWIzNDcwMjkwZmY2XCI+aGFsX3RkbV9od2M8XC9hPiAqaHdjLCB1bnNpZ25lZCBpbnQgc2VxdWVuY2UsIHVuc2lnbmVkIGludCB0dl9zZWMsIHVuc2lnbmVkIGludCB0dl91c2VjLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGh3YyBjb21taXQgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+UGFyYW1ldGVyczo8XC9zdHJvbmc+XG46ICAgfCBbaW5dIHwgaHdjIHwgVGhlIHBvaW50ZXIgb2YgaHdjIG9iamVjdC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgc2VxdWVuY2UgfCBUaGUgbnVtYmVyIG9mIGZyYW1lIHVzZWQgYXMgc2VxdWVuY2UuIHxcbnwgW2luXSB8IHR2X3NlYyB8IFRoZSBzZWNvbmQgb2YgdGltZSB3aGVuIGh3YydzIGNvbW1pdCBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdHZfdXNlYyB8IFRoZSBtaWNybyBzZWNvbmQgb2YgdGltZSB3aGVuIGh3YydzIGNvbW1pdCBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICBod2Nfc2V0X2NvbW1pdF9oYW5kbGVyKCkgZnVuY3Rpb24gb2YgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E1NTFjMmYyODFmNmE5NGQxMzE4MTc2NzI0NjNjNWZlZFwiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgaHdjIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC5cIj5oYWxfdGRtX2h3Y19mdW5jczxcL2E+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2h3Y19fZnVuY3NcIj5faGFsX3RkbV9od2NfZnVuY3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTU1MWMyZjI4MWY2YTk0ZDEzMTgxNzY3MjQ2M2M1ZmVkXCI+aGFsX3RkbV9od2NfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGh3YyBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19od2NfX2Z1bmNzXCIgdGl0bGU9XCJUaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBod2MgZnVuY3Rpb25zIGZvciBiYWNrZW5kLlwiPl9oYWxfdGRtX2h3Y19mdW5jczxcL2E+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiNzk0OWE3NmRhMGQ0NTc1NDg1NGJkMjBkNDg5MDM0XCI+aGFsX3RkbV9od2Nfd2luZG93PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIGh3YyB3aW5kb3cgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX193aW5kb3dfX2Z1bmNzXCI+X2hhbF90ZG1faHdjX3dpbmRvd19mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGFkOTFiOTg5ODc0NzgyYzUzYjVjMzkzOGFjYzc2YzNcIj5oYWxfdGRtX2h3Y193aW5kb3dfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIGh3YyB3aW5kb3cgZnVuY3Rpb25zIGZvciBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5TZWUgYWxzbzo8XC9zdHJvbmc+XG46ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX193aW5kb3dfX2Z1bmNzXCIgdGl0bGU9XCJUaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBod2Mgd2luZG93IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC5cIj5faGFsX3RkbV9od2Nfd2luZG93X2Z1bmNzPFwvYT48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faHdjX193aW5kb3dfX2luZm9cIj5faGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWUxNTdlOTZiN2M1OWM1NTk3Y2JhMTllNzdkZGY5Y2VhXCI+aGFsX3RkbV9od2Nfd2luZG93X2luZm88XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBod2Mgd2luZG93IGluZm8gc3RydWN0dXJlIHRvIGNvbXBvc2l0ZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2luZm9fX2NhcHR1cmVcIj5faGFsX3RkbV9pbmZvX2NhcHR1cmU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYThkNDU2Y2I0NjUxZmVjYWQ1MzU3ZDVmNDNhYmM2MWIyXCI+aGFsX3RkbV9pbmZvX2NhcHR1cmU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjYXB0dXJlIGluZm8gc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9faW5mb19fY29uZmlnXCI+X2hhbF90ZG1faW5mb19jb25maWc8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY5YmJlNGU4ZWE1YmEwNjViYTkxYjBhNGExOTRkMGU5XCI+aGFsX3RkbV9pbmZvX2NvbmZpZzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGluZm8gY29uZmlnIHN0cnVjdHVyZSBmb3Igd2luZG93LCBsYXllci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX2luZm9fX3BwXCI+X2hhbF90ZG1faW5mb19wcDxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYzE3ZTdjYjlhMzYwY2UxM2RiNTg5MjYwZDEwNzc0YzdcIj5oYWxfdGRtX2luZm9fcHA8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUgdG8gdXNlIHBvc3QtcHJvY2Vzc2luZy48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPigqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNDU5MzRjNzMzZmJhNjE5NzUxYzQ1MjRmYTdlOTZjYzZcIj5oYWxfdGRtX21hc3Rlcl9kcm1fZmRfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTlmZjI4YzJhNjk5MjA0MGNiN2U5Mzc0MzNkZjBkNDIxXCI+aGFsX3RkbV9mZDxcL2E+IG1hc3Rlcl9kcm1fZmQsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgZnVuY3Rpb24gZm9yIHNldHRpbmcgbWFzdGVyX2RybV9mZCB0byBiYWNrZW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBtYXN0ZXJfZHJtX2ZkIHwgVGhlIG1hc3RlciBkcm0gZmlsZSBkZXNjcmlwdG9yLiB8XG58IC0tLSB8IC0tLSB8IC0tLSB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhIGZvciBoYW5kbGVyLiB8PFwvcD5cbjxwPjxzdHJvbmc+UHJlY29uZGl0aW9uOjxcL3N0cm9uZz5cbjogICBoYWxfdGRtX2JhY2tlbmRfc2V0X21hc3Rlcl9kcm1fZmQoKSB3aWxsIGludm9rZSB0aGlzIGhhbmRsZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIGhhbF90ZG1fYmFja2VuZF9zZXRfbWFzdGVyX2RybV9mZCgpLlxuOiAgIGhhbF90ZG1fYmFja2VuZF9nZXRfbWFzdGVyX2RybV9mZCgpLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EzMzUxNWU1OWRjNTM0ODg2MWY3N2FhYjY3NGRmZTA3NFwiPmhhbF90ZG1fbW9kdWxlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIGJhY2tlbmQgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRkbSBvdXRwdXQgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5YTkxNzAxMjE2NDJmNzJhZmM2MmEyMGYzOGU5MmYxNlwiPmhhbF90ZG1fb3V0cHV0X2NoYW5nZV9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOTIxNGExZTM4Y2M0MGYzYzI5MGJiZGI3NjE0MzcxMmVcIj5oYWxfdGRtX291dHB1dF9jaGFuZ2VfdHlwZTxcL2E+IHR5cGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3VuaW9uaGFsX190ZG1fX3ZhbHVlXCI+aGFsX3RkbV92YWx1ZTxcL2E+IHZhbHVlLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBjaGFuZ2UgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoaXMgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBzdGF0dXMgb2YgdGhlIG91dHB1dCBvYmplY3QgaXMgY2hhbmdlZCBpbiBydW50aW1lLjxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IG91dHB1dCB8IFRoZSBwb2ludGVyIG9mIG91dHB1dC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgdHlwZSB8IFRoZSBvdXRwdXQgY2hhbmdlIGVudW1lcmF0aW9uLiB8XG58IFtpbl0gfCB2YWx1ZSB8IFRoZSB0ZG0ncyB1bmlvbiB2YWx1ZS4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM4YTc2MWY0NjZjZDk3MDdlN2ViNGU3NDBhYWU2ZDc5XCI+aGFsX3RkbV9vdXRwdXRfY29tbWl0X2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdW5zaWduZWQgaW50IHNlcXVlbmNlLCB1bnNpZ25lZCBpbnQgdHZfc2VjLCB1bnNpZ25lZCBpbnQgdHZfdXNlYywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgY29tbWl0IGhhbmRsZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IG91dHB1dCB8IFRoZSBwb2ludGVyIG9mIG91dHB1dC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgc2VxdWVuY2UgfCBUaGUgbnVtYmVyIG9mIGZyYW1lIHVzZWQgYXMgc2VxdWVuY2UuIHxcbnwgW2luXSB8IHR2X3NlYyB8IFRoZSBzZWNvbmQgb2YgdGltZSB3aGVuIGNvbW1pdCBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdHZfdXNlYyB8IFRoZSBtaWNybyBzZWNvbmQgb2YgdGltZSB3aGVuIGNvbW1pdCBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48cD48c3Ryb25nPlNlZSBhbHNvOjxcL3N0cm9uZz5cbjogICBvdXRwdXRfc2V0X2NvbW1pdF9oYW5kbGVyKCkgZnVuY3Rpb24gb2YgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2Njg1YmQ1YmZhM2EzNmZhZDAwZjc1MmZjZTk0NGM2MFwiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgZGlzcGxheSBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuXCI+aGFsX3RkbV9kaXNwbGF5X2Z1bmNzPFwvYT48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyZWQ3YmQ0MDAxYWYzOTcwMDkwNjI1OWVlYWNhZjlkNVwiPmhhbF90ZG1fb3V0cHV0X2NyZWF0ZV9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTIyN2M3MGM2MjFiNWMyNTg5YjQzNWM1NmU5M2UwMTlcIj5oYWxfdGRtX2Rpc3BsYXk8XC9hPiAqZHB5LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBjcmVhdGUgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoaXMgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBvdXRwdXQgb2JqZWN0IGlzIGNyZWF0ZWQgaW4gcnVudGltZS48XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBkcHkgfCBUaGUgcG9pbnRlciBvZiBoYWxfdGRtX2Rpc3BsYXkuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IG91dHB1dCB8IFRoZSBwb2ludGVyIG9mIG91dHB1dC4gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YSB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTJhNGJlYzNlNWUxNzhhMmEwMzRkZDZlNTA1MWM3YjhcIj5oYWxfdGRtX291dHB1dF9kZXN0cm95X2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgZGVzdHJveSBoYW5kbGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+VGhpcyBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIG91dHB1dCBvYmplY3QgaXMgZGVzdHJveWVkIGluIHJ1bnRpbWUuPFwvcD5cbjxwPjxzdHJvbmc+UGFyYW1ldGVyczo8XC9zdHJvbmc+XG46ICAgfCBbaW5dIHwgb3V0cHV0IHwgVGhlIHBvaW50ZXIgb2Ygb3V0cHV0LiB8XG58IC0tLSB8IC0tLSB8IC0tLSB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjcxMGI2MzJiM2QxYTA2YzJjNjM0MTkxZDNkNTU2MGZcIj5oYWxfdGRtX291dHB1dF9kcG1zX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNjQ2NTA1MzYzNGFhZjgyM2JhZDk2ZTFhZjEzZDA0OFwiPmhhbF90ZG1fb3V0cHV0PFwvYT4gKm91dHB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExYzQzMzFiZjgwZDcyN2M5NWMxMjg1MjFiZWM5MjM2ZFwiPmhhbF90ZG1fb3V0cHV0X2RwbXM8XC9hPiBkcG1zLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBkcG1zIGhhbmRsZXIuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IG91dHB1dCB8IFRoZSBwb2ludGVyIG9mIG91dHB1dC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgZHBtcyB8IFRoZSBEUE1TIHZhbHVlIHxcbnwgW2luXSB8IHVzZXJfZGF0YSB8IFRoZSB1c2VyIGRhdGEuIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fb3V0cHV0X19mdW5jc1wiPl9oYWxfdGRtX291dHB1dF9mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMTBiZDc0MGJiNjZjYjI2MGQyNzFkNjVlZDMyMmRiMTVcIj5oYWxfdGRtX291dHB1dF9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3Mgb3V0cHV0IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX291dHB1dF9fZnVuY3NcIiB0aXRsZT1cIlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIG91dHB1dCBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuXCI+X2hhbF90ZG1fb3V0cHV0X2Z1bmNzPFwvYT48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fb3V0cHV0X19tb2RlXCI+X2hhbF90ZG1fb3V0cHV0X21vZGU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTRkODI1MmVjMTViZThmMjg1ZTkyMTBjODg2YWI3ZGMzXCI+aGFsX3RkbV9vdXRwdXRfbW9kZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBtb2RlIHN0cnVjdHVyZSBjb21wYXRpYmxlIHdpdGggZHJtX21vZGVfbW9kZWluZm8gaW4gZHJtLXVhcGkuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTM1ZjJjY2E3YzMwNzQwNTk5MTJmOTc0NTgyNGEwYjk5XCI+aGFsX3RkbV9vdXRwdXRfbW9kZV9jaGFuZ2VfcmVxdWVzdF9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjY0NjUwNTM2MzRhYWY4MjNiYWQ5NmUxYWYxM2QwNDhcIj5oYWxfdGRtX291dHB1dDxcL2E+ICpvdXRwdXQsIHVuc2lnbmVkIGludCBpbmRleCwgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgbW9kZSBjaGFuZ2UgcmVxdWVzdCBoYW5kbGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBvdXRwdXQgfCBUaGUgcG9pbnRlciBvZiBvdXRwdXQuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IGluZGV4IHwgVGhlIGluZGV4IG9mIGF2YWlsYWJsZSBtb2RlcyB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMzVjNTA0MTdjZWJiZWZhZmUxN2RhYWRiNzllMTE1MjFcIj5oYWxfdGRtX291dHB1dF9zdGF0dXNfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWU4OWYzMjQyNGZjNTkxNWU0NGMwNWQ2ZmUzOGRiMTM0XCI+aGFsX3RkbV9vdXRwdXRfY29ubl9zdGF0dXM8XC9hPiBzdGF0dXMsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IHN0YXR1cyBoYW5kbGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBvdXRwdXQgfCBUaGUgcG9pbnRlciBvZiBvdXRwdXQuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IHN0YXR1cyB8IFRoZSBjb25uZWN0aW9uIHN0YXR1cyB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTlmYTBiYmU4ZjJmOWRjOGY2YmE1MDNlNjE1YjM0ZmFcIj5oYWxfdGRtX291dHB1dF92YmxhbmtfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY2NDY1MDUzNjM0YWFmODIzYmFkOTZlMWFmMTNkMDQ4XCI+aGFsX3RkbV9vdXRwdXQ8XC9hPiAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgc2VxdWVuY2UsIHVuc2lnbmVkIGludCB0dl9zZWMsIHVuc2lnbmVkIGludCB0dl91c2VjLCB2b2lkICp1c2VyX2RhdGEpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHZibGFuayBoYW5kbGVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5QYXJhbWV0ZXJzOjxcL3N0cm9uZz5cbjogICB8IFtpbl0gfCBvdXRwdXQgfCBUaGUgcG9pbnRlciBvZiBvdXRwdXQuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IHNlcXVlbmNlIHwgVGhlIG51bWJlciBvZiBmcmFtZSB1c2VkIGFzIHNlcXVlbmNlLiB8XG58IFtpbl0gfCB0dl9zZWMgfCBUaGUgc2Vjb25kIG9mIHRpbWUgd2hlbiB2c3luYyBpcyBvY2N1cnJlZC4gfFxufCBbaW5dIHwgdHZfdXNlYyB8IFRoZSBtaWNybyBzZWNvbmQgb2YgdGltZSB3aGVuIHZzeW5jIGlzIG9jY3VycmVkLiB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIG91dHB1dF9zZXRfdmJsYW5rX2hhbmRsZXIoKSBmdW5jdGlvbiBvZiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTY2ODViZDViZmEzYTM2ZmFkMDBmNzUyZmNlOTQ0YzYwXCIgdGl0bGU9XCJUaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyBkaXNwbGF5IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC5cIj5oYWxfdGRtX2Rpc3BsYXlfZnVuY3M8XC9hPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19wb3NcIj5faGFsX3RkbV9wb3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY3ODM2ZDdlMmUwN2YxYjFlYjI2ZWIxZWM2OTMzMzNkXCI+aGFsX3RkbV9wb3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwb3NpdGlvbiBzdHJ1Y3R1cmUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EwYmM3Njc3OThhYWJiNTM0NTQwODUxN2ZiOTEwOTdjNFwiPmhhbF90ZG1fcHA8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0ZG0gcHAgb2JqZWN0LjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E5NWRkODJiYjNjZjFiMGIzMzAzYmVkZjQyMWFmZjYwZlwiPmhhbF90ZG1fcHBfZG9uZV9oYW5kbGVyPFwvYT4pKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhMGJjNzY3Nzk4YWFiYjUzNDU0MDg1MTdmYjkxMDk3YzRcIj5oYWxfdGRtX3BwPFwvYT4gKnBwLCB0Ym1fc3VyZmFjZV9oIHNyYywgdGJtX3N1cmZhY2VfaCBkc3QsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgZG9uZSBoYW5kbGVyIG9mIHRoZSBwcCBvYmplY3QuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IHBwIHwgVGhlIHBvaW50ZXIgb2YgcG9zdC1wcm9jZXNzaW5nIG9iamVjdC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgc3JjIHwgVGhlIHNvdXJjZSBoYW5kbGUgb2YgdGJtX3N1cmZhY2UuIHxcbnwgW2luXSB8IGRzdCB8IFRoZSBkZXN0aW5hdGlvbiBoYW5kbGUgb2YgdGJtX3N1cmZhY2UuIHxcbnwgW2luXSB8IHVzZXJfZGF0YSB8IFRoZSB1c2VyIGRhdGEuIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fcHBfX2Z1bmNzXCI+X2hhbF90ZG1fcHBfZnVuY3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWVmZjljYzhmNGQ0MDZhYzIxMmEwYTk0ZWNjY2MyZjYzXCI+aGFsX3RkbV9wcF9mdW5jczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgcG9zdC1wcm9jZXNzaW5nIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3BwX19mdW5jc1wiIHRpdGxlPVwiVGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBURE0gSEFMJ3MgcG9zdC1wcm9jZXNzaW5nIGZ1bmN0aW9ucyBmb3IgYmFja2VuZC5cIj5faGFsX3RkbV9wcF9mdW5jczxcL2E+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3Byb3BcIj5faGFsX3RkbV9wcm9wPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FkNDA1M2M3NjliMWMxNzk0OWQ4Nzk5Njc4YjE2NTE3ZlwiPmhhbF90ZG1fcHJvcDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHByb3BlcnR5IHN0cnVjdHVyZSBvZiB0ZG0uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNzdHJ1Y3RfX2hhbF9fdGRtX19yZWdpb25cIj5faGFsX3RkbV9yZWdpb248XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIzMmU0NmFhOGM2ZTY4MzZlMzBjOTE5MTU0YzMxNjVjXCI+aGFsX3RkbV9yZWdpb248XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSByZWdpb24gc3RydWN0dXJlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjc3RydWN0X19oYWxfX3RkbV9fc2l6ZVwiPl9oYWxfdGRtX3NpemU8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTNiMDNiMWY0NDE1MDg4MGU5OTk2N2JjM2IwYjMwNzI5XCI+aGFsX3RkbV9zaXplPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc2l6ZSBzdHJ1Y3R1cmUuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyOWRjOTBjNjI4MTRkY2Q2YjExYzZkYjQ4YmNhMGM4MVwiPmhhbF90ZG1fdmJsYW5rPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdGRtIHZibGFuayBvYmplY3QuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWY1M2Q3NDFhZmU1MGYwYmI5Y2Y2ZDFkNzFlMDViMTMwXCI+aGFsX3RkbV92YmxhbmtfY3JlYXRlX2hhbmRsZXI8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyOWRjOTBjNjI4MTRkY2Q2YjExYzZkYjQ4YmNhMGM4MVwiPmhhbF90ZG1fdmJsYW5rPFwvYT4gKnZibGFuaywgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBjcmVhdGUgaGFuZGxlciBvZiB0aGUgdmJsYW5rIG9iamVjdC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+UGFyYW1ldGVyczo8XC9zdHJvbmc+XG46ICAgfCBbaW5dIHwgdmJsYW5rIHwgVGhlIHBvaW50ZXIgb2YgdmJsYW5rIG9iamVjdC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgdXNlcl9kYXRhIHwgVGhlIHVzZXIgZGF0YS4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHZvaWQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHRkbSB2b3V0cHV0IG9iamVjdC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgdm9pZCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTFmOGQxZDM0NDkyMmYyYjRkOWUxMGE2NDNiM2E1MzBcIj5oYWxfdGRtX3ZvdXRwdXRfY29tbWl0X2Z1bmM8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2EyNWYwMWZhODAxZTVhOTMzNTU0YzJmNWVmMGE3ZTNlOVwiPmhhbF90ZG1fdm91dHB1dDxcL2E+ICp2b3V0cHV0LCB0Ym1fc3VyZmFjZV9oIGJ1ZmZlcik8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdm91dHB1dCBjb21taXQgZnVuY3Rpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IHZvdXRwdXQgfCBUaGUgbnVtYmVyIG9mIGZyYW1lIHVzZWQgYXMgc2VxdWVuY2UuIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IGJ1ZmZlciB8IFRoZSBoYW5kbGUgb2YgdGJtX3N1cmZhY2UuIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiB2b2lkKCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E4MDUxOWZmNDhmNzcyZDhjZGM3MTIzNWIwYTYyOGZkYlwiPmhhbF90ZG1fdm91dHB1dF9jb21taXRfaGFuZGxlcjxcL2E+KSg8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTI1ZjAxZmE4MDFlNWE5MzM1NTRjMmY1ZWYwYTdlM2U5XCI+aGFsX3RkbV92b3V0cHV0PFwvYT4gKnZvdXRwdXQsIHVuc2lnbmVkIGludCBzZXF1ZW5jZSwgdW5zaWduZWQgaW50IHR2X3NlYywgdW5zaWduZWQgaW50IHR2X3VzZWMsIHZvaWQgKnVzZXJfZGF0YSk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdm91dHB1dCBjb21taXQgaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+UGFyYW1ldGVyczo8XC9zdHJvbmc+XG46ICAgfCBbaW5dIHwgaHdjIHwgVGhlIHBvaW50ZXIgb2YgaHdjIG9iamVjdC4gfFxufCAtLS0gfCAtLS0gfCAtLS0gfFxufCBbaW5dIHwgdm91dHB1dCB8IFRoZSBudW1iZXIgb2YgZnJhbWUgdXNlZCBhcyBzZXF1ZW5jZS4gfFxufCBbaW5dIHwgdHZfc2VjIHwgVGhlIHNlY29uZCBvZiB0aW1lIHdoZW4gaHdjJ3MgY29tbWl0IGlzIG9jY3VycmVkLiB8XG58IFtpbl0gfCB0dl91c2VjIHwgVGhlIG1pY3JvIHNlY29uZCBvZiB0aW1lIHdoZW4gaHdjJ3MgY29tbWl0IGlzIG9jY3VycmVkLiB8XG58IFtpbl0gfCB1c2VyX2RhdGEgfCBUaGUgdXNlciBkYXRhLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3ZvdXRwdXRfX2Z1bmNzXCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjNkOGVjY2ZiMDkxZjVkYTJmOWQzOGRkZTZjY2NkMmFcIj5oYWxfdGRtX3ZvdXRwdXRfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgVERNIEhBTCdzIHZpcnR1YWwgb3V0cHV0IGZ1bmN0aW9ucyBmb3IgYmFja2VuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX190ZG1fX3ZvdXRwdXRfX2Z1bmNzXCIgdGl0bGU9XCJUaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIFRETSBIQUwncyB2aXJ0dWFsIG91dHB1dCBmdW5jdGlvbnMgZm9yIGJhY2tlbmQuXCI+X2hhbF90ZG1fdm91dHB1dF9mdW5jczxcL2E+PFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtZW51bWVyYXRpb24tdHlwZS1kb2N1bWVudGF0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LWVudW1lcmF0aW9uLXR5cGUtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RW51bWVyYXRpb24gVHlwZSBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhYjdkMTFjOTY3MmFlZWI3MDVlOTUwNGYwMmNmYjJkNTBcIj5oYWxfdGRtX2NhcHR1cmVfY2FwYWJpbGl0eTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGNhcHR1cmUgY2FwYWJpbGl0eSBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoZSBzY2FsZSwgdHJhbnNmb3JtIGFuZCBDU0MgZnVuY3Rpb25hbGl0aWVzIHNlZW0gdGhlIGRlZmF1bHQgZnVuY3Rpb25zIG9mIGNhcHR1cmUuIElmIGhhcmR3YXJlIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgb25lIG9mIHRoZW0sIHdlJ2QgYmV0dGVyIGxldCB0aGUgZGV2ZWxvcGVyIGtub3cgd2hhdCB0aGUgYmFja2VuZCBkb2Vzbid0IHN1cHBvcnQgbGlrZSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnZ2E2NjFlZjIxY2RlNzAzYjc3NjY5NmQ0MjAxNGM4ZGI3N2FiMjJkYWZiMDY1NGFmZWY3Mjg4MDNiOWQzOTRkZjhkZFwiPkhBTF9URE1fUFBfQ0FQQUJJTElUWV9OT19DU0M8XC9hPi48XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX0NBUFRVUkVfQ0FQQUJJTElUWV9PVVRQVVQ8XC9lbT4gfCBUaGUgY2FwdHVyZSBkZXZpY2Ugc3VwcG9ydHMgdG8gZHVtcCB0aGUgb3V0cHV0IHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9URE1fQ0FQVFVSRV9DQVBBQklMSVRZX09ORVNIT1Q8XC9lbT4gfCBUaGUgY2FwdHVyZSBkZXZpY2Ugc3VwcG9ydHMgb25lc2hvdCBkdW1wIHxcbnwgPGVtPkhBTF9URE1fQ0FQVFVSRV9DQVBBQklMSVRZX1NUUkVBTTxcL2VtPiB8IFRoZSBjYXB0dXJlIGRldmljZSBzdXBwb3J0cyBzdHJlYW0gZHVtcCB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2OWVkOTdjMjM1OTI1OTViYTg2NGFhZWFhODA2NzZiZlwiPmhhbF90ZG1fY2FwdHVyZV90eXBlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgY2FwdHVyZSB0eXBlIGVudW1lcmF0aW9uLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX0NBUFRVUkVfVFlQRV9PTkVTSE9UPFwvZW0+IHwgVGhlIG9uZXNob3QgY2FwdHVyZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX0NBUFRVUkVfVFlQRV9TVFJFQU08XC9lbT4gfCBUaGUgc3RyZWFtIGNhcHR1cmUgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNjYyYzQzZjQ2MDQ3MDViOWZiMTg3NjI3Y2FhOGYwOTVcIj5oYWxfdGRtX2Rpc3BsYXlfY2FwYWJpbGl0eTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGRpc3BsYXkgY2FwYWJpbGl0eSBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9ESVNQTEFZX0NBUEFCSUxJVFlfUFA8XC9lbT4gfCBUaGUgZmxhZyBhYm91dCBoYXJkd2FyZSBzdXBwb3J0cyBwb3N0LXByb2Nlc3Npbmcgb3BlcmF0aW9uIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9URE1fRElTUExBWV9DQVBBQklMSVRZX0NBUFRVUkU8XC9lbT4gfCBUaGUgZmxhZyBhYm91dCBoYXJkd2FyZSBzdXBwb3J0cyBjYXB0dXJlIG9wZXJhdGlvbiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2ExZDAzYmJjZTVhZjNlYzk5MTJjZGFlYTJjN2VkZjc2MlwiPmhhbF90ZG1fZXJyb3I8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBlcnJvciBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9FUlJPUl9OT05FPFwvZW0+IHwgbm9uZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX0VSUk9SX0JBRF9SRVFVRVNUPFwvZW0+IHwgYmFkIHJlcXVlc3QgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9PUEVSQVRJT05fRkFJTEVEPFwvZW0+IHwgb3BlcmF0aW9uIGZhaWxlZCB8XG58IDxlbT5IQUxfVERNX0VSUk9SX0lOVkFMSURfUEFSQU1FVEVSPFwvZW0+IHwgd3JvbmcgaW5wdXQgcGFyYW1ldGVyIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfUEVSTUlTU0lPTl9ERU5JRUQ8XC9lbT4gfCBhY2Nlc3MgZGVuaWVkIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfQlVTWTxcL2VtPiB8IGhhcmR3YXJlIHJlc291cmNlIGJ1c3kgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9PVVRfT0ZfTUVNT1JZPFwvZW0+IHwgbm8gZnJlZSBtZW1vcnkgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9CQURfTU9EVUxFPFwvZW0+IHwgYmFkIGJhY2tlbmQgbW9kdWxlIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfTk9UX0lNUExFTUVOVEVEPFwvZW0+IHwgbm90IGltcGxlbWVudGVkIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfTk9fQ0FQQUJJTElUWTxcL2VtPiB8IG5vIGNhcGFiaWxpdHkgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9EUE1TX09GRjxcL2VtPiB8IGRwbXMgb2ZmIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfT1VUUFVUX0RJU0NPTk5FQ1RFRDxcL2VtPiB8IG91dHB1dCBkaXNjb25uZWN0ZWQgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9QUk9UT0NPTF9FUlJPUjxcL2VtPiB8IHByb3RvY29sIGVycm9yIHxcbnwgPGVtPkhBTF9URE1fRVJST1JfVElNRU9VVDxcL2VtPiB8IHRpbWVvdXQgfFxufCA8ZW0+SEFMX1RETV9FUlJPUl9OT19NT0RVTEU8XC9lbT4gfCBubyBiYWNrZW5kIG1vZHVsZSB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FjZDRjOGE0YjliOWVhZjZiZDI4ZmIwODRiZWUyZTgzM1wiPmhhbF90ZG1fZXZlbnRfbG9vcF9tYXNrPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgbWFzayBvZiBoYWxfdGRtX2V2ZW50X2xvb3BfZmRfaGFuZGxlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+U2VlIGFsc286PFwvc3Ryb25nPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZjg4YTA4ZWFjMzI5MDY0YTBmZmRlMWEzODg3MWNhMDZcIiB0aXRsZT1cIlRoZSBldmVudF9sb29wX2ZkIGhhbmRsZXIuXCI+aGFsX3RkbV9ldmVudF9sb29wX2ZkX2hhbmRsZXI8XC9hPlxuOiAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZThiNjdmMmRkMjdmY2Y0MGFlYjRjZThkMzA5NDZiYTRcIiB0aXRsZT1cIlRoZSBzdHJ1Y3R1cmUgZm9yIGV2ZW50IHNvdXJjZSBpbmZvcm1hdGlvbi5cIj5oYWxfdGRtX2V2ZW50X3NvdXJjZTxcL2E+PFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9FVkVOVF9MT09QX1JFQURBQkxFPFwvZW0+IHwgVGhlIG1hc2sgZm9yIFJFQURBQkxFIGV2ZW50IHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9URE1fRVZFTlRfTE9PUF9XUklUQUJMRTxcL2VtPiB8IFRoZSBtYXNrIGZvciBXUklUQUJMRSBldmVudCB8XG58IDxlbT5IQUxfVERNX0VWRU5UX0xPT1BfSEFOR1VQPFwvZW0+IHwgVGhlIG1hc2sgZm9yIEhBTkdVUCBldmVudCB8XG58IDxlbT5IQUxfVERNX0VWRU5UX0xPT1BfRVJST1I8XC9lbT4gfCBUaGUgbWFzayBmb3IgRVJST1IgZXZlbnQgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOTJkODRjM2E2MDdhZTQwMmM4NDQzMGZjNmFlZDg3YmZcIj5oYWxfdGRtX2h3Y19jYXBhYmlsaXR5PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgaHdjIHZpZGVvIGNhcGFiaWxpdHkgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9URE1fSFdDX0NBUEFCSUxJVFlfVklERU9fU1RSRUFNPFwvZW0+IHwgVGhlIGNhcGFiaWxpdHkgYWJvdXQgdGhlIGh3YyBoYXMgdmlkZW8gc3RyZWFtIGNhcGFiaWxpdHkgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9IV0NfQ0FQQUJJTElUWV9WSURFT19TQ0FMRTxcL2VtPiB8IFRoZSBjYXBhYmlsaXR5IGFib3V0IHRoZSBod2MgYWxsb3dzIHRvIHNjYWxlIHRoZSB2aWRlbyBidWZmZXIgfFxufCA8ZW0+SEFMX1RETV9IV0NfQ0FQQUJJTElUWV9WSURFT19UUkFOU0ZPUk08XC9lbT4gfCBUaGUgY2FwYWJpbGl0eSBhYm91dCB0aGUgaHdjIGFsbG93cyB2aWRlbyB0byB0cmFuc2Zvcm0gdGhlIHZpZGVvIGJ1ZmZlciB8XG58IDxlbT5IQUxfVERNX0hXQ19DQVBBQklMSVRZX1ZJREVPX1NDQU5PVVQ8XC9lbT4gfCBUaGUgY2FwYWJpbGl0eSBhYm91dCB0aGUgaHdjIGFsbG93cyB2aWRlbyB0byBhY2NlcHQgdGhlIHNjYW5vdXQgYnVmZmVyIG9ubHkgfFxufCA8ZW0+SEFMX1RETV9IV0NfQ0FQQUJJTElUWV9GRU5DRTxcL2VtPiB8IFRoZSBjYXBhYmlsaXR5IGFib3V0IHRoZSBod2MgYWxsb3dzIGZlbmNlIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYWZmMDQ5MDUzZjU3ODk1N2Q3NjU0YWEwZDk0NzVhMzQ0XCI+aGFsX3RkbV9od2NfY29tbWl0X2ludGVydmFsPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5IV0MncyBjb21wb3NpdGlvbiBpbnRlcnZhbC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9IV0NfQ09NTUlUX0lOVEVSVkFMX05PTkU8XC9lbT4gfCBEZWZhdWx0IGludGVydmFsIG9mIEhXQydzIGNvbXBvc2l0aW9uLiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX0hXQ19DT01NSVRfSU5URVJWQUxfVkJMQU5LPFwvZW0+IHwgSWYgdGhpcyBpbnRlcnZhbCBpcyBzZXQgYnkgdGRtIGJhY2tlbmQsIHRoZSBjb21wb3NpdG9yIGNhbGwgY29tbWl0IHBlciB2YmxhbmsgZXZlbiBpZiB0aGUgaGFuZGxlciBvZiBjb21taXQgaXNuJ3QgY2FsbGVkLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FmNzVjOGIzYzc0ZGZiZjYyYzY4MWM5ZDRlODhjODM5NlwiPmhhbF90ZG1faHdjX3dpbmRvd19jb21wb3NpdGlvbjxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+UG9zc2libGUgY29tcG9zaXRpb24gdHlwZXMgZm9yIHRoZSBnaXZlbiB3aW5kb3cuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9URE1fSFdDX1dJTl9DT01QT1NJVElPTl9OT05FPFwvZW0+IHwgVGhlIGNvbXBvc2l0aW9uIHR5cGUgZm9yIGFuIGludmlzaWJsZSB3aW5kb3cuIFRoZSB2YWx1ZSBieSBkZWZhdWx0LiAgVGhlIGJhY2tlbmQgaWdub3JlcyB3aW5kb3dzIG9mIHRoaXMgdHlwZS4gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9IV0NfV0lOX0NPTVBPU0lUSU9OX0NMSUVOVDxcL2VtPiB8IFRoZSBjb21wb3NpdGlvbiB0eXBlIGZvciBhbiB3aW5kb3cgdG8gYmUgY29tcHNvaXRlZCBieSB0aGUgY2xpZW50LiAgV2hlbiB0aGUgY2xpZW50IHNldHMgdGhpcyBjb21wb3NpdGlvbiB0eXBlLCB0aGUgYmFja2VuZCBNVVNUIE5PVCBtb2RpZnkgdGhpcyBjb21wb3NpdGlvbiB0eXBlIGludG8gb3RoZXIgdHlwZXMuICBXaGVuIHRoZSBiYWNrZW5kIGNoYW5nZXMgVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fREVWSUNFIG9yIFRETV9IV0NfV0lOX0NPTVBPU0lUSU9OX0NVUlNPUiB0byB0aGlzIGNvbXBvc2l0aW9uIHR5cGUgYXQgdGhlIHRpbWUgb2YgdGRtX2h3Y192YWxpZGF0ZSBhbmQgdGRtX2h3Y19nZXRfY2hhbmdlZF9jb21wb3NpdGlvbl90eXBlcywgdGhlIGNsaWVudCBoYXMgdG8gY29tcG9zaXRlIHRoaXMgd2luZG93IHdpdGggZ2wgb3Igb3RoZXIgZHJhd2luZyBvcGVyYXRpb25zLiB8XG58IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fREVWSUNFPFwvZW0+IHwgVGhlIGNvbXBvc2l0aW9uIHR5cGUgZm9yIGFuIHdpbmRvdyB0byBiZSBzZXQgdG8gdGhlIGh3IG92ZXJsYXkuICBUaGUgY2xpZW50IHNldHMgdGhpcyBjb21wb3NpdGlvbiB0eXBlIHRvIHRoZSB2aXNpYmxlIHdpbmRvd3MgYmVmb3JlIHJlcXVlc3RpbmcgdGhlIHRkbV9od2NfdmFsaWRhdGUuIE5vbWFsbHksIHRoZSBiYWNrZW5kIGxlYXZlIGl0IGlmIHRoZSBiYWNrZW5kIHNldHMgdGhlIHdpbmRvdyB0byB0aGUgaHcgb3ZlcmxheS4gSWYgdGhlIGJhY2tlbmQgZG9lcyBub3Qgc2V0IHRoZSB3aW5kb3cgdG8gdGhlIGh3IG92ZXJsYXkgYXQgdGhlIHRpbWUgb2YgdGRtX2h3Y192YWxpZGF0ZSwgdGhlIGJhY2tlbmQgY2hhbmdlcyB0aGUgY29tcG9zaXRpb24gdHlwZSBvZiB0aGUgd2luZG93IGludG8gVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fQ0xJRU5ULiB8XG58IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fQ1VSU09SPFwvZW0+IHwgVGhlIGNvbXBvc2l0aW9uIHR5cGUgZm9yIGFuIHdpbmRvdyB0byBiZSBzZXQgdG8gdGhlIGN1cnNvciBodyBvdmVybGF5LiAgVGhlIGNsaWVudCBzZXRzIHRoaXMgY29tcG9zaXRpb24gdHlwZSB0byB0aGUgY3Vyc29yIHdpbmRvdyBiZWZvcmUgcmVxdWVzdGluZyB0aGUgdGRtX2h3Y192YWxpZGF0ZS4gSWYgdGhlIGJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3Vyc29yIGh3IG92ZXJsYXksIHRoZSBiYWNrZW5kIGNhbiBjaGFuZ2UgdGhlIGNvbW9wc2l0aW9uIHR5cGUgaW50byB0aGUgVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fQ0xJRU5ULiB8XG58IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09NUE9TSVRJT05fVklERU88XC9lbT4gfCBUaGUgY29tcG9zaXRpb24gdHlwZSBmb3IgYW4gd2luZG93IHRvIGJlIHNldCB0byB0aGUgdmlkZW8gaHcgb3ZlcmxheS4gIFRoZSBjbGllbnQgc2V0cyB0aGlzIGNvbXBvc2l0aW9uIHR5cGUgdG8gdGhlIHZpZGVvIHdpbmRvdyBiZWZvcmUgcmVxdWVzdGluZyB0aGUgdGRtX2h3Y192YWxpZGF0ZS4gSWYgdGhlIGJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgdmlkZW8gaHcgb3ZlcmxheSwgdGhlIGJhY2tlbmQgY2FuIGNoYW5nZSB0aGUgY29tb3BzaXRpb24gdHlwZSBpbnRvIHRoZSBURE1fSFdDX1dJTl9DT01QT1NJVElPTl9DTElFTlQuIE5vcm1hbGx5LCB0aGlzIFZJREVPIHdpbmRvdyBkaXNwbGF5cyB1bmRlciB0aGUgcHJpbWFyeSBodyBvdmVybGF5ZXIgb2YgdGhlIG91dHB1dC4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTdiNWEwZTc4NjMxMjIzNDdkN2VkNDUzMDFmNjJmNzlcIj5oYWxfdGRtX2h3Y193aW5kb3dfY29uc3RyYWludDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+SFdDJ3MgY29tcG9zaXRpb24gbW9kZSBmb3Igc3BlY2lmaWMgYnVmZmVyLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09OU1RSQUlOVF9OT05FPFwvZW0+IHwgRGVmYXVsdCBtb2RlIG9mIEhXQydzIGNvbXBvc2l0aW9uLiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX0hXQ19XSU5fQ09OU1RSQUlOVF9CVUZGRVJfUVVFVUU8XC9lbT4gfCBJZiB0aGUgY2xpZW50IG5lZWRzIHRvIHJlbmRlciB0byB0aGUgc3BlY2lmaWMgYnVmZmVyIGZvciBjb21wb3NpdGluZyB3aXRoIFRETV9IV0NfV0lOX0NPTVBPU0lUSU9OX0RFVklDRSwgdGhlIGJhY2tlbmQgbmVlZHMgdG8gc2V0IFRETV9IV0NfV0lOX0NPTlNUUkFJTlRfQlVGRkVSX1FVRVVFIHRvIGh3Y193aW5kb3cgdW50aWwgdGhlIGh3Y193aW5kb3cgaXMgbm90IFRETV9IV0NfV0lOX0NPTVBPU0lUSU9OX0RFVklDRS4gVGhlIGNsaWVudCBnZXRzIHRoZSB0Ym1fc3VyZmFjZV9xdWV1ZV9oIHRocm91Z2ggdGhlIHRkbV9od2Nfd2luZG93X2FjcXVpcmVfYnVmZmVyX3F1ZXVlLiBJdCB3aWxsIHJlbmRlciB0aGUgZnJhbWVzIG9uIHRoZSBidWZmZXJzIHdoaWNoIGdldHMgZnJvbSB0aGUgdGJtX3N1cmZhY2VfcXVldWVfaC4gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNzkwNGI2YzA4NDBhZmRiNDk4ZTY1ZDQ2NmI5MmMyMWFcIj5oYWxfdGRtX291dHB1dF9jYXBhYmlsaXR5PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IGNhcGFiaWxpdHkgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD5JZiB0aGUgYmFja2VuZCBtb2R1bGUgcHJvdmlkZXMgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2dhNzkwNGI2YzA4NDBhZmRiNDk4ZTY1ZDQ2NmI5MmMyMWFhOWIzZTQ3OGNiMTViNzYyOTc0N2EzOWM2M2FhNzFkMzZcIj5IQUxfVERNX09VVFBVVF9DQVBBQklMSVRZX0VYVEVOREVEX0RQTVM8XC9hPiwgd2UgY2FuIHNldCBhbiBleHRlbmRlZCBEUE1TIG1vZGUgdG8gYW4gb3V0cHV0IHdoaWNoIHRoZSBiYWNrZW5kIG1vZHVsZSBzdXBwb3J0cy4gRG9uJ3QgdXNlIHRoZSBsb3ctNGJpdCBmb3IgYW4gZXh0ZW5kZWQgRFBNUyBtb2RlIHZhbHVlLiBJdCdzIHVzZWQgZm9yIGRlZmF1bHQgRFBNUyBtb2Rlcy48XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX09VVFBVVF9DQVBBQklMSVRZX0FTWU5DX0RQTVM8XC9lbT4gfCBUaGUgY2FwYWJpbGl0eSBhYm91dCBvdXRwdXQgc3VwcG9ydHMgYXN5bmNocm9ub3VzIERQTVMgb3BlcmF0aW9uIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX0NBUEFCSUxJVFlfSFdDPFwvZW0+IHwgVGhlIGNhcGFiaWxpdHkgYWJvdXQgb3V0cHV0IHN1cHBvcnRzIGh3YyBvcGVyYXRpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfQ0FQQUJJTElUWV9FWFRFTkRFRF9EUE1TPFwvZW0+IHwgVGhlIGNhcGFiaWxpdHkgYWJvdXQgb3V0cHV0IHN1cHBvcnRzIGV4dGVuZGVkIERQTVMgb3BlcmF0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX0NBUEFCSUxJVFlfTUlSUk9SPFwvZW0+IHwgVGhlIGNhcGFiaWxpdHkgYWJvdXQgb3V0cHV0IHN1cHBvcnRzIHRoZSBkaXNwbGF5aW5nIG1pcnJvciBpbWFnZSBvZiB0aGUgc3JjX291dHB1dCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9DQVBBQklMSVRZX05PX0hXX1ZCTEFOSzxcL2VtPiB8IFRoZSBjYXBhYmlsaXR5IGFib3V0IG91dHB1dCBkb2Vzbid0IHN1cHBvcnQgaHcgdmJsYW5rIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTkyMTRhMWUzOGNjNDBmM2MyOTBiYmRiNzYxNDM3MTJlXCI+aGFsX3RkbV9vdXRwdXRfY2hhbmdlX3R5cGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBvdXRwdXQgY2hhbmdlIGVudW1lcmF0aW9uIG9mIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOWE5MTcwMTIxNjQyZjcyYWZjNjJhMjBmMzhlOTJmMTZcIiB0aXRsZT1cIlRoZSBvdXRwdXQgY2hhbmdlIGhhbmRsZXIuXCI+aGFsX3RkbV9vdXRwdXRfY2hhbmdlX2hhbmRsZXI8XC9hPi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfQ0hBTkdFX0NPTk5FQ1RJT048XC9lbT4gfCBUaGUgdHlwZSBvZiBjb25uZWN0aW9uIGlzIGNoYW5nZWQgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfQ0hBTkdFX0RQTVM8XC9lbT4gfCBUaGUgdHlwZSBvZiBkcG1zIGlzIGNoYW5nZWQgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhZTg5ZjMyNDI0ZmM1OTE1ZTQ0YzA1ZDZmZTM4ZGIxMzRcIj5oYWxfdGRtX291dHB1dF9jb25uX3N0YXR1czxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBjb25uZWN0aW9uIHN0YXR1cyBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfQ09OTl9TVEFUVVNfRElTQ09OTkVDVEVEPFwvZW0+IHwgVGhlIG91dHB1dCBpcyBkaXNjb25uZWN0ZWQgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfQ09OTl9TVEFUVVNfQ09OTkVDVEVEPFwvZW0+IHwgVGhlIG91dHB1dCBpcyBjb25uZWN0ZWQgfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfQ09OTl9TVEFUVVNfTU9ERV9TRVRURUQ8XC9lbT4gfCBUaGUgb3V0cHV0IGlzIGNvbm5lY3RlZCBhbmQgc2V0IHRoZSBtb2RlIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTFjNDMzMWJmODBkNzI3Yzk1YzEyODUyMWJlYzkyMzZkXCI+aGFsX3RkbV9vdXRwdXRfZHBtczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIERQTVMgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD5iaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBsaWJkcm0gZGVmaW5pdGlvbnMuPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfRFBNU19PTjxcL2VtPiB8IE9uLCBWc3luYyBPbiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9EUE1TX1NUQU5EQlk8XC9lbT4gfCBTdGFuZEJ5LCBWc3luYyBPbiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9EUE1TX1NVU1BFTkQ8XC9lbT4gfCBTdXNwZW5kLCBWc3luYyBPZmYgfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfRFBNU19PRkY8XC9lbT4gfCBPZmYsIFZzeW5jIE9mZiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9EUE1TX0FPRDxcL2VtPiB8IEFPRCwgVnN5bmMgT24sIGV4dGVuZGVkIERQTVMgbW9kZSB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FiY2Y1MGM5ZWZlMDU2NmY2YmMyOGMwYzhkZmE5OTc5N1wiPmhhbF90ZG1fb3V0cHV0X21vZGVfZmxhZzxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBtb2RlIGZsYWcgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD5iaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBsaWJkcm0gZGVmaW5pdGlvbnMuPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9GTEFHX1BIU1lOQzxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfUEhTWU5DIDogaG9yaXpvbnRhbCBzeW5jIGlzIGFjdGl2ZSBoaWdoLiB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfTkhTWU5DPFwvZW0+IHwgRFJNX01PREVfRkxBR19OSFNZTkMgOiBob3Jpem9udGFsIHN5bmMgaXMgYWN0aXZlIGxvdy4gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9GTEFHX1BWU1lOQzxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfUFZTWU5DIDogdmVydGljYWwgc3luYyBpcyBhY3RpdmUgaGlnaC4gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9GTEFHX05WU1lOQzxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfTlZTWU5DIDogdmVydGljYWwgc3luYyBpcyBhY3RpdmUgbG93LiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfSU5URVJMQUNFPFwvZW0+IHwgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgOiBtb2RlIGlzIGludGVybGFjZWQuIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfRkxBR19EQkxTQ0FOPFwvZW0+IHwgRFJNX01PREVfRkxBR19EQkxTQ0FOIDogbW9kZSB1c2VzIGRvdWJsZXNjYW4uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfRkxBR19DU1lOQzxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfQ1NZTkMgOiBtb2RlIHVzZXMgY29tcG9zaXRlIHN5bmMuIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfRkxBR19QQ1NZTkM8XC9lbT4gfCBEUk1fTU9ERV9GTEFHX1BDU1lOQyA6IGNvbXBvc2l0ZSBzeW5jIGlzIGFjdGl2ZSBoaWdoLiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfTkNTWU5DPFwvZW0+IHwgRFJNX01PREVfRkxBR19OQ1NZTkMgOiBjb21wb3NpdGUgc3luYyBpcyBhY3RpdmUgbG93LiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfSFNLRVc8XC9lbT4gfCBEUk1fTU9ERV9GTEFHX0hTS0VXIDogaHNrZXcgcHJvdmlkZWQuIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfRkxBR19CQ0FTVDxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfQkNBU1QgOiAgPHN0cm9uZz48YSBocmVmPVwiZGVwcmVjYXRlZC5tZCNfZGVwcmVjYXRlZDAwMDAxN1wiPkRlcHJlY2F0ZWQ6PFwvYT48XC9zdHJvbmc+ICBEZXByZWNhdGVkIHNpbmNlIEhBTF9NT0RVTEVfVERNIDEuMCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfUElYTVVYPFwvZW0+IHwgRFJNX01PREVfRkxBR19QSVhNVVggOiAgPHN0cm9uZz48YSBocmVmPVwiZGVwcmVjYXRlZC5tZCNfZGVwcmVjYXRlZDAwMDAxOFwiPkRlcHJlY2F0ZWQ6PFwvYT48XC9zdHJvbmc+ICBEZXByZWNhdGVkIHNpbmNlIEhBTF9NT0RVTEVfVERNIDEuMCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfREJMQ0xLPFwvZW0+IHwgRFJNX01PREVfRkxBR19EQkxDTEsgOiBkb3VibGUtY2xvY2tlZCBtb2RlLiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX0ZMQUdfQ0xLRElWMjxcL2VtPiB8IERSTV9NT0RFX0ZMQUdfQ0xLRElWMiA6IGhhbGYtY2xvY2tlZCBtb2RlLiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2FjZTQ3MjA3NzYzMzMzNTVmOTc5MjA0MGY2ZjA4ZjRhN1wiPmhhbF90ZG1fb3V0cHV0X21vZGVfdHlwZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG91dHB1dCBtb2RlIHR5cGUgZW51bWVyYXRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfVERNIDEuMDxcL3A+XG48cD5iaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBsaWJkcm0gZGVmaW5pdGlvbnMuPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9UWVBFX0JVSUxUSU48XC9lbT4gfCBEUk1fTU9ERV9UWVBFX0JVSUxUSU4gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9UWVBFX0NMT0NLX0M8XC9lbT4gfCBEUk1fTU9ERV9UWVBFX0NMT0NLX0MgfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfTU9ERV9UWVBFX0NSVENfQzxcL2VtPiB8IERSTV9NT0RFX1RZUEVfQ1JUQ19DIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX01PREVfVFlQRV9QUkVGRVJSRUQ8XC9lbT4gfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX1RZUEVfREVGQVVMVDxcL2VtPiB8IERSTV9NT0RFX1RZUEVfREVGQVVMVCB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX1RZUEVfVVNFUkRFRjxcL2VtPiB8IERSTV9NT0RFX1RZUEVfVVNFUkRFRiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9NT0RFX1RZUEVfRFJJVkVSPFwvZW0+IHwgRFJNX01PREVfVFlQRV9EUklWRVIgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhNTQ3ZDdmOTllZmE1NjhjNGJlMGFkZWY4OWQ1ZTNmNDRcIj5oYWxfdGRtX291dHB1dF90eXBlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgb3V0cHV0IGNvbm5lY3Rpb24gc3RhdHVzIGVudW1lcmF0aW9uLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+Yml0IGNvbXBhdGlibGUgd2l0aCB0aGUgbGliZHJtIGRlZmluaXRpb25zLjxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfVW5rbm93bjxcL2VtPiB8IHVua25vd24gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9WR0E8XC9lbT4gfCBWR0EgY29ubmVjdGlvbiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9UWVBFX0RWSUk8XC9lbT4gfCBEVklJIGNvbm5lY3Rpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9EVklEPFwvZW0+IHwgRFZJRCBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfRFZJQTxcL2VtPiB8IERWSUEgY29ubmVjdGlvbiB8XG58IDxlbT5IQUxfVERNX09VVFBVVF9UWVBFX0NvbXBvc2l0ZTxcL2VtPiB8IENvbXBvc2l0ZSBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfU1ZJREVPPFwvZW0+IHwgU1ZJREVPIGNvbm5lY3Rpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9MVkRTPFwvZW0+IHwgTFZEUyBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfQ29tcG9uZW50PFwvZW0+IHwgQ29tcG9uZW50IGNvbm5lY3Rpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV85UGluRElOPFwvZW0+IHwgOVBpbkRJTiBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfRGlzcGxheVBvcnQ8XC9lbT4gfCBEaXNwbGF5UG9ydCBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfSERNSUE8XC9lbT4gfCBIRE1JQSBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfSERNSUI8XC9lbT4gfCBIRE1JQiBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfVFY8XC9lbT4gfCBUViBjb25uZWN0aW9uIHxcbnwgPGVtPkhBTF9URE1fT1VUUFVUX1RZUEVfZURQPFwvZW0+IHwgZURQIGNvbm5lY3Rpb24gfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9WSVJUVUFMPFwvZW0+IHwgVmlydHVhbCBjb25uZWN0aW9uIGZvciBXaUZpIERpc3BsYXkgfFxufCA8ZW0+SEFMX1RETV9PVVRQVVRfVFlQRV9EU0k8XC9lbT4gfCBEU0kgY29ubmVjdGlvbiB8PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2E2NjFlZjIxY2RlNzAzYjc3NjY5NmQ0MjAxNGM4ZGI3N1wiPmhhbF90ZG1fcHBfY2FwYWJpbGl0eTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIFBQKHBvc3QtcHJvY2Vzc2luZykgY2FwYWJpbGl0eSBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPlRoZSBzY2FsZSwgdHJhbnNmb3JtIGFuZCBDU0MgZnVuY3Rpb25hbGl0aWVzIHNlZW0gdGhlIGRlZmF1bHQgZnVuY3Rpb25zIG9mIFBQLiBJZiBoYXJkd2FyZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IG9uZSBvZiB0aGVtLCB3ZSdkIGJldHRlciBsZXQgdGhlIGRldmVsb3BlciBrbm93IHdoYXQgdGhlIGJhY2tlbmQgZG9lc24ndCBzdXBwb3J0IGxpa2UgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fVERNX19NT0RVTEUubWQjZ2dhNjYxZWYyMWNkZTcwM2I3NzY2OTZkNDIwMTRjOGRiNzdhYjIyZGFmYjA2NTRhZmVmNzI4ODAzYjlkMzk0ZGY4ZGRcIj5IQUxfVERNX1BQX0NBUEFCSUxJVFlfTk9fQ1NDPFwvYT4uPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9QUF9DQVBBQklMSVRZX1NZTkM8XC9lbT4gfCBUaGUgcG9zdC1wcm9jZXNzaW5nIGRldmljZSBzdXBwb3J0cyBzeW5jaHJvbm91cyBvcGVyYXRpb24gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9QUF9DQVBBQklMSVRZX0FTWU5DPFwvZW0+IHwgVGhlIHBvc3QtcHJvY2Vzc2luZyBkZXZpY2Ugc3VwcG9ydHMgYXN5bmNocm9ub3VzIG9wZXJhdGlvbiB8XG58IDxlbT5IQUxfVERNX1BQX0NBUEFCSUxJVFlfU0NBTk9VVDxcL2VtPiB8IFRoZSBwb3N0LXByb2Nlc3NpbmcgZGV2aWNlIHN1cHBvcnRzIG9ubHkgc2Nhbm91dCBidWZmZXIgfFxufCA8ZW0+SEFMX1RETV9QUF9DQVBBQklMSVRZX05PX0NTQzxcL2VtPiB8IFRoZSBwb3N0LXByb2Nlc3NpbmcgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBDb2xvciBTcGFjZSBDb252ZXJzaW9uIHxcbnwgPGVtPkhBTF9URE1fUFBfQ0FQQUJJTElUWV9OT19UUkFOU0ZPUk1fUk9UQVRJT048XC9lbT4gfCBUaGUgcG9zdC1wcm9jZXNzaW5nIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgcm90YXRpb24gdHJhbnNmb3JtIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRS5tZCNnYTIyY2RlNWMzMjA2MWUzNjU1MGQ0ZjIwMWRlOWE2NDJiXCI+aGFsX3RkbV90cmFuc2Zvcm08XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0cmFuc2Zvcm0gZW51bWVyYXRpb24ocm90YXRlLCBmbGlwKTxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX1RETSAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfVERNX1RSQU5TRk9STV9OT1JNQUw8XC9lbT4gfCBubyB0cmFuc2Zvcm0gfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX1RETV9UUkFOU0ZPUk1fOTA8XC9lbT4gfCByb3RhdGUgOTAgZGVncmVlcyBjbG9ja3dpc2UgfFxufCA8ZW0+SEFMX1RETV9UUkFOU0ZPUk1fMTgwPFwvZW0+IHwgcm90YXRlIDE4MCBkZWdyZWVzIGNsb2Nrd2lzZSB8XG58IDxlbT5IQUxfVERNX1RSQU5TRk9STV8yNzA8XC9lbT4gfCByb3RhdGUgMjcwIGRlZ3JlZXMgY2xvY2t3aXNlIHxcbnwgPGVtPkhBTF9URE1fVFJBTlNGT1JNX0ZMSVBQRUQ8XC9lbT4gfCBubyByb3RhdGUgYW5kIGhvcml6b250YWwgZmxpcCB8XG58IDxlbT5IQUxfVERNX1RSQU5TRk9STV9GTElQUEVEXzkwPFwvZW0+IHwgcm90YXRlIDkwIGRlZ3JlZXMgY2xvY2t3aXNlIGFuZCBob3Jpem9udGFsIGZsaXAgfFxufCA8ZW0+SEFMX1RETV9UUkFOU0ZPUk1fRkxJUFBFRF8xODA8XC9lbT4gfCByb3RhdGUgMTgwIGRlZ3JlZXMgY2xvY2t3aXNlIGFuZCBob3Jpem9udGFsIGZsaXAgfFxufCA8ZW0+SEFMX1RETV9UUkFOU0ZPUk1fRkxJUFBFRF8yNzA8XC9lbT4gfCByb3RhdGUgMjcwIGRlZ3JlZXMgY2xvY2t3aXNlIGFuZCBob3Jpem9udGFsIGZsaXAgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX1RETV9fTU9EVUxFLm1kI2dhOTQ5OTkzYWE0ZTU5NjEyNDkyNjUxNmU2ZDkxODJhMTlcIj5oYWxfdGRtX3ZhbHVlX3R5cGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSB0ZG0gdmFsdWUgdHlwZSBlbnVtZXJhdGlvbi48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9URE0gMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX1RETV9WQUxVRV9UWVBFX1VOS05PV048XC9lbT4gfCBUaGUgdW5rbm93biB0eXBlIG9mIHZhbHVlIGZvciB2YXJpYWJsZSB8XG58IC0tLSB8IC0tLSB8XG58IDxlbT5IQUxfVERNX1ZBTFVFX1RZUEVfUFRSPFwvZW0+IHwgVGhlIHBvaW50ZXIgdHlwZSBvZiB2YWx1ZSBmb3IgdmFyaWFibGUgfFxufCA8ZW0+SEFMX1RETV9WQUxVRV9UWVBFX0lOVDMyPFwvZW0+IHwgVGhlIDMyYml0IGludGVnZXIgdHlwZSBvZiB2YWx1ZSBmb3IgdmFyaWFibGUgfFxufCA8ZW0+SEFMX1RETV9WQUxVRV9UWVBFX1VJTlQzMjxcL2VtPiB8IFRoZSAzMmJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2YgdmFsdWUgZm9yIHZhcmlhYmxlIHxcbnwgPGVtPkhBTF9URE1fVkFMVUVfVFlQRV9JTlQ2NDxcL2VtPiB8IFRoZSA2NGJpdCBpbnRlZ2VyIHR5cGUgb2YgdmFsdWUgZm9yIHZhcmlhYmxlIHxcbnwgPGVtPkhBTF9URE1fVkFMVUVfVFlQRV9VSU5UNjQ8XC9lbT4gfCBUaGUgNjRiaXQgdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHZhbHVlIGZvciB2YXJpYWJsZSB8PFwvcD5cbjxociBcLz5cbjxwPkV4Y2VwdCBhcyBub3RlZCwgdGhpcyBjb250ZW50IC0gZXhjbHVkaW5nIHRoZSBDb2RlIEV4YW1wbGVzIC0gaXMgbGljZW5zZWQgdW5kZXIgPGEgaHJlZj1cImh0dHA6XC9cL2NyZWF0aXZlY29tbW9ucy5vcmdcL2xpY2Vuc2VzXC9ieVwvMy4wXC9sZWdhbGNvZGVcIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMDxcL2E+XG5hbmQgYWxsIG9mIHRoZSBDb2RlIEV4YW1wbGVzIGNvbnRhaW5lZCBoZXJlaW4gYXJlIGxpY2Vuc2VkIHVuZGVyIDxhIGhyZWY9XCJodHRwczpcL1wvd3d3LnRpemVuLm9yZ1wvYnNkLTMtY2xhdXNlLWxpY2Vuc2VcIj5CU0QtMy1DbGF1c2U8XC9hPi48YnIgXC8+XG5Gb3IgZGV0YWlscywgc2VlIHRoZSA8YSBocmVmPVwiaHR0cHM6XC9cL3d3dy50aXplbi5vcmdcL2NvbnRlbnQtbGljZW5zZVwiPkNvbnRlbnQgTGljZW5zZTxcL2E+LjxcL3A+XG4iLCJ0YWJsZV9vZl9jb250ZW50IjoiPHVsIGNsYXNzPVwidGFibGUtb2YtY29udGVudHNcIj5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtcmVxdWlyZWQtaGVhZGVyXCI+UmVxdWlyZWQgSGVhZGVyPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtb3ZlcnZpZXdcIj5PdmVydmlldzxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWRhdGEtc3RydWN0dXJlLWRvY3VtZW50YXRpb25cIj5EYXRhIFN0cnVjdHVyZSBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvblwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTFcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tM1wiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTRcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi01XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNlwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTdcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi04XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tOVwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEwXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTFcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xMlwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTEzXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTRcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xNVwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE2XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMTdcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xOFwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTE5XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMjBcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yMVwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTIyXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWRlZmluZS1kb2N1bWVudGF0aW9uXCI+RGVmaW5lIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC10eXBlZGVmLWRvY3VtZW50YXRpb25cIj5UeXBlZGVmIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1lbnVtZXJhdGlvbi10eXBlLWRvY3VtZW50YXRpb25cIj5FbnVtZXJhdGlvbiBUeXBlIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPFwvdWw+XG4iLCJ0aXRsZSI6IlRpemVuIEhBTCBBUEk6IFRETSIsInJhdyI6bnVsbH0seyJjbGFzcyI6IkFwcFxcU2VydmljZXNcXERvY3VtZW50YXRpb25cXERhdGFcXFJlbmRlcmVkTWFya2Rvd24iLCJzIjoid3JibCJ9XX0seyJzIjoiYXJyIn1dfSwibWVtbyI6eyJpZCI6InRaZklnMndITm80UlRuc05oMlR2IiwibmFtZSI6Il9fbW91bnRQYXJhbXNDb250YWluZXIiLCJwYXRoIjoiZG9jc1wvcGxhdGZvcm1cL2hhbFwvYXBpXC8xLjAuMFwvZ3JvdXBfX0hBTEFQSV9fSEFMX19URE1fX01PRFVMRSIsIm1ldGhvZCI6IkdFVCIsInJlbGVhc2UiOiJhLWEtYSJ9LCJjaGVja3N1bSI6IjA5Y2NkOWU5ZTM0OWQ3YTRkODgwM2E5N2Y2MzAwNzQzNThjM2UzODE4YTA0NjEzZTE4YWZlYWJlY2FkOTU3MzIifQ==')" >